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

January 26th, 2009 by Dan York

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: , , , , , ,


Related posts:

  1. Voice Mashups with Twitter, part 1: Who will win the 2008 SuperBowl? (A mashup in CallXML.)
  2. VoiceXML for web developers: Hello World
  3. How to call your VoiceXML, CCXML or CallXML app directly from Skype
  4. Make your existing VoiceXML (and CCXML and CallXML) apps multi-channel: add SMS and IM today…
  5. Step-by-step: The process of creating a new CallXML, VoiceXML, or CCXML application in Voxeo’s Evolution developer portal and assigning a phone number

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.


Leave a Reply

Please note: By submitting a comment you agree to comply with our Comment Policy. We welcome all comments, positive or negative, but do reserve the right to remove all or part of blog comments that do not comply with our policy.

Additionally, the first time you leave a comment on this blog, it will be held for moderation. After that first comment has been approved, future comments will be posted without delay.

Additional comments powered by BackType