VoiceXML 2.1 Development Guide Home  |  Frameset Home

  tutorial Nbest Lesson  |  TOC  |  tutorial Mixed Initiative Dialogs  

Tutorial: Outbound VoiceXML Applications via HTTP

This tutorial requires that you have a VoiceXML TokenID provisioned to your developer account. As VoiceXML tokens are still technically not open to all community developers (Shhhh...), you may not be a member of the special Illuminati TokenHoldersTM club yet. If not thusly privileged for both, please contact Voxeo Community Support, and specify your account credentials and the flavor of token (CallXML/VoiceXML/CallControlXML), that you'd like provisioned to save yourself some embarassment.

In this tutorial, we will:

Step 1: map any voicexml application to your tokenid

From our previous tutorials, select any one that you have already posted, and map it to the tokenid in your account. Or, you can use this example:


<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">

<form id="MyForm">

  <field name="MyField" type="digits?minlength=1;maxlength=2">

  <prompt>
    How old are you?
  </prompt>

  <filled>
      You said <value expr="MyField"/>
  </filled>

  </field>
</form>
</vxml>




Step 2: manually trigger the application

Now that you have your tokenid mapped to a valid application, let's manually trigger it to call you. In your voxeo application manager, copy the tokenid in your account to your computer's clipboard. This tokenid is a long alpha-numeric string of characters (very hard to miss). Here is an example:

3a544c162fc80442b58af315a219336c64ad8675e554...

Now open up a web browser, and paste in the following URL (be sure to paste your phone number and TokenID in place of the example ones):

Note: - The SessionControl URL for Hosted Prophecy varies by data center. To select the proper URL, see Token Initiated Calls.


  http://api.voxeo.net/SessionControl/VoiceXML.start?
      numbertodial=8001112222&
      tokenid=yourTokenIDhere


Note: developers who use the non-US datacenters are required to specify an E164-formatted dial string:

tel:+[country code][number]

You can also click on the token mapping itself, in the right hand side of the application manager to launch the token:



Then, you can simply enter the destination number in the pop-up box, and click "execute token":



In theory, your phone should ring and you should hear the application that you mapped on the other end! Alternatively, you may have just "accidentally" called your ex-roommate with this lame application to annoy him. Really, the choice is up to you.


Step 3: creating a HTML page to do the work for you

So, who wants to type all that stuff into a browser every time you need to make an outbound VoiceXML call? Not me, thats for sure. Using HTML forms, we can create a simple script that will do all that hard work for us.


<html>
  <head>
    <title>My first token app</title>
  </head>

  <body>
    <form action="http://api.voxeo.net/SessionControl/VoiceXML.start"
        method="get" target="_blank">
      <input type="hidden" name="tokenid" value="insertYOURtokenIDhere">
    Phone Number:<input type="text" name="numbertodial"><br>
      <input type="submit" value="submit">
  </form>
  </body>
</html>


Save this little page and load it up in your web browser. You should be able to simply enter the phone number you wish to have called, and click the "submit" button. How cool is it to receive a phone call by clicking a button on a web page? It's like butter!


Step 4: advanced token handling

As Vader said in Empire, "All too easy." Of course, the Sith Lord underestimated his son, so don't you make the same mistake. Our Rebel Forces have engineered a few more "special" parameters that you can pass to the token triggering script. The complete list is as follows:

Variable Description Notes
tokenid The token ID assigned to this application by community support. Required
numbertodial The phone number to dial for this session initiation request Required
callerid Value to which the callerID will be set for the outbound call. This should be a 10 digit number Defaults to the BN (billing number) for the telecommunications circuit.
calltimeout Number of seconds to wait for an outbound call to be answered before the call is considered not answered. Defaults to 35 seconds. Maximum value is 120.


Also note that you can send any user-defined parameters that you want to http://api.voxeo.net, and they will be passed along to your ColdFusion, (or whatever), document upon execution. So, assuming that our CF script was coded to act on these extra user-defined parameters, the following would be perfectly valid:


  http://api.voxeo.net/SessionControl/VoiceXML.start?
    numbertodial=8001112222&
    tokenid=yourTokenIDhere&
    MyVar1=foo&
  MyVar2=bar&
  MyVar3=gronk



So that magic happens like this...


Here is the list of possible returned values by the VoiceXML.start token router:


