| VoiceXML 2.1 Development Guide | Home | Frameset Home |
| aai | Data Type: CDATA | Default: Optional |
| This attribute is currently disabled on the Voxeo network The aai attribute is a recent addition to VXML 2.0 that allows the developer to send Application to Application Information to the far-end application. This information is available in the shadow variable session.connection.aai. | ||
| aaiexpr | Data Type: CDATA | Default: Optional |
| This attribute is currently disabled on the Voxeo network The aaiexpr specifies an expression that evaluates to the aai data to be sent to the receving application. | ||
| bridge | Data Type: (true|false) | Default: Required |
| The bridge attribute specifies whether or not the outbound call is to be a blind transfer or a bridged transfer. When the value is set to ‘true’, then this indicates that a bridged transfer is intended. A bridged transfer will allow the application to continue to execute when the transfer is completed, whereas a blind transfer will terminate the application once the outbound call has been completed and disconnected. Please note that only bridged transfers are supported on the Voxeo network; failing to set this attribute, or specifying a value of 'false' will throw a fatal error. For more detailed information on the transfer types, please see the documentation for transferring calls. | ||
| cond | Data Type: CDATA | Default: Optional (true) |
| The cond attribute specifies a Boolean expression, which must equate to ‘true’ in order for the content to be visited and executed. (Additionally, the expr attribute must also be set to ‘undefined’, see below). | ||
| connecttimeout | Data Type: CDATA | Default: Optional |
| The connecttimeout attribute specifies the amount of time that the platform will attempt to connect the call, before a ‘noanswer’ event is returned. Note that this element is subject to the strict time syntax, where the time value must be followed by ‘s’ or ‘ms’. | ||
| dest | Data Type: CDATA | Default: Optional |
| The dest attribute specifies the destination number or URI to transition the caller to. The Voxeo platform supports both the ‘tel’ and the ‘sip’ protocols for outbound dialing: <transfer dest=”tel:+18002223333”> (absolute syntax) <transfer dest=”tel:18002223333”> (exact syntax) <transfer dest=”sip:xxx.xxx.xxx.xxx”> (sip address) In addition, the developer can include post dial dtmf input to trigger after the call is connected, by using the following syntax: <transfer dest=”tel:+18002223333;postd=ppp4444”> Note that the ‘p’ character indicates a pause between connection and post-dial input from the application; navigation of voicemail systems using the postdial method should be timed carefully using this syntax. | ||
| destexpr | Data Type: CDATA | Default: Optional |
| The destexpr attribute allows the developer to specify an ECMAScript expression resolving to the destination of a transfer. Note that either dest or destexpr may be specified, but not both. | ||
| expr | Data Type: CDATA | Default: Optional |
| The expr attribute specifies the initial value of the element; if this value is ‘undefined’, (default), then the element will be visited by the FIA and executed. If this attribute has a value other than ‘undefined’, then the element will not be visited until explicitly set to 'undefined', by use of the clear element. | ||
| maxtime | Data Type: CDATA | Default: Optional |
| The maxtime attribute specifies the duration of the transferred call. By default, this is set to ‘0’, which indicates that the call can last an arbitrary length of time; i.e., until the caller or the callee disconnects. | ||
| name | Data Type: NMTOKEN | Default: Optional |
| The name attribute specifies the ECMAScript form item variable name for the transfer. Conditional statements in the filled portion of a transfer are based upon this variable name. See Appendix G for additional information on transferring calls. | ||
| transferaudio | Data Type: CDATA | Default: Optional |
| The transferaudio attribute is a VXML 2.0 that allows the developer to specify what is played to the caller in place of the default 'ring-tone'. The value of this can be any wav file, assuming that it meets the criteria for a 'playable' file. | ||
| TransferName$.duration | A handy way to log a transferred call's duration is by making use of the TransferName$.duration shadow variable. The resulting value from this logs the amount of time, in seconds, that the transfer lasted. Note that in the event that the original called party that initiated the transfer hangs up before the called party, this variable will not be populated with a value at all, per the specification. If the retention of this call data is of critical imprtance in your application, it is suggested that you use server side or client side coding to calculate transfer durations. |
| TransferName$.inputmode | The 'inputmode' shadow variable is used when a caller uses a hotword to terminate a bridged transfer. When this occurs, this shadow variable will hold the value of the mode of input used, (DTMF, or Voice), that matched the hotword grammar. |
| TransferName$.utterance | When used with transfer hotwording, this shadow variable will ihold the value of the utterance value that the caller, (near-end), used to terminate the bridged transfer. |
| <?xml version="1.0" encoding="UTF-8"?> <vxml version = "2.1"> <meta name="author" content="Matthew Henry"/> <meta name="copyright" content="2005 voxeo corporation"/> <meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/> <form id="F1"> <transfer name="T_1" bridge="true" dest="tel:+12223334444"> <!-- ************************************************* --> <!-- Transfer code remix, courtesy of D.J. Johnnie Cochran --> <!-- ************************************************* --> <prompt> Placing the call, y'all</prompt> <filled> <if cond="T_1 == 'busy'"> <prompt>The line is busy, Lizzie. </prompt> <exit/> <elseif cond="T_1 == 'noanswer'"/> <prompt> No one's home, metronome. </prompt> </if> </filled> </transfer> <block> <goto next="#F2"/> </block> </form> <form id="F2"> <block> <prompt>if the bridge is true, then the call goes on for you. </prompt> </block> </form> </vxml> |
| <?xml version="1.0" encoding="UTF-8"?> <vxml version = "2.1"> <meta name="author" content="Matthew Henry"/> <meta name="copyright" content="2005 voxeo corporation"/> <meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/> <form id="F1"> <transfer name="T_1" bridge="true" cond="false" dest="tel:+12223334444"> <!-- ************************************************* --> <!-- Transfer code as performed by the esteemed Pikey, Mickey O'Neil --> <!-- http://imdb.com/title/tt0208092 --> <!-- ************************************************* --> <prompt> Bwarshe blarn. Eriddie me beer! Fragunt! </prompt> <!-- this will not get exectued, as the condition = false --> </transfer> <transfer name="T_2" bridge="true" expr="'shampoohorn'" dest="tel:+12223334444"> <prompt> Harrgun blime shnoggin enell O' Rillbey! </prompt> <!-- this will not get exectued, as the expr != undefined --> </transfer> <transfer name="T_3" bridge="true" dest="tel:+12223334444" cond="true" expr=""> <prompt> Bir nolley O'malley dor tuggatinya er street!</prompt> <!-- preparing to place the call --> <filled> <if cond="T_3 == 'busy'"> <prompt> Nad to sham er Blimey! </prompt> <!-- the call is busy --> <exit/> <elseif cond="T_3 == 'noanswer'"/> <prompt> Gurt dermit, esh murka nam. </prompt> <!-- there is no answer --> </if> </filled> </transfer> </form> </vxml> |
| <?xml version="1.0" encoding="UTF-8"?> <vxml version = "2.1"> <meta name="author" content="Matthew Henry"/> <meta name="copyright" content="2005 voxeo corporation"/> <meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/> <property name="com.nuance.tts.ResourceName" value="en-US.English-Male2" /> <property name="Persona" value="KeanuReeves" /> <var name="DestVar" expr="'tel:+12223334444'"/> <form id="F1"> <transfer name="T_1" bridge="false" destexpr="DestVar"> <!-- ************************************************* --> <!-- Transfer code, as performed by Keanu Reeves --> <!-- ************************************************* --> <prompt> Huh. Dude. </prompt> <filled> <if cond="T_1 == 'busy'"> <prompt>Whoah. </prompt> <exit/> <elseif cond="T_1 == 'noanswer'"/> <prompt> Whoah. </prompt> </if> <prompt> Dude. Whoah. Your call. It was like. <value expr="T_1$.duration"/> seconds. Whoah. </prompt> </filled> </transfer> </form> </vxml> |
| ANNOTATIONS: EXISTING POSTS |
visionik
|
|
| Note that the ability to specify the ANI / Caller ID that the Voxeo platform will use is not included in the documentation above. You can specify the ANI / Caller ID to use with the following syntax:
<transfer dest="tel:+14075551234;ani=5551234567"/> the ANI must be exactly 10 digits long. Also note that both the ability to place outbound calls and to specify a "customer" caller ID are restricted by default. If you need to make outbound calls or specify caller ID, please contact voxeo support via email to support@voxeo.com |
|
PUNUKA
|
|
| Hi.. long time i have been away. I am just wondering how to test a performance of my vxml ivr to support many number of call(sessions) at once. Since I dont have many number of hard phones or softphones too to dial to the ivr, I thought of writing a script that will dial to the ivr directly.. I have been thinking of shell script but since I am working on vxml, I thought of usign CCXML embedded into my vxml application. The embedded CCXML should be able to create different sessions of calls to the system and therefore be able to create different legs of vxml interpreter which are independent call sessions... will that be possible? if so how will i do that? help soon... | |
Michael.Book
|
|
| Hello,
Telephony application and/or IVR/PBX load-testing is indeed possible using HTTP (token) initiated CCXML sessions. However, load-tests should never be attempted on the free Staging (development) network. It is intended for proof-of-concept application development, and simply does not have the allocated resources for load-testing. Our Production VoiceCenters, on the other hand, are not lacking in available resources, so all load-tests should be scheduled to run there. For more information about scheduling a load-test, contact the fine folks in our sales (sales@voxeo.com) department for pricing information. For more information on HTTP token initiated CCXML sessions and outbound dialing, see our handy CCXML documentation and tutorials at: - http://docs.voxeo.com/ccxml/1.0/ - http://docs.voxeo.com/ccxml/1.0/tutorialhome.htm I hope this helps to get you started. Do let us know if additional questions pop up along the way. Have Fun, ~ Michael |
|
haigang
|
|
| hello , how many tel id i can call in
<transfer dest="tel:+18002223333"> Simultaneously? Thanks |
|
sidvoxeo
|
|
| Hi there,
You can only make a single transfer using the dest="tel:xxxx" attribute of VoiceXML transfer element. On our Staging platform if you use tokens to make outbound calls, you can make two calls concurrently. ~Sid |
|
sam_kumar
|
|
| Hi All,
When i m using transfer element then following error is coming VOICEXML EXCEPTION Node: OpenCallSvr Category: vxml_exception Time: 050814 16:10:18.572 Message: eventname: error.connection.noauthorization message : Call transfer is not permitted what i need to do to resolve the above prob ?????? |
|
jbassett
|
|
| Hello,
How exactly are you trying to use the tranfer tag ? (please paste the actual syntax}. Also, are you trying to use it to dial outbound, and if so, have you been granted outbound dialing permissions ? Thanks Jesse Bassett Voxeo Support |
|
VoxeoDante
|
|
| Note: If you are looking to perform a VXML transfer and would like to know the duration of this transfer, there are two ways to do so. The first way would be to use the "TransferName$.durration" shadow variable. This is a generally accepted method and works well in most cases. One case where this does not work is if the transfer is ended by the originating party before the new leg is answered. Below is a code sample which will gather the time value of the transfer from the time the transfer form is hit, until the transfer is ended and log this value in milliseconds. Enjoy!
<?xml version="1.0" encoding="UTF-8"?> <vxml version = "2.1"> <var name="startTime" expr="new Date();"/> <var name="endTime"/> <var name="DestVar" expr="'tel:+15055555555'"/> <catch event="connection.disconnect.hangup"> <goto next="#timeCount"/> </catch> <form id="F1"> <transfer name="T_1" bridge="true" destexpr="DestVar"> <prompt> Transfer Time </prompt> <filled> <goto next="#timeCount"/> </filled> </transfer> </form> <form id="timeCount"> <block> <assign name="document.startTime" expr="startTime.getTime();"/> <assign name="document.endTime" expr="new Date();"/> <assign name="document.endTime" expr="endTime.getTime();"/> <assign name="document.startTime" expr="Number(startTime);"/> <assign name="document.endTime" expr="Number(endTime);"/> <log expr="'*** START TIME = ' + document.startTime"/> <log expr="'*** END TIME = ' + document.endTime"/> <if cond="'document.startTime' > 'document.endTime'"> <assign name="document.endTime" expr="document.endTime + 1000"/> <log expr="'*** endTime is now = ' + document.endTime"/> <log expr="'**** CONFERENCE DURATION = ' + (document.endTime - document.startTime); "/> </if> </block> </form> </vxml> |
|
Jenny
|
|
| Hi,
I am working on one project, which need to log information after successful call transfer. We are using bridge transfer. What will be the value of "T_1" in the following code if call is answered..If I know that I can code accordingly. <transfer name="T_1" bridge="true" dest="tel:+12223334444"> <!-- ************************************************* --> <!-- Transfer code remix, courtesy of D.J. Johnnie Cochran --> <!-- ************************************************* --> <prompt> Placing the call, y'all</prompt> <filled> <if cond="T_1 == 'busy'"> <prompt>The line is busy, Lizzie. </prompt> <exit/> <elseif cond="T_1 == 'noanswer'"/> <prompt> No one's home, metronome. </prompt> <elseif cond="T_1 == 'XXXXX'"/> <prompt> Call is answered </prompt> </if> </filled> </transfer> What shall I put in the place of 'XXXXX' to find out call is answered / successful. Any suggestions are invited. Thanks, Jenny |
|
voxeojeff
|
|
| Hi Jenny,
The T_1 variable is simply the variable name of the transfer for referencing in the application. From this variable, we can log shadow variables: T_1$.duration T_1$.inputmode T_1$.utterance As far as telling whether or not a call was transferred successfully, we could do something like this: <prompt> Placing the call, y'all</prompt> <filled> <if cond="T_1 == 'busy'"> <prompt>The line is busy, Lizzie. </prompt> <exit/> <elseif cond="T_1 == 'noanswer'"/> <prompt> No one's home, metronome. </prompt> <else/> <prompt> Call is answered </prompt> <goto next="#NextForm"/> </if> </filled> Hope this helps, Jeff |
|
SSA_telespectrum
|
|
| I need t transfer the call and then to recieve the call for some specific purpose.
<transfer name="T_2" dest="tel:+17208978916;ANI=pp5551234567"/> I have ANI and DNIS value in the variable.Someone confirm me the following syntax <transfer name="T_2" dest="tel:+17208978916;ANI;DNIS"/> is that the right syntax?if not then plz inform me about the correct one. |
|
mikethompson
|
|
| Hello,
In searching through the VoiceXML spec and Voxeo documentation, I do not see a way to pass the DNIS in a VoiceXML transfer. However, you are correct in using ;ani, as this is supported. Would you be so kind as to elaborate on why you need to spoof the DNIS in this transfer? Please advise, Mike Thompson Voxeo Corporation |
|
ricarjos
|
|
| Hi, i've a problem, my permission to do a calls was aprovate today, but when i use the coded shawn below all times the answer is that the line is busy, but i sure that the phone is not being used.
What could be the problem? <?xml version="1.0" encoding="UTF-8"?> <vxml version = "2.1"> <meta name="author" content="Matthew Henry"/> <meta name="copyright" content="2005 voxeo corporation"/> <meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/> <form id="F1"> <transfer name="T_1" bridge="true" dest="tel:+XXXXXXXXXX"> <!-- ************************************************* --> <!-- Transfer code remix, courtesy of D.J. Johnnie Cochran --> <!-- ************************************************* --> <prompt> Placing the call, y'all</prompt> <filled> <if cond="T_1 == 'busy'"> <prompt>The line is busy, Lizzie. </prompt> <exit/> <elseif cond="T_1 == 'noanswer'"/> <prompt> No one's home, metronome. </prompt> </if> </filled> </transfer> </form> </vxml> thanks. |
|
VoxeoDustin
|
|
| Hey,
Can you verify you are using the proper syntax: <transfer dest="tel:+18002223333"> (absolute syntax) or <transfer dest="tel:18002223333"> (exact syntax) You'll need to include the country code, as well as the 10 digit number when creating a transfer. If you're still having difficulty after trying this, please open an account ticket and include the debugger logs for one of the calls that failed. Thanks, Dustin |
|
ricarjos
|
|
| Hi, the two options already I had proven them, but continuous the problem, I probe with the following options:
<transfer dest="tel:1609xxxxxxx"> <transfer dest="tel:+1609xxxxxxx"> Another problem is that not like obtaining debugger log that requests to me that sent, please said me where I can obtain this log. Thanks. |
|
Jenny
|
|
| Hi,
Thanks for answering me about Handling success scenario. Now I need to differentiate the hangup event triggered with in transfer and normal hangup events; as both need different handling; For this purpose I can override the hangup catch event with in transfer Eg: <vxml> <form> <prompt> Please be in line before transfer </prompt> <catch event ="connection.disconnect.hangup"> <log expr="'Hangup before transfer'" label="info"/> </catch> <transfer name="transfer" destexpr="transferNumber"> . . <catch event ="connection.disconnect.hangup"> <log expr="'Hangup After transfer'" label="info"/> </catch> </transfer> </form> </vxml> If I am hanging up while playing the prompt "Please be in line before transfer" I want "Hangup before transfer" to be logged. But instead I am getting "Hangup After transfer". As per my understanding transfer part is being executed while prompt is played from the Queue. But I need to get "Hangup before transfer" if i hungup during playing the prompt. How could I achieve that? Any Suggestions welcome. Thanks. |
|
MattHenry
|
|
|
Hello Jenny, I think this is due to how the VXML FIA processes form items that do not contain recogntion fields, specifically detailed in this section of the spec: http://www.w3.org/TR/voicexml20/#dml2.1.6 As we have a prompt existing outside of an input field (note that this current incarnation isn't really legal, you'd want it enclosed in a <block> tag), then the FIA renders the prompt microseconds before the transfer is initiated. I'd think that you can get the behavior that you want here by enclosing the prompt within a "dummy" field, as detailed in our docs at the below link: http://docs.voxeo.com/voicexml/2.0/mot_disconnectevents.htm ~Matt |
|
Jenny
|
|
| Thanks for your prompt reply. Your suggestion helped me to solve the problem. But I m getting more delay while transferring.Thanks | |
repion
|
|
| Hello,
I have 5 lines. When a line is busy, it will be transferred to another. What should I do? Thanks. |
|
MattHenry
|
|
|
Hi there, Assuming that I understand your question, then I think it would be a simple matter to handle this scenario by: 1 - Setting a document scoped variable for a transfer target 2 - Using the "destexpr" attribute of the transfer tag for the outbound call 3 - In the event of a "busy" signal, trap the event using if/else logic 4 - Change the value of the document scoped variable to the alternate transfer destination 5 - <clear> the form-item variable for the transfer element 6 - Use <goto> to revisit the transfer form-item variable, which will use the new variable value as a transfer target Hope this helps, ~Matt |
|
mako85
|
|
| Hello,
Is there a way to catch a baddest (bad destination) event on my transfer? This would be great because it would allow me to make it transfer to a main number instead of just dropping the caller. -Mako |
|
voxeojohnq
|
|
| Hello,
In VoiceXML the error returned for an invalid number is "busy". If you are looking for finer grain control over your transfers, you may want to take a look at CCXML. CCXML is an excellent language for handling things like conferencing, transfers, answering machine detection, etc, while leaving VoiceXML for dialog duties like TTS and ASR. CCXML is definitely capable of doing exactly what you are trying to do. For more information on handling transfers in CCXML, click here: http://docs.voxeo.com/ccxml/1.0-final/createcall.htm I hope this helps! If you have any further questions, please don't hesitate to ask. Regards, John Quinn Voxeo Support |
|
phanimca2006
|
|
| Hi
I need a solution for recording the conversation between the parties when transferred through bridge transfer. Once the call been transferred then the session is not allowing to do another operation. Thanks |
|
voxeoJeffK
|
|
| Hi,
You might have success using the voxeo:recordcall element which is documented here: http://docs.voxeo.com/voicexml/2.0/voxeo-recordcall.htm During a transfer operation the interpreter has to park until it receives an event ending the transfer. So what you can do is enable voxeo:recordcall just before the transfer, and then disable it afterwards. <!-- the value of 100 will start recording --> <voxeo:recordcall value="100" info="Passcode" /> <transfer name="T_1" bridge="true" dest="tel:+12223334444"> <filled> <!-- the value of '0' will turn off recording --> <voxeo:recordcall value="0" info="Passcode" /> </filled> </transfer> Hope this helps, Jeff Kustermann |
|
phanimca2006
|
|
| Hi Jeff,
Thank you for sending the code.This will help us concept but it wont help with my browser.My browser will help only w3c supported tags. Please let me know if you had any other tag which supports w3c. Thanks |
|
voxeoJeffK
|
|
| Hi,
Unfortunately the <record> element won't be much help to you. This is the reason Voxeo implements the voxeo:recordcall, so as to fill the need for for recording both sides of a transfer. Regards, Jeff Kustermann |
|
phanimca2006
|
|
| Hi,
This might not help me with my browser. Any ways thanks for the info. Phani |
|
phanimca2006
|
|
| Hi,
Is your browser will support consultation transfer. As i need to test undefined propery on consultation mode. If you have any such code please send me Thanks, Phani |
|
voxeojohnq
|
|
| Hello,
Could you please clarify what you mean by "undefined property"? Also, if this is a required property as defined in the w3c specification, we will support it. Thanks, John Quinn |
|
phanimca2006
|
|
| Hi John,
There is a mode Consultation in transfer tag.In this there is a property undefined,which specifies when the call connects and that call is not filled up with any events like busy,noanswer,disconnect etc. Thanks, Phani. |
|
voxeojohnq
|
|
| Hello,
I did a little digging and was able to find the w3 documentation on a consultation transfer. Unfortunately, at this time we only support bridged transfers. If you have any further questions, please don't hesitate to ask. Regards, John Quinn Voxeo Support |
|
phanimca2006
|
|
| Hi,
How can i implement recording the conversation while transfer. Without using Voxe0:record call. Thanks, Phani. |
|
voxeojohnq
|
|
| Hello,
In order to record both sides of a bridged call, you would have to use voxeo:recordcall. The VoiceXML <record> element will not work for you in this case since it will only record one side of the conference. Since you can't use voxeo specific elements, I don't think there is a way to record both sides. Regards, John Quinn Voxeo Support |
| login |