# VXML 2.0 Implementation Overview

The Dialogic(r) IP Media Server VXML 2.0 implementation is based on the VoiceXML 2.0 browser from VoiceGenie Technologies, Inc.

While we have tried to edit and customize the documentation to accurately reflect VXML 2.0 as implemented on the IP Media Server, it is possible that within the documentation you may find discrepancies between what is indicated and what is actually supported.

The sections below summarize key differences between the native VoiceGenie Technologies, Inc. VXML 2.0 functionality and the IP Media Server implementation.

Unsupported VXML 2.0 Features

- The IP Media Server does not support TDD.
- The IP Media Server does not support RTSP (Real Time Streaming Protocol).
- TDM is not supported.
- SS7 is not supported.

IP Media Server Properties and Variables

Given below are properties and variables that are specific extensions to the IP Media Server implementation of VXML 2.0.

com.snowshore.criticaldigit_timer

The Dialogic(r) IP Media Server introduces a new DTMF input timeout property called com.snowshore.criticaldigit_timer. When specified, com.snowshore.criticaldigit_timer overrides interdigittimeout in certain cases when at least one grammar is matched by partial input. See interdigittimeout for more information.

session.connection.media

An array where each element represents an RTP media stream. Each array element has the following associated attributes:

“type” – indicates the MIME type of media stream (currently either “audio” or “video”)

“subtype” – indicates the MIME sub-type, or encoding, of the media stream (e.g. PCMU, PCMA, H264, etc.)

session.connection.protocol.sip.parameter

Value: An array of name/value pairs parsed from the SIP Request-URI; the name and value are "UnEscaped," meaning any SIP escapes (%xx) in the URI are expanded before being assigned.

session.connection.protocol.sip.parameter[n].name

Value: The name of the nth parameter.

session.connection.protocol.sip.parameter[n].value

Value: The "value" (if any, can be empty) of the nth parameter.

session.connection.protocol.sip.uri Value: Set to the SIP Request-URI. Note that any SIP escapes (%xx) in the Request-URI are still in this variable as well. This variable duplicates the session.connection.local.uri by design. session.connection.protocol.sip.to Value: Set to the SIP To-URI. Since the VoiceXML 2.0 defined session.connection.local.uri variable is mapped to the request URI a separate variable is required to contain the contents of the SIP To header.

session.connection.protocol.sip.from

Value: Set to the SIP From-URI. This variable duplicates the session.connection.remote.uri by design.

session.connection.protocol.sip.call_id

Value: Set to the SIP Call ID.

Example

This example shows the mapping between SIP headers and the newly supported VoiceXML session variables. Given the following SIP INVITE request:

INVITE

sip:dialog@10.102.4.26;voicexml=http://10.102.4.9:9020 /ivr/sip_init.vxml%3fdnis%3d961234567%26hasvide o%3d1;dogs=nice;user=phone

SIP/2.0

From: <sip:968037431@10.102.4.45:5060>;tag=2d04660a-13c4-40ed433f-9ec19fd-1786

To: <sip:961234567@10.102.4.9>

Call-ID: 6a7b774-2d04660a-13c4-40ed433f-9ec19fd-7061@10.102.4.45

CSeq: 1 INVITE

Via: SIP/2.0/UDP 10.102.4.134:5060;branch=z9hG4bKi8MKi8i!yi8MK2S sMu8Uyake2q0OUqMi8i!y.1-1d9515c

Via: SIP/2.0/UDP 10.102.4.45:5060;received=10.102.4.45;branch=z9 hG4bK-40ed433f-9ec19fd-847

Max-Forwards: 69

User-Agent: RADVision ViaIP GW Vers. 1.0

Call-Info: <Media:Video>;purpose=info

Contact: <sip:968037431@10.102.4.45:5060>

Content-Length:0

The IP Media Server populates the new VoiceXML session variables, as shown:

session.connection.protocol.name = "SIP"

session.connection.protocol.version = "2.0"

session.connection.local.uri = sip:dialog@10.102.4.26;voicexml=http://10.102.4 .9:9020/ivr/sip_init.vxml%3fdnis%3d961234567%26 hasvideo%3d1;dogs=nice;user=phone"

session.connection.remote.uri = <sip:968037431@10.102.4.45:5060>;tag=2d04660a-13c4-40ed433f-9ec19fd-1786

session.connection.protocol.sip.parameter[0].name = "voicexml"

session.connection.protocol.sip.parameter[0].value = "http://10.102.4.9:9020/ivr/sip_init.vxml?dnis= 961234567&hasvideo=1"

session.connection.protocol.sip.parameter[1].name = "dogs"

session.connection.protocol.sip.parameter[1].value = "nice"

session.connection.protocol.sip.parameter[2].name = "user"

session.connection.protocol.sip.parameter[2].value = "phone"

session.connection.protocol.sip.uri = sip:dialog@10.102.4.26;voicexml=http://10.102.4 .9:9020/ivr/sip_init.vxml%3fdnis%3d961234567%26 hasvideo%3d1;dogs=nice;user=phone"

session.connection.protocol.sip.to = <sip:961234567@10.102.4.9>

session.connection.protocol.sip.from = <sip:968037431@10.102.4.45:5060>;tag=2d04660a-13c4-40ed433f-9ec19fd-1786

session.connection.protocol.sip.call_id = 6a7b774-2d04660a-13c4-40ed433f-9ec19fd-7061@10.102.4.45