PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Voice XML support

Overview

The VXML implementation here is highly piecemeal. It is not even close to complete and while roughly following the VXML 2.0 standard there are many incompatibilities. Below is a list of what is available.

Elements & Attributes Supported

Supported tag Supported attributesNotes
<menu> dtmf property.timeout is supported
<choice> dtmf, next, expr, event
<form> id property.timeout is supported
<field> name, cond
<prompt> bargein, cond property.bargein is supported
<grammar> mode, type Only "dtmf" is supported for "mode"
Only "X-OPAL/digits" is supported for "type"
The "X-OPAL/digits" grammar consists of three parameters of the form: minDigits=1; maxDigits=5; terminators=#
<filled>
<noinput> count, cond
<nomatch> count, cond
<error> count, cond
<catch> count, event Note there is a limited set of events that are thrown
<goto> nextitem, expritem, expr
<exit> No attributes supported
<submit> next, expr, enctype, method, fetchtimeout, namelist
<disconnect>No attributes needed
<block> cond
<audio> src, expr
<break> msecs, time, size
<value> expr, class, voice class & voice are VXMKL 1.0 attributes and will be removed when <say-as;> is implemented.
<script> src
<var> name, expr
<property>name", value
<if> cond
<elseif> cond
<else> No attributes needed
<transfer>name, dest, destexpr, bridge, cond
<record> name, type, beep, dtmfterm, maxtime, finalsilence, cond

Scripting support

Depending on how the system was built there are three possibilities:

Ultra-primitiveHere, all variables are string types, the only expressions possible are string concatenation using '+' operator. Literals using single quotes are allowed. For <if> only the == and != operator may be used.
LuaWhile a full scripting language, this is not ECMA compatible, so is not compliant to standards. However it can be on option if compiling V* proves too dificult.
Google V8THis is the most compliant to ECMA, and the default scripting language, if available.

Default variables:

On VXML load
document.uri URI for currently loaded VXML document
document.path Root of URI
Recoding element
{name}$.type MIME type for recording output
{name}$.uri URI for recording output
{name}$.maxtime Boolean flag for recording hit maximum time
{name}$.termchar Value used if recording ended by termination character
{name}$.duration Duration of the recording
{name}$.size Size in bytes of the recording
Transfer element
{name}$.duration Duration of transfer operation
When executed from OPAL call
session.time Wall clock time of call start
session.connection.local.uri Local party URI
session.connection.local.dnis Called party number
session.connection.remote.ani Calling party number
session.connection.remote.uri Remote party URI
session.connection.remote.ip Remote party media IP address
session.connection.remote.port REmote party media port numner
session.connection.calltoken Call token (OPAL internal)