Archive for the ‘VoiceXML’ Category

One simple URL to help you learn all about VoiceXML!

Saturday, January 8th, 2011

Do you want to learn more about VoiceXML? Would you like to view tutorials, sample applications and a comprehensive reference?

If so, just remember this one very simple address:

vxml.org

That’s it! One simple URL that will get you tons of information about VoiceXML, including tutorials and sample applications you can use to get started today!


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Want to learn VoiceXML? Check out our “VoiceXML for Web Developers” series…

Friday, November 19th, 2010
Pizza Making

Flickr credit: kubina

Are you looking to learn how to use VoiceXML to create interactive applications? While we offer all sorts of great documentation and tutorials at www.vxml.org, we also have a series of tutorial blog posts here called “VoiceXML for Web Developers” that walk you through the process of getting started, all in the context of creating an application for a fictional pizza restaurant, “Strato Pizza”.

Here is the series so far:

The VoiceXML files used in those tutorials are all available on our Github account at https://github.com/voxeo/Voicexml-samples.

The first introduction article explains the steps you need to go through to set up a free developer account in our Evolution developer portal if you do not already have an account.

I am going to be continuing the series a bit more, so stay tuned for further installments. And please, do let us know (in the comments to this post or via email) how helpful these type of article series are. We have ideas for a few others like this.


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Video: Is it REALLY This Easy to Add Text Messaging (SMS) to a VoiceXML App?

Friday, October 29th, 2010

Yes it really is as easy as one-click… check it out in the video below – and then head on over to our Evolution developer portal to give it a try:

If you want more information about our text messaging capabilities – or to find out about availability of SMS numbers in regions where you want to send or receive text messages, please contact us.


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Video: How To Use Phono to Call VoiceXML Apps From Your Web Browser

Wednesday, October 27th, 2010

Would you like to have a button on your website that lets customer simply call your application?  Or call a phone number or extension?

Not the typical “click to call” buttons that pop up a screen and prompt you for your phone number to call you…  but rather a button that actually initiates a call from within your web browser?

Our Phono JavaScript library lets you do exactly that, and in this video I show you how incredibly easy it is to use Phono to connect to a VoiceXML app running in our Prophecy Hosting environment:

Now I just called a “Hello World” VoiceXML app… but imagine if you had a button that called into your sales line… or called into your IVR application… or let people call directly into an information tracking system… or… or… or… the possibilities really are limitless.

To try it out yourself, all you need to do is:

  1. Login to your account on our Evolution Developer Portal (or create a free account if you don’t have one).

  2. Open the application to which you want to connect the button.
  3. Find the “app:<id>” info on the Contact Methods tab and copy that info.
  4. Create a web page on a web server somewhere (which could be a web server on your laptop or PC), add the necessary Phono JavaScript code and include the app ID.
  5. Load the page into a web browser … and start calling!

My sample app is below… but odds are you are going to want to look at the documentation and demos on Phono.com to make a more useful application. For the sake of simplicity, this app has only a button that initiates the call – with no way to hang up! Nor does it have a keypad or change state to tell you that it is connecting. All those are enhancements you could make with just a wee bit of JavaScript.

You can view more videos about Phono, read other articles and generally learn more on our Phono news page. We’re looking forward to seeing what you will build with it!


Dan’s Really Basic Phono Example

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script src="http://s.phono.com/releases/0.1/jquery.phono.js"></script>
    <script type="text/javascript">
      function testcall()
      {
          var phono = $.phono({
                apiKey: "ENTERYOURAPIKEYHERE",
                onReady: function() {
                  // This part included so that Flash audio permission
                  // can be remembered.
                  if( ! this.audio.permission() ){
                                   this.audio.showPermissionBox();
                                                }
                  this.phone.dial("app:9991476142");
                  }
          });
      }
    </script>

  </head>
  <body>

    <input id="call" type="button" value="Test Your App" onclick="testcall()" />

  </body>
</html>

