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

  • Accept/Reject interaction

  • Complete interaction

  • Retrieve interaction data

  • Modify interaction data

As with the processor control destination, the interaction destination follows the same lifecycle of setup, initialization, and tear down.  The following figure depicts the initialization phase of an interaction 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 interaction destination and the format of any expected result messages.

interaction.query.init

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

Query Headers

Key

Value

Notes

type

cti.query

Query messages will always have this value

name

interaction.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

interaction.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 "interaction-state" : "INTERACTION_STATE", 3 "interaction-data" : 4 { 5 "DATA_KEY" : "DATA_VALUE", 6 "DATA_KEY" : 7 { 8 "DATA_SUB_KEY" : "DATA_VALUE", 910 }, 1112 }, 13 <Interaction specific structures> 14}

The interaction state must one of the standard states:

  • ALERTING – Inbound interaction is awaiting acceptance (ringing for telephony interactions)

  • DIALING – Outbound telephony interaction is waiting for other party to answer

  • STARTED – The interaction has been accepted, or the other party has answered in the case of an outbound telephony interaction

  • ENDED – The interaction has ended but has not been marked completed.  All call legs have been released for telephony interactions

  • COMPLETED – The interaction has been marked as completed

The interaction-data object must be present even if no interaction data is provided.  The overall structure of the interaction data object is platform specific, although it should generally have key/value pairs or named sets of key/value pairs.

Special Considerations

There may be additional actions taken by the processor bridge depending on the type of interaction being initialized.  Interaction type specific information and actions are defined in their respective document sections.  Any interaction 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 interaction 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.

interaction.request.accept

Requests the client accept the interaction and assign it to this agent.  The execution of this request will most likely differ depending on the type of interaction being accepted.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

interaction.request.accept

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

interaction.request.accept

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

interaction.request.reject

Requests the client rejects the interaction and places it into a state as to allow it to be offered to another available agent.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

interaction.request.reject

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

interaction.request.reject

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

interaction.request.complete

Requests the client mark this interaction as complete.  Completed is the final stage of an interaction prior to being disposed.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

interaction.request.complete

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

interaction.request.complete

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

interaction.request.getinteractiondata

This request indicates the client should send an event containing the interaction’s current set of interaction data as soon as possible.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

interaction.request.getinteractiondata

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

interaction.request.getinteractiondata

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 the agent.

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

interaction.request.changeinteractiondata

Requests the client update the interaction’s data; placing the given value under the provided key.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

interaction.request.changeinteractiondata

Name of this request type

target

String

See generating message targets above

requestId

{GUID}

Unique identifier for the orginal query

Request Body JSON

Below is an example of the JSON sent in the request message:

1{ 2 "interactionData" : 3  [ 4   { 5 "key" : "DATA_KEY", 6 "value" : "DATA_VALUE" 7    }, 89 ] 10}

 

For multi-depth structures, the data.key will be '.' delimited starting at the root key name and having the updated key in the final segment.

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

interaction.request.changeinteractiondata

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

interaction.request.setdisposition

Requests the client update the interaction’s disposition.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

interaction.request.setdisposition

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

disposition

String

Disposition of the interaction

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

interaction.request.setdisposition

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

interaction.request.dispose

Notifies the client that the processor bridge is ready to dispose of the interaction 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

interaction.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

interaction.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

Client Events

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

interaction.started

This event indicates that the interaction has been accepted and assigned to the agent.  In the case of telephony interactions, this event means the agent has answered an inbound call or the called party has answered the outbound call.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

interaction.started

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

interaction.interactiondatachanged

This event indicates that the interaction’s data has changed.  The event message contains the full set of interaction data in JSON.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

interaction.interactiondatachanged

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 "interaction-data" : 3 { 4 "DATA_KEY" : "DATA_VALUE", 5 "DATA_KEY" : 6 { 7 "DATA_SUB_KEY" : "DATA_VALUE", 89 }, 1011 }, 12 <Interaction specific structures> 13}

The interaction-data object must be present even if no interaction data is provided.  The overall structure of the interaction data object is platform specific, although it should generally have key/value pairs or named sets of key/value pairs.

interaction.ended

This event indicates that the interaction has ended but is not marked complete.  Although this event is defined at the generic interaction level, it usually only pertains to telephony and Unify callback type interactions.  Multimedia interactions can be marked completed directly from the started state.  However, telephony and Unify callback interactions must reach the ended state before they may be marked complete.  The only exception is that an interaction that is rejected will generate this event regardless of interaction type.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

interaction.ended

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

interaction.completed

This event indicates that the interaction has been marked completed.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

interaction.completed

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None