Archive for the ‘CallXML’ Category

How to call your VoiceXML, CCXML or CallXML app directly from Skype

Monday, November 23rd, 2009

When I wrote last week about how you could call a Tropo.com app directly from Skype, it naturally begged the question – can you also call a VoiceXML, CCXML, or CallXML app via Skype?

The answer is… of course!

We have had this feature in our platform for years, as I discussed in a post back in March 2008 called “Skype-ifying your voice applications“. Skype numbers (and SIP addresses and iNum numbers) are automagically assigned to your application when your create it. Once you login to our Evolution developer portal, simply click on “Application Manager” and then the name of one of your applications.

You’ll then see the “Applications Settings” information and by simply clicking on the “Contact Methods” tab you will see all the contact numbers available to you:

vxmlwithskype.jpg

You also have the ability to add more numbers if you want additional direct numbers (DIDs) associated with your app.

As I mentioned in the Tropo blog post, you can copy/paste that Skype number into Skype and call away… with or without the space in the number. You can try it out by calling:

+990009369991439407

Now, that is just a “Hello, world” type of app that is not nearly as exciting as the Yahoo!Weather app referenced in the Tropo blog post, but you get the idea.

That’s it! Create an app… call it from Skype. Nice and simple.

If you’d like to try it out, you can just head over to Evolution and sign up for free developer account if you don’t already have one. (And yes, we give you free direct DIDs, free Skype access, free SIP access, etc., etc.)


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


Make your existing VoiceXML (and CCXML and CallXML) apps multi-channel: add SMS and IM today…

Tuesday, August 25th, 2009

With our announcement of Prophecy 10 today, you can now add SMS and instant messaging (IM) to any existing VoiceXML, CallXML or CCXML application. When you login to our Evolution developer portal (and you can sign up for a free account if you don’t have one) and go into the settings for one of your applications through the Application Manager, you will now see that you can choose to make an application a voice application, a text-messaging application, or both:

voicexmlsmsim.jpg

Once you have added text messaging capability to your application, you can switch to the Contact Methods tab where you can add an SMS-enabled phone number and/or attach IM IDs to the application:

evoconfigsmsim.jpg

Now you have one application accessible via multiple channels. We’ll write more in the next bit about how to tweak your apps to work with multiple channels… but for those who want to login right now and get started, go right ahead!

P.S. Note you can also do this with Tropo.com applications as well


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


Learning CallXML, Part 1: A very simple ‘Hello, world’ voice app

Monday, January 26th, 2009

Do you want a really simple way to create voice apps? Are you looking for something simpler to write in than VoiceXML?

Throughout this Voxeo Developer’s Corner blog as well as our other blogs, we have tended to focus most of the attention on developing applications using the open standards of VoiceXML or CCXML (Call Control XML). There’s a reason for this… we are huge advocates of open standards and the need to avoid “vendor lock-in” – and we’ve deployed the most standards-compliant VoiceXML implementation out there. We want you to use our voice application platform and stay with us because of our extreme support and outstanding platform… not because we are forcing you to do so.

But recently as I’ve noticed people out there on the Internet seeking something simpler than VoiceXML, it’s become clear that we are not talking enough about the other XML language we support – our own CallXML.

CallXML was created back in 1999 when Voxeo was founded and has gone through several generations of development since that time (the most recent version is CallXML 3.0). It is very simple to use yet also cable of creating very complex applications. It’s also highly scalable with one customer of ours using CallXML for an application that is literally making thousands of simultaneous calls.

So I’m going to spend some time writing here about CallXML and showing how incredibly easy it is to build voice applications using it. You’re welcome to follow along… of course, you don’t have to wait for me… there’s a detailed set of CallXML tutorials and also an Element Summary if you just want to dive into the CallXML elements themselves and start coding.