Notes:

  • Obviously you need to replace the app ID in there with your own (unless you really like calling my Hello, World app).
  • You need to obtain an “API Key” from Phono.com by logging into the site. NOTE: Your Evolution or Tropo username and password will let you into the site.
  • You’ll also note that I have some code in there related to audio permissions. It turns out that with the permission settings of Adobe Flash you would have to approve the usage of your microphone every time you push the button – unless you include this bit of code which pops up a permissions box with a “Remember” checkbox you can check so that you don’t have to keep approving permission.
  • I mention that this is to link to a VoiceXML app. It can actually be any app running on Evolution. So it could be CCXML, CallXML, Voxeo Designer, VoiceObjects On-Demand. The same concept works for calling Tropo apps, too.

Have fun with it… and if you come up with other ideas or ways to tweak this example please feel free to leave me comments about it (or email me).


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Want to learn VoiceXML? Visit www.vxml.org

Thursday, July 15th, 2010

voicexml.jpgDo you want to learn more about how you can use VoiceXML to create voice (and now SMS) applications? If so, we have an incredibly easy URL for you to remember:

www.vxml.org

That’s it. In fact, you can even drop the “www” and just go to “vxml.org“. Simple. Easy.

There on the site you will find tutorials, VoiceXML sample code, a detailed VoiceXML language specification, a handy VoiceXML element reference, and appendices covering everything from VoiceXML best practices to advanced VoiceXML topics.

You can try out all the examples, too, either in our hosted cloud with a free account on our Evolution developer portal or on your own premises with a free download of our Prophecy platform for either Windows, Linux or Mac OS X. In our hosted cloud, you get free inbound telephone numbers and outbound calling, plus Skype and SIP connectivity.

Plus, you can let your VoiceXML applications communicate not just with voice but also via SMS and IM. One app – multiple channels. For free. (Pretty cool, eh?)

And, if you run into trouble or can’t figure out how to do something in VoiceXML, our Customer Obsession Team is standing by at “support@voxeo.com” or in our web forums to answer your questions. (And yes, they gladly answer questions from developers using free accounts!)


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Jam Session in May: The Future of VoiceXML

Tuesday, April 27th, 2010

Now that VoiceXML 2 is both the standard and defacto language for building voice apps, what is next?

In the upcoming developers jam session Dan Burnett, the Chief Editor of the VoiceXML 3 specification, will present what’s new in VoiceXML3.

Frustrated by the FIA? Concerned about forwards compatibility? Come join us and learn ho the Voice Browser Working Group is addressing these and other key questions.

REGISTER NOW for this session on May 20, 2010.


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Weekend link dump

Sunday, February 14th, 2010

Time to clear my bookmarks out. Here’s some stuff you might enjoy.

  • Mark Headd has been playing with CouchDB shows how to install it and use it with Tropo. Mark’s detailed instructions on installing CouchDB should be able to help you quickly get this up and running. Not familiar with CouchDB? It’s a database that is accessed over RESTful HTTP and stores its data as JSON.
  • Mark also wrote up how to use user agent sniffing to deploy both text and voice apps on Prophecy showing VoiceXML developers how to easily add SMS and IM to their applications.
  • Thanks to Silicon Valet, you can manage your Google Calendar from your phone, powered by Tropo. Hear your appointments read to you and create voice notes for later. The creator, Ted Gilchrist is also working on Talk-o-Gram, a platform for exchanging short voice notes with your Gmail contacts.
  • Dominique Boucher looks at the rise of API-oriented voice services (including Tropo) in Back to Basics
  • Ian Mercer has created the ultimate home automation platform. Detects when someone’s in a part of the house and appropriately adjusts lighting, heat, and more. A web-based management console shows a log of the house activities and allows you to manage the house from your browser. You have to watch the demo to believe it (it uses Silverlight and takes a while to load, but it’s worth the wait.) But what if he forgets to turn off the oven when he leaves the house? He can call it and turn it off. Every appliance is connected to the phone.
  • Aslam Bari created the SalesForce Pinger to allow your application to send instant messages to your SalesForce users when certain events are triggered. Alert everyone that a sale just closed or that there’s a new lead available. Install the Pinger package from SalesForce and then add some simple code to your triggers. BotService.sendMessage('We won this opportunity');


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Using Biometrics in your Voice Applications