Result Value Description
failure: No answer The call was not answered
failure: Busy The line is busy
Call number is bad The number provided was not a validly formatted number (stop that!)
Invalid Token. The token provided was not a valid token.
Internal error There was an error in the token initiation
Not specified An error occurred with no specific reason given
success The call was initiated successfully



So there you have it. You are now empowered to make groovy buttons and integrate the web and the phone in ways your Aunt Beru never thought possible. Impressive. Most impressive.

Download the Code!

  Source code


What we covered:




  ANNOTATIONS: EXISTING POSTS
rapts
6/8/2006 5:38 PM (EDT)
For an outbound call with tokenid, I want to pass some user defined variable to the startURL and want the application to take it and read it during the prompt. For example, I add user defined variable called accountNumber to the start URL, will the snippet given below work:

<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">

<meta name="maintainer" content="YOUREMAILADDRESS@HERE.com"/>

<form>
  <block>
      <prompt>
        Your account number is <var expr="'<%requestst.getParameter("accountNumber")%>'"/>
      </prompt>
    </block>

  </form>
</vxml>

mikethompson
6/8/2006 7:33 PM (EDT)
Hi Vangipuram,

It seems to me like you want to use some server-side scripting to make your applications more dynamic!  This is definitely possible on the Voxeo platform, and we actually have great documentation on how to do this.  You can find out all about passing variables into the querystring here: http://docs.voxeo.com/voicexml/2.0/qs_vars.htm

This shows you how to retrieve the parameters from the querystring with php/jsp/asp/coldfusion/etc...

Hope this helps,
Mike Thompson
Voxeo Extreme Support
santy1976
8/17/2006 11:06 AM (EDT)
Hi Guys,

      I am a newbie on VXML stuff, but have gone thru the hello world traditional examples stuff on this site. This site really rocks for newbies .I'm in the process of writing usecases for my project and theres an reqt where in I have to initiate the IVR App whenever the user tries to send a SMS(Short Message Service)(i.e The user requests for a transaction).The IVR would actually call back the userand would narratew the transaction summary which he has been called for.How do I initiate the IVR App in case of SMS ??Please do let me know ASAP.

Thanks in Advance....

Cheers
Santy
mikethompson
8/17/2006 4:59 PM (EDT)
Santy,

I am glad to see you are liking our documentation sets! :)

