Icm - Vru - Interface Ged 125
Icm - Vru - Interface Ged 125
Icm - Vru - Interface Ged 125
Interface Specification
Revision 3.0c
20-Sep-2002
Copyright © 1995-2002 CISCO SYSTEMs, Inc.
The information in this document is subject to change without notice. Cisco Systems assumes no responsibility
for any errors or omissions in this document. This document contains confidential and proprietary information.
No part of this document may be reproduced, recorded, translated, or transmitted by any means, electronic or
otherwise, without the express written permission of Cisco Systems.
Table of Contents
1. REVISION INFORMATION................................................................................................................................. 1
CHANGES IN REVISION 1.1................................................................................................................................................1
CHANGES IN REVISION 1.2................................................................................................................................................1
CHANGES IN REVISION 1.3................................................................................................................................................1
CHANGES IN REVISION 2.0................................................................................................................................................2
CHANGES IN REVISION 2.1................................................................................................................................................2
CHANGES IN REVISION 2.2................................................................................................................................................3
CHANGES IN REVISION 2.3................................................................................................................................................3
CHANGES IN REVISION 2.4................................................................................................................................................3
CHANGES IN REVISION 2.5................................................................................................................................................3
CHANGES IN REVISION 2.6................................................................................................................................................4
CHANGES IN REVISION 2.7................................................................................................................................................4
CHANGES IN REVISION 2.8................................................................................................................................................4
CHANGES IN REVISION 2.8A .............................................................................................................................................5
CHANGES IN REVISION 2.8B .............................................................................................................................................5
CHANGES IN REVISION 2.8C .............................................................................................................................................5
CHANGES IN REVISION 2.9................................................................................................................................................5
CHANGES IN REVISION 2.9A .............................................................................................................................................5
CHANGES IN REVISION 3.0................................................................................................................................................6
CHANGES IN REVISION 3.0B .............................................................................................................................................6
CHANGES IN REVISION 3.0C .............................................................................................................................................6
2. OVERVIEW ............................................................................................................................................................. 7
Page iii
ICM / VRU Interface Specification Rev 3.0c
7. COMMUNICATIONS INTERFACES................................................................................................................20
7.1 PHYSICAL CONNECTION .................................................................................................................................. 20
7.2 TRANSPORT SERVICES...................................................................................................................................... 21
7.3 CONNECTION M ANAGEMENT AND DUPLEXED VRU PG’S........................................................................ 21
7.4 SESSION INITIALIZATION ................................................................................................................................ 21
7.5 SESSION M AINTENANCE .................................................................................................................................. 23
7.6 SESSION TERMINATION ................................................................................................................................... 25
Page iv
ICM / VRU Interface Specification Rev 3.0c
Page v
ICM / VRU Interface Specification Rev 3.0c
Page vi
ICM / VRU Interface Specification Rev 3.0c
Page vii
ICM / VRU Interface Specification Rev 3.0c
Table of Tables
Table 1. General Message Layout ........................................................................................................................................9
Table 2. Message Header (MHDR) Format........................................................................................................................9
Table 3. Message Set...........................................................................................................................................................11
Table 4. Fixed-length Data Types ......................................................................................................................................11
Table 5. Variable-length Data Types .................................................................................................................................12
Table 6. MEDIA_SPECIFIER for HTTP, File, or Streaming Media ................................................................................13
Table 7. MEDIA_SPECIFIER for Text -to-Speech.............................................................................................................13
Table 8. MEDIA_SPECIFIER for Data ...............................................................................................................................13
Table 9. Null MEDIA_SPECIFIER ......................................................................................................................................14
Table 10. Floating Field Message Element Format..........................................................................................................14
Table 11. Message Element Names and Types ................................................................................................................16
Table 12. REGISTER_VARIABLES Message Format.....................................................................................................17
Table 13. FAILURE_CONF Message Format ..................................................................................................................20
Table 14. FAILURE_EVENT Message Format ................................................................................................................20
Table 15. OPEN_REQ Message Format............................................................................................................................22
Table 16. OPEN_CONF Message Format.........................................................................................................................23
Table 17. HEARTBEAT_REQ Message Format..............................................................................................................24
Table 18. HEARTBEAT_CONF Message Format...........................................................................................................24
Table 19. CLOSE_REQ Message Format..........................................................................................................................26
Table 20. CLOSE_CONF Message Format.......................................................................................................................26
Table 21: Application Interface Initialization ....................................................................................................................27
Table 22. INIT_DATA_REQ Message Format................................................................................................................29
Table 23. INIT_DATA_CONF Message Format.............................................................................................................29
Table 24. INIT_TRKGRP_DATA_EVENT Message Format ........................................................................................30
Table 25. INIT_SERVICE_DATA_EVENT Message Format........................................................................................31
Table 26. INIT_VRU_DATA_EVENT Message Format................................................................................................32
Table 27. INIT_DATA_END_EVENT Message Format................................................................................................32
Table 28. Trunk Status Definitions....................................................................................................................................32
Table 29: Termination Call Detail Support .........................................................................................................................35
Table 30: Peripheral Real-time Support ..............................................................................................................................36
Table 31. DELIVERED_EVENT Message Format............................................................................................................37
Table 32. ORIGINATED_EVENT Message Format ........................................................................................................38
Table 33. CALL_CLEARED_EVENT Message Format..................................................................................................39
Table 34. Call Cleared Causes.............................................................................................................................................40
Page ix
ICM / VRU Interface Specification Rev 3.0c
Page x
ICM / VRU Interface Specification Rev 3.0c
Page xi
ICM / VRU Interface Specification Rev 3.0c
Table of Figures
Figure 1. Typical configuration with duplexed PG’s.......................................................................................................20
Figure 2. Session Initialization Message Flow.................................................................................................................22
Figure 3. Heartbeat Message Flow....................................................................................................................................24
Figure 4. Session Termination Message Flow.................................................................................................................25
Figure 5. Data Initialization Message Flow......................................................................................................................28
Figure 6: Termination Call Detail Record Example ............................................................................................................34
Figure 7. Call Routing Message Flow................................................................................................................................47
Figure 8. Call Routing Error Message Flow......................................................................................................................48
Figure 9. Service Control Initialization Sequence.............................................................................................................55
Figure 10: NEW_DIALOGUE Example Message Flow..................................................................................................102
Figure 11: State Diagram with Cancel Supported ...........................................................................................................109
Figure 12: State Diagram with Cancel Not Supported....................................................................................................110
Figure 13: Service Control Dialogue for Pre-Routed Call Example ...............................................................................113
Figure 14: Service Control Dialogue for Non-Pre-Routed Call Example ......................................................................114
Figure 15: Non-Pre-Routed Call with a Successful Cancel Request............................................................................115
Figure 16: Service Control Dialogue with a Failed Cancel Request.............................................................................116
Figure 17: Service Control Dialogue with a Release Request.......................................................................................117
Figure 18: Blind Transfer with CONNECT .......................................................................................................................117
Figure 19: Blind Transfer with CONNECT_TO_RESOURCE........................................................................................118
Figure 20: NIC Take-Back Example ...................................................................................................................................119
Figure 21. Reroute Service Control Dialogue Example...................................................................................................120
Figure 22. Dialogue Creation Failure Example .................................................................................................................120
Figure 23. Service Control Dialogue Creation Timeout Example ..................................................................................121
Figure 24. Request Failure without Recovery Example..................................................................................................121
Figure 25. Request Failure with Recovery Example........................................................................................................122
Figure 26: MicroApplication Requests with a Disconnect Event................................................................................123
Page xiii
ICM / VRU Interface Specification Rev 3.0c
1. Revision Information
Page 1
ICM / VRU Interface Specification Rev 3.0c
• The SERVICE _CONTROL message type has been added to the Message Set table (see Table 1).
• The Service Control message header type has been added to the Data Types table (see Table 2).
• The Connection Management (section 5.3) procedure has been to changed to require that a VRU post
multiple TCP/IP listen request with a backlog greater than 1. Furthermore, if a connection request arrives
while a previously established connection is in place, the previous connection will be closed and new
connection establishment will proceed.
• The Session Initialization (section 5.4) OPEN_REQ message has been modified to support both version 1
and version 2 of the VRU Interface Protocol.
• The Session Initialization (section 5.4) procedure has been modified accept session initialization requests
while there is an existing session. The existing session should be terminated and the new session
initialization request should be processed.
• A Boolean value has been added to the OPEN_REQ_CONF message (section 5.4) to allow the VRU to
indicate if support exists for the Service Control Interface (section 8.5).
• The CALL_CLEARED event message (section 6.1.2.3) has been modified to allow either the TrunkGroupID
or the TrunkNumber to be specified. Details are contained in the related implementation note.
• The Service Control application interface (section 8.5) has been added to allow ICM Scripts to control VRU
call handling operations.
• The Implementation Options section (section 8.5.7.13) has been expanded to include a discussion of the
Service Control Interface (section 9.4).
• The Status Codes and Constants Section (10) has been expanded to include the new Service Control error
codes.
Page 2
ICM / VRU Interface Specification Rev 3.0c
Page 3
ICM / VRU Interface Specification Rev 3.0c
Page 4
ICM / VRU Interface Specification Rev 3.0c
• Put back the old real-time reporting tables that showed what database fields the VRU PIM populated when
using Service Control Reporting.
• Revised and expanded the discussions of ECC variables and the floating field section of the message.
Page 5
ICM / VRU Interface Specification Rev 3.0c
• Added information about the re-use of Event Data Feed CallID’s in the ORIGINATED_EVENT and
DELIVERED_EVENT discussions, Sections 8.2.3.2 and 8.2.3.1, respectively.
Page 6
ICM / VRU Interface Specification Rev 3.0c
2. Overview
This document describes the hardware and software interface between the ICM and Voice Response Units.
The interface allows an ICM Peripheral Gateway to collect data from a VRU for use in call routing, real time
monitoring, and historical reporting. The interface also allows the VRU to make use of the ICM’s call routing
function to select the target for a call being transferred. The Service Control interface will allow an ICM script to
provide call-handling instructions to the VRU.
The interface is not specific to a particular VRU type or manufacturer. Instead, the interface is based on a
generic VRU model. To interface a particular VRU to the ICM, the VRU must be programmed to meet the
interface in this specification. Section 3 describes the generic VRU model.
The ICM / VRU interface is divided into two major sections. The communications interfaces define low level
conventions and protocols necessary to establish, maintain, and terminate data communications between the
ICM and the VRU. The communications interfaces are defined in section 7. The application interfaces define
the higher level messages which allow the VRU to exchange call processing information with the ICM. The
application interfaces are defined in section 8. The messaging conventions common to both interfaces are
described in section 4.
The interface need not be implemented in its entirety for a given VRU type. Section 7 identifies the required and
optional components of the interface, and describes how they can be combined.
Section 8 gives numeric values for constants used in the ICM / VRU interface.
Page 7
ICM / VRU Interface Specification Rev 3.0c
At the VRU, trunks are organized into trunk groups. A trunk group is a collection of trunks having the same
remote termination. Each trunk belongs to exactly one trunk group. Trunks belonging to the same trunk group
are for practical purposes interchangeable.
A VRU must define at least one trunk group for each distinct remote termination. For example, if a VRU has
some trunks which terminate in the network and some which terminate at an ACD, at least two trunk groups
must be defined -- one for the network trunks, and one for the ACD trunks. Similarly, if a VRU has some trunks
which terminate in one IXC network and some which terminate in another IXC network, at least two trunk
groups must be defined -- one for each IXC network.
The VRU may define mo re than one trunk group for a single remote termination, so long as each physical trunk
appears in exactly one trunk group, and the trunks in any one trunk group all have the same remote termination.
The VRU assigns a trunk group ID to each trunk group. The trunk group ID is a number between 0 and 65,535
that serves to identify the trunk group among those configured on the VRU. The VRU also assigns a trunk
number to each trunk. Trunk numbers must be unique within a trunk group, and may range from 0 to 32767.
However, in total there may not be more than 1024 trunks defined for a particular trunk group. The combination
of a trunk group ID and a trunk number is used to identify an individual trunk and its trunk group membership.
Trunk group ID’s and trunk numbers are configured in the ICM’s central database and should remain constant
across VRU restarts.
The ICM uses information about trunks and trunk groups to make call routing decisions. The ICM also
provides this information in real time monitor screens and historical reports. Services
A service is a particular type of processing that a caller requires. For example, in a software company’s call
center, a caller might have a question about installing software. This caller would be directed to the “Technical
Support” service. A different caller wishing to purchase software might be directed to the “Sales” service.
In a VRU, a service might be represented by a call processing script, or by a set of related call processing
scripts.
A VRU may provide one or more services to its callers. The VRU assigns a unique identifier to each service that
it provides. Each call that the VRU receives or initiates is attributed to a service.
The VRU assigns a Service ID to each service. The Service ID is a static identifier for the service. The ICM
uses the Service ID to distinguish one service on the VRU from another. The ID’s are configured in the ICM’s
central database and should remain constant across VRU restarts.
The ICM uses information about services to make call routing decisions. The ICM also provides this
information in real time monitor screens and historical reports.
Page 8
ICM / VRU Interface Specification Rev 3.0c
4. Messaging Conventions
Communication between the VRU and the Peripheral Gateway is accomplished by the exchange of messages.
The message set defined in this specification is loosely modeled after CSTA messaging conventions. An
attempt has been made to follow CSTA naming conventions and the request / confirmation and unsolicited
event paradigms. A simpler set of data types than those defined by CSTA are used, however.
In the CSTA model, one party acts as a server and the other as a client. In the ICM / VRU interface, the
Peripheral Gateway takes the client role, issuing requests to the VRU. The VRU takes the server role,
responding to requests from the Peripheral Gateway and originating unsolicited events.
Field Name Value
Message Header A standard header containing Message Length and Message Type. See section
4.1 below.
Fixed Fields Section Fixed-length required message data, if any. Each data item has an implied type
and implied length.
Floating Fields Section Optional or variable-length message elements, if any. Each message element
consists of a 1-byte type tag, a 1-byte length field, followed by up to 255 bytes of
payload. The payload itself may contain zero or more fixed-length data fields,
and, optionally, a single variable-length data item.
Page 9
ICM / VRU Interface Specification Rev 3.0c
Page 10
ICM / VRU Interface Specification Rev 3.0c
Page 11
ICM / VRU Interface Specification Rev 3.0c
Page 12
ICM / VRU Interface Specification Rev 3.0c
Page 13
ICM / VRU Interface Specification Rev 3.0c
PLAYBACK_TYPE_CURRENCY 8
PLAYBACK_TYPE_TEXT 9
Data Playback Formats:
(This field is only relevant if Data Playback Type is one of the time formats. It should contain
PLAYBACK_FORMAT_OTHER in all other cases.)
PLAYBACK_FORMAT_HHMM 1
PLAYBACK_FORMAT_HHMMSS 2
PLAYBACK_FORMAT_HHMMAP 3
PLAYBACK_FORMAT_OTHER 0
The STRING length is calculated by subtracting 9 from the payload length contained in the tagged message
element header.
Page 14
ICM / VRU Interface Specification Rev 3.0c
Each tagged message element carries an implied data type from the list of fixed-length or variable-length data
types. Table 11 lists the message elements that may appear in the Floating Field Section.
Message Element Name Tag Data Type Valid Lengths
Invalid 0
Text 1 STRING 1-255
(obsolete) 2-17
ANI 18 STRING 1-40
UUI 19 UNSPEC 1-131
DNIS 20 STRING 1-32
Digits Dialed 21 STRING 1-40
Call Variable 1 through Call 22-31 STRING 1-40
Variable 10
Dialed Number 32 STRING 1-32
CED 33 STRING 1-40
Label 34 STRING 1-48
Trunk Group ID 35 UINT 4
Trunk Number 36 UINT 4
Called Number 37 STRING 1-32
Script ID 38 STRING 1-40
Script Configuration 39 STRING 1-40
Correlation ID 40 STRING 1-40
Cause Code 41 UINT 4
ExpCallVarName 42 ECC_VAR_NAME 5-36
ExpCallVarValue 43 ECC_VAR_VALUE 5-214
ExpCallVarArray 44 ECC_VAR_ARRAY 6-215
NewTransactionTag 45 BOOL 4
TransferHintTag 46 BOOL 4
Media Specifier 47 MEDIA_SPECIFIER
1-219
Initial Prompt 48 MEDIA_SPECIFIER 1-219
Invalid Entry Prompt 49 MEDIA_SPECIFIER 1-219
Timeout Prompt 50 MEDIA_SPECIFIER 1-219
CustomerID 51 STRING(255) 0-255
Application media library 52 STRING(255) 0-255
System media library 53 STRING(255) 0-255
Page 15
ICM / VRU Interface Specification Rev 3.0c
Page 16
ICM / VRU Interface Specification Rev 3.0c
For example, suppose the VRU wishes to register interest in Call Variables 1 through 5, one 25-byte scalar ECC
variable named “userECC_Scalar”, and a 10-element 42-byte wide array ECC variable named “userECC_Array”.
It would send a RegisterVariables message containing the following fields:
Page 17
ICM / VRU Interface Specification Rev 3.0c
Length
Field Name Value
(bytes)
Fixed Part:
Message Header:
Message Length: 43 4
Message Type: 49 4 (REGISTER_VARIABLES)
CallVarsMask: 0x001F 4 (Variables 1 through 5)
Floating Part:
Msg Element Tag: 42 1 (ECC Variable)
Msg Element Length: 18 1
Msg Element Payload:
ECC Tag: 200 4
ECC Name: userECC_Scalar 14
This example shows how to register interest in a subset of the ten standard Call Variables, as well as in a scalar
and an array ECC variable. It illustrates several significant points:
• The CallVarsMask is a bit map, with the least significant bit referring to Call Variable 1.
• The Msg Element Length in each ECC Variable element indicates the number of bytes in the payload,
not the number of bytes in the entire message element.
• The ECC Tags are assigned by the VRU via this RegisterVariables message. The VRU may use any
numbering scheme it wishes, as long as each ECC variable has its own unique ECC Tag within the
scope of this VRU.
• Customer-defined ECC Names must begin with “user”. There is also a small number of ICM-predefined
ECC variables (whose names do not begin with “user”). The VRU may register interest in those
variables, but they are not usually relevant to VRU’s.
• The ECC Names must correspond to ECC variables which have already been configured in the ICM.
However, this RegisterVariables message represents the last time (in the current session) that the VRU
refers to these variables by name. All subsequent references use the ECC Tags instead.
• The RegisterVariables message contains no reference to the size of an ECC Array variable. That size
must be configured properly in the ICM, and the VRU must not reference array elements outside those
boundaries, but the size itself is not transmitted here.
Page 18
ICM / VRU Interface Specification Rev 3.0c
Messages from the VRU may contain new scalar or array element values for any VRU-registered ECC variable
names. Any attempt to use a scalar value on an array variable or an array value on a scalar variable will result in
the closing of the session.
Messages that contain a section for ECC variables must always include all registered ECC variables that have a
non-empty value. Omitting a registered ECC variable has the effect of setting its value to an empty string.
Page 19
ICM / VRU Interface Specification Rev 3.0c
The VRU may use the FAILURE_CONF message in response to any request message from the Peripheral
Gateway. The VRU sends the FAILURE_CONF message in lieu of the positive confirmation message specific to
the request. The format of the FAILURE_CONF message is defined in Table 13.
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 1. MHDR 8
InvokeID Set to the same value as the InvokeID from the UINT 4
corresponding request message.
Status A status code indicating the cause of the failure. The UINT 4
possible status codes are defined in Table 92.
The VRU may use the FAILURE_EVENT message to asynchronously indicate a failure or error condition to the
Peripheral Gateway. The format of the FAILURE_EVENT message is defined in Table 14.
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 2. MHDR 8
Status A status code indicating the nature of the failure. UINT 4
7. Communications Interfaces
10 Base-T
Ethernet Hub
PG A VRU PG B ACD
Page 20
ICM / VRU Interface Specification Rev 3.0c
Page 21
ICM / VRU Interface Specification Rev 3.0c
If E_INVALID_VERSION is returned by the VRU, the PG will try progressively lower version numbers until one
is successful. The VRU responds with an OPEN_CONF message to confirm the successful establishment of a
session. Figure 2 depicts the message flow.
PG VRU
OPEN_REQ
OPEN_CONF
Page 22
ICM / VRU Interface Specification Rev 3.0c
If for any reason the VRU determines that a new session should not be opened, it responds to the OPEN_REQ
message with a FAILURE_CONF message.
In duplex configurations, it is possible for one Peripheral Gateway to attempt to open a session while the other
Peripheral Gateway has a session established. When this occurs, the VRU should immediately terminate the
existing session by closing the TCP/IP socket and process the newly received open request.
The VRU PG will initially set the OPEN_REQ VersionNumber to a value of 6 for ICM releases 5.0 and beyond.
If the VRU rejects an OPEN_REQ message with E_INVALID_VERSION, the Peripheral Gateway will retry with 4,
3, 2 and 1 successively. In all other cases of session rejection, the Peripheral Gateway resets the TCP
connection and may retry after a delay period.
The Peripheral Gateway treats a lack of response to the OPEN_REQ message within 5 seconds as a failure to
open the session.
Page 23
ICM / VRU Interface Specification Rev 3.0c
The VRU may respond to a HEARTBEAT_REQ message with a FAILURE_CONF message with status code
E_VRU_OFFLINE. This indicates to the Peripheral Gateway that the VRU is off-line, and causes the Peripheral
Gateway to reset the TCP connection.
PG VRU
HEARTBEAT_REQ
Heartbeat
Interval
HEARTBEAT_CONF
HEARTBEAT_REQ
HEARTBEAT_CONF
Page 24
ICM / VRU Interface Specification Rev 3.0c
PG VRU
PG
Closing CLOSE_REQ
CLOSE_CONF
-- OR --
VRU
FAILURE_EVENT
(E_VRU_OFFLINE)
Closing
If a
Session is
CLOSE_REQ
Active
CLOSE_CONF
Page 25
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 7. MHDR 8
InvokeID An ID for this request message that will be returned in the UINT 4
corresponding confirm message.
Status A status code indicating the reason for closing the UINT 4
session.
Floating Part
Field Name Value Data Type Max. Size
Text (optional) A text message explaining why the session is being STRING 255
closed.
Page 26
ICM / VRU Interface Specification Rev 3.0c
The various application-level interfaces that transmit call variables to or from the VRU have been extended to
support the Expanded Call Context feature of ICM V4.1. See section 5 for a description of how to work with
Expanded Call Context variables.
Interfaces Enabled
in OPEN_CONF
Service Event
Control Data Request From PG Response from VRU
Interface Feed
No No None None
No Yes INIT_DATA_REQ INIT_DATA_CONF
INIT_TRKGRP_DATA_EVENT*
INIT_SERVICE_DATA_EVENT*
INIT_VRU_DATA_EVENT
INIT_DATA_END_EVENT
Yes Don't INIT_SERVICE_CTRL_REQ INIT_SERVICE_CTRL_CONF
care. INIT_SERVICE_CTRL_TRKGRP*
INIT_SERVICE_CTRL_SERVICE*
INIT_SERVICE_CTRL_VRU**
INIT_SERVICE_CTRL_DATA
INIT_SERVICE_CTRL_END
* Zero or more occurrences ** At most one occurrence
Page 27
ICM / VRU Interface Specification Rev 3.0c
This interface has been extended to support the Expanded Call Context feature of ICM V4.1. See section 5 for a
description of how to work with Expanded Call Context variables.
PG VRU
Events
Included
INIT_DATA_REQ in
Initial
State
Snapshot
INIT_DATA_CONF
INIT_TRKGRP_DATA_EVENT
Optional
Initialization
Messages { INIT_SERVICE_DATA_EVEN
T
INIT_VRU_DATA_EVEN
Events
not
included
in
Initial
State
INIT_DATA_END_EVEN
T
First
Unsolicited
Event
Page 28
ICM / VRU Interface Specification Rev 3.0c
Peripheral Gateway to maintain an accurate model of the VRU’s call processing state, the VRU must transmit all
events that occur after the initial snapshot has been taken, even those that occur before the initial snapshot has
been transmitted completely.
The VRU may respond to the INIT_DATA_REQ message with a FAILURE_CONF message, setting the status
code to one of the following values:
• E_VRU_OFFLINE, if the VRU is off-line. The Peripheral Gateway closes the session with the VRU when it
receives this response.
• E_REQUEST_REFUSED, if the VRU is not ready to initialize. The Peripheral Gateway retries the
initialization request after a delay period.
• E_EVENTS_NOT_SUPPORTED, if the VRU does not support the Event Data Feed interface.
Figure 5. Data Initialization Message Flow depicts the data initialization message flow. Table 22 through Table
27 describe the data initialization messages.
Page 29
ICM / VRU Interface Specification Rev 3.0c
Page 30
ICM / VRU Interface Specification Rev 3.0c
Page 31
ICM / VRU Interface Specification Rev 3.0c
Page 32
ICM / VRU Interface Specification Rev 3.0c
1
Note: Reporting of five-minute records is suppressed by default.
Page 33
ICM / VRU Interface Specification Rev 3.0c
NEW_TRANSACTION_EVENT message not only writes the first termination record, it also re-assigns to the
call to Service 3 which will appear in the second termination record when the call is cleared.
VRU
VRU PG
DELIVERED_EVENT
(Service 1)
SET_CALL_VARIABLES_EVENT
Duration/
TalkTime DIVERTED_EVENT
(Service 2)
Duration/
TalkTime
Page 34
ICM / VRU Interface Specification Rev 3.0c
Page 35
ICM / VRU Interface Specification Rev 3.0c
platform. The status variables may be tested in ICM Routing Scripts to make routing decisions. The VRU PG
keeps a snapshot of the current Peripheral Real-time record that is updated upon receipt of a VRU Status
message. Periodically, the VRU PG will forward a Peripheral Real-time update to the ICM Router thereby
causing an ICM database record to be written. The table shown below lists each on the Peripheral Real-time
fields and the source of the data.
Field Name Data Source
Status Provided by VRU in VRU_STATUS_EVENT message.
PeripheralData1 Provided by VRU in VRU_STATUS_EVENT message.
through
PeripheralData16
Page 36
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 15. MHDR 8
CallID An ID assigned to the call by the VRU. UINT 4
TrunkGroupID The ID of the trunk group on which the call arrived, UINT 4
in the range 0 to 65535.
TrunkNumber The number of the trunk on which the call arrived. UINT 4
ServiceID The ID of the service to which this call is attributed. UINT 4
Floating Part
Field Name Value Data Type Max. Size
ANI (optional) The calling line ID of the caller. STRING 40
UserToUserInfo The ISDN user-to-user information element. UNSPEC 131
(optional)
DNIS (optional except The DNIS provided with the call. STRING 32
for Translation Routed
If this call is being Translation Routed, the DNIS
calls)
must be set and this message must be followed by a
ROUTE_REQUEST_EVENT that specifies the same
CallID and the DialedNumber
“TRANSLATION_ROUTE”.
Page 37
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 16. MHDR 8
CallID An ID assigned to the call by the VRU. UINT 4
TrunkGroupID The ID of the trunk group on which the call was UINT 4
placed, in the range 0 to 65535.
TrunkNumber The number of the trunk on which the call was UINT 4
placed.
ServiceID The ID of the service to which this call is attributed. UINT 4
Floating Part
Field Name Value Data Type Max. Size
UserToUserInfo The ISDN user-to-user information element supplied UNSPEC 131
(optional) with the outbound call.
DigitsDialed (optional) The digits dialed to place the outbound call. STRING 40
Page 38
ICM / VRU Interface Specification Rev 3.0c
Page 39
ICM / VRU Interface Specification Rev 3.0c
Page 40
ICM / VRU Interface Specification Rev 3.0c
Page 41
ICM / VRU Interface Specification Rev 3.0c
Page 42
ICM / VRU Interface Specification Rev 3.0c
Page 43
ICM / VRU Interface Specification Rev 3.0c
is made available to the ICM in real time and is available for making routing decisions and for real time
monitoring.
The VRU should send this message to the Peripheral Gateway each time the VRU’s clock crosses a minute
boundary, and any other time a significant status change occurs.
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 22. MHDR 8
CurrentTime The current UTC time according to the VRU clock. TIME 4
TimeZoneDelta The current local time zone delta, expressed in INT 4
seconds. This value is added to a UTC time to form
a time in the local time zone.
OperationalStatus The operational status of the VRU. UINT 4
0: Normal Operation
1-31: Loss of redundant component or other
transparent failure; still fully functional for call
processing
32-63: Degraded call processing
64-127: Conditions prevent call processing
StatusVariable1 VRU-specific status information INT 4
... ... ... ...
StatusVariable16 VRU-specific status information INT 4
Page 44
ICM / VRU Interface Specification Rev 3.0c
Page 45
ICM / VRU Interface Specification Rev 3.0c
Page 46
ICM / VRU Interface Specification Rev 3.0c
• E_ROUTING_NOT_SUPPORTED, if the VRU did not indicate that the Call Routing interface was to be
used.
• E_ROUTING_NOT_AVAILABLE, if the Peripheral Gateway is unable to honor routing requests. If this
occurs very soon after session initialization, then it only means that the ICM Router is not yet ready to handle
route requests from this VRU.
• E_TIMEOUT, if the Peripheral Gateway times out awaiting the receipt of a ROUTE_END_EVENT message.
• E_INVALID_DIALED_NUMBER, if the dialed number provided in the ROUTE_REQUEST_EVENT is not
known to the ICM.
• E_UNSPECIFIED_FAILURE, if the route request could not be processed for any other reason.
The Call Routing Interface is also utilized when the ICM has routed the call to the VRU using a translation
route. In this case, the ICM has additional information associated with the call, and the ICM arranges for the
call to arrive at the VRU with a reserved DNIS value. The VRU recognizes this reserved DNIS value and uses
the ROUTE_REQUEST_EVENT message to request the additional information associated with the call; the ICM
provides the additional information in the ROUTE_SELECT message.
PG VRU
ROUTE_REQUEST_EVENT
ROUTE_SELECT
ROUTE_END_EVENT
Page 47
ICM / VRU Interface Specification Rev 3.0c
PG VRU
Timeout
ROUTE_REQUEST_EVENT
or
Error
ROUTE_END_EVENT
-- OR --
ROUTE_REQUEST_EVENT
Timeout
or
Error ROUTE_SELECT
ROUTE_END
Page 48
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte
Size
MessageHeader Standard message header. MessageType = 41. MHDR 8
CrossRefID A cross-reference identifier assigned by the VRU to this UINT 4
call routing dialogue.
CallID The ID of the associated Event Data Feed call. If no UINT 4
DELIVERED_EVENT was sent for this call, use
NULL_CALL_ID.
Floating Part
Field Name Value Data Type Max.
Size
DialedNumber The number dialed by the caller. STRING 40
(required)
If this Route Request Event is to complete a Translation
Route and the CallID field above is set to
NULL_CALL_ID, this field must be set to the DNIS of
the arriving call.
If this Route Request Event is to complete a Translation
Route and the CallID is not set to NULL_CALL_ID this
field MUST NOT match any configured Dialed Number.
Use the string “TRANSLATION_ROUTE”. The DNIS
in the DELIVERED_EVENT of the referenced call record
will be used.
ANI (optional) The calling line ID of the caller. STRING 40
CED (optional) Caller-entered digits. STRING 40
CallVariable1 Additional information to be used in routing the call. STRING 40
(optional)
... ... ... ...
CallVariable10 Additional information to be used in routing the call. STRING 40
(optional)
ECC Value Call-related data ExpCallVarValue 215
or
(optional)
ExpCallVarArray
… … … …
ECC Value Call-related data ExpCallVarValue 215
or
(optional)
ExpCallVarArray
Page 49
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte
Size
MessageHeader Standard message header. MessageType = 42. MHDR 8
CrossRefID Set to the same value as the CrossRefID of the UINT 4
corresponding ROUTE_REQUEST_EVENT message.
LabelType The type of the label returned in the following field. See UINT 4
Table 46 for a description of label types.
Floating Part
Field Name Value Data Type Max.
Size
Label (required) The destination to which the call should be routed. STRING 48
CallVariable1 Additional information related to the call. STRING 40
(optional)
... ... ... ...
CallVariable10 Additional information related to the call. STRING 40
(optional)
ECC Value Call-related data ExpCallVarValue 215
or
(optional)
ExpCallVarArray
… … … …
ECC Value Call-related data ExpCallVarValue 215
or
(optional)
ExpCallVarArray
Page 50
ICM / VRU Interface Specification Rev 3.0c
Page 51
ICM / VRU Interface Specification Rev 3.0c
The time synchronization message formats are detailed in Table 47 and Table 48.
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 45. MHDR 8
InvokeID An ID for this request message that will be returned in UINT 4
the corresponding confirm message.
VRUTimeLag The number of seconds that the VRU clock lags the ICM INT 4
clock. The VRU may adjust its clock to match the ICM
by adding this value to its clock (see text). If the VRU
clock leads the ICM clock, this value will be negative.
Page 52
ICM / VRU Interface Specification Rev 3.0c
will identify the Service Control Interface features that are supported by the given VRU. Optional initialization
messages may be sent following the INIT_SERVICE_CTRL_DATA message prior to sending the
INIT_SERVICE_CTRL_END message. The optional messages may be sent to initialize Trunk Group, Service,
and Peripheral data objects. Optional data objects that are not explicitly initialized will assume default values
based upon the object type as described below. The INIT_SERVICE_CTRL_END message will signify the end
of the initialization of the Service Control Interface after which dialogues may be created. The VRU should not
send NEW_CALL or REQUEST_INSTRUCTION, or NEW_DIALOGUE messages to the VRU PG prior to the
completion of the initialization sequence. If the Event Data Feed interface is also to be used, the Service Control
Interface initialization will also initialize the Event Data Feed interface. The VRU should not send any event
messages to the VRU PG prior to the completion of the initialization sequence.
Page 53
ICM / VRU Interface Specification Rev 3.0c
Page 54
ICM / VRU Interface Specification Rev 3.0c
PG VRU
INIT_SERVICE_CTRL_REQ
INIT_SERVICE_CTRL_CONF
INIT_SERVICE_CTRL_DATA
Optional Initialization
Messages
} INIT_SERVICE_CTRL_TRKGRP
INIT_SERVICE_CTRL_SERVICE
INIT_SERVICE_CTRL_VRU
INIT_SERVICE_CTRL_END
First
Service Control
Message
2
Note: Reporting of five-minute records is suppressed by default.
Page 55
ICM / VRU Interface Specification Rev 3.0c
Page 56
ICM / VRU Interface Specification Rev 3.0c
Page 57
ICM / VRU Interface Specification Rev 3.0c
CallsInNow VRU PG
CallsInProgress VRU PG
CallsLeftQTo5 N/A
CallsOfferedHalf VRU PG
CallsOfferedTo5 VRU PG
CallsOfferedToday VRU PG
CallsOutHalf N/A
CallsOutNow N/A
CallsOutTo5 N/A
CallsOutToday N/A
CallsQNow N/A
CallsQNowTime N/A
CallsRoutedHalf ICM Router
CallsRoutedToday ICM Router
CallsTerminatedOtherHalf N/A
CallsTerminatedOtherTo5 N/A
CallsTerminatedOtherToday N/A
DelayQAbandTimeTo5 N/A
ExpectedDelay ICM Router
HandleTimeHalf VRU PG
HandleTimeTo5 VRU PG
HandleTimeToday VRU PG
LongestAvailAgent N/A
LongestCallQ N/A
OverflowInHalf N/A
OverflowInTo5 N/A
OverflowInMode N/A
OverflowInNow N/A
OverflowInToday N/A
OverflowOutHalf N/A
OverflowOutMode N/A
OverflowOutNow N/A
OverflowOutTo5 N/A
OverflowOutToday N/A
Page 58
ICM / VRU Interface Specification Rev 3.0c
PeriphServiceLevelCallsHalf N/A
PeriphServiceLevelCallsToday N/A
PeriphServiceLevelHalf N/A
PeriphServiceLevelOfferHalf N/A
PeriphServiceLevelOfferToday N/A
PeriphServiceLevelTo5 N/A
PeriphServiceLevelToday N/A
ServiceLevelAbandHalf N/A
ServiceLevelAbandTo5 N/A
ServiceLevelAbandToday N/A
ServiceLevelCallsHalf N/A
ServiceLevelCallsOfferedHalf N/A
ServiceLevelCallsOfferedTo5 N/A
ServiceLevelCallsOfferedToday N/A
ServiceLevelCallsQHeld N/A
ServiceLevelCallsTo5 N/A
ServiceLevelCallsToday N/A
ServiceLevelHalf N/A
ServiceLevelTo5 N/A
ServiceLevelToday N/A
ServiceModeIndicator N/A
TalkTimeHalf VRU PG
TalkTimeTo5 VRU PG
TalkTimeToday VRU PG
TransferInCallsHalf N/A
TransferInCallsTo5 N/A
TransferInCallsToday N/A
TransferOutCallsHalf N/A
TransferOutCallsTo5 N/A
TransferOutCallsToday N/A
Page 59
ICM / VRU Interface Specification Rev 3.0c
communicate a change in the operational status of a VRU that may affect the ability of the VRU to properly
handle calls. The VRU_STATUS message also contains the VRU time of day and time zone that is used to
synchronize the VRU PG clock to that of the VRU, as well as, sixteen status variables. Periodically, the VRU PG
will forward a Peripheral Real-time update to the ICM Router thereby causing an ICM database record to be
written.
In order to ensure proper clock synchronization between the VRU and the VRU PG, it is suggested that that
VRU send a VRU_STATUS message each time the clock on the VRU crosses a minute boundary.
The status variables may be used to pass additional VRU status information to the ICM. The status variables
may be tested in ICM Routing Scripts to make routing decisions. The use and definition of the status variables
is left up to the implementation of the particular VRU platform.
Field Name Data Source
PeripheralID ICM Configuration
DateTime VRU PG
PeripheralTimeZone VRU PG
Status VRU (in VRU_STATUS message)
Online VRU PG
PeripheralTimeOffset ICM Router
CallsInProgress VRU PG
AgentsLoggedOn N/A
CallsOfferedHalf VRU PG
CallsOfferedToday VRU PG
ServiceLevelCallsOfferedHalf N/A
ServiceLevelCallsOfferedToday N/A
ServiceLevelAbandHalf N/A
ServiceLevelAbandToday N/A
ServiceLevelCallsHalf N/A
ServiceLevelCallsToday N/A
PeripheralData1 through VRU (in VRU_STATUS message)
PeripheralData16
ModePeripheralData1 VRU PG.
CurrentHalfHour VRU PG.
UserControl N/A
CallsRoutedHalf VRU PG.
CallsRoutedToday VRU PG.
Page 60
ICM / VRU Interface Specification Rev 3.0c
Page 61
ICM / VRU Interface Specification Rev 3.0c
occur: the ICM Script runs to completion, a failure scenario occurs such that the ICM Router can no longer
provide instructions to the VRU, or the call being controlled terminates.
Page 62
ICM / VRU Interface Specification Rev 3.0c
ACD agent becomes available, the call is transferred by the VRU to the available agent. If the caller chooses to
end the call prior to being connected to an agent, an ABANDON status may be sent by the VRU to indicate that
the call terminated before the intended service was provided.
The DISCONNECT message is sent when the call terminates with respect to the VRU. The DISCONNECT and
ABANDON events will also terminate the Service Control dialogue. The choice between either the
DISCONNECT or ABANDON message is left to the VRU implementation.
Page 63
ICM / VRU Interface Specification Rev 3.0c
RUN_SCRIPT_RESULT or MICROAPP_RESULT message. The VRU will then receive the CONNECT request
that the ICM Router has prepared. In the case of MICROAPP_PLAY and MICROAPP_PLAY_CONTINUE, the
VRU PG will never interrupt a sequence of these messages with a CANCEL request.
Generally, if the ICM application designer has declared the operation (either VRU Script or MicroApplication
node) as interruptible, then the VRU should be willing to abort that operation on a moment’s notice. However,
if for some reason the VRU cannot abort immediately, it can return a DIALOGUE_FAILURE_CONF message
containing an error code of E_OPERATION_NOT_CANCELLED and an InvokeID identifying the rejected
CANCEL message. When it is finally ready, the VRU should send its usual RUN_SCRIPT_RESULT or
MICROAPP_RESULT message. However, depending on how much time has elapsed, the ICM Router may by
that time have assigned the agent to a different call. The VRU may then receive the (now invalid) CONNECT
request anyway, or it may receive a DIALOGUE_FAILURE_EVENT message.
As a result, it is strongly recommended that if a VRU Script or MicroApplication node is configured as
Interruptible, the VRU should be sure it can abort the corresponding operation. If a delay is absolutely
necessary, a period of approximately 2 seconds or so should be safe.3
3
What constitutes a safe period is actually dependent on the settings of several different timers, as well as on
current network congestion and message processing performance characteristics. The choice of two seconds is
based on typical default settings and typical characteristics, and leaves a substantial margin for error, but it is
not guaranteed.
Page 64
ICM / VRU Interface Specification Rev 3.0c
The one remaining MicroApplication message in the ICM/VRU Interface is MICROAPP_RESULT, which the
VRU sends back to the ICM to return the results of the prior MicroApplication request.
Page 65
ICM / VRU Interface Specification Rev 3.0c
vendor should then make its mapping known to the ICM routing script designer so that he can reference VRU
prompts appropriately from the script level.
For example, a VRU which only addresses prompts by number, with each language group being selected by
adding a numeric offset, might elect to completely ignore all the URL components except <Locale> and
<Filename>, and only allow numeric values in either of those fields. In that case the script designer would not
bother filling in the unused fields, and would enter the appropriate numeric values for <Locale> and <Filename>.
Page 66
ICM / VRU Interface Specification Rev 3.0c
dollar figure (“twenty-five dollars and one cent”) if the PlaybackType is PLAYBACK_TYPE_CURRENCY, or a
number (“twenty-five point zero one”) if the PlaybackType is PLAYBACK_TYPE_NUMBER.
The following table shows how the VRU should interpret each PlaybackType code:
PLAYBACK_TYPE_NUMBER Number. The value could be positive or negative, and could
contain a decimal point.
PLAYBACK_TYPE_CHAR Characters. For example “five” should be played as “eff aye
vee ee”.
PLAYBACK_TYPE_ETIME Elapsed Time. The Playback Format field describes how to
play this value.
PLAYBACK_TYPE_TOD Time of Day. The Playback Format field describes how to play
this value.
PLAYBACK_TYPE_24TOD 24-Hour Time of Day. The Playback Format field describes
how to play this value.
PLAYBACK_TYPE_DOW Day of Week. 1-7 correspond to Sunday through Saturday.
PLAYBACK_TYPE_DATE Date. Format is YYYYMMDD.
PLAYBACK_TYPE_CURRENCY Currency. The value may or may not contain a decimal point,
but will not contain a currency sign (such as ‘$’).
PLAYBACK_TYPE_TEXT Text. This is one way of specifying Text -to-Speech synthesis.
If the VRU does not support Text -to-Speech, it should
immediately return a MICROAPP_RESULT message with the
Microapp Error Code set to
MICROAPP_E_MEDIA_PROTOCOL.
Table 54: Playback Types in Data Media Specifiers
For time-oriented PlaybackType codes, the VRU should further examine the PlaybackFormat field, which
contains one of the following:
PLAYBACK_FORMAT_HHMM Play hours and minutes only, in military style. For
example, “1605” should play as “sixteen oh five”.
PLAYBACK_FORMAT_HHMMSS Play hours, minutes and seconds, in military style. For
example, “160523” should play as “sixteen oh five and
twenty-three seconds”.
PLAYBACK_FORMAT_HHMMAP Play hours and minutes, with AM or PM. For example,
“1605” should play as “four oh five PM”.
PLAYBACK_FORMAT_OTHER None of the above. This is only the default code which
appears in this field for playback types other than those
related to time.
Table 55: Playback Formats in Data Media Specifiers
Note that neither the ICM Router nor the Script Editor perform any validation on the data format which appears
in the Value field of a Data MEDIA_SPECIFIER. It is possible, for example, for the script designer to
erroneously place letters into a date or number field. Therefore the VRU should verify the data it receives
against its corresponding legal format, before attempting to play it. If it detects a format error, it should
immediately abort the current MicroApplication request, and return a MICROAPP_RESULT message with
Microapp Error Code set to MICROAPP_E_NUMBER_FORMAT or MICROAPP_E_DATA_RANGE, as
appropriate. As a debugging aid, the VRU might also pass a detailed error message string back to the PG in the
Microapp Error Text field. (If the current MicroApplication request is a MICROAPP_PLAY /
MICROAPP_PLAY_CONTINUE set, then it should wait for the last message in the set before sending its
MICROAPP_RESULT.)
Page 67
ICM / VRU Interface Specification Rev 3.0c
Page 68
ICM / VRU Interface Specification Rev 3.0c
Implementation Note: For messages sent outside the context of a particular dialogue the DialogueID and the
SendSeqNo fields of the ServiceControlHeader must both be set to NULL_DATA_ELEMENT.
Page 69
ICM / VRU Interface Specification Rev 3.0c
Page 70
ICM / VRU Interface Specification Rev 3.0c
Page 71
ICM / VRU Interface Specification Rev 3.0c
Page 72
ICM / VRU Interface Specification Rev 3.0c
CONNECT, CONNECT_TO_RESOURCE, or
TEMPORARY_CONNECT arriving while already
connected). To do so, the VRU must have the capability of
retaining call control even after it has connected the call to a
destination.
FEATURE_NEED_RELEASE 0x00000020 Indicates the VRU needs to have the destination of the
outgoing leg release the call (go On-Hook) before it can
complete a blind transfer operation.
FEATURE_RUN_MICROAPP 0x00000040 Indicates the VRU is capable of executing MicroApplication
request.
Page 73
ICM / VRU Interface Specification Rev 3.0c
Page 74
ICM / VRU Interface Specification Rev 3.0c
Page 75
ICM / VRU Interface Specification Rev 3.0c
Page 76
ICM / VRU Interface Specification Rev 3.0c
Page 77
ICM / VRU Interface Specification Rev 3.0c
Page 78
ICM / VRU Interface Specification Rev 3.0c
Page 79
ICM / VRU Interface Specification Rev 3.0c
Page 80
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte
Size
MessageHeader Standard message header. MessageType = 47. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 5
TrunkGroupID The ID of the trunk group on which the call arrived, UINT 4
in the range 0 to 65535.
TrunkNumber The number of the trunk on which the call arrived. UINT 4
ServiceID The ID of the service to which this call is attributed. UINT 4
Floating Part
Field Name Value Data Type Max.
Size
DialedNumber The number used to determine the ICM Call Type. STRING 32
(Required)
ANI The calling line ID of the caller. STRING 40
(optional)
CallerEnteredDigits Digits gathered from the caller by network prompts.. STRING 40
(optional)
UserToUserInfo The ISDN user-to-user information element. UNSPEC 131
(optional)
CalledNumber The complete called number if available from the STRING 32
(optional) network.
DNIS The DNIS provided with the call. STRING 32
(optional)
CallVariable1 (optional) Additional VRU information to be used when STRING 40
running the ICM script.
... ... ... ...
CallVariable10 Additional VRU information to be used when STRING 40
(optional) running the ICM script.
ECC Value Call-related data ExpCallVarValue or 215
ExpCallVarArray
(optional)
… … … …
ECC Value Call-related data ExpCallVarValue or 215
ExpCallVarArray
(optional)
Page 81
ICM / VRU Interface Specification Rev 3.0c
Page 82
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 47. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 6
TrunkGroupID The ID of the trunk group on which the call arrived, UINT 4
in the range 0 to 65535.
TrunkNumber The number of the trunk on which the call arrived. UINT 4
ServiceID The ID of the service to which this call is attributed. UINT 4
Floating Part
Field Name Value Data Type Max. Size
ANI The calling line ID of the caller. STRING 40
(optional)
UserToUserInfo The ISDN user-to-user information element. UNSPEC 131
(optional)
CalledNumber The complete called number if available from the STRING 32
(optional) network.
DNIS The DNIS provided with the call. STRING 32
(optional)
CorrelationID The CorrelationID as provided by an INAP network. STRING 40
(optional)
Page 83
ICM / VRU Interface Specification Rev 3.0c
Dynamic parameters can be specified on a call by call basis via an ICM Script in the optional call variable fields.
The ICM Script running on the ICM Router may populate these values to provide supplemental information to
the VRU when executing the script. The VRU interface does not define the use of these values so care must be
taken to ensure that the ICM Script populating these values is compatible with the VRU. If the VRU is unable to
process the run script request due to an error in the call variable fields, a DIALOGUE_FAILURE_CONF
message should be sent by the VRU identifying the problematic variable (E_CALL_VARIABLE1 …
E_CALL_VARIABLE10).
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 47. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 7
InvokeID An ID for this request message that will be UINT 4
returned in the corresponding result message.
Floating Part
Field Name Value Data Type Max. Size
ScriptID The ID of the script to run on the VRU. STRING 40
(Required)
ScriptConfiguration A configuration string configured in the ICM to STRING 40
select static script options.
(Required)
ANI The calling line ID of the caller. STRING 40
(optional)
CED (optional) Caller-entered digits. STRING 40
CallVariable1 (optional) Additional information passed to the VRU to be STRING 40
used when running the script.
... ... ... ...
CallVariable10 Additional information passed to the VRU to be STRING 40
(optional) used when running the script.
ECC Value Call-related data ExpCallVarValue or 215
ExpCallVarArray
(optional)
… … … …
ECC Value Call-related data ExpCallVarValue or 215
ExpCallVarArray
(optional)
Page 84
ICM / VRU Interface Specification Rev 3.0c
overwritten in the ICM Router’s memory based on the values in these fields. Therefore, if the VRU should be
sure to return all the variables which it received in the RUN_SCRIPT_REQ message, only changing those which
it needs to modify.
The InvokeID contained in the RUN_SCRIPT_RESULT message must match the InvokeID specified in the
RUN_SCRIPT_REQ message. If an invalid InvokeID is specified in the RUN_SCRIPT_RESULT message, a
DIALOGUE_FAILURE_EVENT message will be sent to the offending VRU with an error code of
E_INVALID_INVOKEID.
The ResultCode field should be set to TRUE (1) when the VRU successfully completes a script without error. A
FALSE value (0) indicates that the VRU detected an error while running the script. The VRU may return error
information in the call variables to be examined by the ICM Script.
If the specified script is not known to the VRU, a DIALOGUE_FAILURE_CONF should be sent with a status
code of E_INVALID_SCRIPT.
If the DialogueID specified in the RUN_SCRIPT_REQ message is not under Service Control or no longer
connected to the VRU, a DIALOGUE_FAILURE_EVENT should be sent with a status code of
E_INVALID_DIALOGUEID.
Page 85
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 47. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 8
InvokeID Set to the same value as the InvokeID of the UNIT 4
corresponding RUN_SCRIPT_REQ message.
ResultCode Set to TRUE (1) if no errors were encountered BOOL 4
actually running the script and FALSE (0) if an
error was encountered.
Floating Part
Field Name Value Data Type Max. Size
CED (optional) Caller-entered digits. STRING 40
NewTransaction Set to TRUE (non-zero) if the VRU PIM should BOOL 4
(optional) write a Call Termination Record into the database
immediately after processing this message.
CallVariable1 (optional) Additional information related to the call. STRING 40
... ... ... ...
CallVariable10 Additional information related to the call. STRING 40
(optional)
ECC Value Call-related data ExpCallVarValue or 215
ExpCallVarArray
(optional)
… … … …
ECC Value Call-related data ExpCallVarValue or 215
ExpCallVarArray
(optional)
Page 86
ICM / VRU Interface Specification Rev 3.0c
specifier with a filename of “goodbye.wav”, then the VRU would play the media file
“HTTP://AcmeManufacturing/goodbye.wav”.
Note that all fields in the MICROAPP_CONTEXT message are required fields. Therefore, if the ICM Router
wishes to change the setting for any one field, it must send all the fields again. For additional information about
the structure of these fields, see Section 4.
There is no VRU response to a MICROAPP_CONTEXT message.
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 47. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 24
Floating Part
Field Name Value Data Type Max. Size
CustomerID String identifying the requesting customer in STRING(255) 255
(required) multi-tenant configurations
Media-server set IP address or DNS name, optionally this is the STRING(255) 255
(required) root URL of the media files.
Locale One of: “en_US”, or “en_GB”. If supported by STRING(10) 10
(required) the VRU, additional Locales may be added to
the ICM Locale configuration table and may
appear here.
System media library Library of media files/prompts for individual STRING(255) 255
(required) digits, months, default error messages, etc.
Application-specific prompts should not be
stored in this library. The full set of
media/prompts needs to be created/ recorded
for each locale referenced.
Application media Library of media files/prompts specific to a set STRING(255) 255
library of related ICM scripts. This set of
(required) media/prompts needs to be created/recorded for
each locale referenced.
Currency Currency to use, such as “dollar”. If supported STRING(10) 10
(required) by the VRU, additional Currencies may be
added to the ICM Currency configuration table
and may appear here.
Page 87
ICM / VRU Interface Specification Rev 3.0c
Page 88
ICM / VRU Interface Specification Rev 3.0c
Floating Part
Field Name Value Data Type Max. Size
Media Specifier Identifies a particular media to play. Can be MEDIA_ SPECIFIER 1-255
(optional) HTTP, File, Streaming, Text -to-Speech, or Data.
Any number of Media Specifier elements may
appear in the message.
… … … …
Media Specifier Identifies a particular media to play. Can be MEDIA_ SPECIFIER 1-255
(optional) HTTP, File, Streaming, Text -to-Speech, or Data.
Any number of Media Specifier elements may
appear in the message.
CallVariable1 through Additional information passed to the VRU to be STRING 40
CallVariable 10 used when running the script.
(optional)
ECC Value Call-related data ExpCallVarValue or 218
(optional) ExpCallVarArray
… … … …
ECC Value Call-related data ExpCallVarValue or 218
(optional) ExpCallVarArray
Page 89
ICM / VRU Interface Specification Rev 3.0c
Page 90
ICM / VRU Interface Specification Rev 3.0c
The Initial Prompt, Timeout Prompt and Invalid Entry Prompt fields are all Media Specifier fields. They are
meant to be interpreted by the VRU within the context of the fields specified by a prior MICROAPP_CONTEXT
message. See Section 8.5.5.7 for more information. Note that these prompts are required fields. However, the
ICM Router may indicate that a particular prompt should not be played by including a NULL specifier in the
corresponding prompt field.
The MICROAPP_COLLECT_DATA message is formatted as follows. For detailed information about the
structure of these fields, see Section 4.
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 47. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 27
InvokeID An ID for this request message that will be UINT 4
returned in the corresponding result message.
DTMF Termination Key Terminates a variable length string of DTMF UINT 4
digits (typically # key). The value is a bit map;
usually only one bit is set, but all bits could be
zero in order to indicate no key is to be
considered a termination key. The special bit
KEY_NONE also means that no key is to be
considered a termination key. See Table 76 for
bit arrangement. This field should be ignored
for fixed length strings; ie., when Minimum
Length and Maximum Length are equal.
No Entry Timeout Determines how many seconds a caller is UINT 4
allowed to start entering data.
Interdigit Timeout Determines how many seconds the caller is UINT 4
allowed between digits, before the system
assumes the caller is finished.
Numb er of No Entry Number of times VRU should repeat the “Get UINT 4
Tries data” cycle when the caller doesn’t enter any
data, where the caller hears the prompt and is
allowed to enter data (including the first time).
Number of Invalid Entry Number of times VRU should repeat the “Get UINT 4
Tries data” cycle when the caller enters invalid data
(including the first time).
Minimum Length Minimum number of digits expected from the UINT 4
caller, not counting a termination key. If
Minimum and Maximum Length are equal, then
a fixed number of keystrokes are expected and
the DTMF Termination Key field should be
ignored.
Page 91
ICM / VRU Interface Specification Rev 3.0c
DTMF Termination Key is a bit map, of which zero or more bits may be set. The following table shows how
these bits are arranged.
Key Bit Mask
KEY_0 0x0001
KEY_1 0x0002
KEY_2 0x0004
KEY_3 0x0008
KEY_4 0x0010
KEY_5 0x0020
KEY_6 0x0040
KEY_7 0x0080
KEY_8 0x0100
Page 92
ICM / VRU Interface Specification Rev 3.0c
Page 93
ICM / VRU Interface Specification Rev 3.0c
Number of Invalid Entry Number of times we will repeat the “Get data” UINT 4
Tries cycle when the caller enters invalid data
(including the first time).
DTMF Menu Keys Indicates which keypad keys represent valid UINT 4
menu choices. See Table 76 above for bitmap
definitions.
Barge-In Allowed Indicates whether caller is allowed to interrupt BOOL 4
playing. Applies to all media, data fields, and
prompts.
ASR Allowed Indicates whether Automatic Speech BOOL 4
Recognition should be enabled for this request.
Floating Part
Field Name Value Data Type Max. Size
Initial Prompt Prompt to play in order to request caller input. MEDIA_ SPECIFIER 255
(required)
Timeout Prompt Prompt to play upon No-Entry Timeout. MEDIA_ SPECIFIER 255
(required)
Invalid Entry Prompt Prompt to play upon Invalid Entry condition. MEDIA_ SPECIFIER 255
(required)
ASR Grammar Arbitrary string which indicates to the VRU STRING 40
which speech recognition grammar to use, if
speech recognition is enabled.
CallVariable1 through Additional information passed to the VRU to be STRING 40
CallVariable 10 used when running the script.
(optional)
ECC Value Call-related data ExpCallVarValue or 218
(optional) ExpCallVarArray
… … … …
ECC Value Call-related data ExpCallVarValue or 218
(optional) ExpCallVarArray
Page 94
ICM / VRU Interface Specification Rev 3.0c
Page 95
ICM / VRU Interface Specification Rev 3.0c
… … … …
ECC Value Call-related data ExpCallVarValue or 218
ExpCallVarArray
(optional)
Page 96
ICM / VRU Interface Specification Rev 3.0c
Page 97
ICM / VRU Interface Specification Rev 3.0c
Page 98
ICM / VRU Interface Specification Rev 3.0c
The Label message field will be set to a zero length value in cases where the Label type is set to a value of
BUSY, RING, or DEFAULT. Conversely the label should be set to a non-zero length value in all cases where the
Label type is set to a value of NORMAL. If the VRU receives a label of type BUSY or RING, it should if
possible provide busy or ring tone to the caller. Once the caller actually hangs up, the VRU should send an
DISCONNECT EVENT_REPORT to the PG, specifying either BUSY or NO_ANSWER in the CauseCode field.
This guarantees that the event will be reported correctly in the ICM database.
The TransferHint field can appear only if the VRU has indicated that it supports
FEATURE_BLIND_TRANSFER. If this field is present and TRUE, then the VRU should retain call control when
it connects the call to the specified destination. It may do this by bridging the call through via a second VRU
port, or it may ask the switch to connect the call but retain some sort of call key which the VRU can later use to
pull the call back and target it elsewhere. It also should not send a DISCONNECT event to the PG until such
time as the calling party actually hangs up, or the VRU loses control of the call.
Some VRU implementations always retain call control until the calling party actually hangs up. Such VRU’s are
capable of supporting partner Type 8 VRU configurations. These are configurations which use two or more
VRU's: one VRU acts as the call's initial routing client, and its partner, a second VRU configured as a Type 8
Network VRU, is used to perform customary VRU services. If the ICM routing script calls for VRU services,
then the Router sends a CONNECT message to the initial routing client VRU, containing a label which targets
the second VRU. Other than the label itself, this CONNECT message contains no charactistic which identifies
its target as another VRU rather than an ACD or other final target. In particular, the TransferHint flag will not be
set. Once the Router determines a final destination for the call, it sends an additional CONNECT message to the
initial routing client VRU, containing a label which targets that final destination. Therefore, a VRU which wishes
to support partner Type 8 VRU configurations must retain call control following any CONNECT message, until
the original caller hangs up. As with the blind transfer feature, it should only then send a DISCONNECT event
to the PG.
The CONNECT message can optionally provide parameters in the call variable fields. The ICM Script running
on the ICM Router may populate these values to provide supplemental information to the VRU when
connecting the call. The VRU interface does not define the use of these values so care must be taken to ensure
that the ICM Script populating these values is compatible with the VRU.
Page 99
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte Size
MessageHeader Standard message header. MessageType = 47. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 9
LabelType The type of the label returned in the following field. UINT 4
See Table 82 (below) for a description of label
types.
Floating Part
Field Name Value Data Type Max. Size
Label (required) The destination to which the call should be routed. STRING 48
TransferHint Only present if the VRU supports BOOL 4
FEATURE_BLIND_TRANSFER.
(optional)
If present and set to TRUE the VRU PG reserves
the right to send a CONNECT or
CONNECT_TO_RESOURCE message after this
CONNECT.
CallVariable1 Additional information related to the call. STRING 40
(optional)
... ... ... ...
CallVariable10 Additional information related to the call. STRING 40
(optional)
ECC Value Call-related data ExpCallVarValue 215
or
(optional)
ExpCallVarArray
… … … …
ECC Value Call-related data ExpCallVarValue 215
or
(optional)
ExpCallVarArray
Page 100
ICM / VRU Interface Specification Rev 3.0c
Page 101
ICM / VRU Interface Specification Rev 3.0c
Fixed Part
Field Name Value Data Type Byte
Size
MessageHeader Standard message header. MessageType = 20. MHDR 8
ServiceControlHeader Standard Service Control message header. SERVICEHDR 12
MessageSubType = 21
CallID The ID of the exis ting Event Data Feed call. UINT 4
ServiceID The ID of the service to which the new call is UINT 4
attributed.
Floating Part
Field Name Value Data Type Max.
Size
DialedNumber The number used to determine the ICM Call Type. STRING 32
(Required)
UserToUserInfo The ISDN user-to-user information element. UNSPEC 131
(optional)
PG VRU
DELIVERED_EVENT
ROUTE_REQUEST_EVENT
Event
Event ROUTE_SELECT Data
Data ROUTE_END Feed
Feed
SET_CALL_VARIABLES_EVENT
NEW_DIALOGUE
RUN_SCRIPT_REQ
Service
SCRIPT_RESULT
Service Control
Control Interface
CONNECT
Interface
EVENT_REPORT
(ANSWERED)
EVENT_REPORT
(DISCONNECT)
Page 102
ICM / VRU Interface Specification Rev 3.0c
Page 103
ICM / VRU Interface Specification Rev 3.0c
Page 104
ICM / VRU Interface Specification Rev 3.0c
Page 105
ICM / VRU Interface Specification Rev 3.0c
Page 106
ICM / VRU Interface Specification Rev 3.0c
Page 107
ICM / VRU Interface Specification Rev 3.0c
Page 108
ICM / VRU Interface Specification Rev 3.0c
IDLE
<9>
<1> Caller Disconnects
<4> Send ER/ABAND
Call Arrives
Receive RELEASE
Send NEW_CALL or <5>
Release Call
REQUEST_INSTRUCTION Receive CONNECT_TO_RESOURCE
Send ER/DISCON
Send RESOURCE_CONNECTED
Selecting
Script
<2>
Receive
RUN_SCRIPT_REQ <11>
Connection Error
Send ER/CF,
<7>
ER/BUSY or
Script Invalid
ER/NA
Send DFC Connecting
<6> READY
Script <3>
Vaild Receive
<12> CONNECT or
Script Completes TEMPORARY_CONNECT
Send SCRIPT_RESULT <14> <10> <8>
CANCEL Successful Label Invalid
Send DFC Connection Successful
Send ER/CINV Send ER/ANS
<20>
<13> Receive CONNECT or
Receive CANCEL <19> TEMPORARY_CONNECT
Canceling Disconnect Current Destination
Script Receive CONNECT_TO_RESOURCE
Disconnect Current Destination
Send RESOURCE_CONNECTED
Running Script <15>
CANCEL Failed Connected
Send DFC
Page 109
ICM / VRU Interface Specification Rev 3.0c
<16>
Receive RELEASE IDLE
Release Call
<9>
Send ER/DISCON Caller Disconnects
<1>
<4> Send ER/ABAND
Call Arrives
Receive RELEASE
Send NEW_CALL or <5>
Release Call
REQUEST_INSTRUCTION Receive CONNECT_TO_RESOURCE
Send ER/DISCON
Send RESOURCE_CONNECTED
Selecting
Script
<2> <11>
Receive Connection Error
RUN_SCRIPT_REQ Send ER/CF,
ER/BUSY or
<7> ER/NA
Script Invalid
Send DFC <3> Connecting
<6> READY Receive
Script CONNECT or
Vaild TEMPORARY_CONNECT
<12>
Script Completes
<10>
Send SCRIPT_RESULT
Label Invalid <8>
Send ER/CINV Connection Successful
<18> Send ER/ANS
Receive CONNECT_TO_RESOURCE <20>
Send RESOURCE_CONNECTED Receive CONNECT or
TEMPORARY_CONNECT
Disconnect Current Destination
<17>
Receive CONNECT <19>
Running Script Receive CONNECT_TO_RESOURCE Connected
Disconnect Current Destination
Send RESOURCE_CONNECTED
Page 110
ICM / VRU Interface Specification Rev 3.0c
Page 111
ICM / VRU Interface Specification Rev 3.0c
Page 112
ICM / VRU Interface Specification Rev 3.0c
Send RESOURCE_CONNECTED.
20 Connected Connecting Receive CONNECT or Disconnect called party, if connected
TEMPORARY_CONNECT. (or wait for called party to disconnect if
FEATURE_NEED_RELEASE is used).
Attempt to connect the caller to the
CONNECT and
destination specified by the label.
TEMPORARY_CONNECT only
occur if VRU has enabled the
Blind Transfer feature.
PG VRU
REQUEST_INSTRUCTION
RUN_SCRIPT_REQ
SCRIPT_RESULT
EVENT_REPORT
(DISCONNECT)
Page 113
ICM / VRU Interface Specification Rev 3.0c
PG VRU
NEW_CALL
RUN_SCRIPT_REQ
SCRIPT_RESULT
CONNECT
EVENT_REPORT
(ANSWERED)
EVENT_REPORT
(DISCONNECT)
Page 114
ICM / VRU Interface Specification Rev 3.0c
destination and a DISCONNECT EVENT_REPORT message when the call terminates. In this example, the
dialogue is terminated by the DISCONNECT EVENT_REPORT.
PG VRU
NEW_CALL
RUN_SCRIPT_REQ
CANCEL_REQ
DIALOGUE_FAILURE_CONF
( E_OPERATION_CANCELLED )
CONNECT
EVENT_REPORT
(ANSWERED)
EVENT_REPORT
(DISCONNECT)
Page 115
ICM / VRU Interface Specification Rev 3.0c
The VRU interprets the label contained in the CONNECT message and delivers the call to the specified
destination. The VRU then sends an ANSWERED EVENT_REPORT when the call connects to the destination
and a DISCONNECT EVENT_REPORT message when the call terminates. In this example, the dialogue is
terminated by the DISCONNECT EVENT_REPORT.
PG VRU
NEW_CALL
RUN_SCRIPT_REQ
CANCEL_REQ
DIALOGUE_FAILURE_CONF
(E_OPERATION_NOT_CANCELED)
SCRIPT_RESULT
CONNECT
EVENT_REPORT
(ANSWERED)
EVENT_REPORT
(DISCONNECT)
Page 116
ICM / VRU Interface Specification Rev 3.0c
PG VRU
NEW_CALL
RUN_SCRIPT_REQ
SCRIPT_RESULT
RELEASE
EVENT_REPORT
(DISCONNECT)
PG VRU
CONNECT
EVENT_REPORT
(ANSWERED)
Page 117
ICM / VRU Interface Specification Rev 3.0c
PG VRU
CONNECT_TO_RESOURCE
RESOURCE_CONNECTED
Page 118
ICM / VRU Interface Specification Rev 3.0c
PG VRU
NEW_CALL
RUN_SCRIPT_REQ
SCRIPT_RESULT
CONNECT
EVENT_REPORT
(DISCONNECT)
Page 119
ICM / VRU Interface Specification Rev 3.0c
PG VRU
NEW_CALL
RUN_SCRIPT_REQ
SCRIPT_RESULT
CONNECT
EVENT_REPORT
(BUSY)
CONNECT
EVENT_REPORT
(ANSWERED)
EVENT_REPORT
(DISCONNECT)
PG VRU
NEW_CALL
DIALOGUE_FAILURE_EVENT
Page 120
ICM / VRU Interface Specification Rev 3.0c
PG VRU
NEW_CALL
:
:
DIALOGUE_FAILURE_EVENT
PG VRU
NEW_CALL
RUN_SCRIPT_REQ
DIALOGUE_FAILURE_CONF
DIALOGUE_FAILURE_EVENT
Page 121
ICM / VRU Interface Specification Rev 3.0c
PG VRU
REQUEST_INSTRUCTION
RUN_SCRIPT_REQ
DIALOGUE_FAILURE_CONF
RUN_SCRIPT
SCRIPT_RESULT
EVENT_REPORT
(DISCONNECT)
Page 122
ICM / VRU Interface Specification Rev 3.0c
PG VRU
NEW_CALL
MICROAPP_CONTEXT
MICROAPP_MENU
MICROAPP_RESULT
MICROAPP_PLAY
MICROAPP_PLAY_CONTINUE
MICROAPP_PLAY_CONTINUE
MICROAPP_PLAY_CONTINUE
MICROAPP_RESULT
RELEASE
EVENT_REPORT
(DISCONNECT)
9. Implementation Options
While this document specifies the complete interface between a VRU and the ICM, there are a number of
options for implementing only a subset of the complete specification.
The VRU must always implement the communications interfaces described in section 7. This is required to
establish basic connectivity between the VRU and the ICM. A subset of the application level interfaces
described in section 8 may be implemented, depending on how the VRU will participate in the ICM’s virtual call
center.
Page 123
ICM / VRU Interface Specification Rev 3.0c
The data feed interface is independent of the other application level interfaces. In particular, a VRU may
support the Event Data Feed interface without also supporting the Call Routing Interface. This may occur when
the ICM routes calls to the VRU but the VRU does no transfers or only simple transfers that do not require the
ICM’s routing services.
Page 124
ICM / VRU Interface Specification Rev 3.0c
Page 125
ICM / VRU Interface Specification Rev 3.0c
Page 126
ICM / VRU Interface Specification Rev 3.0c
Page 127