The processor bridge creates a channel destination when a channel is added to a channel group.  The destination is used to monitor and control the channel’s CTI state.  The generic channel destination is a template for all channel types.  Each channel type will have additional messages that can be carried by their respective channel destination types.

  • Activate/Deactivate channel

  • Go Ready/Not Ready on channel

  • Receive notifications of new inbound interactions

As with the processor control destination, the channel destination follows the same lifecycle of setup, initialization, and tear down.  The following figure depicts the initialization phase of a channel destination:

It is important to note that with all CTI resource related communication destinations, no event messages should be raised prior to receiving and responding to the initialization query message.

Queries & Responses

This section defines the possible query messages the processor bridge may send to the channel destination and the format of any expected result messages.

channel.query.init

This query retrieves information about the channel’s current state within the CTI.  The response to this query carries a JSON payload describing the current state of the channel.

Query Headers

Key

Value

Notes

type

cti.query

Query messages will always have this value

name

channel.query.init

Name of this query type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Query Properties

Key

Value

Notes

None

 

 

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.query.init

Name of the original query

result

SUCCESS | FAILURE

Result of the query

errorMessage

String

A human readable description of the error that caused this query to fail.  This message will be logged and may be displayed to the agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Response JSON

Below is an example of the JSON returned in the response message:

1{ 2 "agent-id" : "CURRENT_AGENT_ID", 3 "agent-status" : "CURRENT_AGENT_STATUS", 4 "agent-status-reason-code" : "STATUS_REASON_CODE", 5 "agent-status-reason-desc" : "STATUS_REASON_DESC" 6 "interactions" : 7 [ 8 { 9 "NATIVE_ID", 1011 } 12 ], 13 "extensions": 14 { 1516 } 17}

If an agent is logged into the channel, the agent-id attribute should contain the CTI id for that agent.  Otherwise, the agent-id attribute should be blank.  The agent id returned may be different than that of the agent associated with this session.  This indicates that some other agent is occupying the channel; making it unavailable to the session’s agent.  The agent-status attribute should contain one of the standard status values: READY, NOT READY, BUSY READY, or BUSY NOT READY.

The interactions array should always be present even if it is empty.  The interactions array should contain the identifiers used by the CTI to reference any interaction associated with the channel.  This id will be used to create an interaction destination for the interaction.

The contents of the extensions property is platform specific.  If no platform extensions exists, this property can be omitted.

UCCE/UCCX Extension:

The device list will be used in a needs info response to an activate request if there is more than one device listed for the agent.  The mediabar will display a selection box for device and send that information along in a subsequent activate call.

     

1"extensions": 2{ 3 "devices": 4  [ 5   { 6     "deviceId": "DEVICE_ID", 7      "deviceType": "DEVICE_TYPE", 8      "deviceTypeName": "DEVICE_TYPE_NAME" 9    }, 10    … 11  ] 12}

Special Considerations

The processor bridge will use the information provided in the response message to create objects and communication destination for each interaction identified.  Any channel related events sent to the destination remain in queue until these objects are initialized themselves.  Once this is complete, any waiting events are processed in the order they arrived.

Requests

This section defines the possible requests the processor bridge may make to the channel destination.  The client will always generate a response message as a result of these requests.  Some requests require the client to perform actions in a particular order.  These constraints will be detailed in the description of the request.

channel.request.createinteraction

Instructs the client to prepare a new interaction and register with the interaction destination described in the request message.  The request can occur any time between the initialization and tear down phase of the channel destination.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

channel.request.createinteraction

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request Properties

Key

Value

Notes

id

String

Bridge id of the interaction

nativeid

String

CTI id of the interaction

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.request.createinteraction

Name of the original request

result

SUCCESS | FAILURE

Result of the request

errorMessage

String

A human readable description of the error that caused this request to fail.  This message will be logged and may be displayed to an agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

channel.request.activate

Requests the client log the session’s agent into this channel.  If a different agent is already logged into this channel, a failure response should be generated, and the channel left in its current state.  Unlike most request messages, channel.request.activate provides additional information in a JSON payload.  Not all telecom vendors support channel activation.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

channel.request.activate

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request JSON

1{ 2 "queue" : "QUEUE_LIST", 3 "switch-login" : "AGENT_SWITCH_LOGIN_ID", 4 "switch-password" : "AGENT_SWITCH_PASSWORD", 5 "extensions": 6 { 78 } 9}

The queues property will contain a comma delimited list of queue names that should be activated for this channel.  If the underlying CTI does not use or support queue-based routing, this property will be empty.  The switch-login property contains the login id that should be used to authenticate with the switch if different than the agent's CTI login.  The switch-password will contain the switch password associated with the login if required.

