laramichaels
laramichaels

Reputation: 1505

how to get started with "phone service" (like phone banking) development?

I want to develop a system that users remotely interact with over a phone call. Like your bank's phone banking system.

This system will be very simple: when a user calls, it merely needs to prompt the user and accept input purely through the keypad. Additionally it will need to be able to receive and send text messages.

1- Are there non-proprietary frameworks out there that support this?

2- Can anyone share the basics of their experiences in deploying this kind of system? Pitfalls, what to watch out for, etc?

Upvotes: 0

Views: 404

Answers (4)

DaveHolly
DaveHolly

Reputation: 61

I have been developing IVR systems for clinical trials for about 20 years now. There are some very good 3rd party libraries for IVR coding that work with Visual Basic and C#. Pronexus has software you can download and try for free at http://pronexus.com/. The one I have used the most is the CT ADE software from Syntellect. http://www.syntellect.com/pages/products/ct_ade_eng.aspx They started out years ago as VisualVoice, and then went through many buyouts and purchases. Either of these companies sells software that can be used with Visual Basic and C# - also C++. The advantage is in using something you may be more familiar with in programming. There are many open source solutions, but the documentation, support, and training are not nearly as good. CT ADE has syntax like this . . .

ADXVoice1.PlayFile("C:\project\MainMenu.WAV", SOUNDFILE_TYPE_WavePCM22K, "+")
ADXVoice1.ClearDigits()

choice = ADXVoice1.GetDigits(24, 15, 15, "#")

This plays the file MainMenu.WAV to the caller, clears the digit buffer, and then waits up to 24 seconds for the caller to enter a menu choice. The choice entered by the caller is stored in the string "choice". Very simple and straightforward. I set up systems like this that also connect to a SQL database to store and retrieve the data we needed.

To host such a system yourself, you would first set up an IVR server. You can use regular phone lines with Dialogic cards. There are many different Dialogic cards you can get. I would recommend that you get a 4-line card to start. They also make 8, 12, 16, and T1 cards depending on what you need. The cards have processors on-board that handle simultaneous calls for you.

So, when you develop a VB or C# application, the program is "launched" to the lines on the card. The lines should also be set up in a "hunt group" so that you can point a single number (toll free) to the first line. If that's busy, then it "hunts" for an open line in the group.

This is the old way telephone systems have worked for many years. The newer way is over the Internet using Voice over IP (VoIP). It has it's own set of problems. The main advantage of using Dialogic hardware and actual phone lines is that it will be easier to debug. You can host the IVR server at your office and have complete control over the system.

Upvotes: 1

Kevin Junghans
Kevin Junghans

Reputation: 17540

Not sure if non-proprietary actually means open source. If by non-proprietary you mean that you are not stuck with a particular vendor for deploying your solution then you will want to go with a W3C open standard like VoiceXML. With this standard you can develop a voice/telephony application that can be run on a number of different IVR platforms using similar technologies as you would for developing a web application.

Voxeo provides an excellent IVR platform that you can either host in the cloud or run a premise based solution in your facility, or a mix of both. It is fully compliant with the VoiceXML standards, is easy to use, and you can develop and test your applications on their platform for free. You only pay if you decide to deploy the application in a production environment. And they will even provide excellent support at no cost during the development process.

The main pitfall is to underestimate the user experience (UX) and voice user interface (VUI) design. There are many poorly designed IVR applications out there that people just will not use, which totally undermines the reason for investing in these self service applications. There are so many bad ones that it caused the creation of websites like GetHuman.com, which gives users tips on how to bypass various IVR systems and get to a person as fast as possible. If users are bypassing your self service application then you have wasted your investment in it. If you do not have the experience in-house I would hire someone with VUI design experience to at least help you through your first application.

Upvotes: 1

Eugen Rieck
Eugen Rieck

Reputation: 65304

I already built one of those, the workflow being "User calls" (From his cellphone, outside the door), "Wait for CLIP", "If unknown number reject call", "Answer", "Prompt: Please enter PIN", "Wait for 4 DTMF digits", "Check Phone nr/PIN against DB", "If OK open gate via serial port", "else prompt 'F*** Off'", "hang up"

These were the main pitfalls:

  • Many (TBH: The vast majority) of cheapo "Voice Modems" on Serial/USB/PCI will drop dead after some minutes/hours/days. If you go this way, use GSM, VoIP or ISDN. If you really need analog landline use real hardware
  • I have yet to find a sane cross-platform toolkit, so be prepared to chose an OS ant stay with it, if you don't want to start with "ATZ"
  • Make sure you design your application before coding. This sort of thing doesn't lend itself to "design as you go"
  • It was surprisingly difficult to figure out what sort of codec and format the different devices are willing to accept. Keep that in mind if you don't want to specialise on a certain type of hardware.

Upvotes: 1

Jigar Joshi
Jigar Joshi

Reputation: 240928

There is an opensource project Asterisk that will help you accomplishing this.

Upvotes: 4

Related Questions