Wednesday, February 10th, 2010

How do you authenticate your callers before giving them access to confidential information? What if your application could recognize the caller’s voice? Voxeo has partnered with four of the leading voice biometrics suppliers to make implementing this technology in your VoiceXML application easier.

We’ve written a how-to guide for each biometrics vendor, showing the steps required to get set up with their platform and put together sample code for integrating biometrics into your VoiceXML app.

The intent of these guides and the trial accounts that our partners are offering is to introudce developers to voice biometrics on Voxeo’s platforms and demonstrate voice verification services with each vendor.

With each vendor, the general process is to apply for a developer or trial account and then use your account information in the sample VoiceXML applications that we’ll give you. You’re welcome to explore the documentation from each vendor to create more complex cases and to try biometrics in your own applications.

There’s two steps that your application will need to perform: enrollment and verification. Enrollment sets up a user in the biometrics platform and stores their voiceprint for future identification. Verification is the step performed when you want to check a caller against a previously-stored voiceprint.

The sample application we provide here is a simple use case. A caller calls in and our application uses their caller ID as the account number. We’ll start enrollment, and if the caller is successfully enrolled, we’ll start verification against this new voiceprint, asking for their password.  Obviously your real biometrics application can be much more complex. For instance, normally you would store the enrollment status of the caller and only start enrollment if they hadn’t previously enrolled. But this simple demo application should give you an idea of the basic steps required to add a similar biometrics feature from each vendor.

Each of the included examples uses a similar process for connecting your application to the biometrics service. The call is processed by your VoiceXML application and you either send data to a remote server using the <data> element or you transfer control of the call to a subdialog hosted on the remote server.

For the some vendors, your caller’s voice is recorded on your server and then the voice file is transmitted to the biometrics server. It makes decisions and passes the results back to you, allowing you to notify your caller. All interaction passes through your application.

biometrics-passthrough

Other vendors use subdialogs to record and process the voiceprints with your caller’s voice transmitted directly to the biometrics server. You choose when to hand off control of the call and the biometrics server gives it back to you when it’s done.

biometrics-subdialog

The end result is the same, however, and your caller won’t notice the difference.

To try biometrics in your application, visit the Voxeo Biometrics page for details on each vendor and a brief guide on how to get started.


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Processing Input (VoiceXML for Web Developers)

Monday, January 4th, 2010

This post is part of a series exploring voice applications and VoiceXML through the eyes of a web developer. For the rest of the series, see the index.

If you want to follow along with these examples, you should create a free VoiceXML hosting account in Evolution. Complete instructions were in the first installment of the series.

Today I’m continuing the development of our application for the fictional Strato Pizza. Previously, I asked the caller for their pizza topping preference and their phone number, using both speech recognition and touch tone input. Today I’m going to do something with that input, and repeat the order to the customer.

Within VoiceXML, I can access the values of any fields with <value expr="fieldName$.utterance"/>. This code will return the matched value from my grammar.

Since I want to simply repeat the order and the phone number, I’m going to add a <block> element to my existing form. Inside the block, I’ll add a <prompt> element with the text I want to speak.

    <block>
      <prompt>
        You ordered <value expr="topping$.utterance"/> on your pizza.
      </prompt>
    </block>

When the VoiceXML browser reaches this line, it will speak my text, substituting whatever the caller said in response to the field named topping for topping$.utterance. If the caller asked for ham, the spoken text will be just like if my prompt said, “You ordered ham on your pizza.”

You can use multiple value expressions in a single prompt. I also want to tell the customer that they’ll get a call if there’s a problem with their order. I’ll repeat their phone number to them. Then I’ll thank them for their order and hang up.

    <block>
      <prompt>
        You ordered <value expr="topping$.utterance"/> on your pizza. If we have any questions we will call you at <value expr="phone$.utterance"/>. Thank you for your order.
      </prompt>
    </block>

Remember that for the phone number field, I allowed the caller to use either voice or touch tone input with a built in grammar like so:

    <field name="phone" type="phone">
      Please say or enter your phone number.
    </field>