All you need is a free developer account on our Evolution developer portal or to download a free copy of our premise Prophecy software (and remember that the beta of Prophecy 9 is on Mac OS X and Linux in addition to Windows). Note that I recently posted a step-by-step tutorial of creating an XML application in Evolution and assigning it a phone number that you may find useful.

So with that, let’s stop talking and start writing code…


Let’s start with the very basic program that simply says “Hello, world”. That is accomplished through the <say> element. Here’s how the program looks:

<?xml version="1.0" encoding="UTF-8"?> 
<callxml version="3.0">
    <say>Hello World</say>
</callxml>

Yep, that’s it. Create it in your Evolution account, assign it a free direct-dial US phone number or call it via SIP or Skype. Ta da… you’ve written a CallXML app.

Now if you have come from the world of VoiceXML, you may be more familiar with the <prompt> element and CallXML 3.0 now offers that as well. At first glance it looks very much like the <say> element:

<?xml version="1.0" encoding="UTF-8"?> 
<callxml version="3.0">
    <prompt>Hello World</prompt>
</callxml>

But the <prompt> element also includes some other fun things you can do, such as this:

<?xml version="1.0" encoding="UTF-8"?> 
<callxml version="3.0">
    <prompt repeat="3">Hello World</prompt>
</callxml>

Which, as you might expect, repeats the text three times.

There is a great amount more you can do with the <prompt> element, but I’m going to leave this simple example here and pick up with some more ideas in the next post. Those of you who want to dive in deeper right away can of course look at the examples on the <prompt> element documentation page.

Have fun with it and I’ll dive a bit deeper in Part 2…

Technorati Tags: , , , , , ,


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


Certified Tech Tip: Prophecy 8 SSML in CallXML

Friday, February 22nd, 2008

voicexmlcertifieddeveloper.gif

Well, it’s about that time again, so here we are with another certified tech tip. This week, we’re going to show you how to use some fancy SSML within your CallXML scripts. It’s not something I would consider difficult, but it is certainly useful. Plus, the ladies love a man with extensive knowledge of SSML.

I would like to start off by introducing myself to the readers of the Voxeo Blog.  My name is Mike Thompson, I work as one of the senior Supporteons at Voxeo.  I have been working full-time with Voxeo Corporation since January, 2006, and have been VoiceXML certified since March of that year.

For those of you who don’t know what SSML is, it stands for Speech Synthesis Markup Language. SSML gives you finer grained control over how your TTS (Text-to-Speech) is read by the engine. For a thorough breakdown of exactly what SSML can do, I suggest you check out the W3C spec here:

SSML Spec

Let’s get started, shall we?

The rule of thumb when integrating SSML with CallXML when using the Prophecy 8 IVR platform, is to make sure you wrap it within CDATA (since SSML is not part of the CallXML spec). If you don’t, the browser will start throwing cabbage and various old vegetables at you. Renaissance jokes aside, let’s take a look at our sample script so you can get a grasp on the use of SSML. We know all the good boys and girls declare their XML at the head of the document like so:

<?xml version= “1.0″?>

<callxml version=”3.0″>

<do label=”start”>

   <wait value=”2s”/>

   <say>

     <![CDATA[  

     <speak>

      The sub element is employed to indicate that the text in the alias attribute value replaces the contained text for pronunciation. This allows a document to contain both a spoken and written form. The required alias attribute specifies the string to be spoken instead of the enclosed string.

      For example, we can write out C X M L in our script, but using sub, it will be pronounced <sub alias="CallXML">CXML</sub>. Let's move on to prosody pitch now. <break/>

      <prosody pitch="high"> I hate what happens to my voice when I drink fifteen cups of coffee. I must admit, I feel like I could run a marathon right now. </prosody>

     <prosody pitch="low"> Let's check out emphasis shall we? </prosody>

     Want to hear a secret? <emphasis level="reduced"> The New England Patriots choked in the Super Bowl. </emphasis>

     <break strength="x-strong"/>

     I will always be a loyal Dolphins fan. <emphasis level="strong">Go Dolphins!</emphasis>. Now, who wants to hear some prosody rate goodness?

     <prosody rate="+70%"> We'll start the bidding at 45 dollars. 45 do I hear 45 dollars? 45 50 do we have 50? 50 dollars anyone? 50 55 dollars do I hear 55 dollars? Anyone? Still standing at 55 dollars. </prosody>

     <prosody rate="-20%"> 55 dollars going once. going twice. </prosody>

     <prosody rate="+10%"> Sold to the gentleman in the red sweater. </prosody>

     Goodbye!

     <break/>

     </speak>

     ]]>

   </say>