Before I dive into this I just want to be clear, any SMS functionality needs to be taken care of outside of the VoiceXML application context.  That is, you need to have your own seperate web application which handles the SMS and callerID information.  When your web app receives this information, it needs to fire off an HTTP requested token call (check out token calls here: http://docs.voxeo.com/voicexml/2.0/t_15.htm).  You will also need to send along any callerID information as a parameter.

This token will fetch your invoking application, which should then pull the callerID value of the SMS sender from the querystring, and fill the call value from within the application.

Hope this helps explain things...

Best,
Mike Thompson
Voxeo Corporation
cmarko
8/18/2006 4:14 PM (EDT)
When placing an outbound call over HTTP with VoiceXML.start, it is mentioned that the token router returns results on whether "No answer", "Busy", "Invalid token", etc.  How are these results actually pulled back from HTTP and fed back to the HTML or exposed to the web application?

Thanks,
Chris
Michael.Book
8/24/2006 12:05 AM (EDT)
Hi Chris,

The result of a token initiation request is returned as the body of the return itself - as form data.  How to access the 'errorcode' would, of course, depend on what method and server-side scripting language you used to make the HTTP request.

I hope this helps to get you started.  If you would like a specific example for your favorite flavor of server-side scripting, just let us know.  We'll gladly pull an example out for you...


Cheers,

~ Michael
mallen
1/10/2007 10:54 AM (EST)
Is there a way to pass to http://session.voxeo.net/VoiceXML.start a Skype ID instead of a phone number?  How do I get my app to call someone via Skype?
mikethompson
1/10/2007 1:01 PM (EST)
Hi Mallen,

Sadly, there is no way for us to send outbound calls to Skype IDs.  The only use of Skype on our platform is through inbound calls to the Skype numbers in your application manager.  We would like to be able to one day include outbound calls to Skype as a feature, but we are waiting on Skype to allow such functionality.

Best,
Mike Thompson
Voxeo Corporation
bruce_zhang
2/6/2007 2:25 AM (EST)
I tried many phone numbers(available US phone number) to outbound my voice applications and I always receive a failure message: "failure: Call number is bad".

Can you tell me the possible reason?

Thanks
Bruce
jbassett
2/6/2007 4:42 AM (EST)
Hello,

Go ahead and give this a try again. I have enabled the correct setting for outbound US calling onto your account.

Let me know if you still have problems.

Thanks
Jesse Bassett
Voxeo Support
fayyazkl
2/21/2007 12:57 AM (EST)
Hi,

when i make an outbound call through tokens via http request, can i play a .wav file to the listener. Actually, i dont require to be able to talk to calle. Instead i only need to play an audio file to him and act according to his responses. Is it possible using voiceXML? or for that matter CCXML etc. Please give some directions.

Thank you.

Fayyaz
jbassett
2/21/2007 3:28 AM (EST)
Hello,

You would probably want to use CCXML for the calling out itself and then transition to a vXML document to handle the playing of audio and handling the user repsonse.

This is probably where you would want to start.
http://docs.voxeo.com/ccxml/1.0/createcall.htm

Let me know if you have any other questions. If you try some of this and run into some problems, feel free to open a support ticket.

Thanks
Jesse Basse

rapts
2/26/2007 10:33 PM (EST)

Hi,

How do I get call duration in a token-initiated outbound call. Is there a shadow variable in this type of call, which contains call duration.

Thanks.




mikethompson
2/27/2007 12:40 PM (EST)
Hi there,

VoiceXML does not have a simple shadow variable available to log the duration of the call, unless you are using <transfer>.  This being said, if you'd like to determine how long your VoiceXML outbound call has been, simply use ECMA Script to grab the time as needed.  For example:
_______________________________________________________________________________________

<var name="dateUnixEpoch" expr="new Date().getTime()"/>
<log expr="'*** Milliseconds since the Unix Epoch (January 1 1970 00:00:00 GMT) is: [' + dateUnixEpoch + '] ***'"/>

<var name="dateRFC2822" expr="new Date()"/>
<log expr="'*** RFC 2822 formatted date is: [' + dateRFC2822 + '] ***'"/>

<var name="timeVar" expr="new Date().getHours() + ':' + new Date().getMinutes() + ':' + new Date().getSeconds() + ':' + new Date().getMilliseconds()"/>
<log expr="'*** The current time is: [' + timeVar + '] ***'"/>

<var name="MyVar2" expr="new Date().getTimezoneOffset()"/>
<log expr="'*** THE GMT OFFSET IS: ' + MyVar2 + ' ***'"/>

<var name="MyVar3" expr="new Date().getTime() + (new Date().getTimezoneOffset() * 1000)"/>
<log expr="'*** THE TIME WITH GMT OFFSET IS: ' + MyVar3 + ' ***'"/>

________________________________________________________________________________________


This site was helpful in explaining why some browsers (like our VXML browsers) return the year as '106'.

http://www.quirksmode.org/js/introdate.html

Here is my BeginTime code.

<var name="BeginTime" expr="(new Date().getMonth()+1) + '/' + new Date().getDate() + '/' + (new Date().getYear()+1900) + ':' + new Date().getHours() + ':' + new Date().getMinutes() + ':' + new Date().getSeconds() + ':' + new Date().getMilliseconds()"/>

Hope this helps,
Mike Thompson
Voxeo Corporation
tf8252
3/16/2007 8:12 AM (EDT)
My VXML application will initiate calls to an existing IVR (OpenWave Voice Mail platform) via an http request.
The application needs to "listen" for the first few words of the far end speech to verify that the IVR is playing.

Can I use the record element to do this?  If so can I cut off the recording after the first few words rather than force the app to "listen" to the entire greeting?


VoxeoBrian
3/17/2007 10:30 AM (EDT)
Hello,

You would be able to utilize the record element to implement what you are trying to do.  Here is a snippet from our docs using the record element and limiting the time with the maxtime attribute.

<record name="R_1" maxtime="20s" finalsilence="5s">

I hope this helps to answer your question, if you have any others don't hesitate to ask.

Regards

Brian
adarsh
6/8/2007 5:18 AM (EDT)
Hello there,

we would like to use our community developer account to provide commercial application to our clients like "HTTP initiated phone applications " to thewebsite of our clients:
>open community developer account>get tokenid and outbound previlages for this account>insert this code in webpage>
<form action="http://session.voxeo.net/VoiceXML.start" method="get" target="_blank">
  <input type="hidden" name="tokenid" value="insertYOURtokenIDhere"><input type="submit" value="Call Sales Person"></form>
there will be free 500 outdial minutes per month any usage over this limit usually indicates commercial traffic, billable at $0.18 per minute.

we would like to take your permission,what do you say  ? how shall we go abt it can you plz guide us.
                                          also
in calling via HTTP what are the call charges and who will have to pay the charges and how ?
adarsh
6/8/2007 6:16 AM (EDT)
Hello there,

we would like to use our community developer account to provide commercial application to our clients like "HTTP initiated phone applications " to thewebsite of our clients:
>open community developer account>get tokenid and outbound previlages for this account>insert this code in webpage>
<form action="http://session.voxeo.net/VoiceXML.start" method="get" target="_blank">
  <input type="hidden" name="tokenid" value="insertYOURtokenIDhere"><input type="submit" value="Call Sales Person"></form>
there will be 500 outdial minutes per month any usage over this limit usually indicates commercial traffic, billable at $0.18 per minute.

we would like to take your permission,what do you say  ? how shall we go abt it can you plz guide us.
                          also
in calling via HTTP what are the call charges and who will have to pay the charges and how ?
voxeojeff
6/8/2007 11:01 AM (EDT)
Hi there,

Unfortunately, we limit our developer accounts to 100 minutes per month of outdial access, and we do not allow commercial traffic to be run through our Staging development environment.  However, we do have these limitations in our Production environment.  If this is something you would be interested in, please feel free to contact sales@voxeo.com and a sales team member will gladly contact you with all the details.

Best regards,

Jeff Menkel
Voxeo Corporation
kumbhamd
9/21/2007 11:10 AM (EDT)
Hello There,

we are trying to test some outbound calls. I see we can use token to initiate the call using http://session.voxeo.net/VoiceXML.start, my questions is there any other way to initiate the call using the prophecy 8.x software locally?

Regards,
dk
mikethompson
9/21/2007 1:56 PM (EDT)
Hello,

If you would like to spawn outbound call in Prophecy, you can do so via similar methodology:

http://127.0.0.1:9998/VoiceXML.start?tokenid=MyRouteID&numbertodial=YourNumber

As you can see, the only change is the host address and the tokenID is associated with the route ID of the application, not a long string such as in hosted.

Hope this helps,
Mike Thompson
Voxeo Corporation
itgrakesh
2/6/2008 3:43 PM (EST)
We are looking for a published web service where we can post VoiceXML to place IVR calls. And there should be some mechanism to get the response and details of the placed calls.

Also I want to know what are Call Start Tokens (Outbound Dialing Tokens) and how to write or use these tokens. The intend is to your system to test our prototype application
mikethompson
2/6/2008 4:04 PM (EST)
Hi Rakesh,

I'd like to answer your last question first, as I think this will help clarify things...

A call start token is a unique string which you tie to an application mapped in your Voxeo Application Manager.  It's a means of launching your VoiceXML/CallXML/CCXML applications without having to dial into them first.  In order to do this, you simply need to send the token ID to the following servlet:

http://api.voxeo.net/SessionControl/4.5/VoiceXML.start?tokenid=YourTokenIDHere

This will ultimately find the application tied to that token, and begin processing the output.  I should mention VoiceXML.start brings up a stock CCXML script under the covers to launch the outbound call.  Then, when the call is answered, it launches your VoiceXML application as a dialog.  This being said, when using VoiceXML.start, you need to pass in your destination phone number with the numbertodial parameter.  So again, we should have something like this:

http://api.voxeo.net/SessionControl/4.5/VoiceXML.start?tokenid=YourTokenIDHere&numbertodial=4075551234

Both CallXML and CCXML are capable of sending out calls by themselves, so when using CallXML.start and CCXML10.start, you'll need to hard code the destination in your actual start document, instead of passing in numbertodial like the VoiceXML servlet.

All this being said, you should not  need a web-service to launch these calls.  You can code a simple PHP script which uses CURL to send a request to api.voxeo.net and launch the script.  On a large scale deployment, you could tie this server-side code into a database and dynamically generate calls to destinations pulled from a database.

Hope this helps,
Mike Thompson
Voxeo Corporation
ragjeff
2/21/2008 10:12 AM (EST)
Hello,

I see that in a previous post you mention how to spawn an outbound call using Prophecy locally, described here:

If you would like to spawn outbound call in Prophecy, you can do so via similar methodology:

http://127.0.0.1:9998/VoiceXML.start?tokenid=MyRouteID&numbertodial=YourNumber


I may be missing something really obvious, but what is the route ID, and where do I find it for an application? 

Also, if I eventually use a telephony card to use my own phone lines to run this application, is this how I would initiate an outbound call, or is there another way to initiate using a local phone line?
mikethompson
2/21/2008 5:08 PM (EST)
Hello,

The RouteID is the name you give our route when in the call routing section of the Prophecy Administration Page.  You can name it whatever you want.

As for your other question, this would be how you spawn an outbound call over a regular phone line.  Of course, Prophecy will need to be fully configured with your hardware in order to do this effectively.  For instance, have a dialogic card installed on the server which is used in conjunction with Paraxip (SIP gateway software).

Hope this helps,
Mike Thompson
Voxeo Corporation
mike.j.stein
2/29/2008 4:08 PM (EST)
Hello,

I'm having trouble with a simple "Hello World" test on outbound dialing, with my community developer account.

I've got a token for my account, and I've mapped my .vxml file correctly (when I call the skype number for the account, I hear my hello world test).

But when I try the outbound call, I get the following error:
event: name="error.dialog.notstarted", callid="3fd11e63619c10ae544b4f0786cc60cc", error="no dialog target available", reason="no dialog target available", dialogid="3fd11e63619c10ae544b4f0786cc60cc"

Has anybody else had this problem, and any ideas for a solution?

Thanks,
Mike
VoxeoDustin
2/29/2008 5:05 PM (EST)
Hey Mike,

I took a quick look at your account and does not appear you have a token nor are you setup for outbound dialing. If you're interested in setting this up, please open a support ticket and we can provide you with further details.

Thanks,
Dustin
mikejstein
2/29/2008 5:23 PM (EST)
Hi Dustin,

I realized that there was some confusion because I've actually wound up with two accounts : "mike.j.stein", which I initally posted on, and "mikejstein", which does have a token.

I'm posting under the correct account, where I've been having the trouble with dialing tokens.  It's the problem as described in my previous post - getting the no dialogue found error.

Thanks,
Mike
mikethompson
2/29/2008 6:00 PM (EST)
Hello,

There is currently an issue with sending outbound calls via token in Prophecy 8 VoiceXML staging.  Specifically, there is a configuration issue in the environment, which needs to be corrected.  In speaking with my Platform Operations team, the issue should be fixed during this weekend's maintenance window.  As such, come Monday, your applications will successfully launch out of Prophecy 8 VoiceXML in staging.

Best,
Mike Thompson
Voxeo Corporation
eraldo
4/10/2008 9:35 PM (EDT)
Is there a way to pass to http://session.voxeo.net/VoiceXML.start a SIP number instead of a phone number? I mean something like: http://api.voxeo.net/SessionControl/VoiceXML.start?
    numbertodial=sip:17473083562!198.65.166.131@sbc-staging-internal&
    tokenid=yourTokenIDhere 
VoxeoDustin
4/10/2008 11:42 PM (EDT)
Hey,

That will work just fine, though you can probably leave off the country code and simply pass it as [b]sip:4075551212!66.77.88.99@sbc-staging-internal[/b]

Cheers,
Dustin
eraldo
4/11/2008 10:24 AM (EDT)
Thanks a lot
eraldo
4/11/2008 12:20 PM (EDT)
i'm testing an outbound vocicemail application via http, i entered this line in my web browser: http://api.voxeo.net/SessionControl/VoiceXML.start?numbertodial=sip:17473083562!198.65.166.131@sbc-staging-internal&tokenid=hereIputMyTokenID
and then i receive a call in my internet phone(gizmo), but when i
answer it there's no voice, there's nothing, and it was supposed to be a voice saying:Hello World. This is my first telephone application.

my Starturl application is:
<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1" >

  <form>
    <block>
    <prompt>
      Hello World. This is my first telephone application.
    </prompt>
    </block>
  </form>
</vxml>

i don`t know why i don`t hear anything. Maybe i need to add some extra code in my application. PLEASE HELP ME!!!.
voxeojeremyr
4/11/2008 12:37 PM (EDT)
Hi eraldo,

To further investigate as to what is exactly happening in your application, I would like to see the application logs.  If you would open a support ticket and attach a copy of the log after you initiate the outbound call, I would be happy to take a look at why this is happening.

If you have any questions, please let me know.

Thanks,
Jeremy
eraldo
4/17/2008 12:24 AM (EDT)
Hi,
I would like to know how can we get the values returned by the VoiceXML.start token router when placing an outbound call over HTTP with VoiceXML.start? because i was trying to find some voxeo docs that maybe could help me but i couldn't get it.And other question, is it possible to send the results of token router, like 'busy', 'no answer',etc..., to a servlet instead of a jsp file?

Thanks...
mikethompson
4/17/2008 3:18 PM (EDT)
Hello,

Would you be so kind as to provide me with an example of what you're looking to do?  Are you simply looking to pull the parameter values into your application?  If this is the case, you'll need to use server-side scripting in your invoked script to pull the parameters from the querystring.  We happen to have some good documentation on this very feature here:

http://docs.voxeo.com/voicexml/2.0/qs_vars.htm

As for your second question, you can grab the result of the token request by grabbing the message body from the HTTP response header.  This can be done easily via server-side as well.

Hope this helps,
Mike Thompson
Voxeo Corporation
schleiff
1/9/2009 9:25 PM (EST)
What a great service! I can recognize that this is a very powerful capability. However, I'm still plagued by newbie ignorance.

When I click the token to manually trigger my outbound call, it works great; however, when I try to paste the http into my browser (and include the right phone number and token) I get back "Invalid Token". Any hints?

Thanks again.
schleiff
1/9/2009 9:37 PM (EST)
Me again! My prior problem was because when I copy-pasted the tokenID, I failed to copy the complete token.

Now I'm to the point where my phone rings, but as soon as I answer it the browser displays "failure: Not specified".

I consider this to be progress, because now I've progressed far enough to make the phone ring.
jdyer
1/9/2009 9:37 PM (EST)
Hey Marty,

I am afraid we are going to need a bit more information from you on this issue so we can get a firm handle on whats going on.  First off we would like to see the URL you are using the initiate the cell, second we would like you to replicate the issue with the debugger open and send us the session logs for an instance of this issue.  The application debugger is the best diagnostic tool that we have for getting insight into applications that aren't behaving the way we want them to, but it takes a bit of experience to intuit the messages displayed.

Click on the "account" tab at the top right of evolution site, and select the "application debugger" prior to making test calls to capture the data. You can then select the "support" tab in the debugger to send us a problem report. Some additional links on this utility are provided below:

http://docs.voxeo.com/voicexml/2.0/loggerfeatures.htm
http://docs.voxeo.com/voicexml/2.0/mot_loggermessages.htm
http://docs.voxeo.com/voicexml/2.0/gettingsupport.htm

We'll be standing by for your response!

Regards,

John D.
Customer Engineer
Voxeo Support
schleiff
2/16/2009 10:44 AM (EST)
Here's some comments and a question about the list of possible values returned by the VoiceXML.start token router. The responses I see differ in minute ways, so I'm trying to confirm that they are indeed from the same place (i.e., the token router). I see the following:

Invalid Token.    (upper case T and a period)
failure: Busy      (preceded by the failure:)
failure: No answer (Preceded by failure:) 
success            (not in the list)

MattHenry
2/16/2009 11:40 AM (EST)


Hello Marty,

As I understand it, this posting is twofold. Assuming that I am correct in my interpretation of your posting, I will post replies inline for your review and conformation. In the event that I have misunderstood something, please let me know:

1 - Are all of these results returned from the token router?

Matt: Yes indeedy

2 - The results returned from the token router are formatted slightly differently than what is listed in the documentation

Matt: Likely a goof in the documentation. I'll see that this is corrected ASAP.


~Matthew Henry
vaibhavsinha
3/18/2009 7:24 AM (EDT)
Hi,

    I think this is a great platform! I have a question on whether multiple sessions are possible: is it possible for multiple callers to call different destination numbers at the same time? For example, Abe and Bob are two users who are calling my direct dial-in number and they want to be connected to two different people (Abe to Lincoln and Bob to Hope) at the same time. Can this be done using either VoiceXML.start or a token-initiated mechanism?
voxeojeremyr
3/18/2009 8:22 AM (EDT)
Hi,

Yes, you can certainly accept multiple phone calls.  Each, phone call would be running as its own thread. 

A good analogy would be a web browser.  You can open up multiple web browsers and have then each fetching a different page at the same time.  The VXML browser works in the same way.

Regards,
Jeremy Richmond
Voxeo Support
ekramer
5/11/2009 5:05 PM (EDT)
It seems that when using token-initiated calling, if the party doesn't pick up, Voxeo will retry up to a total of three times.  Could someone point me to the documentation of why this happens and how to control it?  Would using CCXML for my outbound app instead of VoiceXML give me more control?  Thanks! -Eric
VoxeoDustin
5/11/2009 5:10 PM (EDT)
Hello ekramer,

This will only occur on Voxeo's hosted platform and is due to logic built in our session border controllers. They will try the call across up to 3 separate carriers as a failover if any one call fails. There are methods to circumvent the failover routing, however we highly recommend that you do not do this. If one carrier is experiencing issues, then 100% of your calls will fail. With the failover routing, we will seamlessly revert to a working carrier.

Regards,
Dustin Hayre
Customer Support Engineer II
Voxeo Support
tennvol
7/22/2009 7:17 AM (EDT)
After clicking on the 'embarrassment' link in the first paragraph, I'm wondering if that is the result of long hours of vxml debugging?
voxeoJeffK
7/22/2009 7:34 AM (EDT)
Hello,

As many times as I've been through our documentation pages I've never clicked that link. I am now going to go over to his desk, and point and laugh at him for the both of us.

Regards,
Jeff Kustermann
Voxeo Support
team1
12/21/2009 11:18 PM (EST)
Hi,

i think i'm having a problem with IP address & port number. when i added in another IP address & port number it worked. but not mine. by any chance do you know where the problem lies with?


<?php

include 'openDB.php';

$number=$_POST['numbertodial'];
$comment=$_POST['comment'];

header('Location:http://localhost:9990/VoiceXML.start?tokenid=insertyourtokenid¶m1='.$comment.'¶m2=text&numbertodial=sip:'.$number.'@172.20.20.16');

?>


the IP address and the port number stated is the one i'm having problem with.



Thanks!
VoxeoDustin
12/21/2009 11:23 PM (EST)
Hello,

Which portion are you having difficulty with?

http://localhost:9990/VoiceXML.start?

or sip:'.$number.'@172.20.20.16')?

172.20.20.16 is a private IP address. Is this a machine on your network with a SIP client?

Regards,
Dustin Hayre
Solutions Engineer
Voxeo Corporation
MattHenry
2/19/2010 11:50 AM (EST)


In the interest of clearing up any possible confusion, there are several annotations here that reference the deprecated token API:

* http://session.voxeo.net/VoiceXML.start

This API should no longer be used by developers: Instead developers should reference the new-and-improved API:

* http://api.voxeo.net/SessionControl/VoiceXML.start

~Matthew Henry
bradnemer
11/13/2010 2:25 PM (EST)
The demo URLs didn't work for me, but Support gave me the following one, which works great:

http://session.voxeo.net/SessionControl/4.5.40/VoiceXML.start
leu
3/1/2011 12:44 AM (EST)
I tried my french phone number to outbound my voice applications and I always get this failure message: "failure: Not specified ".

Can you please tell me why?

Thank you

Lea
voxeoJeffK
3/1/2011 10:02 AM (EST)
Hello Lea,

To best investigate we'd recommend testing with the Application Debugger running. Then near the top-right of the window you can send the debugger output to us. We'll examine the details to discover what is occurring.

Regards,
Jeff Kustermann
Voxeo Support
aantik
2/29/2012 11:38 PM (EST)
Hello there, I have a question. Suppose we need an aplication that a customer needs to be informed when an operation on his/her credit card by an outbound call. The IVR outbound call mus be linked to a vXML application on your infraestructure, but every customer has a different credit card number and the call must inform about the amount of the operation. So, I understand how to assign variables by a server side scripting but in this case the IVR application must call the dynamic vxml passing the credit card number in order to provide the correct operation. How do you do that?. Can you pass some parameter (credit card number) to the "http://api.voxeo.net/SessionControl/VoiceXML.start" request so the main vXML application can call the correct dynamic page for the matching credit card number?
VoxeoDante
3/5/2012 12:17 PM (EST)
Hello Aantik,

You would need to utilize server-side scripting on your side to capture the variables and print that data into the VXML as simple VXML, but yes, you can do this. 

When you pass parameters in the API call those parameters are tacked on and sent over to the URL defined in the application manager.

http://www.vxml.org/frame.jsp?page=qs_vars.htm

So the Flow might look something like this;

1 - http request to http://session.voxeo.net/CCXML10.start is kicked off with some variable/value pairs:

http://api.voxeo.net/SessionControl/CCXML10.start?tokenid=abc123?myVar1=foo&amp;myVar2=bar


2 - the primary application URL that is mapped will then be loaded:

http://myServer.com/apps/mCCXMLApp.jsp?tokenid=abc123&myVar1=foo&amp;myVar2=bar

I hope that clears things up for you.

Regards,
Danté Vitulano
Hosted Solutions Engineer

[url=http://www.voxeo.com/university/home.jsp]
[img=http://www.voxeo.com/images/logos/VoxeoUnivLogo.png/]
[/url]
[b][color=blue]Interested in Training? Visit the Voxeo University Page to Learn More![/color][/b]
dhavalkapasi
4/5/2012 9:17 AM (EDT)
I would like to make an outbound call to multiple recipients at one time with the same message using the HTTP API for a Poll. Recipients will enter a digit as a response and we need that response per user sent back to the application. Once the user enters a response, would also like to send them a follow-up thank you message.

I went through all the annotations and could not figure out how this is possible. Can you help me guide if this is possible and if yes, how it is possible?

Also, can you enable outbound dialing on my account?

Thank you in advance.
MattHenry
4/9/2012 10:44 AM (EDT)


Hi there,

Outbound dialing to multiple recipients is indeed possible with our technologies. It's a fairly straightforward process where you'd invoke the token multiple times, changing the numbertodial string on each invocation of the API.

Note that it is the developer's responsibility to throttle calls, and we ask that on our staging network that developers limit themselves to only 2 concurrent calls up at any given time.

You can find a helpful how-to on this topic in our blogs:

* http://blogs.voxeo.com/voxeodeveloperscorner/2009/03/16/how-to-outbound-notification-applications/

Regarding your request for outbound dialing access, this permission has been granted; please use this with sound judgment, and be mindful of our EULA policies.


Regards,

~Matthew Henry
abeall
7/23/2012 10:46 AM (EDT)
Hello,

How do you pass query string parameters into the voice xml script using the example above:

http://api.voxeo.net/SessionControl/VoiceXML.start?
    numbertodial=8001112222&
    tokenid=yourTokenIDhere&
    myparam1=123&
    myparam2=abc

How does the voice xml script get access to the query string parameters?

Thanks

Art
MattHenry
8/2/2012 12:37 PM (EDT)


Hi Art,


In order to pass variables from the API to the start URL, the document that is fetched should be dynamic (eg, .NET, PHP, etc). The dynamic markup in question would be coded to extract the querystring parameters and import them into the VXMLcontext.

For instance, when using the API invocation:

http://api.voxeo.net/SessionControl/VoiceXML.start?
    numbertodial=8001112222&
    tokenid=yourTokenIDhere&
    myparam1=123&
    myparam2=abc

A PHP-capable VXML document might do something like this:

<xml version="1.0">
<?php
//grab each param
$myPHPVar1 = $_REQUEST["myparam1"];
$myPHPVar2 = $_REQUEST["myparam2"];
?>

<vxml version="2.1">
<var name="VXMLVar1" expr="<?php echo $myPHPVar1?>"/>
<var name="VXMLVar2" expr="<?php echo $myPHPVar2?>"/>
<form>
  <block>
<log expr="'PARAMS = ' + VXMLVar1 + ' and ' + VXMLVar2"/>
  </block>
</form>
</vxml>


~Matthew Henry

login
  tutorial Nbest Lesson  |  TOC  |  tutorial Mixed Initiative Dialogs  

© 2013 Voxeo Corporation  |  Voxeo IVR  |  VoiceXML & CCXML IVR Developer Site