summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2897.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc2897.txt')
-rw-r--r--doc/rfc/rfc2897.txt1907
1 files changed, 1907 insertions, 0 deletions
diff --git a/doc/rfc/rfc2897.txt b/doc/rfc/rfc2897.txt
new file mode 100644
index 0000000..0014c8e
--- /dev/null
+++ b/doc/rfc/rfc2897.txt
@@ -0,0 +1,1907 @@
+
+
+
+
+
+
+Network Working Group D. Cromwell
+Request for Comments: 2897 Nortel Networks
+Category: Informational August 2000
+
+
+ Proposal for an MGCP Advanced Audio Package
+
+Status of this Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard of any kind. Distribution of this
+ memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2000). All Rights Reserved.
+
+Abstract
+
+ This document is a proposal to add a new event/signal package to the
+ MGCP (Media Gateway Control Protocol) protocol to control an ARF
+ (Audio Resource Function) which may reside on a Media Gateway or
+ specialized Audio Server.
+
+ This event package provides support for the standard IVR (Interactive
+ Voice Response) operations of PlayAnnouncement, PlayCollect, and
+ PlayRecord. It supports direct references to simple audio as well as
+ indirect references to simple and complex audio. It provides audio
+ variables, control of audio interruptibility, digit buffer control,
+ special key sequences, and support for reprompting during data
+ collection. It also provides an arbitrary number of user defined
+ qualifiers to be used in resolving complex audio structures. For
+ example, the user could define qualifiers for any or all of the
+ following: language, accent, audio file format, gender, speaker, or
+ customer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Cromwell Informational [Page 1]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+Table of Contents
+
+ 1. Introduction ................................................ 2
+ 1.1. Audio Segments ............................................ 3
+ 1.1.1. Sequences And Sets ...................................... 3
+ 1.1.2. Segment Types ........................................... 4
+ 2. Advanced Audio Package ...................................... 5
+ 3. Events ...................................................... 5
+ 4. Event Parameters ............................................ 7
+ 5. Return Parameters ........................................... 7
+ 6. Variables ................................................... 14
+ 7. Selectors ................................................... 17
+ 8. Aliases ..................................................... 18
+ 9. Examples .................................................... 21
+ 10. Formal Syntax Description .................................. 22
+ 11. References ................................................. 22
+ 12. Formal Syntax Description .................................. 25
+ 13. References ................................................. 32
+ 14. Author's Address ........................................... 33
+ 15. Full Copyright Statement ................................... 34
+
+1. Introduction
+
+ The following syntax supports both simple and complex audio
+ structures. A simple audio structure might be a single announcement
+ such as "Welcome to Bell South's Automated Directory Assistance
+ Service". A more complex audio structure might consist of an
+ announcement followed by voice variable followed by another
+ announcement, for example "There are thirty seven minutes remaining
+ on your prepaid calling card," where "There are" is a prompt, the
+ number of minutes is a voice variable, and "minutes remaining on your
+ prepaid calling card" is another prompt.
+
+ It is also possible to define complex audio structures that are
+ qualified by user defined selectors such as language, audio file
+ format, gender, accent, customer, or voice talent. For instance, if
+ the above example were qualified by language and accent selectors, it
+ would be possible to play "There are thirty seven minutes remaining
+ on your prepaid calling card" in English spoken with a southern
+ accent or in English spoken with a mid-western accent, providing that
+ the audio to support this had been provisioned.
+
+ There are two methods of specifying complex audio. The first is to
+ directly reference the individual components. This requires a
+ complete description of each component to be specified via the
+ protocol. The second method is to provision the components on the
+ Audio Server as a single entity and to export a reference to that
+ entity to the call agent. In this case, only the reference (plus any
+
+
+
+Cromwell Informational [Page 2]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ dynamic data required, such as a variable data) is passed via the
+ protocol, and no specification of individual components is necessary.
+
+ The Audio Server Package provides significant functionality most of
+ which is controlled via protocol parameters. Most parameters are
+ optional, and where ever possible default to reasonable values. An
+ audio application that references to provisioned, complex audio
+ structures, and which takes advantage of parameter optionality and
+ defaults, can specify audio events using a minimum of syntax.
+
+1.1. Background
+
+ The next two sections contain background information which may be
+ helpful in understanding the syntax.
+
+1.1.1. Sequence And Sets
+
+ The syntax supports abstractions of set and sequence for storing and
+ referencing audio data.
+
+ A sequence is a provisioned sequence of one or more audio segments.
+ Component segments are not necessarily all of the same type. Every
+ sequence is assigned a unique segment id. On playback, a sequence id
+ reference is deconstructed into its individual parts, each of which
+ is played in order.
+
+ A set is a provisioned collection of audio segments with an
+ associated selector. On playback, the selector value is resolved to
+ a particular set element. Selector types are supported by the
+ syntax, but individual selector types are not defined in the syntax
+ except for the pre-defined language selector; they are instead
+ defined by the user (i.e. provisioner). A user could define one or
+ more of the following selector types: language, accent, audio file
+ format, gender, accent, customer, or day of the week. For each
+ selector type, the user must define a range of valid values. The
+ user may also choose to define a default value. At runtime if a
+ selector value is not supplied the default value is used.
+
+ For example, to support an application which plays a particular piece
+ of audio in either English, French, or Russian, a provisioner would
+ define a set with the pre-defined selector, "Lang", and would define
+ three possible values for that selector, "eng", "fra", and "rus".
+ The provisioner would then provision three recordings of the prompt,
+ one in each language, and would associate the French recording with
+ the "fra" selector value, etc. The provisioner also could define a
+ default value of the selector when no selector value is supplied,
+ "eng" for instance. The entire set would be assigned a unique
+ segment id.
+
+
+
+Cromwell Informational [Page 3]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ At runtime a reference to the set with the selector set to "rus"
+ would result in the Russian version of the prompt being played. A
+ reference to the set with no selector would result in the English
+ version of the prompt being played since English has been set as the
+ default selector value.
+
+ Nested definition of both sets and sequences is allowed, i.e. it
+ legal to define a set of sets or a sequence of sequences. In
+ addition, audio structures may also be specified by intermixing sets
+ and sequences, and it is possible to specify a set of sequences or a
+ sequence containing one or more set elements. Direct or transitive
+ definition of a set or segment in terms of itself is not allowed.
+
+1.1.2. Segment Types
+
+ The syntax supports the following segment types:
+
+ RECORDING: A reference by unique id to a single piece of recorded
+ audio.
+
+ RECORDINGs may be provisioned or they may be made during the
+ course of a call. A RECORDING made during the course of a call
+ can be temporary or persistent. A temporary RECORDING lasts only
+ for the life of the call during which it was recorded. A
+ persistent RECORDING lasts beyond the live of the call during
+ which it was recorded.
+
+ A provisioned RECORDING may be replaced (or overridden) by a
+ persistent RECORDING. A reference to the id of the provisioned
+ RECORDING will then resolve to the persistent RECORDING. The
+ overriding persistent audio can subsequently be deleted and the
+ original provisioned audio can be restored.
+
+ A provisioned RECORDING may be overridden more than once. In this
+ case, the id of the provisioned RECORDING refers to the latest
+ overriding RECORDING. When the overriding RECORDING is deleted,
+ the original provisioned RECORDING is restored, even if the
+ segment has been overridden multiple times.
+
+ TEXT: A reference to a block of text to be converted to speech or
+ to be displayed on a device. Reference may be by unique id to a
+ block of provisioned text or by direct specification of text in a
+ parameter.
+
+ SILENCE: A specification of a length of silence to be played in
+ units of 100 milliseconds.
+
+
+
+
+
+Cromwell Informational [Page 4]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ TONE: The specification of a tone to be played by algorithmic
+ generation. Most tones however will probably be recorded, not
+ generated. Exact specification of this segment type is tbd.
+
+ VARIABLE: The specification of a voice variable by the parameters
+ of type, subtype, and value. Specification of variables is
+ considered in more detail in a subsequent section of this
+ document.
+
+ SEQUENCE: A reference by unique id to a provisioned sequence of
+ mixed RECORDING, TEXT, SILENCE, TONE, VARIABLE, SET, or SEQUENCE
+ segments. Nested definition of SEQUENCE segments is allowed.
+ Direct or transitive definition of a SEQUENCE segment in terms of
+ itself is not allowed.
+
+ SET: A reference by unique id to a provisioned set of segments.
+ The intended and recommended use of the SET type is that all
+ segments in the set should be semantically equivalent, however
+ there is no real way of enforcing this restriction either in the
+ protocol or in provisioning. Every set has an associated selector
+ which is used at runtime to resolve the set reference to a
+ specific element of the set. The elements of a set may one of the
+ following segment types: RECORDING, TEXT, TONE, SILENCE,
+ SEQUENCE, or SET. Specific selector types are not specified by
+ the protocol and must be defined by the user. Nested definition
+ of SET segments is allowed. Direct or transitive definition of a
+ SET segment in terms of itself is not allowed.
+
+2. Advanced Audio Package
+
+ Package Name: AU
+
+ This package defines events and signals for an ARF package for an
+ Audio Server Media Gateway.
+
+3. Events
+
+______________________________________________________________________
+| Symbol | Definition | R | S Duration |
+|______________|________________________|______|______________________|
+| pa(parms) | PlayAnnouncement | | TO variable |
+| pc(parms) | PlayCollect | | TO variable |
+| pr(parms) | PlayRecord | | TO variable |
+| es(parm) | EndSignal | | BR |
+| oc(parms) | OperationComplete | x | |
+| of(parms) | OperationFailed | x | |
+|______________|________________________|______|______________________|
+
+
+
+
+Cromwell Informational [Page 5]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ The events provided by the AS Package are defined as follows:
+
+ PlayAnnouncement:
+ Plays an announcement in situations where there is no need for
+ interaction with the user. Because there is no need to monitor
+ the incoming media stream this event is an efficient mechanism for
+ treatments, informational announcements, etc.
+
+ PlayCollect:
+ Plays a prompt and collects DTMF digits entered by a user. If no
+ digits are entered or an invalid digit pattern is entered, the
+ user may be reprompted and given another chance to enter a correct
+ pattern of digits. The following digits are supported: 0-9, *,
+ #, A, B, C, D. By default PlayCollect does not play an initial
+ prompt, makes only one attempt to collect digits, and therefore
+ functions as a simple Collect operation. Various special purpose
+ keys, key sequences, and key sets can be defined for use during
+ the PlayCollect operation.
+
+ PlayRecord:
+ Plays a prompt and records user speech. If the user does not
+ speak, the user may be reprompted and given another chance to
+ record. By default PlayRecord does not play an initial prompt,
+ makes only one attempt to record, and therefore functions as a
+ simple Record operation.
+
+ OperationComplete:
+ Detected upon the successful completion of a Play, PlayRecord, or
+ Play Collect signal.
+
+ OperationFailed:
+ Detected upon the failure of a Play, PlayRecord, or PlayCollect
+ signal.
+
+ EndSignal:
+ Gracefully terminates a Play, PlayCollect, or PlayRecord signal.
+ For each of these signals, if the signal is terminated with the
+ EndSignal signal the resulting OperationComplete event or
+ OperationFailed event will contain all the parameters it would
+ normally, including any collected digits or the recording id of
+ the recording that was in progress when the EndSignal signal was
+ received.
+
+
+
+
+
+
+
+
+
+Cromwell Informational [Page 6]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+4. Signal Interactions
+
+ If an Advanced Audio Package signal is active on an endpoint and
+ another signal of the same type is applied, the two signals including
+ parameters and parameter values will compared If the signals are
+ identical, the signal in progress will be allowed to continue and the
+ new signal will be discarded. Because of this behavior the Advanced
+ Audio Package may not interoperate well with some other packages such
+ as the Line and Trunk packages.
+
+5. Parameters
+
+ The PlayAnnouncement, PlayRecord, and PlayCollect events may each be
+ qualified by a string of parameters, most of which are optional.
+ Where appropriate, parameters default to reasonable values. The
+ only event with a required parameter is PlayAnnouncement. If a
+ Play-Announcement event is not provided with a parameter specifying
+ some form of playable audio an error is returned to the application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Cromwell Informational [Page 7]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ These parameters are shown in the following table:
+
+_______________________________________________________________________
+| Parameters |
+|______________________________________________________________________|
+| Symbol | Definition | pl | pc | pr |
+|___________|_________________________________|________|________|______|
+| an | announcement | x | | |
+| ip | initial prompt | | x | x |
+| rp | reprompt | | x | x |
+| nd | no digits reprompt | | x | |
+| ns | no speech reprompt | | | x |
+| fa | failure announcement | | x | x |
+| sa | success announcement | | x | x |
+| ni | non-interruptible play | | x | x |
+| it | iterations | x | | |
+| iv | interval | x | | |
+| du | duration | x | | |
+| sp | speed | x | x | x |
+| vl | volume | x | x | x |
+| cb | clear digit buffer | | x | x |
+| mx | maximum # of digits | | x | |
+| mn | minimum # of digits | | x | |
+| dp | digit pattern | | x | |
+| fdt | first digit timer | | x | |
+| idt | inter digit timer | | x | |
+| edt | extra digit timer | | x | |
+| prt | pre-speech timer | | | x |
+| pst | post-speech timer | | | x |
+| rlt | total recording length timer | | | x |
+| rsk | restart key | | x | x |
+| rik | reinput key | | x | x |
+| rtk | return key | | x | x |
+| psk | position key | | x | x |
+| stk | stop key | | x | x |
+| sik | start input key | | x | |
+| eik | end input key | | x | x |
+| iek | include end input key | | x | |
+| na | number of attempts | | x | x |
+|___________|_________________________________|________|________|______|
+
+ Parameters to the Advanced Audio Package events are defined as
+ follows:
+
+ Announcement:
+
+ An announcement to be played. Consists of one or more audio
+ segments.
+
+
+
+Cromwell Informational [Page 8]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Initial Prompt:
+
+ The initial announcement prompting the user to either enter DTMF
+ digits or to speak. Consists of one or more audio segments. If
+ not specified (the default), the event immediately begins digit
+ collection or recording.
+
+ Reprompt:
+
+ Played after the user has made an error such as entering an
+ invalid digit pattern or not speaking. Consists of one or more
+ audio segments. Defaults to the Initial Prompt.
+
+ No Digits Reprompt:
+
+ Played after the user has failed to enter a valid digit pattern
+ during a PlayCollect event. Consists of one or more audio
+ segments. Defaults to the Reprompt.
+
+ No Speech Reprompt:
+
+ Played after the user has failed to speak during a PlayRecord
+ event. Consists of one or more audio segments. Defaults to the
+ Reprompt.
+
+ Failure Announcement:
+
+ Played when all data entry attempts have failed. Consists of one
+ or more audio segments. No default.
+
+ Success Announcement:
+
+ Played when data collection has succeeded. Consists of one or
+ more audio segments. No default.
+
+ Non-Interruptible Play:
+
+ If set to true, initial prompt is not interruptible by either
+ voice or digits. Defaults to false. Valid values are the text
+ strings "true" and "false".
+
+ Iterations:
+
+ The maximum number of times an announcement is to be played. A
+ value of minus one (-1) indicates the announcement is to be
+ repeated forever. Defaults to one (1).
+
+
+
+
+
+Cromwell Informational [Page 9]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Interval:
+
+ The interval of silence to be inserted between iterative plays.
+ Specified in units of 100 milliseconds. Defaults to 10 (1
+ second).
+
+ Duration:
+
+ The maximum amount of time to play and possibly replay an
+ announcement. Takes precedence over iteration and interval.
+ Specified in units of 100 milliseconds. No default.
+
+ Speed:
+
+ The relative playback speed of announcement specifiable as a
+ positive or negative percentage of the original playback speed.
+
+ Volume:
+
+ The relative playback volume of announcement specifiable as a
+ positive or negative decibel variation from the original play-back
+ volume.
+
+ Clear Digit Buffer:
+
+ If set to true, clears the digit buffer before playing the initial
+ prompt. Defaults to false. Valid values are the text strings
+ "true" and "false".
+
+ Maximum # Of Digits:
+
+ The maximum number of digits to collect. Defaults to one. This
+ parameter should not be specified if the Digit Pattern parameter
+ is present.
+
+ Minimum # Of Digits:
+
+ The minimum number of digits to collect. Defaults to one. This
+ parameter should not be specified if the Digit Pattern parameter
+ is present.
+
+ Digit Pattern:
+
+ A legal digit map as described in section 7.1.14 of the Megaco
+ protocol [6] using the DTMF mappings associated with the Megaco
+ DTMF Detection Package described in the Megaco protocol document
+
+
+
+
+
+Cromwell Informational [Page 10]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ [6]. This parameter should not be specified if one or both of the
+ Minimum # Of Digits parameter and the Maximum Number Of Digits
+ parameter is present.
+
+ First Digit Timer:
+
+ The amount of time allowed for the user to enter the first digit.
+ Specified in units of 100 milliseconds. 50 (5 seconds).
+
+ Inter Digit Timer:
+
+ The amount of time allowed for the user to enter each subsequent
+ digit. Specified units of 100 milliseconds seconds. Defaults to
+ 30 (3 seconds).
+
+ Extra Digit Timer:
+
+ The amount of time to wait for a user to enter a final digit once
+ the maximum expected amount of digits have been entered.
+ Typically this timer is used to wait for a terminating key in
+ applications where a specific key has been defined to terminate
+ input. Specified in units of 100 milliseconds. If not specified,
+ this timer is not activated.
+
+ Pre-speech Timer:
+
+ The amount of time to wait for the user to initially speak.
+ Specified in units of 100 milliseconds. Defaults to 30 (3
+ seconds).
+
+ Post-speech Timer:
+
+ The amount of silence necessary after the end of the last speech
+ segment for the recording to be considered complete. Specified in
+ units of 100 milliseconds. Defaults to 20 (2 seconds).
+
+ Recording Length Timer:
+
+ The maximum allowable length of the recording, not including pre
+ or post speech silence. Specified in units of 100 milliseconds.
+ This parameter is mandatory.
+
+ Restart Key:
+
+ Defines a key sequence consisting of a command key optionally
+ followed by zero or more keys. This key sequence has the
+ following action: discard any digits collected or recording in
+ progress, replay the prompt, and resume digit collection or
+
+
+
+Cromwell Informational [Page 11]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ recording. No default. An application that defines more than one
+ command key sequence, will typically use the same command key for
+ all command key sequences. If more than one command key sequence
+ is defined, then all key sequences must consist of a command key
+ plus at least one other key.
+
+ Reinput Key:
+
+ Defines a key sequence consisting of a command key optionally
+ followed by zero or more keys. This key sequence has the
+ following action: discard any digits collected or recordings in
+ progress and resume digit collection or recording. No default. An
+ application that defines more than one command key sequence, will
+ typically use the same command key for all command key sequences.
+ If more than one command key sequence is defined, then all key
+ sequences must consist of a command key plus at least one other
+ key.
+
+ Return Key:
+
+ Defines a key sequence consisting of a command key optionally
+ followed by zero or more keys. This key sequence has the
+ following action: terminate the current event and any queued
+ event and return the terminating key sequence to the call
+ processing agent. No default. An application that defines more
+ than one command key sequence, will typically use the same command
+ key for all command key sequences. If more than one command key
+ sequence is defined, then all key sequences must consist of a
+ command key plus at least one other key.
+
+ Position Key:
+
+ Defines a key with the following action. Stop playing the current
+ announcement and resume playing at the beginning of the first,
+ last, previous, next, or the current segment of the announcement.
+ No default. The actions for the position key are fst, lst, prv,
+ nxt, and cur.
+
+ Stop Key:
+
+ Defines a key with the following action. Terminate playback of
+ the announcement. No default.
+
+ Start Input Keys:
+
+ Defines a set of keys that are acceptable as the first digit
+ collected. This set of keys can be specified to interrupt a
+ playing announcement or to not interrupt a playing announcement.
+
+
+
+Cromwell Informational [Page 12]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ The default key set is 0-9. The default behavior is to interrupt a
+ playing announcement when a Start Input Key is pressed. This
+ behavior can be overidden for the initial prompt only by using the
+ ni (Non-Interruptible Play) parameter. Specification is a list of
+ keys with no separators, e.g. 123456789#.
+
+ End Input Key:
+
+ Specifies a key that signals the end of digit collection or voice
+ recording. The default end input key is the # key. To specify that
+ no End Input Key be used the parameter is set to the string
+ "null". The default behavior not to return the End Input Key in
+ the digits returned to the call agent. This behavior can be
+ overidden by the Include End Input Key (eik) parameter.
+
+ Include End Input Key:
+
+ By default the End Input Key is not included in the collected
+ digits returned to the call agent. If this parameter is set to
+ "true" then the End Input Key will be returned with the collected
+ digits returned to the call agent. Default is "false".
+
+ Number Of Attempts:
+
+ The number of attempts the user needed to enter a valid digit
+ pattern or to make a recording. Defaults to 1. Also used as a
+ return parameter to indicate the number of attempts the user made.
+
+ Record Persistent Audio:
+
+ If set to true, the recording that is made is persistent instead
+ of temporary. Defaults to false. Valid values are the text
+ strings "true" and "false".
+
+ Delete Persistent Audio
+
+ Indicates that the specified persistent audio segment is to be
+ deleted. This parameter is carried by the PlayRecord event,
+ although nothing is either played or recorded in this case.
+
+ Override Audio:
+
+ Indicates that the specified provisioned audio segment is to be
+ overridden with a persistent audio segment to be recorded in the
+ PlayRecord operation that carries this parameter.
+
+
+
+
+
+
+Cromwell Informational [Page 13]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Restore Audio:
+
+ Indicates that the provisioned audio segment originally associated
+ with the specified segment id is to be restored and that the
+ overriding persistent audio is to be deleted. This parameter is
+ carried by the PlayRecord event, although nothing is either played
+ or recorded in this case.
+
+6. Return Parameters
+
+ Each event has an associated set of possible return parameters which
+ are listed in the following tables.
+
+________________________________________________________________________
+| Return Parameters |
+|_______________________________________________________________________|
+| Symbol | Definition | pl | pc | pr |
+|___________|________________________________|________|_________|_______|
+| vi | voice interrupt | | | x |
+| ik | interrupting key sequence | | x | |
+| ap | amount played | | x | x |
+| na | number of attempts | | x | x |
+| dc | digits collected | | x | |
+| ri | recording id | | | x |
+| rc | return code | x | x | x |
+|___________|________________________________|________|_________|_______|
+
+ Voice Interrupted:
+
+ Set to "true" if the initial prompt of a PlayRecord operation was
+ interrupted by voice. Defaults to "false".
+
+ Interrupting Key Sequence:
+
+ The key or key sequence that interrupted the initial prompt of a
+ PlayCollect specified using the digit map characters "0" through
+ "9" and "A" through "F" as defined in the DTMF Detection Package
+ in the Megaco protocol document [6].
+
+ Amount Played:
+
+ The length played of an initial prompt if the prompt was
+ interrupted, in 100 ms units.
+
+
+
+
+
+
+
+
+Cromwell Informational [Page 14]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Number Of Attempts:
+
+ The number of attempts the user needed to enter a valid digit
+ pattern or to make a recording. Defaults to 1. Also used as an
+ input parameter to specify the number of attempts the user will be
+ allowed to enter a valid digit pattern or make a recording.
+
+ Digits Collected:
+
+ The DTMF digits that were collected during a PlayCollect operation
+ specified using the digit map characters "0" through "9" and "A"
+ through "F" as defined in the DTMF Detection Package in the Megaco
+ protocol document [6].
+
+ Recording ID:
+
+ A 32 bit binary integer assigned to audio recorded during the Play
+ Record operation.
+
+ Return Code:
+
+ A return code giving the final status of the operation. Two
+ ranges are defined:
+
+ _________________________________
+ | Range | Meaning |
+ |________|_______________________|
+ |100-199 | successful completion |
+ |300-399 | error |
+ |________|_______________________|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Cromwell Informational [Page 15]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ The following return codes are define:
+
+________________________________________________________________________
+|Return Code | Meaning |
+|____________|__________________________________________________________|
+| 100 | Success |
+| 300 | Unspecified failure |
+| 301 | Bad audio ID |
+| 302 | Bad selector type |
+| 303 | Bad selector value |
+| 304 | Variable type not supported |
+| 305 | Variable subtype not supported |
+| 306 | Invalid variable name |
+| 307 | Variable value out of range |
+| 308 | Inconsistent variable specification |
+| 309 | Alias not found |
+| 310 | Extra sequence data |
+| 311 | Missing sequence data |
+| 312 | Mismatch between play specification and provisioned data |
+| 313 | Language not set |
+| 314 | Remove override error |
+| 315 | Override error |
+| 316 | Delete audio error |
+| 317 | Unable to record temporary audio |
+| 318 | Unable to delete temporary audio |
+| 319 | Unable to record persistent audio |
+| 320 | Unable to delete persistent audio |
+| 321 | Unable to override non-existent segment id |
+| 322 | Unable to remove override from non-existent segment id |
+| 323 | Provisioning error |
+| 324 | Unspecified hardware failure |
+| 325 | Syntax error |
+| 326 | No digits |
+| 327 | No speech |
+| 328 | Spoke too long |
+| 329 | Digit pattern not matched |
+| 330 | Max attempts exceeded |
+|____________|__________________________________________________________|
+
+ Here are some examples of how the return parameters are used:
+
+ The PlayAnnouncement event completed successfully:
+
+ O: AU/oc(rc=100)
+
+ The PlayAnnouncement event failed because an alias was not found:
+
+ O: AU/of(rc=309)
+
+
+
+Cromwell Informational [Page 16]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ The PlayCollect event completed successfully on the user's second
+ attempt when the user entered the digits 04375182:
+
+ O: AU/oc(rc=100 na=2 dc=04375182)
+
+ The PlayRecord event was successful on the user's first attempt; the
+ id of the recording made by the user is 983:
+
+ O: AU/oc(rc=100 na=1 ri=983)
+
+7. Segment Descriptors
+
+ Segment descriptors are used with the an, ip, rp, nd, ns, fa, and sa
+ parameters to define the segments that make up an announcement.
+
+________________________________________________________________________
+| Segment Descriptors |
+|_______________________________________________________________________|
+| Symbol | Definition |
+|____________________________________|__________________________________|
+| 32 bit binary number | segment identifier |
+| ts | text to speech |
+| dt | display text |
+| si | silence |
+| to | tone |
+| vb | variable |
+|____________________________________|__________________________________|
+
+ Segment Identifier:
+
+ A 32 bit binary integer identifying a provisioned entity such as a
+ recording, set, sequence, etc.
+
+ Text To Speech:
+
+ Specifies a text string to be converted to speech.
+
+ Display Text:
+
+ Specifies a text string to be displayed on a device.
+
+ Silence:
+
+ Specifies a length of silence to be played in units of 100
+ milliseconds.
+
+
+
+
+
+
+Cromwell Informational [Page 17]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Tone:
+
+ Specifies a tone to be played by algorithmic generation. Exact
+ specification of this parameter is tbd. Most tones will likely be
+ recorded, not generated.
+
+ Variable:
+
+ Specifies a voice variable by type, subtype, and value. Variables
+ are more completely defined in a subsequent section of the
+ document.
+
+8. Variables
+
+ The syntax supports two kinds of variables. Embedded embedded
+ variables are variables that have been provisioned as part of a
+ segment. Standalone variables are completely specified in the
+ protocol message.
+
+ Typically embedded variables are provisioned along with recorded
+ speech, e.g. "A representative will be with you in approximately 5
+ minutes. If you would prefer to leave a voice message, press 1 now".
+ where the variable is the number of minutes. This kind of variable is
+ often referred to as an embedded variable.
+
+ Variables are specified by the following parameters: type, subtype,
+ and value. Variable types include Date, Money, Number, Time, etc.
+ Subtype is a refinement of type. For example the variable type Money
+ might have an associated range of subtypes such as Dollar, Rupee,
+ Dinar, etc. Not all variables require a subtype, and for these
+ variables the subtype parameter should be set to null.
+
+ For embedded variables, the type and subtype must be provisioned.
+ The value may be provisioned. If it is not provisioned it must be
+ specified as part of the variable reference. In a list of segments,
+ an embedded variable value specification applies only to the segment
+ that directly precedes it. If a segment has multiple embedded
+ variables, the values must be given in the order in which the
+ variables are encountered when the segment is played.
+
+ Some examples follow below:
+
+ A standalone variable:
+
+ S: pa(an=vb(mny,usd,1153))
+
+
+
+
+
+
+Cromwell Informational [Page 18]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ An embedded variable:
+
+ S: pa(an=37<1153>)
+
+ Not all variables, such as the date variable shown in the next
+ example, require a subtype. In that case, the subtype is encoded
+ with the value "null":
+
+ S: pa(an=vb(dat,null,101598))
+
+ In some cases it may be desirable to play an announcement that
+ contains an embedded variable without playing the variable itself.
+ To do this a single "null" is provided for the value:
+
+ S: pa(an=37<null>)
+
+________________________________________________________________________
+| Variables Qualifiers |
+|_______________________________________________________________________|
+| Symbol | Definition | Type | Subtype | Subtype Of |
+|_________|__________________________|________|___________|_____________|
+| dat | date | x | | |
+| dig | digits | x | | |
+| gen | generic | | x | dig |
+| ndn | North American DN | | x | dig |
+| dur | duration | x | | |
+| mth | month | x | | |
+| mny | money | x | | |
+| num | number | x | | |
+| crd | cardinal | | x | nm |
+| ord | ordinal | | x | nm |
+| sil | silence | x | | |
+| str | string | x | | |
+| txt | text | x | | |
+| dsp | display text | | x | txt |
+| spk | text to speech | | x | txt |
+| tme | time | x | | |
+| t12 | twelve hour format | | x | tme |
+| t24 | twenty four hour format | | x | tme |
+| ton | tone | x | | |
+| wkd | weekday | x | | |
+|_________|__________________________|________|___________|_____________|
+
+ Date:
+
+ Speaks a date specified as YYYYMMDD (per ISO 8601, International
+ Date and Time Notation [7]). For example "19981015" is spoken as
+ "October fifteenth nineteen ninety eight".
+
+
+
+Cromwell Informational [Page 19]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Digits:
+
+ Speaks a string of digits one at a time. If the subtype is North
+ American DN, the format of which is NPA-NXX-XXXX, the digits are
+ spoken with appropriate pauses between the NPA and NXX and between
+ the NXX and XXXX. If the subtype is generic, the digits are
+ spoken no pauses.
+
+ Duration:
+
+ Duration is specified in seconds and is spoken in one or more
+ units of time as appropriate, e.g. "3661" is spoken as "One hour,
+ one minute, and one second".
+
+ Money:
+
+ Money is specified in the smallest units of a given currency and
+ is spoken in one or more units of currency as appropriate, e.g.
+ "110" in U.S. Dollars would be spoken "one dollar and ten cents".
+ The three letter codes defined in ISO 4217, Currency And Funds
+ Code List [5] are used to specify the currency subtype. A small
+ excerpt from ISO 4217 follows:
+
+ __________________________________________________________
+ |Alpha-code | Numeric-code | Currency | Entity |
+ |___________|______________|__________|___________________|
+ |GQE | 226 | Ekwele | Equatorial Guinea |
+ |GRD | 300 | Drachma | Greece |
+ |GTQ | 320 | Quetzal | Guatemala |
+ |___________|______________|__________|___________________|
+
+ Money can be specified in negative or positive units of currency.
+ In the above example "-110" would be spoken as "minus one dollar
+ and ten cents".
+
+ Month:
+
+ Speaks the specified month, e.g. "10" is spoken as "October".
+ Specification is in MM format with "01" denoting January, "02"
+ denoting February, etc.
+
+ Number:
+
+ Speaks a number in cardinal form or in ordinal form. For example,
+ "100" is spoken as "one hundred" in cardinal form and "one
+ hundredth" in ordinal form. Cardinal numbers can be specified as
+ negative or positive.
+
+
+
+
+Cromwell Informational [Page 20]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Silence:
+
+ Plays a specified period of silence. Specification is in 100
+ millisecond units.
+
+ String:
+
+ Speaks each character of a string, e.g. "a34bc" is spoken "A,
+ three, four, b, c". Valid characters are a-z, A-Z, 0-9, #, and *.
+
+ Text:
+
+ Produces the specified text as speech or displays it on a device.
+
+ Time:
+
+ Speaks a time in either twelve hour format or twenty four hour
+ format depending on the specified subtype. For example "1700" is
+ spoken as "Five pm" in twelve hour format or as "Seventeen hundred
+ hours" in twenty four hour format. Specification is in HHMM
+ format per ISO 8601, International Data and Time Notation [7].
+
+ Tone:
+
+ Plays an algorithmically generated tone, specification of which is
+ tbd. Probably most applications will use prerecorded tones.
+
+ Weekday:
+
+ Speaks the day of the week, e.g. "Monday". Weekdays are specified
+ as single digits, with "1" denoting Sunday, "2" denoting Monday,
+ etc.
+
+9. Selectors
+
+ Selector types, except for the pre-defined "Lang" (language)
+ selector, are definable by the user and may be applied to an
+ individual segment within an operation or to all the segments in an
+ operation. For each selector type, the user must also define a range
+ of values that the selector can assume.
+
+ For example, if the user defines a selector of type "phase-of-the-
+ moon", he might also define the legal values for that selector to be
+ "new", "half", "full", "harvest", and "blue". For the selector to
+ actually work at runtime, audio associated with each of the selector
+ values must be provisioned.
+
+
+
+
+
+Cromwell Informational [Page 21]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Although not required, it is suggested that the three letter codes
+ defined in ISO standard 639-2, Code For The Representation Of Names
+ Of Languages [4] be used as values for user defined language
+ selectors. A small excerpt from ISO 639-2 follows:
+
+ _________________
+ |Code | Language |
+ |_____|__________|
+ |cze | Czech |
+ |cym | Welsh |
+ |dan | Danish |
+ |_____|__________|
+
+ Selectors can apply to entire operations or to a segment within an
+ operation. If an operation contains multiple segments, each segment
+ may have its own set of selectors. If selectors for an individual
+ segment and selectors for the entire operation are present, the
+ selector for the individual segment takes precedence for that
+ segment. The selectors for the operation apply to all segments
+ within that operation that do not have individual segment selectors.
+ If a selector set is not specified, provisioned defaults are used.
+
+ Selectors are applied to variables only after the variable has been
+ resolved. For instance if a date variable resolved to "October 15th,
+ 1998" the voice with which the variable is spoken could resolve to
+ either male or female if a gender selector had been defined.
+
+10. Aliases
+
+ Aliasing of audio segments is supported. The alias to segment id
+ mapping is provisioned and at runtime the alias is resolved to its
+ associated segment id. The syntax for an alias is inclusion of the
+ alias between two forward slashes, e.g.:
+
+ S: pa(an=/not-in-service/)
+
+11. Examples
+
+ This section presents a number of examples of how the syntax is used.
+ Note that arguments to an event are separated by a one or more
+ whitespace characters, which can be either an ASCII space character
+ or an ASCII tabulation character.
+
+ Play an announcement that consists of a single segment:
+
+ S: pa(an=39)
+
+
+
+
+
+Cromwell Informational [Page 22]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ Play an announcement that consists of multiple segments:
+
+ S: pa(an=39,40,47)
+
+ Play an announcement that consists of a recording followed by silence
+ followed by text to speech followed by a standalone voice variable:
+
+ S: pa(an=39 si(30) ts(hello) vb(my,usd,3999))
+
+ Play an announcement with an embedded variable. If the first three
+ segments of the previous announcement were provisioned as segment 40,
+ the following would be exactly equivalent to the play in the
+ preceding example:
+
+ S: pa(an=40<3999>)
+
+ Play an announcement with two embedded variables:
+
+ S: pa(an=113<3999,10151998>)
+
+ Play a prompt and collect a single digit. If need be, play a
+ reprompt, a no digits prompt, and a success or failure announcement.
+ Give the user three attempts to enter a digit:
+
+ S: pc(ip=21 rp=109 nd=102 fa=81 sa=72 na=3)
+
+ Play a prompt and collect a single digit. If the user does not enter
+ a digit replay the initial prompt. Give the user three attempts to
+ enter a digit:
+
+ S: pc(ip=21 na=3)
+
+ Play a prompt and record voice. If the user does not speak play a no
+ speech prompt. Give the user two attempts to record:
+
+ S: pr(ip=22 ns=42 na=2)
+
+ Play an announcement at ninety percent of its original speed and five
+ decibels softer than its original volume. Play the announcement
+ three times with two seconds of silence between plays.
+
+ S: pa(an=27 sp=90 vl=-5 it=3 iv=20)
+
+ Give the user two attempts to enter a three digit pattern. Clear the
+ digit buffer before playing the prompt. The user can signal end of
+ input using the # key, which is not returned to the call agent with
+ the collected digits.
+
+
+
+
+Cromwell Informational [Page 23]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ S: pc(ip=43 cb=true mn=3 mx=3 na=2)
+
+ Give the user three attempts to enter a three digit pattern. If the
+ user enters one digits or two digits on the first or second attempts
+ a reprompt is played. If the user enters no digits on the first or
+ second attempts a no digits reprompt is played. If all three
+ attempts fail, a failure announcement is played. If one of the
+ attempts is successful, a success announcement is played and the
+ collected digits are returned to the call agent. The user can signal
+ end of input using the # key. If the # key terminates a successful
+ input attempt, the collected digits, but not the # key, are returned
+ to the call agent.
+
+ S: pc(ip=87 rp=5 nd=409 fa=9 sa=18 mx=3 na=3)
+
+ Give the user a single attempt to enter a a 1 to 4 digit pattern,
+ allow 8 seconds for the user to enter the first digit, and allow 6
+ seconds for the user to enter each subsequent digit. If the
+ subsequent digit timer expires after the user has less than four
+ digits, the digits collected are returned to the call agent. The
+ user can signal end of input using the # key which is not returned to
+ the call agent with the collected digits.
+
+ S: pc(ip=4 fdt=80 idt=60 mx=4)
+
+ Give the user three chances to enter an 11 digit number that begins
+ with 0 or 1. If the user makes a mistake while entering digits, he
+ can press the * key to discard any digits already collected, replay
+ the prompt, and resume collection.
+
+ S: pc(ip=33 mn=11 mx=11 sik=01 rsk=* na=3)
+
+ Give the user three chances to enter an 11 digit number that begins
+ with 0 or 1. If the user makes a mistake while entering digits, he
+ can press the key sequence *11 to discard any digits already
+ collected, replay the prompt, and resume collection. If the user
+ enters the key sequence *12 the play collect is terminated along with
+ any queued events, and the terminating key sequence is returned to
+ the call agent for processing.
+
+ S: pc(ip=33 mn=11 mx=11 sik=01 rsk=*11 rtk=*12 na=3)
+
+ Give the user two chances to make a recording. After playing the
+ prompt, wait 5 seconds for the user to speak, otherwise replay the
+ initial prompt and try again. If the user does speak, wait for seven
+ seconds after speech stops to make sure the user is finished. If the
+ recording is successful, return a reference to the recording to the
+ call agent.
+
+
+
+Cromwell Informational [Page 24]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+ S: pr(ip=6 prt=50 pst=70 na=2)
+
+ Play an announcement in the default language:
+
+ S: pa(an=5)
+
+ Play the same announcement the English. In the first example, the
+ selector applies to the an segment; in the second it applies to the
+ pa operation. For these particular examples, the net effect is the
+ same.
+
+ S: pa(an=5[Lang=eng]) or S: pa(an=5)[Lang=eng]
+
+ Play an announcement in Danish using a female voice with a Cajun
+ accent.
+
+ S: pa(an=6)[Lang=dan,gender=female,accent=cajun]
+
+ Play the first part of an announcement in English, the second part in
+ the default language, and the third part in French.
+
+ S: pa(an=5[Lang=eng],6,7[Language=fra])
+
+ Play an announcement with an embedded variable in English:
+
+ S: pa(an=5<101599>)[Lang=eng]
+
+12. Formal Syntax Description
+
+AudPkgEvent = PlayAnnouncement / PlayCollect / PlayRecord /
+ OperationComplete / OperationFailed / EndSignal
+
+PlayAnnouncement = [ AdvAudioPkgToken SLASH ] PlayAnnToken
+ LPAREN PlayAnnParmList RPAREN [ OpSelectorList ]
+
+PlayCollect = [ AdvAudioPkgToken SLASH ] PlayColToken
+ LPAREN [ PlayColParmList ] RPAREN [ OpSelectorList ]
+
+PlayRecord = [ AdvAudioPkgToken SLASH ] PlayRecToken
+ LPAREN [ PlayRecParmList ] RPAREN [ OpSelectorList ]
+
+OperationComplete = [ AdvAudioPkgToken SLASH ] OpCompleteToken
+ LPAREN OpCompleteParmList RPAREN
+
+OperationFailed = [ AdvAudioPkgToken SLASH ] OpFailedToken
+ LPAREN ReturnCodeParm RPAREN
+
+
+
+
+
+Cromwell Informational [Page 25]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+EndSignal = [ AdvAudioPkgToken SLASH ] EndSignalToken
+ LPAREN SignalParm RPAREN
+
+OpSelectorList = LSQUARE OpSelector *( COMMA OpSelector ) RSQUARE
+
+OpSelector = NAME EQUALS NAME
+
+PlayAnnParmList = PlayAnnParm *( WSP PlayAnnParm )
+
+PlayColParmList = PlayColParm *( WSP PlayColParm )
+
+PlayRecParmList = PlayRecParm *( WSP PlayRecParm )
+
+OpCompleteParmList = OpCompleteParm *( WSP OpCompleteParm )
+
+PlayAnnParm = ( AnnouncementParm / IterationsParm / IntervalParm /
+ DurationParm / SpeedParm / VolumeParm )
+
+PlayColParm = ( InitPromptParm / RepromptParm / NoDigitsParm /
+ FailAnnParm / SuccessAnnParm / NoInterruptParm /
+ SpeedParm / VolumeParm / ClearBufferParm /
+ MaxDigitsParm / MinDigitsParm / DigitPatternParm /
+ FirstDigitParm / InterDigitParm / ExtraDigitParm /
+ RestartKeyParm / ReinputKeyParm / ReturnKeyParm /
+ PosKeyParm / StopKeyParm / StartInputKeyParm /
+ EndInputKeyParm / IncludeEndInputKey /
+ NumAttemptsParm )
+
+PlayRecParm = ( InitPromptParm / RepromptParm / NoSpeechParm /
+ FailAnnParm / SuccessAnnParm / NoInterruptParm /
+ SpeedParm / VolumeParm / ClearBufferParm /
+ PreSpeechParm / PostSpeechParm / RecordLenParm /
+ RestartKeyParm / ReinputKeyParm / ReturnKeyParm /
+ PosKeyParm / StopKeyParm / EndInputKeyParm /
+ RecPersistParm / OverrideAudioParm /
+ RestoreAudioParm / DeletePersistParm /
+ NumAttemptsParm )
+
+OpCompleteParm = ( VoiceInterruptParm / IntKeySeqParm /
+ NumAttemptsParm / AmtPlayedParm / DigitsColParm /
+ RecordingIdParm / ReturnCodeParm )
+
+AnnouncementParm = AnParmToken EQUALS Segmentlist
+
+InitPromptParm = IpParmToken EQUALS Segmentlist
+
+RepromptParm = RpParmToken EQUALS Segmentlist
+
+
+
+
+Cromwell Informational [Page 26]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+NoDigitsParm = NdParmToken EQUALS Segmentlist
+
+NoSpeechParm = NsParmToken EQUALS Segmentlist
+
+FailAnnParm = FaParmToken EQUALS Segmentlist
+
+SuccessAnnParm = SaParmToken EQUALS Segmentlist
+
+DurationParm = DuParmToken EQUALS NUMBER
+
+IterationsParm = ItParmToken EQUALS ( NUMBER / "-1" )
+
+IntervalParm = IvParmToken EQUALS NUMBER
+
+SpeedParm = SpParmToken EQUALS SIGNEDINT
+
+VolumeParm = VlParmToken EQUALS SIGNEDINT
+
+NoInterruptParm = NiParmToken EQUALS BOOLSTR
+
+ClearBufferParm = CbParmToken EQUALS BOOLSTR
+
+MaxDigitsParm = MxParmToken EQUALS NUMBER
+
+MinDigitsParm = MnParmToken EQUALS NUMBER
+
+DigitPatternParm = DpParmToken EQUALS DIGITPATTERN
+
+FirstDigitParm = FdtParmToken EQUALS NUMBER
+
+InterDigitParm = IdtParmToken EQUALS NUMBER
+
+ExtraDigitParm = EdtParmToken EQUALS NUMBER
+
+PreSpeechParm = PrtParmToken EQUALS NUMBER
+
+PostSpeechParm = PstParmToken EQUALS NUMBER
+
+RecordLenParm = RltParmToken EQUALS NUMBER
+
+RestartKeyParm = RskParmToken EQUALS CommandKeySequence
+
+ReinputKeyParm = RikParmToken EQUALS CommandKeySequence
+
+ReturnKeyParm = RtkParmToken EQUALS CommandKeySequence
+
+PosKeyParm = PskParmToken EQUALS KeyPadKey COMMA PosKeyAction
+
+
+
+
+Cromwell Informational [Page 27]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+PosKeyAction = FirstSegmentToken / LastSegmentToken /
+ PreviousSegmentToken / NextSegmentToken /
+ CurrentSegmentToken
+
+StopKeyParm = StkParmToken EQUALS KeyPadKey
+
+StartInputKeyParm = SikParmToken EQUALS KeySet
+
+EndInputKeyParm = EikParmToken EQUALS KeyPadKey
+
+IncludeEndinputKey = IekParmToken EQUALS BOOLSTR
+
+RecPersistParm = RpaParmToken EQUALS BOOLSTR
+
+OverrideAudioParm = OaParmToken EQUALS SEGID
+
+RestoreAudioParm = RaParmToken EQUALS SEGID
+
+DeletePersistParm = DpaParmToken EQUALS SEGID
+
+NumAttemptsParm = NaParmToken EQUALS NUMBER
+
+VoiceInterruptParm = ViParmToken EQUALS BOOLSTR
+
+IntKeySeqParm = IkParmToken EQUALS CommandKeySequence
+
+AmtPlayedParm = ApParmToken EQUALS NUMBER
+
+DigitsColParm = DcParmToken EQUALS KeySequence
+
+RecordingIdParm = RiParmToken EQUALS NUMBER
+
+ReturnCodeParm = RcParmToken EQUALS 3*3(DIGIT)
+
+KeyPadKey = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" /
+ "*" / "#"
+
+CommandKeySequence = 1*3(KeyPadKey)
+
+KeySequence = 1*64(KeyPadKey)
+
+KeySet = 1*11(KeyPadKey)
+
+SignalParm = SgParmToken EQUALS ( PlayAnnToken / PlayColToken /
+ PlayRecToken ) RPAREN
+
+Segmentlist = SegmentDescriptor *( COMMA SegmentDescriptor )
+
+
+
+
+Cromwell Informational [Page 28]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+SegmentDescriptor = ( ( SegmentId [ EmbedVarList ]
+ [ SegSelectorList ] ) /
+ ( TextToSpeechSeg [ SegSelectorList ] ) /
+ ( DisplayTextSeg [ SegSelectorList ] ) /
+ ( VariableSeg [ SegSelectorList ] ) /
+ SilenceSeg )
+
+SegmentId = ( Segid / Alias )
+
+TextToSpeechSeg = TextToSpeechSegToken LPAREN NAME RPAREN
+
+DisplayTextSeg = DisplayTextSegToken LPAREN NAME RPAREN
+
+SilenceSeg = SilenceSegToken LPAREN NAME RPAREN
+
+VariableSeg = VariableSegToken LPAREN FullSpecVar RPAREN
+
+Segid = NUMBER
+
+Alias = SLASH NAME SLASH
+
+EmbedVarList = LANGLE NAME *( COMMA NAME ) RANGLE
+
+SegSelectorList = LSQUARE SegSelector *( COMMA SegSelector ) RSQUARE
+
+SegSelector = NAME EQUALS NAME
+
+FullSpecVar = ( DateVariable / DigitsVariable / DurationVariable /
+ MonthVariable / MoneyVariable / NumberVariable /
+ SilenceVariable / StringVariable / TextVariable /
+ TimeVariable / WeekdayVariable )
+
+DateVariable = DateVarToken COMMA NullStrToken COMMA Date
+
+Date = 8*8(DIGIT)
+
+DigitsVariable = DigitsVarToken COMMA (NorthAmericanDnToken /
+ GenericDigitsToken) COMMA NUMBER
+
+DurationVariable = DurationVarToken COMMA NullStrToken COMMA NUMBER
+
+MoneyVariable = MoneyVarToken COMMA 3*3(ALPHA) COMMA OPTSIGNEDINT
+
+MonthVariable = MonthVarToken COMMA NullStrToken COMMA Month
+
+Month = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" /
+ "10" / "11" / "12"
+
+
+
+
+Cromwell Informational [Page 29]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+NumberVariable = (NumberVarToken COMMA CardinalNumberToken COMMA
+ OPTSIGNEDINT) / (NumberVarToken COMMA
+ OrdinalNumberToken COMMA NUMBER)
+
+SilenceVariable = SilenceVarToken COMMA NullStrToken COMMA NUMBER
+
+StringVariable = StringVarToken COMMA NullStrToken COMMA *(KeyPadKey)
+ OrdinalNumberToken) COMMA NUMBER
+
+SilenceVariable = SilenceVarToken COMMA NullStrToken COMMA NUMBER
+
+StringVariable = StringVarToken COMMA NullStrToken COMMA
+ *(KeyPadKey)
+
+TextVariable = TextVarToken COMMA (DisplayTextToken /
+ TextToSpeechToken) COMMA NAME
+
+TimeVariable = TimeVarToken COMMA (TwelveHourFormatToken /
+ TwentyFourHourFormatToken) COMMA 4*4(DIGIT)
+
+WeekdayVariable = WeekdayVarToken COMMA NullStrToken COMMA NAME
+
+AdvAudioPkgToken = "A"
+PlayAnnToken = "pa"
+PlayColToken = "pc"
+PlayRecToken = "pr"
+OpCompleteToken = "oc"
+OpFailedToken = "of"
+EndSignalToken = "es"
+TextToSpeechSegToken = "ts"
+DisplayTextSegToken = "dt"
+SilenceSegToken = "si"
+VariableSegToken = "vb"
+AnParmToken = "an"
+IpParmToken = "ip"
+RpParmToken = "rp"
+NdParmToken = "nd"
+NsParmToken = "ns"
+FaParmToken = "fa"
+SaParmToken = "sa"
+NiParmToken = "ni"
+ItParmToken = "it"
+IvParmToken = "iv"
+DuParmToken = "du"
+SpParmToken = "sp"
+VlParmToken = "vl"
+CbParmToken = "cb"
+MxParmToken = "mx"
+
+
+
+Cromwell Informational [Page 30]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+MnParmToken = "mn"
+DpParmToken = "dp"
+FdtParmToken = "fdt"
+IdtParmToken = "idt"
+EdtParmToken = "edt"
+PrtParmToken = "prt"
+PstParmToken = "pst"
+RltParmToken = "rlt"
+RskParmToken = "rsk"
+RikParmToken = "rik"
+RtkParmToken = "rtk"
+PskParmToken = "psk"
+StkParmToken = "stk"
+SikParmToken = "sik"
+EikParmToken = "eik"
+IekParmToken = "iek"
+RpaParmToken = "rpa"
+DpaParmToken = "dpa"
+OaParmToken = "oa"
+RaParmToken = "ra"
+NaParmToken = "na"
+RidParmToken = "rid"
+ViParmToken = "vi"
+IkParmToken = "ik"
+ApParmToken = "ap"
+DcParmToken = "dc"
+RiParmToken = "ri"
+RcParmToken = "rc"
+SgParmToken = "sg"
+DateVarToken = "dat"
+DigitsVarToken = "dig"
+DuratioNVarToken = "dur"
+MoneyVarToken = "mny"
+MonthVarToken = "mth"
+NumberVarToken = "num"
+SilenceVarToken = "sil"
+StringVarToken = "str"
+TextVarToken = "txt"
+TimeVarToken = "tme"
+WeekdayVarToken = "wkd"
+GenericDigitsToken = "gen"
+NorthAmericanDnSToken = "ndn"
+CardinalNumberToken = "crd"
+OrdinalNumberToken = "ord"
+DisplayTextToken = "dsp"
+TextToSpeechToken = "spk"
+TwelveHourFormatToken = "t12"
+TwentyFourHourFormatToken = "t24"
+
+
+
+Cromwell Informational [Page 31]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+NullStrToken = "null"
+FirstSegmentToken = "fst"
+LastSegmentToken = "lst"
+PreviousSegmentToken = "prv"
+NextSegmentToken = "nxt"
+CurrentSegmentToken = "cur"
+BOOLSTR = "true" / "false"
+NAMECHAR = ALPHA / DIGIT / "_" / "-"
+NAME = 1*64(NAMECHAR)
+NUMBER = DIGIT *31(DIGIT)
+SIGNEDINT = ("+" / "-") DIGIT *31(DIGIT)
+OPTSIGNEDINT = ["+" / "-"] DIGIT *31(DIGIT)
+EQUALS = "="
+COMMA = ","
+LSQUARE = "["
+RSQUARE = "]"
+LANGLE = "<"
+RANGLE = ">"
+LPAREN = "("
+RPAREN = ")"
+SLASH = "/"
+WSP = SP / HTAB
+
+13. References
+
+ [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+ [2] Arango, M., Dugan, A., Elliott, I., Huitema, C. and S. Pickett,
+ "Media Gateway Control Protocol (MGCP) Version 0.1", RFC 2705,
+ October 1999.
+
+ [3] Cromwell, D. and M. Durling, "Requirements For Control Of A Media
+ Services Function", Version 0.0, Work in Progres..
+
+ [4] ISO 639-2, "Code For The Representation Of Names Of Languages",
+ 1998.
+
+ [5] ISO 4217, "Currency And Funds Code List", 1981.
+
+ [6] Cuervo, F., Hill, B., Greene, N., Huitema, C., Rayhan, A., Rosen,
+ B. and J. Segers, "Megaco Protocol", RFC 2885, August 2000.
+
+ [7] ISO 8601, "International Date and Time Notation", 1998.
+
+
+
+
+
+
+
+Cromwell Informational [Page 32]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+14. Author's Address
+
+ David Cromwell
+ Nortel Networks
+ Box 13478
+ 35 Davis Drive
+ Research Triangle Park, NC 27709
+
+ Phone: 919-991-8870
+ EMail: cromwell@nortelnetworks.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Cromwell Informational [Page 33]
+
+RFC 2897 MGCP Advanced Audio Package August 2000
+
+
+15. Full Copyright Statement
+
+ Copyright (C) The Internet Society (2000). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS 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.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Cromwell Informational [Page 34]
+