Archive for September, 2009

Powerful Speech-Driven Tropo Applications

Monday, September 28th, 2009

In the previous weeks, Jason Goecke made a post regarding how to use Tropo’s Simple Grammar Engine to do some trivial voice recognition in your applications. In today’s blog, I will be showing you how to take that a step further, and implement some industry standard grammars and interpretation mechanisms. These grammar types will allow Tropo to utilize the same advanced level of speech recognition you might use or expect in VoiceXML applications today.

Before we get started with the examples, here is a list of the types of grammars (and return styles) which will be available to you:

SRGS (Also referred to as grXML)
SISR (Semantic Interpretation for Speech Recognition)
GSL
ABNF

GSL syntax is not considered to be a W3C-compliant syntax for grammars, and Nuance has discontinued support for GSL grammars in their most recent product offerings. Tropo will continue to support GSL-specific markup for some time to come, but it is strongly suggested that new applications and their associated grammars leverage the SRGS + SISR grammar syntaxes instead of being reliant upon the deprecated GSL grammar format.

The above being said, the example I will be showing you in this post will be Tropo utilizing an SRGS grammar with SISR returns. This is 100% W3C compliant, and is the industry standard for grammar development. Let’s start with our grammar:

grammar

Those of you familiar with grammars will likely notice this structure. If not, a great place to get started is here. The above grammar accepts the following utterances:

Red Sox, Boston Red Sox, Yankees, or New York Yankees

Based on the team you choose, you will get some information back about the team. Specifically, the value you would like returned for the team, the league they play in, their division, and standing. The grammar is quite simple, and I made it this way to illustrate the concept of using external grammars with your Tropo applications. Feel free to go as crazy as you want with these grammars.

How does one tie this grammar into a Tropo application? It’s easy! Let’s take a look at a basic Ruby app:

ruby-app

Notice when we declare our choices within “options”, I simply reference the remote destination of my SRGS/GRXML grammar with SISR returns. As soon as the prompt starts, we should be able to say any of the above utterances. When the result comes back, you can get the slot values (team,division,standing,etc) by accessing them directly:

result.choice.tag.get(“team”)
result.choice.tag.get(“division”)
result.choice.tag.get(“standing”)
result.choice.tag.get(“league”)

That’s it! At this point, you should have the information needed to start developing your own Tropo applications with powerful voice recognition capability. If you have any questions at all, feel free to contact our free 24×7 Support team! We are more than happy to help you with any issues you may encounter!

Tropo Samples Updated with New Call & Transfer Requirement

Tuesday, September 22nd, 2009

Recently we did an upgrade to the Tropo platform that included the requirement to include a ‘+’ whenever making an outbound call from the Tropo cloud. This means that when dialing a number, even in the US, you must now format as ‘+14155551212′ when using the call or transfer method.

For this we have updated all of the Tropo Samples at Github. You may see the changes themselves here.

Video: Voxeo CTO RJ Auburn – “Hey man, can I get a clue?”

Wednesday, September 16th, 2009

Back in August at ClueCon in Chicago, Voxeo CTO RJ Auburn gave a talk about how the ways in which we develop voice applications have changed and about how Tropo.com was designed to help in that change. The video of that presentation is now available for viewing:

While they are somewhat visible in the video, RJ’s slides are also available from our Slideshare account:

We hope you enjoy the video and if you feel inspired to create some voice apps of your own using Tropo, please do head on over to Tropo.com and sign up for a free developer account.

Using Persistent Sockets in Tropo.com Applications

Thursday, September 10th, 2009

While Tropo supports RESTful Web Services as a form of moving data to and from the communication cloud, it may not always be fast enough for all applications. There are apps that require the lowest possible latency, for example, when mobile devices become input devices. The unique approach of Tropo, allowing developers to host scripts in our cloud, allows you the ability to write applications that take direct advantage of persistent sockets. This means that you may open the socket once and then stream data to your remote application in realtime without having to establish HTTP connections each time.

I recently created an example of this using Ruby to serve a socket using EventMachine, and then writing a script on Tropo that opens a socket and sends touch-tones (DTMF) down the socket immediately as they come in. Here it is in action:

The code examples may be found here.

Latest Tropo Upgrade Completed

Tuesday, September 8th, 2009

We are continuing to evolve Tropo, by releasing a new upgrade to the Tropo cloud. This upgrade includes the following:

  • Support for fetching Java Speech Grammar Format (JSGF) and Speech Recognition Grammar Specification (SRGS) files from an external HTTP or FTP server, in addition to the built in support for Simple Grammar. We are working on a couple of follow up posts for how-tos on using these enhanced speech grammar capabilities.
  • When placing an outbound call, you must now include the ‘+’ and country code. To dial in the US would then need to be ‘+1415551212′ for every outbound call.
  • The ‘#’ symbol on the telephone keypad may now be used to terminate a recording in a Tropo application.
  • Addition of MP3 as an audio file playback format.
  • You may now play touch-tones (DTMF) after a call has connected. You may now issue a call with these additional parameters: “+14155551212;postd=1234;pause=22000ms”. Where ‘postd’ is the digits to be dialed and ‘pause’ is the amount of time to wait after connecting the call to issue the digits.
  • New accounts will now need to request outbound dialing access from support@voxeo.com. All existing accounts have outbound enabled and will continue to do so.

We continue to work on many new features and will roll them out as they become available. Enjoy the new features!