Add Voice Recognition to Asterisk

I recently started a small project to implement TellMe's excellent voice recognition and VoiceXML app into my Asterisk system. I currently have it working, but it's very basic.

Here are the steps..

1) Create an account at TellMe Studio.

Free access to Tellme Studio being retired.
On Friday, May 27th, 2011, Microsoft Tellme will retire free access to the MyStudio suite of services on Tellme Studio. We have been proud to offer these developer and test services at no cost to the voice community for the past 10 years, but the decision has been made to discontinue free access at this time.

2) Create a VoiceXML app in TellMe Studio. I have created an example one you can edit and paste in: Right click - Save as

What this VoiceXML app does is use text-to-speech to say:

"Thank you for calling the Your Last Name Goes Here residence. Who would you like to talk to? For Barbie's cellphone say, Barbie. For Ken's cellphone say, Ken."

Once you say one of the variables that it's looking for, it will post the variable to a CGI script located on your web server. This webserver could be on the same box that Asterisk is running on, or a completely different one. We can make it work either way.

3) Now we need to put this Perl CGI script I wrote on your webserver. Right click - Save as. You will need to edit the variables at the top like the Asterisk manager username and password ( I will address configuring the Asterisk Manager next ), Asterisk server IP address, Ken and Barbie's phone numbers, etc.

4) Now we need to setup the Asterisk Manager if you haven't already done so. The contents of my /etc/asterisk/manager.conf looks like this:

[general]
enabled = yes
port = 5038

[myusername]
secret = mypassword 
deny=0.0.0.0/0.0.0.0
permit=192.168.1.0/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user


You will need to edit the permit=ip.address accordingly

5) Now all we should need to do is edit your Asterisk extensions.conf file to redirect incoming calls to a certain extension to TellMe Studio through SIP. You could also do the same thing by doing something like "s,1,Answer", etc. in your [incoming] context. Below is an example.

exten => 1000,1,Answer
exten => 1000,2,Dial(SIP/8005558965@sip.studio.tellme.com)


So let me explain how this all ties together just in case you don't get it..

An incoming call gets routed to TellMe Studio through SIP. It runs your VoiceXML app, and passes the variable it collects to your webserver ( specifically the asterisk.pl script ). The perl script then makes a telnet connection to the Asterisk manager. It determines which call is connected to TellMe Studio, rips it away, and passes it on to the number that variable is tied to ( the number you specified in that asterisk.pl script for ken or barbie).

If you have any questions, feel free to ask. I will do my best to help.




Links are dead at this time so here are the files attached
asterisk.pl.txt

tellme_studio.xml

Many thanx to James from support
I recently started a small project to implement TellMe's excellent voice recognition and VoiceXML app into my Asterisk system. I currently have it working, but it's very basic.

Here are the steps..

1) Create an account at TellMe Studio.

Free access to Tellme Studio being retired.
On Friday, May 27th, 2011, Microsoft Tellme will retire free access to the MyStudio suite of services on Tellme Studio. We have been proud to offer these developer and test services at no cost to the voice community for the past 10 years, but the decision has been made to discontinue free access at this time.

2) Create a VoiceXML app in TellMe Studio. I have created an example one you can edit and paste in: Right click - Save as

What this VoiceXML app does is use text-to-speech to say:

"Thank you for calling the Your Last Name Goes Here residence. Who would you like to talk to? For Barbie's cellphone say, Barbie. For Ken's cellphone say, Ken."

Once you say one of the variables that it's looking for, it will post the variable to a CGI script located on your web server. This webserver could be on the same box that Asterisk is running on, or a completely different one. We can make it work either way.

3) Now we need to put this Perl CGI script I wrote on your webserver. Right click - Save as. You will need to edit the variables at the top like the Asterisk manager username and password ( I will address configuring the Asterisk Manager next ), Asterisk server IP address, Ken and Barbie's phone numbers, etc.

4) Now we need to setup the Asterisk Manager if you haven't already done so. The contents of my /etc/asterisk/manager.conf looks like this:

[general]
enabled = yes
port = 5038

[myusername]
secret = mypassword 
deny=0.0.0.0/0.0.0.0
permit=192.168.1.0/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user


You will need to edit the permit=ip.address accordingly

5) Now all we should need to do is edit your Asterisk extensions.conf file to redirect incoming calls to a certain extension to TellMe Studio through SIP. You could also do the same thing by doing something like "s,1,Answer", etc. in your [incoming] context. Below is an example.

exten => 1000,1,Answer
exten => 1000,2,Dial(SIP/8005558965@sip.studio.tellme.com)


So let me explain how this all ties together just in case you don't get it..

An incoming call gets routed to TellMe Studio through SIP. It runs your VoiceXML app, and passes the variable it collects to your webserver ( specifically the asterisk.pl script ). The perl script then makes a telnet connection to the Asterisk manager. It determines which call is connected to TellMe Studio, rips it away, and passes it on to the number that variable is tied to ( the number you specified in that asterisk.pl script for ken or barbie).

If you have any questions, feel free to ask. I will do my best to help.




Links are dead at this time so here are the files attached
asterisk.pl.txt

tellme_studio.xml

Many thanx to James from support
Created by: draino, Last modification: Sun 20 of May, 2012 (20:33 UTC) by admin
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+