Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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:

...

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:

{

Code Block
languagejson
{
  "interaction-state" : "INTERACTION_STATE",

...


  "interaction-data" :

...

{


  {
    "DATA_KEY" : "DATA_VALUE",

...


    "DATA_KEY" :

...

{


    {
      "DATA_SUB_KEY" : "DATA_VALUE",

...

},

},

Interaction specific structures


      …
    },
    …
  },
  <Interaction specific structures>
}

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.

...

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:

Code Block

{

...

languagejson
{
  "interactionData" :

...

      [

            {


  [
    {
      "key" : "DATA_KEY",

...


      "value" : "DATA_VALUE"

...


    },

...

]


    …
  ]
}

 

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.

...

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:

Code Block
languagejson
{

...


  "interaction-data" :

...

{


  {
    "DATA_KEY" : "DATA_VALUE",

...


    "DATA_KEY" :

...

{


    {
      "DATA_SUB_KEY" : "DATA_VALUE",

...

},

},

Interaction specific structures


      …
    },
    …
  },
  <Interaction specific structures>
}

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.

...

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