The extensions property is platform specific and might be omitted if the platform doesn't require any extensions.

UCCE/UCCX Extensions

UCCE/UCCX requires a device id to activate the telephony channel when the agent has multiple devices registered.  The set of possible devices is returned during channel.query.init and selected by the agent.

1"extensions": 2{ 3 "deviceId": "DEVICE_ID" 4}

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.request.activate

Name of the original request

result

SUCCESS | FAILURE

Result of the request

errorMessage

String

A human readable description of the error that caused this request to fail.  This message will be logged and may be displayed to an agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

channel.request.deactivate

Requests the client log the session’s agent out of this channel.  If a different agent is logged into the channel, a failure response should be generated, and the channel left in its current state.  Also, if any interactions are active (not in the ended state) a failure message should be generated, and the active interactions should be left in their current state.  Any interactions that are ended but not complete should be marked complete as part of this request even if the request fails.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

channel.request.ready

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request Properties

Key

Value

Notes

None

 

 

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.request.ready

Name of the original request

result

SUCCESS | FAILURE

Result of the request

errorMessage

String

A human readable description of the error that caused this request to fail.  This message will be logged and may be displayed to an agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

channel.request.ready

Requests the client place this channel into the ready state.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

channel.request.ready

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request Properties

Key

Value

Notes

None

 

 

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.request.ready

Name of the original request

result

SUCCESS | FAILURE

Result of the request

errorMessage

String

A human readable description of the error that caused this request to fail.  This message will be logged and may be displayed to an agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

channel.request.notready

Requests the client place this channel into the not ready state.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

channel.request.notready

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request Properties

Key

Value

Notes

reason

String

Reason code for going not ready

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.request.notready

Name of the original request

result

SUCCESS | FAILURE

Result of the request

errorMessage

String

A human readable description of the error that caused this request to fail.  This message will be logged and may be displayed to an agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

channel.request.dispose

Notifies the client that the processor bridge is ready to dispose of the channel and that any underlying CTI resources should be released.  The actual disposal of resources should be performed after a response is returned.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

channel.request.dispose

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request Properties

Key

Value

Notes

None

 

 

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.request.dispose

Name of the original request

result

SUCCESS | FAILURE

Result of the request

errorMessage

String

A human readable description of the error that caused this request to fail.  This message will be logged and may be displayed to an agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

channel.request.externaldispositions

Requests the client provide a list of appropriate interaction dispositions for this channel.  These dispositions can be specific to the interaction type of the channel.  Note: This request produces the "channel.externaldispositions.updated" event in response.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

channel.request.externaldispositions

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request Properties

Key

Value

Notes

None

 

 

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

channel.request.externaldispositions

Name of the original request

result

SUCCESS | FAILURE

Result of the request

errorMessage

String

A human readable description of the error that caused this request to fail.  This message will be logged and may be displayed to an agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Client Events

This section describes the possible events the client can send the processor bridge to the channel destination.  In most cases, these events are unsolicited though may be the indirect result of executing a previously received request message.

channel.interaction.available

This event indicates that a new interaction is available on this channel.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

channel.interaction.available

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

nativeid

String

CTI id of the new interaction

channel.activated

This event indicates that the session’s agent has been logged into this channel.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

channel.activated

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

channel.deactivated

This event indicates that the session’s agent has been logged out of this channel.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

channel.deactivated

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

channel.unavailable

This event indicates that an agent other than the session’s agent has been logged into this channel.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

channel.unavailable

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

id

String

CTI id for the agent occupying this channel

channel.available

This event indicates that some other agent has been logged out of this channel.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

channel.available

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

channel.agentstatuschanged

This event indicates that the status for the logged in agent has changed.  This event only needs to be raised if the agent associated with this session is logged into the channel.  The processor bridge does not track the status of the channel when another agent is logged in.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

channel.agentstatuschanged

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

status

String

READY | BUSY READY | NOT READY | BUSY NOT READY

reason

String

The reason code if the status is NOT READY or BUSY NOT READY

description

String

The text description for this reason code.

channel.externaldispositions.updated

This event indicates that the appropriate interaction dispositions for this channel have changed.  This event contains a body of JSON that describes the dispositions.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

channel.externaldispositions.updated

Name of this event type

target

String

See generating message targets above

Event JSON

Below is an example of the JSON contained in the event message:

1{ 2 "dispositions" : 3 [ 4   { 5 "interactionDispositionId" : "<unique-id-of-disposition>", 6 "value" : "<code-or-value-of-disposition>", 7 "extensions" : [], 8      "labels" : 9      [ 10       { 11 "language" : "en", 12 "country" : "US", 13 "name" : "<name-in-language>", 14 "description" : "<description>" 15        }, 1617      ] 18 }, 1920 ] 21}