When I access this value with <value expr="phone$.utterance"/> it doesn’t matter if the caller used voice or DTMF input. The grammar gives the same result. So when I read back the phone number, they’ll hear the digits of their phone number spoken back to them.

You can get the code for this example and all other examples from Voxeo’s GitHub account. At GitHub, you can fork or download the VoiceXML application thus far.


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.


Collecting touch tone input (VoiceXML for Web Developers)

Tuesday, December 22nd, 2009

This post is part of a series exploring voice applications and VoiceXML through the eyes of a web developer. For the rest of the series, see the index.

If you want to follow along with these examples, you should create a free VoiceXML hosting account in Evolution. Complete instructions were in the first installment of the series.

Yesterday, I added the ability for my fictional Strato Pizza order taking application to ask the user what topping they’d like on their pizza. Now I need to ask them for a phone number, in case Strato is out of a topping and needs to call them.

When putting in a phone number, a lot of callers are comfortable with punching in their number on their phone keypads, while others would prefer to simply speak their number. I want my application to behave in the way that’s most comfortable for the caller, so I’m going to handle both methods of input.

First I create my field and validation code:

  <field name="phone">
    Please say or enter your phone number.

    <noinput>
      <reprompt>
    </reprompt>

    <nomatch>
      I didn't understand that. Please try again.
      <reprompt>
    </reprompt>

  </nomatch>

I’m doing something a little different with the UI here when someone doesn’t enter or say anything. Instead of giving an error message and replaying the prompt, I’m simply replaying the prompt. In the case of a phone number where we’re accepting DTMF and voice input, saying “I didn’t hear that” seems a little silly. Just asking for the caller’s phone number a second time should suffice.

For a grammar, I could create a grammar consisting of every digit…

<grammar type="text/gsl">
  [one two three four five six seven eight nine zero]
</grammar>

… and to make it work with touch-tone input, add a grammar for DTMF digits …

<grammar type="text/gsl">
  [dtmf-1 dtmf-2 dtmf-3 dtmf-4 dtmf-5 dtmf-6 dtmf-6 dtmf-7 dtmf-8 dtmf-9 dtmf-0]
<grammar>

… but that will only accept a single digit. Now what? I could try to create a grammar that captures every possible combination of digits. For a ten digit phone number, that means I’d have a grammar with ten billion words in it. That doesn’t sound very practical. Or I could ask the user for every digit of their phone number, one digit at a time. Hardly usable. The easiest way to accomplish this is to use a special built-in grammar provided by VoiceXML that accepts a group of digits.

To use this built-in grammar, I simply add a type attribute to my <field> element and tell it the field is intended to hold digits.

<field name="phone" type="digits">

Now the caller can say or key in any number of digits. Since this is a phone number, I don’t want the caller telling me his phone number is “six” so I want to add some restrictions to that. Strato is in the United States, so the caller should enter at least 7 digits and no more than 10.

<field name="phone" type="digits?minlength=7;maxlength=10">

But what if the caller has an extension number to add? I could ask them a separate question to find out if they have an extension. Or I could use a different built-in grammar, one actually designed for phone numbers that already recognizes any 10 digit phone number, including extensions.

<field name="phone" type="phone">

You can see a list of all built-in grammars and different ways of including them in the Built-In Grammar Types VoiceXML documentation.

Because I’m using a built-in grammar for the phone number, I don’t need an additional grammar here. This means my complete field definition looks like this:

  <field name="phone" type="phone">
    Please say or enter your phone number.

    <noinput>
      <reprompt>
    </reprompt>

    <nomatch>
      I didn't understand that. Please try again.
      <reprompt>
    </reprompt>

  </nomatch>

This XML snippet will be put into my existing form element, right after the toppings field definition.

You can get the code for this example and all other examples from Voxeo’s GitHub account. At GitHub, you can fork or download the VoiceXML application thus far.

Next up, I’ll take the user’s input and do something with it.

Reblog this post [with Zemanta]


Want to learn how Voxeo can help unlock your communications and deliver a better customer experience? Please contact us!

If you found this post interesting or helpful, please consider either subscribing via RSS, becoming a fan on Facebook, or following us on Twitter.