TOC |
|
By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”
The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.
This Internet-Draft will expire on April 29, 2007.
This document defines a Session Initiation (SIP) Control Package for basic Interactive Voice Response (IVR) interaction. The control of Media Servers and their related resources in decomposed network architectures plays an important role in various Next Generation Networks. This Control Package provides IVR functionality using the SIP Control Framework.
1.
Introduction
2.
Conventions and Terminology
3.
Control Package
Definition
3.1.
Control Package Name
3.2.
Framework Message Usage
3.3.
Common XML Support
3.4.
CONTROL Message Body
3.5.
REPORT Message Body
4.
Element Definitions
4.1.
Requests
4.1.1.
<dialogprepare>
4.1.2.
<dialogstart>
4.1.3.
<dialogterminate>
4.2.
Responses
4.2.1.
<response>
4.3.
Notifications
4.3.1.
<event>
4.4.
<data>
4.5.
<subscribe>
5.
IVR Template Dialogs
5.1.
Play Announcement
5.2.
Prompt and Collect
5.3.
Prompt and Record
5.4.
Status Codes
5.5.
Type Definitions
6.
AS-MS Interaction Examples
6.1.
Starting an IVR dialog
6.2.
IVR dialog fails to start
6.3.
Preparing and starting an IVR dialog
6.4.
Terminating a dialog immediately
6.5.
Terminating a dialog non-immediately
7.
Template Dialog Examples
7.1.
playannouncement
7.2.
promptandcollect
7.3.
promptandrecord
8.
Formal Syntax
9.
Security Considerations
10.
IANA Considerations
10.1.
Control Package Registration
10.2.
URN Sub-Namespace Registration
11.
Change Summary
12.
Acknowledgments
13.
References
13.1.
Normative References
13.2.
Informative References
§
Authors' Addresses
§
Intellectual Property and Copyright Statements
TOC |
The SIP Control Framework [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.) provides a generic approach for establishment and reporting capabilities of remotely initiated commands. The Framework utilizes many functions provided by the Session Initiation Protocol [RFC3261] (Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, “SIP: Session Initiation Protocol,” June 2002.) (SIP) for the rendezvous and establishment of a reliable channel for control interactions. The Control Framework also introduces the concept of a Control Package. A Control Package is an explicit usage of the Control Framework for a particular interaction set. This specification defines a package for basic IVR.
The scope of the package is control of media server functions for basic interactive media (e.g. play a prompt, collecting DTMF, recording user input) as well as notifications related to these functions.
These functions and notifications are defined as messages in XML [XML] (Bray, T., Paoli, J., Sperberg-McQueen, C M., Maler, E., and F. Yergeau, “Extensible Markup Language (XML) 1.0 (Third Edition),” February 2004.). The message use XML elements for preparing, starting and stopping dialogs, as well as elements for responses and notifications ([CCXML10] (Auburn, R J., “Voice Browser Call Control: CCXML Version 1.0,” June 2005.), [MSML] (Saleem, A. and G. Sharratt, “Media Session Markup Language (MSML),” June 2006.) and [MSCP] (McGlashan, S., Auburn, R., Burke, D., Candell, E., and R. Surapaneni, “Media Server Control Protocol (MSCP),” July 2006.)).
This basic IVR package uses template dialogs to provide IVR functionality. Three template dialogs are defined:
- playannouncement:
- a dialog to play one or more prompts to the user
- promptandcollect:
- a dialog to prompt the user and collect their input
- promptandrecord:
- a dialog to prompt the user and record their input
Template dialogs are intended to provide basic IVR functionality ([H.248.9] (, “Gateway control protocol: Advanced media server packages,” .), [RFC4240] (Burger, E., Van Dyke, J., and A. Spitzer, “Basic Network Media Services with SIP,” December 2005.), [MSML] (Saleem, A. and G. Sharratt, “Media Session Markup Language (MSML),” June 2006.), [RFC2897] (Cromwell, D., “Proposal for an MGCP Advanced Audio Package,” August 2000.) and [MSCML] (Van Dyke, J., Burger, E., and A. Spitzer, “Media Server Control Markup Language (MSCML) and Protocol,” June 2006.)). The template approach follows previous approaches in that it provides IVR functionality which is commonly required for applications. It differs in that the functionality is expressed in XML using a reference to the template dialog, and parameters expressed in a simple XML data structure. This is a lightweight approach since the contents of the dialog itself does not need to be transported over the control channel (or fetched from an external source), only a template reference plus configuration data is required. From the developer's perspective, this simplifies application development: they do not need to write their IVR dialog using custom XML elements, they only need to reference the template dialog and, if required, populate a simple XML data structure to pass configuration data.
To use a template dialog, the AS developer references it by name in an XML message for preparing or starting a dialog; for example <dialogstart src="promptandrecord"/>. The XML message may also contain template input parameters in a <data> element to configure specific behavior defined by the template dialog; e.g. using "prompts" with the value "http://www.example.com/welcome.wav". If the dialog starts successfully, a <response status="200"/> is returned. When the dialog is completed, the MS returns template output parameters in a dialogexit <event> notification to the AS.
The implementation of template dialogs requires only that they adhere to the syntax and semantics of templates described in this document.
Other control packages MAY be defined which extend the capabilities of the templates dialogs defined in this document. Such control packages MUST respect the syntax and semantics of this control package.
This document specifies how the basic IVR control package fulfils the requirements of the SIP Control Framework control packages (Section 3 (Control Package Definition)), which XML elements are defined by the package (Section 4 (Element Definitions)), the template dialog definitions (Section 5 (IVR Template Dialogs)) as well as providing examples (Section 6 (AS-MS Interaction Examples), Section 7 (Template Dialog Examples)) and an XML schema (Section 8 (Formal Syntax)).
TOC |
In this document, BCP 14/RFC 2119 (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.) [RFC2119] defines the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL". In addition, BCP 15 indicates requirement levels for compliant implementations.
The following additional terms are defined for use in this document:
- Dialog:
- A dialog performs media interaction with a user. A dialog is identified by a URI and has an associated mimetype. Dialogs typically feature basic capabilities such as playing audio prompts, collecting DTMF input and recording audio input from the user. More advanced dialogs may also feature synthesized speech, recording and playback of video, recognition of spoken input, and mixed initiative conversations.
- Application server:
- A SIP [RFC3261] (Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, “SIP: Session Initiation Protocol,” June 2002.) application server (AS) hosts and executes services such as interactive media and conferencing in an operator's network. An AS influences and impacts the SIP session, in particular by terminating SIP sessions on a media server, which is under its control.
- Media Server:
- A media server (MS) processes media streams on behalf of an AS by offering functionality such as interactive media, conferencing, and transcoding to the end user. Interactive media functionality is realized by way of dialogs, which are identified by a URI and initiated by the application server.
TOC |
This section fulfills the mandatory requirement for information that MUST be specified during the definition of a Control Framework Package, as detailed in Section 9 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.).
TOC |
The Control Framework requires a Control Package definition to specify and register a unique name and version.
The name and version of this Control Package is "msc-ivr-basic/1.0" (Media Server Control - Interactive Voice Response - Basic - version 1.0 ).
TOC |
IVR functionality includes capabilities such as playing prompts, collecting DTMF and recording user input. These functions are expressed using template dialogs defined in Section 5 (IVR Template Dialogs).
This package defines XML elements in Section 4 (Element Definitions) and provides an XML Schema in Section 8 (Formal Syntax).
The XML elements in this package are split into requests, responses and event notifications. Requests are carried in CONTROL message bodies; <dialogprepare>, <dialogstart> and <dialogterminate> elements are defined as package requests. Responses are carried either in REPORT message or Control Framework 200 response bodies; the <response> element is defined as a package response. Event notifications are also carried in REPORT message bodies; the <event> element is defined for package event notifications.
Note that package responses are different from framework response codes. Framework error response codes (see Section 8 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.)) are used when the request or event notification is invalid; for example, a request is invalid XML (400), or not understood (500). Package responses are carried in 200 response or REPORT message bodies. This package's response codes are defined in Section 4.2.1 (<response>).
The schema uses "connection-id" and "conf-id" attributes which are imported from schema defined in core Control Framework [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.).
TOC |
The Control Framework requires a Control Package definition to specify if the attributes for media dialog or conference references are required.
This package requires that the XML Schema in Section 16.1 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.) MUST be supported for media dialogs and conferences.
TOC |
A valid CONTROL body message MUST conform to the schema defined in Section 8 (Formal Syntax) and described in Section 4 (Element Definitions). XML messages appearing in CONTROL messages MUST contain a <dialogprepare>, <dialogstart> or <dialogterminate> request element (Section 4.1 (Requests)).
TOC |
A valid REPORT body MUST conform to the schema defined in Section 8 (Formal Syntax) and described in Section 4 (Element Definitions). XML messages appearing in REPORT messages MUST contain a <response> (Section 4.2 (Responses)), or a (notification) <event> element (Section 4.3 (Notifications)).
TOC |
This section defines the XML messages for this control package.
[Editors Note: since XML Schema may not be able to express all constraints expressed in these definitions, in cases where there is a difference in constraints, the definitions in the section take priority.]
TOC |
The following request elements are defined:
- <dialogprepare>:
- prepare an IVR dialog for later execution
- <dialogstart>:
- start an IVR dialog on a connection or conference
- <dialogterminate>:
- terminate an active IVR dialog
TOC |
The <dialogprepare> request is sent from the AS to the MS to request preparation of an IVR dialog. A prepared dialog is executed when the AS sends a <dialogstart> request referencing the prepared dialog (see Section 4.1.2 (<dialogstart>)).
A <dialogprepare> element has the following attributes:
- src:
- string identifying the URI of the dialog document to prepare. The attribute is mandatory. The MS MUST support "playannouncement", "promptandcollect" and "promptandrecord" template dialogs as the value for this attribute.
- dialogid:
- string indicating a unique name for the dialog. If this attribute is not specified, the MS creates a unique name for the dialog. The value is used in subsequent references to the dialog (e.g. as dialogid in a <response>). It is an error if a dialog with the same name already exists on the MS. The attribute is optional.
The <dialogprepare> element has the following child elements:
- <data>:
- an XML data structure (see Section 4.4 (<data>)) to pass parameters into the dialog. It is an error if a specified parameter is not supported by the implementation. The element is optional.
- <subscribe>:
- an XML data structure (see Section 4.5 (<subscribe>)) indicating notification events to which the AS subscribes. It is an error if a specified notification event is not supported by the implementation. The element is optional.
For example, a request to prepare a playannouncement dialog where a single prompt is played once:
<dialogprepare src="playannouncement"> <data> <item name="prompts" value="http://www.example.com/prompt1.wav"/> <item name="iterations" value="1"/> </data> </dialogprepare>
When an MS has successfully received a <dialogprepare> request, it MUST reply with a <response> element (Section 4.2 (Responses)).
TOC |
The <dialogstart> element is sent by the AS to request execution of a dialog. The dialog may be defined in the dialogstart request itself, or reference a previously prepared dialog.
The <dialogstart> element has the following attributes:
- src:
- string identifying the URI of the dialog document to start. The attribute is optional. The MS MUST support playannouncement, promptandcollect and promptandrecord template dialogs as the value for this attribute.
- dialogid:
- string indicating a unique name for the dialog. If this attribute is not specified, the MS creates a unique name for the dialog. The value is used in subsequent references to the dialog (e.g. as dialogid in a <response>). It is an error if a dialog with the same name already exists on the MS. The attribute is optional.
- prepareddialogid:
- string identifying a dialog previously prepared using a dialogprepare request. The attribute is optional.
- connection-id:
- string identifying the SIP dialog connection on which this dialog is to be started (see Section 16.1 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.)). The attribute is optional.
- conf-id:
- string identifying the conference on which this dialog is to be started (see Section 16.1 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.)). The attribute is optional.
If the prepareddialogid is specified, it is an error to specify the src or dialogid attributes.
If the prepareddialogid is not specified, exactly the src attribute MUST be specified; otherwise, it is an error.
Exactly one of the connection-id or conf-id attributes MUST be specified. It is an error to specify both connection-id and conf-id.
The <dialogstart> element has the following child elements defined:
- <stream>:
- contains the following attributes:
One or more <stream> elements may be specified so that individual media streams can be controlled independently; for example, audio only for transmission, but video only for reception. The <stream> element is optional. If no <stream> elements are specified, then the default is the media configuration of the connection or conference. It is an error if a <stream> element is in conflict with (a) another <stream> element, (b) with dialog, connection or conference media capabilities, or (c) with a SDP label value as part of the connection-id (see Section 16.1 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.)).
- media:
- a string indicating the type of media associated with the stream. It is strongly recommended that the following values are used for common types of media: "audio" for audio media, and "video" for video media. The attribute is mandatory.
- label:
- a string indicating the SDP label associated with a media stream ([RFC4574] (Levin, O. and G. Camarillo, “The Session Description Protocol (SDP) Label Attribute,” August 2006.)). The attribute is optional.
- direction:
- a string indicating the direction of the media flow between a dialog and its end point conference or connection. Defined values are: "sendrecv" (media can be sent and received), "sendonly" (media can only be sent), and "recvonly" (media can only be received). The default value is "sendrecv". The attribute is optional.
- <data>:
- an XML data structure (see Section 4.4 (<data>)) to pass parameters into the dialog. It is an error if a specified parameter is not supported by the implementation. The element is optional.
- <subscribe>:
- an XML data structure (see Section 4.5 (<subscribe>)) indicating notification events to which the AS subscribes. It is an error if a specified notification event is not supported by the implementation.The element is optional.
[Editors Note: the <stream> element assumes that the use of the SDP label by itself is insufficent for media stream control. In particular, the SDP label does not address directionality, nor does it address conferences. Further investigation of the <stream> is is required.]
If the prepareddialogid is specified and the <dialogprepare> contained a <data> element, it is an error to specify it in <dialogstart>. Likewise, If the prepareddialogid is specified and the <dialogprepare> contained a <subscribe> element, it is an error to specify it in <dialogstart>.
For example, a request to start a promptandrecord template dialog on a conference:
<dialogstart conf-id="conference11" src="playandrecord"> <data> <item name="maxtime" value="384000s"/> </data> </dialogstart>
When an MS has successfully received a <dialogstart> request, it MUST reply with a <response> element (Section 4.2 (Responses)).
TOC |
A dialog that has been successfully prepared or started can be terminated by a <dialogterminate> request element from the AS.
The <dialogterminate> element has the following attributes:
- dialogid:
- string identifying an existing dialog. The attribute is mandatory.
- immediate:
- string with the values "true" or "false" indicating whether the dialog is to be terminated immediately or not. If a dialog is terminated immediately, no further dialog event notifications are sent (including a dialogexit <event>). The default is "false". The attribute is optional.
For example, assuming a dialog with the dialogid "vxi1" has been started, it can be terminated immediately with the following request:
<dialogterminate dialogid="vxi1" immediate="true"/>
When an MS has successfully received a <dialogterminate> request, it MUST reply with a <response> element (Section 4.2 (Responses)).
TOC |
Responses are specified in a <response> element.
TOC |
Reponses to requests are indicated by a <response> element.
The <response> element has following attributes:
- status:
- numeric code indicating the response status. The attribute is mandatory.
- reason:
- string specifying a reason for the response status. The attribute is optional.
- dialogid:
- string identifying the dialog. The attribute is optional.
- connection-id:
- string identifying the SIP dialog connection associated with the dialog (see Section 16.1 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.)). The attribute is optional.
- conf-id:
- string identifying the conference associated with the dialog (see Section 16.1 of [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.)). The attribute is optional.
The following status codes are defined:
code | description |
---|---|
200 | OK |
401 | dialogid already exists |
402 | dialogid does not exist |
403 | connection-id does not exist |
404 | conf-id does not exist |
405 | Unknown or unsupported element |
406 | Element required |
407 | Unknown or unsupported attribute |
408 | Attribute required |
409 | template dialog not supported |
410 | data parameter not supported |
411 | event subscription not supported |
412 | stream parameter invalid |
499 | other error |
Table 1: <response> status codes |
[Editors Note: more status codes may need to be defined.]
For example, a response when a dialog was prepared successfully:
<response status="200" dialogid="vxi1"/>
The response if dialog preparation failed due to an unknown template:
<response status="409" dialogid="vxi1" reason="Unknown template: promptandrecod"/>
For example, a response when the dialog was started successfully.
<response status="200" dialogid="vxi1" connection-id="7HDY839~HJKSkyHS"/>
TOC |
Event notifications are specified in an <event> element.
TOC |
Dialog event notifications are either manual or automatic.
Manual event notifications are defined when an AS subscribes to notifications for dialog events using the <subscribe> element of <dialogprepare> or <dialogstart>.
Automatic event notifications are defined as part of a Control Package. The AS SHOULD NOT subscribe to these event notifications. The MS MUST support these event notifications. This package defines one automatic notification event: "dialogexit" which indicates that an active dialog has terminated. Note that this notification is not sent if the dialog has been terminated by the AS using a <dialogterminate/> request where "immediate=true".
When a dialog generates a notification event, the MS sends the event to the AS using an <event> element.
The <event> element has the following attributes:
- name:
- string indicating the name of dialog event. The string is restricted to a sequence of alphanumeric or "." characters. The attribute is mandatory.
- dialogid:
- string identifying the dialog. The attribute is mandatory.
The <event> element has the following child element:
- <data>:
- an XML data structure (see Section 4.4 (<data>)) to pass information additional information about the dialog event. The element is optional.
For example, when a dialog exits the MS may send a dialogexit <event> with data indicating the status of a template dialog:
<event name="dialogexit" dialogid="vxi1"> <data> <item name="status" value="1"/> </data> </event>
TOC |
The <data> element is a general container for parameterized data.
The <data> element has no attributes, but has the following child elements defined:
- <item>:
- contains the following attributes:
- name:
- a string indicating the name of the parameter. The attribute is mandatory.
- value:
- a string indicating the value of the parameter. Multiple values of a parameters can be specified using space separation. The attribute is mandatory.
Multiple <item> elements may be specified.
For example, a <data> specifying promptandcollect template parameters with simple values:
<data> <item name="iterations" value="5"/> <item name="timeout" value="10s"/> </data>
In this example, a <data> specifying a playannouncement template with a complex value for the prompts parameter:
<data> <item name="prompts" value="http://example.com/balance.wav http://example.com/five.wav http://example.com/euros.wav"/> </data>
[Editors Note: we may also want to investigate the use of <item>s nested within a top-level <item> to specify complex values. ]
TOC |
The <subscribe> element is a container for specifying dialog notification events to which an AS subscribes. Notifications of dialog events are delivered using the <event> element (see Section 4.3.1 (<event>)).
The <subscribe> element has no attributes, but has the following child elements defined:
- <notify>:
- contains the following attributes:
The <notify> element may have a <data> child element.
- name:
- a string indicating the name of the event to be notified of. The attribute is mandatory.
Multiple <notify> elements may be specified.
For example, the AS wishes to subscribe to DTMF and bargein notification events associated with a dialog:
<dialogstart src="promptandcollect" connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> <subscribe> <notify name="dtmf"/> <notify name="bargein"/> </subscribe> </dialogstart>
If the MS supports these notification events, then it would use the <event> element to send notifications during the dialog to the AS when the events occured.
[Editors Note: It may be possible to define a general event subscription mechanism as part of the SIP Control Framework.]
[Editors Note: This Control Package does not specify dialog notification events apart from "dialogexit". Later versions may define events such as: "dtmf" (a DTMF key is pressed), "mediastart" (media playback started), "bargein" (user has barged in on a prompt), and "rtpcontrol" (control data, e.g. VFU, PoC, etc, is received over the RTP control channel.]
TOC |
The execution of IVR template dialog takes place on the MS. The AS specifies the name of the template and configuration parameters, and receives the result from the MS after the dialog has been executed.
Input parameters are used to configure and customize the behavior of the template. For many input parameters, the templates provide default values; a developer can specify an alternative value if the default is not appropriate for their application. Input parameters for templates may be mandatory, requiring a specific value to be provided.
The result of executing a template dialog is reported to the AS using output parameters. These parameters may describe status information, error information or information collected from the user. Output parameters are mandatory or optional depending on the specific template; mandatory parameters must be specified by the implementation.
Template dialogs are invoked by referencing them in the src attribute of <dialogprepare> (Section 4.1.1 (<dialogprepare>)) or <dialogstart> (Section 4.1.2 (<dialogstart>)). Input parameters are specified in the <data> child element (Section 4.4 (<data>)) of these elements. Output parameters are specified in the <data> child element of a dialogexit <event> notification (Section 4.3.1 (<event>)). The detailed mapping of template dialogs to XML CONTROL and REPORT messages is described in Section 3 (Control Package Definition) and examples are provided in Section 7 (Template Dialog Examples).
The implementation of template dialogs MUST adhere to the syntax and semantics of templates described in this document. Implementations MAY support additional parameters of the defined template dialogs. Implementations MAY support additional template dialogs. The actual implementation may be based on any technology or scripting language.
The media requirements on the template implementation are restricted to the capability to play audio prompts (specified as URI (URI)s), collect DTMF input, and record audio input. The implementation MUST support G.711 audio formats (headerless and wav) for playback and recording. The implementation MAY support other media formats.
[Editors Note: Later versions may consider additional media requirements including TTS, ASR, video, etc. ]
TOC |
A template dialog to play announcements to the user.
The template dialog is invoked using the URI "playannouncement".
The dialog execution model consists of:
The input and output parameters are summarized and defined below.
Name | Direction | Description | Definition |
---|---|---|---|
prompts | input | prompts to play | Table 3 (prompts) |
iterations | input | maximum iterations | Table 4 (iterations) |
status | output | status code | Table 5 (status) |
reason | output | reason for status | Table 6 (reason) |
Table 2: playannouncement parameter overview |
Note that playannouncement requires at least one prompt specified in prompts (prompts).
Name | prompts |
---|---|
Description | One or more prompts to play |
Direction | input |
Type | URIList (URIList) |
Optional | No |
Possible Values | A valid URIList which is non-empty |
Default | none |
Table 3: prompts |
Name | iterations |
---|---|
Description | Maximum number of times the playannouncement dialog is to be played |
Direction | input |
Type | Non-Negative Integer (Non-Negative Integer) |
Optional | Yes |
Possible Values | A valid non-negative integer. A value of 0 indicates that the dialog is repeated until halted by other means. |
Default | 1 |
Table 4: iterations |
Name | status |
---|---|
Description | A status code indicating success or failure of the playannouncement dialog |
Direction | output |
Type | Non-Negative Integer (Non-Negative Integer) |
Optional | No |
Possible Values | 1 for success; otherwise an error code (600, 601, 602). See Table 30 (status codes for all templates dialogs) |
Default | none |
Table 5: status |
Name | reason |
---|---|
Description | A textual description providing a reason for the status code; e.g. details about an error |
Direction | output |
Type | String (String) |
Optional | Yes |
Possible Values | A valid String value |
Default | Empty string |
Table 6: reason |
The following additional input parameters are under consideration for later versions:
Name | Description |
---|---|
duration | maximum duration for the dialog including iterations |
interval | time to elapse between successive iterations |
audiomaxage | maxage cache control for prompts |
audiomaxstale | maxstale cache control for prompts |
speed | playback speed for prompts |
volume | playback volume for prompts |
offset | play from offset in prompts |
variables | references to common types such as money, time, numbers, etc |
Table 7: Additional playannouncement parameters |
TOC |
A template dialog to play prompts and collect DTMF input.
The dialog is invoked with the URI "promptandcollect".
The dialog execution model consists of:
The input and output parameter are summarized and defined below.
Name | Direction | Description | Definition |
---|---|---|---|
prompts | input | prompts to play | Table 8 (prompts) |
iterations | input | maximum attempts | Table 9 (iterations) |
cleardigitbuffer | input | dtmf buffer clearing | Table 10 (cleardigitbuffer) |
bargein | input | interruption of prompts | Table 11 (bargein) |
timeout | input | timeout for user input | Table 12 (timeout) |
interdigittimeout | input | timeout between digits | Table 13 (interdigittimeout) |
termtimeout | input | terminating timeout | Table 14 (termtimeout) |
termchar | input | terminating character | Table 15 (termchar) |
maxdigits | input | maximum number of digits | Table 16 (maxdigits) |
grammar | input | custom grammar | Table 17 (grammar) |
status | output | status code | Table 18 (status) |
reason | output | reason for status | Table 19 (reason) |
result | output | input collected | Table 20 (result) |
promptandcollect parameter overview |
Name | prompts |
---|---|
Description | Initial prompts to play |
Direction | input |
Type | URIList (URIList) |
Optional | Yes |
Possible Values | A valid URIList |
Default | none |
Table 8: prompts |
Name | iterations |
---|---|
Description | Maximum number of times the promptandcollect dialog is to be played |
Direction | input |
Type | Non-Negative Integer (Non-Negative Integer) |
Optional | Yes |
Possible Values | A valid non-negative integer. A value of 0 indicates the dialog is repeated until halted by other means. |
Default | 0 |
Table 9: iterations |
Name | cleardigitbuffer |
---|---|
Description | Clear digit buffer prior to prompt playback |
Direction | input |
Type | Boolean (Boolean) |
Optional | Yes |
Possible Values | A valid boolean value. A value of true indicates that the digitbuffer is to be cleared. A value of false indicates that the digitbuffer is not to be cleared. |
Default | true |
Table 10: cleardigitbuffer |
Name | bargein |
---|---|
Description | Indicates whether the user can interrupt the prompt with their input |
Direction | input |
Type | Boolean (Boolean) |
Optional | Yes |
Possible Values | A valid boolean value. A value of true indicates that bargein is permitted. A value of false indicates that bargein is not permitted. |
Default | true |
Table 11: bargein |
Name | timeout |
---|---|
Description | Indicates the time to wait for user input |
Direction | input |
Type | Time Designation (Time Designation) |
Optional | Yes |
Possible Values | A valid TimeDesignation value. |
Default | 5s |
Table 12: timeout |
Name | interdigittimeout |
---|---|
Description | The inter-digit timeout value to use when recognizing DTMF input |
Direction | input |
Type | Time Designation (Time Designation) |
Optional | Yes |
Possible Values | A valid TimeDesignation value. |
Default | 2s |
Table 13: interdigittimeout |
Name | termtimeout |
---|---|
Description | The terminating timeout to use when recognizing DTMF input |
Direction | input |
Type | Time Designation (Time Designation) |
Optional | Yes |
Possible Values | A valid TimeDesignation value. |
Default | 0s |
Table 14: termtimeout |
Name | termchar |
---|---|
Description | The terminating DTMF character for DTMF input recognition. This parameter is ignored if the grammar (grammar) parameter is specified. |
Direction | input |
Type | DTMFChar (DTMFChar) |
Optional | Yes |
Possible Values | A valid DTMFChar value. To disable termination by a conventional DTMF character, set the parameter to an unconventional character like 'A'. |
Default | # |
Table 15: termchar |
Name | maxdigits |
---|---|
Description | The maximum number of digits to collect using an internal digits (0-9 only) grammar. This parameter is ignored if the grammar (grammar) parameter is specified. |
Direction | input |
Type | Positive Integer (Positive Integer) |
Optional | Yes |
Possible Values | A valid positive integer value. |
Default | 5 |
Table 16: maxdigits |
Name | grammar |
---|---|
Description | A URI reference to a custom DTMF grammar. If this parameter is specified, then the referenced DTMF grammar is used instead of the internal digits grammar (i.e. maxdigits (maxdigits) and termchar (termchar) are ignored even if specified). Custom grammars permit the full range of DTMF characters including '*' and '#' to be specified for DTMF pattern matching. |
Direction | input |
Type | URI (URI) |
Optional | Yes |
Possible Values | A valid URI value referencing a valid custom DTMF grammar. |
Default | none |
Table 17: grammar |
[Editors note: The format of the custom DTMF grammar is not yet defined. Possibilities include: [SRGS] (Hunt, A. and S. McGlashan, “Speech Recognition Grammar Specification Version 1.0,” March 2004.), [H.248.1] (, “Gateway control protocol: Version 3,” .), and [KPML] (Burger, E. and M. Dolly, “A Session Initiation Protocol (SIP) Event Package for Key Press Stimulus (KPML),” July 2006.). If more than one format is permitted, then an additional input parameter "grammartype" would indicate the format used in the grammar parameter.]
Name | status |
---|---|
Description | A status code indicating success or failure of the promptandcollect dialog |
Direction | output |
Type | Non-Negative Integer (Non-Negative Integer) |
Optional | No |
Possible Values | 1 for success; otherwise an error code (600, 601, 603). See Table 30 (status codes for all templates dialogs) |
Default | none |
Table 18: status |
Name | reason |
---|---|
Description | A textual description providing a reason for the status code; e.g. details on an error |
Direction | output |
Type | String (String) |
Optional | Yes |
Possible Values | A valid String value |
Default | Empty string |
Table 19: reason |
Name | result |
---|---|
Description | The DTMF input collected from the user. |
Direction | output |
Type | DTMFString (DTMFString) |
Optional | The parameter is mandatory if status is 1; otherwise, optional. |
Possible Values | A valid DTMFString (no spaces between characters). |
Default | Empty String |
Table 20: result |
In addition to the prompt extensions described in Table 7 (Additional playannouncement parameters), the following parameters are under consideration for later versions:
Name | Description |
---|---|
nomatchprompts | prompts to play when input doesn't match the DTMF grammar |
noinputprompts | prompts to play when there is no user input |
successprompts | prompts to play when user input is collected |
failureprompts | prompts to play when no valid user input has been collected after all iterations tried |
escapechar | character which causes the dialog to restart without incrementing the iterations counter |
iterationcount | number of iterations (output) |
promptplayedamount | duration of initial prompts played if prompt interrupted (output) |
TOC |
A template dialog to prompt the user and record their audio input.
The dialog is invoked with the URI "promptandrecord".
The dialog execution model consists of:
The input and output parameter are summarized and defined below.
Name | Direction | Description | Definition |
---|---|---|---|
prompts | input | prompts to play | Table 21 (prompts) |
iterations | input | maximum attempts | Table 22 (iterations) |
timeout | input | timeout to wait for input | Table 23 (timeout) |
dtmf | input | recording terminated by DTMF | Table 24 (dtmfterm) |
maxtime | input | maximum duration of recording | Table 25 (maxtime) |
finalsilence | input | final silence to terminate recording | Table 26 (finalsilence) |
status | output | status code | Table 27 (status) |
reason | output | reason for status | Table 28 (reason) |
result | output | URI for recording | Table 29 (result) |
Name | prompts |
---|---|
Description | Initial prompts to play |
Direction | input |
Type | URIList (URIList) |
Optional | Yes |
Possible Values | A valid URIList |
Default | none |
Table 21: prompts |
Name | iterations |
---|---|
Description | Maximum number of times the promptandrecord dialog is to be played |
Direction | input |
Type | Non-Negative Integer (Non-Negative Integer) |
Optional | Yes |
Possible Values | A valid non-negative integer. A value of 0 indicates that the dialog is repeated until halted by other means. |
Default | 0 |
Table 22: iterations |
Name | timeout |
---|---|
Description | Indicates the time to wait for user input. |
Direction | input |
Type | Time Designation (Time Designation) |
Optional | Yes |
Possible Values | A valid TimeDesignation value. |
Default | 5s |
Table 23: timeout |
Name | dtmfterm |
---|---|
Description | Indicates whether recording can be terminated by DTMF input |
Direction | input |
Type | Boolean (Boolean) |
Optional | Yes |
Possible Values | A valid Boolean value. A value of true indicates that recording can be terminated by DTMF. A value of false indicates that recording cannot be terminated by DTMF. |
Default | true |
Table 24: dtmfterm |
Name | maxtime |
---|---|
Description | The maximum duration of the recording |
Direction | input |
Type | Time Designation (Time Designation) |
Optional | Yes |
Possible Values | A valid TimeDesignation value. |
Default | 15s |
Table 25: maxtime |
Name | finalsilence |
---|---|
Description | The interval of silence that indicates end of speech |
Direction | input |
Type | Time Designation (Time Designation) |
Optional | Yes |
Possible Values | A valid TimeDesignation value. |
Default | 5s |
Table 26: finalsilence |
Name | status |
---|---|
Description | A status code indicating success or failure of the promptandrecord dialog |
Direction | output |
Type | Non-Negative Integer (Non-Negative Integer) |
Optional | No |
Possible Values | 1 for success; otherwise an error code (600, 601, 603). See Table 30 (status codes for all templates dialogs) |
Default | none |
Table 27: status |
Name | reason |
---|---|
Description | A textual description providing a reason for the status code; e.g. details on an error |
Direction | output |
Type | String (String) |
Optional | Yes |
Possible Values | A valid String value |
Default | Empty string |
Table 28: reason |
Name | result |
---|---|
Description | A URI referencing the media recording |
Direction | output |
Type | URI (URI) |
Optional | The parameter is mandatory if status is 1; otherwise, optional. |
Possible Values | A valid URI value |
Default | Empty string |
Table 29: result |
In addition to the prompt extensions described in Table 7 (Additional playannouncement parameters), the following additional parameters are under consideration for a later version.
Name | Description |
---|---|
destination | URI to send recording using HTTP |
mimetype | mimetype to use for recording (including media and file formats) |
beep | indicates whether a platform-specific beep is used immediately prior to recording |
noinputprompts | prompts to play when there is no user input |
successprompts | prompts to play when recording is successful |
failureprompts | prompts to play when no recording has been made after all the iterations tried |
duration | duration of the recording (output) |
mimetype | mimetype of the recording (output) |
iterationcount | number of iterations (output) |
terminationmode | indication of why recording terminated: e.g. dtmf, maxtime reached, externalevent or finalsilence detected (output) |
promptplayedamount | duration of initial prompts played if prompt interrupted (output) |
TOC |
The following table describes the codes returned in the status output parameter for template dialogs.
status | description |
---|---|
0 | dialog terminated externally |
1 | success |
600 | unspecified error |
601 | invalid input parameter |
602 | no prompts defined (only playannouncement) |
603 | maximum iterations reached without valid input (not playannouncement) |
Table 30: status codes
for all templates dialogs |
TOC |
This section defines types referenced in template parameters.
TOC |
The value space of boolean is the set {true, false}.
TOC |
A DTMF character. The value space is the set {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, #, *, A, B, C, D}.
TOC |
A String composed of one or more DTMFChar (DTMFChar)s.
TOC |
The value space of non-negative integer is the infinite set {0,1,2,...}.
TOC |
The value space of positive integer is the infinite set {1,2,...}.
TOC |
A string in the character encoding associated with the XML element.
TOC |
A time designation consists of a non-negative real number followed by a time unit identifier.
The time unit identifiers are: "ms" (milliseconds) and "s" (seconds).
Examples include: "3s", "850ms", "0.7s", ".5s" and "+1.5s".
TOC |
Uniform Resource Indicator as defined in [RFC2396] (Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifiers (URI): Generic Syntax,” August 1998.).
TOC |
A list of URI (URI)s.
TOC |
The following example assume a control channel has been established as described in the SIP Control Framework [SIPCF] (Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” October 2006.).
The XML messages are in angled brackets; the REPORT status is in round brackets. Other aspects of the protocol are omitted for readability.
TOC |
An IVR dialog is started successfully, and dialogexit notification <event> is sent from the MS to the AS when the dialog exits normally.
Application Server (AS) Media Server (MS) | | | (1) CONTROL: <dialogstart> | | ----------------------------------------> | | | | (2) 202 | | <--------------------------------------- | | | | (3) REPORT: (pending) | | <---------------------------------------- | | | | (4) 200 | | ----------------------------------------> | | | | (5) REPORT: <response status="200"/> | | (terminate) | | <---------------------------------------- | | | | (6) 200 | | ----------------------------------------> | | | | (7) REPORT:<event name="dialogexit"/> | | (notify) | | <---------------------------------------- | | | | (8) 200 | | ----------------------------------------> | | |
TOC |
An IVR dialog fails to start due to an unknown template.
Application Server (AS) Media Server (MS) | | | (1) CONTROL: <dialogstart> | | ----------------------------------------> | | | | (2) 202 | | <--------------------------------------- | | | | (3) REPORT: (pending) | | <---------------------------------------- | | | | (4) 200 | | ----------------------------------------> | | | | (5) REPORT: <response status="409"/> | | (terminate) | | <---------------------------------------- | | | | (6) 200 | | ----------------------------------------> | | |
TOC |
An IVR dialog is prepared and started successfully, and then the dialog exits normally.
Application Server (AS) Media Server (MS) | | | (1) CONTROL: <dialogprepare> | | ----------------------------------------> | | | | (2) 202 | | <--------------------------------------- | | | | (3) REPORT: (pending) | | <---------------------------------------- | | | | (4) 200 | | ----------------------------------------> | | | | (5) REPORT: <response status="200"/> | | (terminate) | | <---------------------------------------- | | | | (6) 200 | | ----------------------------------------> | | | | (7) CONTROL: <dialogstart> | | ----------------------------------------> | | | | (8) 202 | | <--------------------------------------- | | | | (9) REPORT: (pending) | | <---------------------------------------- | | | | (10) 200 | | ---------------------------------------> | | | | (11) REPORT: <response status="200"/> | | (terminate) | | <---------------------------------------- | | | | (12) 200 | | ----------------------------------------> | | | | (13) REPORT:<event name="dialogexit"/>| | (notify) | | <---------------------------------------- | | | | (14) 200 | | ----------------------------------------> | | |
TOC |
An IVR dialog is started successfully, and then terminated immediately by the AS. No dialog notification <event>s are sent back to the AS.
Application Server (AS) Media Server (MS) | | | (1) CONTROL: <dialogstart> | | ----------------------------------------> | | | | (2) 202 | | <--------------------------------------- | | | | (3) REPORT: (pending) | | <---------------------------------------- | | | | (4) 200 | | ----------------------------------------> | | | | (5) REPORT: <response status="200"/> | | (terminate) | | <---------------------------------------- | | | | (6) 200 | | ----------------------------------------> | | | | (7) CONTROL: <dialogterminate> | | ----------------------------------------> | | | | (8) 200: <response status="200"/> | | <---------------------------------------- | | |
Note that in (8) the response to the <dialogterminate/> request is carried on a framework 200 response.
TOC |
An IVR dialog is started successfully, and then terminated non-immediately by the AS, allowing the MS to send a dialogexit notification <event> with information collected during the dialog.
Application Server (AS) Media Server (MS) | | | (1) CONTROL: <dialogstart> | | ----------------------------------------> | | | | (2) 202 | | <--------------------------------------- | | | | (3) REPORT: (pending) | | <---------------------------------------- | | | | (4) 200 | | ----------------------------------------> | | | | (5) REPORT: <response status="200"/> | | (terminate) | | <---------------------------------------- | | | | (6) 200 | | ----------------------------------------> | | | | (7) CONTROL: <dialogterminate> | | ----------------------------------------> | | | | (8) 200: <response status="200"/> | | <---------------------------------------- | | | | (9) REPORT:<event name="dialogexit"/> | | (notify) | | <---------------------------------------- | | | | (10) 200 | | ----------------------------------------> | | |
Note that in (8) the response to the <dialogterminate/> request is carried on a framework 200 response.
TOC |
The following examples show how playannouncement, promptandcollect and promptandrecord template dialogs are used with <dialogprepare>, <dialogstart> and <event> elements.
The examples do not specify all messages between the AS and MS.
TOC |
This example prepares an announcement composed of two prompts.
<dialogprepare src="playannouncement"> <data> <item name="prompts" value="http://www.example.com/media/Number_09.wav http://www.example.com/media/Number_11.wav"/> <item name="iterations" value="2"/> </data> </dialogprepare>
If the dialog is prepared successfully, a dialogprepared message is returned:
<response status="200" dialogid="vxi78"/>
The prepared dialog is then started on a conference playing the prompts twice:
<dialogstart prepareddialogid="vxi78" conf-id="conference11"/>
In the case of a successful dialog, the output is provided in <event>; for example
<event name="dialogexit" dialogid="vxi78"> <data> <item name="status" value="1"/> </data> </event>
In this example, the dialog is started on a sip dialog connection, but no <data> is specified:
<dialogstart src="playannouncement" connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"/>
and an error message is returned:
<event name="dialogexit" dialogid="vxi79"> <data> <item name="status" value="602"/> <item name="reason" value="prompts not defined"/> </data> </event>
TOC |
This example plays no prompts and just waits for input from the user:
<dialogstart src="promptandcollect" connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"/>
If the dialog is successful, then "dialogexit" <event> contains the dtmf collected in its result parameter:
<event name="dialogexit" dialogid="vxi80"> <data> <item name="status" value="1"/> <item name="result" value="12345"/> </data> </event>
In this example, a prompt is played and then we wait for 3 hours for a two digit sequence:
<dialogstart src="promptandcollect" connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> <data> <item name="prompts" value="http://www.example.com/prompt1.wav"/> <item name="timeout" value="1080s"/> <item name="maxdigits" value="2"/> <item name="iterations" value="1"/> </data> </dialogstart>
If no user input is collected within 3 hours, then following would be returned:
<event name="dialogexit" dialogid="vxi81"> <data> <item name="status" value="603"/> </data> </event>
And finally in this example, one of the input parameters is invalid:
<dialogstart src="promptandcollect" connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> <data> <item name="prompts" value="http://www.example.com/prompt1.wav"/> <item name="iterations" value="two"/> <item name="cleardigitbuffer" value="true"/> <item name="bargein" value="true"/> <item name="timeout" value="4s"/> <item name="interdigittimeout" value="2s"/> <item name="termtimeout" value="0s"/> <item name="maxdigits" value="2"/> </data> </dialogstart>
The error is reported in a dialogexit <event>:
<event name="dialogexit" dialogid="vxi82"> <data> <item name="status" value="601"/> <item name="reason" value="iterations invalid: two"/> </data> </event>
TOC |
In this example, the user is prompted, then their input is recorded for a maximum of 30 seconds.
<dialogstart src="promptandrecord" connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> <data> <item name="prompts" value="http://www.example.com/media/sayname.wav http://www.example.com/media/beep.wav"/> <item name="dtmfterm" value="false"/> <item name="maxtime" value="30s"/> </data> </dialogstart>
If successful, the following is returned in a dialogexit <event>:
<event name="dialogexit" dialogid="vxi83"> <data> <item name="status" value="1"/> <item name="result" value="http://www.example.com/recording1.wav"/> </data> </event>
TOC |
[Editors Note: A later version of the XML schema will provide more constraints as expressed in the textual definitions; for example, single occurrence of <data> elements, co-occurence on attributes, etc.]
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-ivr-basic" xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes" elementFormDefault="qualified" xmlns="urn:ietf:params:xml:ns:msc-ivr-basic" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation>Basic IVR 1.0 schema (20061019)</xsd:documentation> </xsd:annotation> <xsd:import namespace="urn:ietf:params:xml:ns:control:framework-attributes" schemaLocation="framework.xsd"/> <xsd:element name="dialogprepare"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="data"/> <xsd:element ref="subscribe"/> <xsd:any namespace="##other" processContents="strict"/> </xsd:choice> <xsd:attribute name="src" type="URI.datatype" use="required"/> <xsd:attribute name="dialogid" type="dialogid.datatype"/> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="dialogstart"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="stream"/> <xsd:element ref="data"/> <xsd:element ref="subscribe"/> <xsd:any namespace="##other" processContents="strict"/> </xsd:choice> <xsd:attribute name="src" type="URI.datatype"/> <xsd:attribute name="dialogid" type="dialogid.datatype"/> <xsd:attribute name="prepareddialogid" type="dialogid.datatype"/> <xsd:attributeGroup ref="fw:framework-attributes"/> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="dialogterminate"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:any namespace="##other" processContents="strict"/> </xsd:choice> <xsd:attribute name="dialogid" type="dialogid.datatype" use="required"/> <xsd:attribute name="immediate" type="boolean.datatype" default="false"/> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="response"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:any namespace="##other" processContents="strict"/> </xsd:choice> <xsd:attribute name="status" type="status.datatype" use="required"/> <xsd:attribute name="reason" type="xsd:string"/> <xsd:attribute name="dialogid" type="dialogid.datatype"/> <xsd:attributeGroup ref="fw:framework-attributes"/> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="event"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="data"/> <xsd:any namespace="##other" processContents="strict"/> </xsd:choice> <xsd:attribute name="name" type="eventname.datatype" use="required"/> <xsd:attribute name="dialogid" type="dialogid.datatype" use="required"/> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <!-- DATATYPES --> <xsd:simpleType name="URI.datatype"> <xsd:restriction base="xsd:anyURI"/> </xsd:simpleType> <xsd:simpleType name="dialogid.datatype"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <xsd:simpleType name="boolean.datatype"> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="true"/> <xsd:enumeration value="false"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="eventname.datatype"> <xsd:restriction base="xsd:NMTOKEN"> <xsd:pattern value="[a-zA-Z0-9\.]+"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="status.datatype"> <xsd:restriction base="xsd:NMTOKEN"> <xsd:pattern value="[0-9][0-9][0-9]"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="media.datatype"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <xsd:simpleType name="label.datatype"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> <xsd:simpleType name="direction.datatype"> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="sendrecv"/> <xsd:enumeration value="sendonly"/> <xsd:enumeration value="recvonly"/> </xsd:restriction> </xsd:simpleType> <!-- SHARED ELEMENTS --> <xsd:element name="data"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="item"/> <xsd:any namespace="##other" processContents="strict"/> </xsd:choice> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="item"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:attribute name="value" type="xsd:string" use="required"/> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="stream"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:any namespace="##other" processContents="strict"/> </xsd:choice> <xsd:attribute name="media" type="media.datatype" use="required"/> <xsd:attribute name="label" type="label.datatype"/> <xsd:attribute name="direction" type="direction.datatype" default="sendrecv" /> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="subscribe"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="notify"/> </xsd:choice> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> <xsd:element name="notify"> <xsd:complexType> <xsd:choice minOccurs="0" maxOccurs="1"> <xsd:element ref="data"/> </xsd:choice> <xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:complexType> </xsd:element> </xsd:schema>
TOC |
Security Considerations to be included in later versions of this document.
TOC |
This document registers a new SIP Control Framework Package and a new XML namespace.
TOC |
Control Package name: msc-ivr-basic/1.0
TOC |
XML namespace: urn:ietf:params:xml:ns:msc-ivr-basic
TOC |
The following are the major changes between the -02 of the draft and the -01 version.
The following are the primary changes between the -01 of the draft and the -00 version.
TOC |
The authors would like to thank Adnan Saleem of Convedia and Gene Shtirmer of Intel for useful review of this work.
TOC |
TOC |
[RFC2119] | Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML). |
TOC |
[CCXML10] | Auburn, R J., “Voice Browser Call Control: CCXML Version 1.0,” W3C Working Draft (work in progress), June 2005. |
[H.248.1] | “Gateway control protocol: Version 3,” ITU-T Recommendation H.248.1. |
[H.248.9] | “Gateway control protocol: Advanced media server packages,” ITU-T Recommendation H.248.9. |
[KPML] | Burger, E. and M. Dolly, “A Session Initiation Protocol (SIP) Event Package for Key Press Stimulus (KPML),” draft-ietf-sipping-kpml-08 (work in progress), July 2006. |
[MSCML] | Van Dyke, J., Burger, E., and A. Spitzer, “Media Server Control Markup Language (MSCML) and Protocol,” draft-vandyke-mscml-09 (work in progress), June 2006. |
[MSCP] | McGlashan, S., Auburn, R., Burke, D., Candell, E., and R. Surapaneni, “Media Server Control Protocol (MSCP),” draft-mcglashan-mscp-02 (work in progress), July 2006. |
[MSML] | Saleem, A. and G. Sharratt, “Media Session Markup Language (MSML),” draft-saleem-msml-01 (work in progress), June 2006. |
[RFC2396] | Berners-Lee, T., Fielding, R., and L. Masinter, “Uniform Resource Identifiers (URI): Generic Syntax,” RFC 2396, August 1998 (TXT, HTML, XML). |
[RFC2616] | Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, “Hypertext Transfer Protocol -- HTTP/1.1,” RFC 2616, June 1999 (TXT, PS, PDF, HTML, XML). |
[RFC2897] | Cromwell, D., “Proposal for an MGCP Advanced Audio Package,” RFC 2897, August 2000 (TXT). |
[RFC3261] | Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, “SIP: Session Initiation Protocol,” RFC 3261, June 2002 (TXT). |
[RFC3262] | Rosenberg, J. and H. Schulzrinne, “Reliability of Provisional Responses in Session Initiation Protocol (SIP),” RFC 3262, June 2002 (TXT). |
[RFC3263] | Rosenberg, J. and H. Schulzrinne, “Session Initiation Protocol (SIP): Locating SIP Servers,” RFC 3263, June 2002 (TXT). |
[RFC3264] | Rosenberg, J. and H. Schulzrinne, “An Offer/Answer Model with Session Description Protocol (SDP),” RFC 3264, June 2002 (TXT). |
[RFC4240] | Burger, E., Van Dyke, J., and A. Spitzer, “Basic Network Media Services with SIP,” RFC 4240, December 2005 (TXT). |
[RFC4574] | Levin, O. and G. Camarillo, “The Session Description Protocol (SDP) Label Attribute,” RFC 4574, August 2006 (TXT). |
[SIPCF] | Boulton, C., Melanchuk, T., McGlashan, S., and A. Shiratzky, “A Control Framework for the Session Initiation Protocol (SIP),” draft-boulton-sip-control-framework-04 (work in progress), October 2006. |
[SRGS] | Hunt, A. and S. McGlashan, “Speech Recognition Grammar Specification Version 1.0,” W3C Recommendation, March 2004. |
[XML] | Bray, T., Paoli, J., Sperberg-McQueen, C M., Maler, E., and F. Yergeau, “Extensible Markup Language (XML) 1.0 (Third Edition),” W3C Recommendation, February 2004. |
TOC |
Chris Boulton | |
Ubiquity Software Corporation | |
Building 3 | |
Wern Fawr Lane | |
St Mellons | |
Cardiff, South Wales CF3 5EA | |
Email: | cboulton@ubiquitysoftware.com |
Tim Melanchuk | |
BlankSpace | |
Email: | tim.melanchuk@gmail.com |
Scott McGlashan | |
Hewlett-Packard | |
Gustav III:s boulevard 36 | |
SE-16985 Stockholm, Sweden | |
Email: | scott.mcglashan@hp.com |
Asher Shiratzky | |
Radvision | |
24 Raoul Wallenberg st | |
Tel-Aviv, Israel | |
Email: | ashers@radvision.com |
TOC |
Copyright © The IETF Trust (2006).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an “AS IS” basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.