Search code examples
asp.net-mvcivr

Adding IVR and PBX capabilities to web application


I have an existing web application that was created using ASP.NET C#, MVC3 with Sql Server backend. Now I have been asked to add IVR capabilities to it.

1) Is this possible? 
2) What is the best Library API to use? 
3) I found Asterisk but not very sure if this works within a Windows environment.  Also there appears to be a few .NET based Asterisk API. Which is the best one to use? 
3) How about MS Lync Server?  Though a bit concerned about additional licenses. 
4) Is there any sample applications around that I could have a look at?  

(P.S: found this link IVR application over telephone .Net. Has anybody used VoiceModel? How does it compare to the above?) Thank you


Solution

  • Yes it is possible to add IVR capabilities to your existing web application and VoiceXML is the best way to go since it is also a web based technology and an open standard. This will allow you to reuse a lot of the business logic and SQL Server integration from your existing web application in the IVR application. It is not a straight port as voice user interfaces (VUI) have much different requirements and restrictions as opposed to graphical user interfaces (GUI), but you can leverage a lot of reuse.

    VoiceModel is a good fit because it works with MVC. One thing to note is that it was recently upgraded to MVC 4, so you will want to upgrade your project to MVC 4, which is very straight forward. I would recommend an upgrade to MVC 4 regardless. VoiceModel generates VoiceXML during runtime (and will soon also work with Tropo) so it will work with any IVR platform that supports VoiceXML. Almost all modern IVR platform support VoiceXML. MS Lync Server also supports VoiceXML. There are sample applications in the VoiceModel project.

    People have turned Asterisk into IVR's but there is a huge learning curve there, it is somewhat limited in IVR capabilities, hard to maintain your voice application, and it does not support open standards for IVR's, like VoiceXML.

    To know what IVR platform to recommend I would need to know more specifics about your IVR requirements. Does it need to sit behind a PBX? Will there be call transfers to a call center? What is the call volume? What is the peak call volume and how many lines are required? Can it be hosted or does it need to be on premise. What type of telephony integration (ex: SIP, T1, E1, analog, etc...)? Do you need speech recognition or will straight telephone keypad input work?

    That is the beauty of going with VoiceXML though; since it is an open standard it should run on most IVR platforms that support VoiceXML. Like all standards there is not 100% compatibility between vendors but the majority of it should move right over. I would recommend starting out with Voxeo Prophecy. It has been tested by the VoiceXML Forum to be very close to the standard, and you can run two ports for free on your workstation for development or free from their hosted environment. The advantage to running it on your workstation is for debugging during development, which is covered in this blog. Starting out with Voxeo Prophecy will get you started faster and even if you decide not to use it in production the apps should move over to most other vendors platforms.