3

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

Community
  • 1
  • 1
SimpleUser
  • 1,341
  • 2
  • 16
  • 36

2 Answers2

2

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.

Community
  • 1
  • 1
Kevin Junghans
  • 17,475
  • 4
  • 45
  • 62
  • Hi Kevin, thank you for your input. I am actually going over your blog! To answer a few of your q 1) Yes, it does need to sit behind a PBX 2) There may be call transfers, yet to be confirmed 3) Call volume TBC 4) It may be a hosted solution, though currently looking at on-premise 5) straight tel keypad. Thank you – SimpleUser Oct 25 '12 at 07:57
  • If you want a version of VoiceModel that works with MVC3 you can get the source code from the project, drop in the assemblies for MVC3, make some mods to the web.config and recompile. I would recommend getting your project on MVC 4 though as there are a lot of improvements. It is not that hard and the instructions are here http://www.asp.net/whitepapers/mvc4-release-notes. To downgrade VoiceModel you would do the reverse instructions. – Kevin Junghans Oct 25 '12 at 12:26
  • What type of PBX and how can you connect an IVR? For example, does it need to be lineside T1, analog, or SIP? – Kevin Junghans Oct 25 '12 at 12:29
2

VoiceXML is a standard way of specifying dialogs in your IVRs.

The main idea is to model the conversation with the user, in the same way you model a web form

<form id="my_form">
  <field name="location">
    <prompt>What's the location?</prompt>
  </field>
   ...
 </form>

It's usually mixed with CCXML to specify call control flow, what you want to get done when the call gets dropped for example.

The point to share the validation and business code used in your web-forms with the one used in your voice-xml-forms.

None the less, if your solution is simple enough a VXML platform is overkill, since you can get away using with a get-digits prompt and a REST call to your app.

If you want to explore possible solutions before deciding take a look at the twilio REST api.

Maybe if you share a small ivr transaction you need to get solved it's better in order to suggest a better solution.

guilespi
  • 4,672
  • 1
  • 15
  • 24