</do>

</callxml>

A couple of things to notice with this example…

1) Make sure to wrap your SSML with the speak element, as well as CDATA.  Again, this is because SSML is not part of the CallXML spec.

2) When using prosody rate, I used the percentage syntax with + or -.  Per the SSML spec, you can also use the following values when setting rate:  “x-slow”, “slow”, “medium”, “fast”, “x-fast”, or “default” 

That about wraps it up this week.  Join us next week for a certified tech tip from Jeff Menkel.  Jeff will be showing everyone a new feature in Prophecy 8 which allows the developer to record an entire call at the CCXML 1.0 scope.

Regards, Mike Thompson Voxeo Corporation


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


Voice Mashups with Twitter, part 1: Who will win the 2008 SuperBowl? (A mashup in CallXML.)

Friday, February 1st, 2008

Who will win the 2008 SuperBowl this weekend? The Patriots or the Giants? And by how many points will they win?

With those two questions in mind, please call now into one of these numbers using either your regular phone, Skype or a SIP phone:

Once you have answered those two questions, check out:

http://twitter.com/superbowlguess

Ta da… you have just participated in a voice “mashup” between our services and the Twitter micro-blogging platform!

callxmltwitter.jpgSo what’s going on here? At a high level, you called into our servers where an XML document outlined a series of prompts, collected some information and then sent the result over to a Twitter account for posting. (If you aren’t familiar with Twitter, here’s a post I wrote about it.)

There’s obviously a bit more to it (see our Quick Start guide) and over the next few weeks I’m going to explain both what I did and perhaps more importantly how it can be improved! In this part 1 you are seeing a basic call flow with Text-To-Speech prompts. While TTS is fast and, as you will see, extremely easy to create, the voice does sound… well… computer-generated! (Duh!) So in the next installment in this series I’ll talk about adding recorded prompts (and how incredibly simple it is to do through our platform). Future parts to the series will cover such things as better error handling, moving the XML over into VoiceXML/CCXML, adding other content to the output to Twitter, etc.

Naturally by the time this series is done the SuperBowl will long be over and the <deleted> will of course be victorious! However, we’ll just have to come up with some other event for the final script, eh?

Now, if you are impatient and don’t want to wait, your best bet is to head on over to our excellent CallXML documentation to learn what you need to do. Of course, you should also sign up for a free developer account on our Evolution developer site where you can create all of these applications and whatever other apps you can think of related to voice.

thexmls.jpgBefore I start walking through the code, let’s talk about the version of XML I am using. Here at Voxeo we support three different kinds of XML for developing voice applications (as outlined on our Choosing a Platform page): our own CallXML and then the VoiceXML and CCXML standards of the W3C. We created our CallXML first and then have been and continue to be very involved with the development of VoiceXML and CCXML. (For instance, our CTO RJ Auburn chairs the CCXML Working Group within the W3C and Dan Burnett is very active within those groups as well.) We are huge supporters of open standards and are extremely pleased to be leading the industry in terms of compliance with VoiceXML and CCXML standards. As part of this series, I’ll take you on a tour of how those specifications work.

To keep this first post simple, though, I’ve written this first mashup example in CallXML because the code is easier to understand as we walk through it. In a future part, you’ll see how this looks in VoiceXML.

But enough already, let’s dive into the code…

(more…)


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