The processor bridge creates a conversation destination for each call leg of a telephony interaction.  There are most two conversations per interaction: a primary conversation and an optional consult conversation.  The destination is used to monitor and control the conversation’s CTI state.  The conversation destination adds support for most telephony features:

  • Answer

  • Release (Hang up)

  • Hold/Retrieve

  • Blind Transfer

  • Blind Conference

  • Send DTMF tones

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

conversation.query.init

This query retrieves information about the conversation’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

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

conversation.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 "conversation-state" : "CONVERSATION_STATE", 3 "parties" : 4 [ 5 { 6 "number" : "PARTY_NUMBER", 7 "name" : "PARTY_NAME" 8 }, 910 ] 11}

The conversation state must one of the standard states:

  • RINGING – Inbound call is ringing waiting for agent to answer

  • DIALING – Outbound call is waiting for other party to answer

  • TALKING – The call is connected and not on hold

  • HELD – The call is connected but on hold

  • RELEASED – The call has ended, either through the agent or other party disconnecting

The parties array must be present and must contain at least one party child object.  If the conversation represents a multi-party conference, all known parties should have a party object.

Special Considerations

Any conversation related events sent to the destination remain in queue until the conversation is fully initialized.  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 conversation 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.

conversation.request.answer

Requests the client answer the inbound call and assign the interaction to this agent.  This request will not be used in most cases.  The interaction level request interaction.request.accept will be used instead.  This request is included in the API in an effort to be comprehensive.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.answer

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

conversation.request.answer

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

conversation.request.release

Requests the client disconnects from this phone call.  If this conversation is the primary call leg and the interaction is still in the ALERTING or DIALING state, the interaction level request interaction.request.reject will be issued in place of this request.  This request will be used at all other times to disconnect the call.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.release

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

conversation.request.release

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

conversation.request.removeparty

Requests the client remove the indicated party from this conference.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.removeparty

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

number

String

The number of the party to remove from conference

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

conversation.request.release

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

conversation.request.hold

Requests the client place this call on hold.  If the call is already in the HELD state, no action should be taken, and a successful response issued.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.hold

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

conversation.request.hold

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

conversation.request.retrieve

Requests the client retrieve this call from the HELD state and return to the TALKING state.  If the call is already in the TALKING state, no action should be taken, and a successful response issued

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.retrieve

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

conversation.request.retrieve

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

conversation.request.mute

Requests the client place this call on mute.  If the call is already in the MUTE state, no action should be taken, and a successful response issued.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.mute

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

conversation.request.mute

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

conversation.request.unmute

Requests the client unmute this call from the MUTE state and return to the TALKING state.  If the call is already in the TALKING state, no action should be taken, and a successful response issued

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.unmute

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

conversation.request.unmute

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

conversation.request.transfer

Requests the client blind transfer this call to the provided destination number.  The destination may be an internal extension or an external DID.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.transfer

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

destination

String

Transfer destination

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

conversation.request.transfer

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

conversation.request.conference

Requests the client blind conference the party at the provided destination number into this call.  The destination may be an internal extension or an external DID.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.conference

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

destination

String

Transfer destination

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

conversation.request.conference

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

conversation.request.senddtmf

Requests the client generate the provided digits as DTMF tones on this call.

Request Headers

Key

Value

Notes

type

cti.request

Request messages will always have this value

name

conversation.request.senddtmf

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

digits

String (0-9, *, #)

DTMF digits

Response Headers

Key

Value

Notes

type

cti.response

Response messages will always have this value

name

conversation.request.senddtmf

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

Special Considerations

Unlike most other requests, this one should not return a successful response until the tones are generated.

conversation.request.dispose

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

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

conversation.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 conversation destination.  In most cases, these events are unsolicited though may be the indirect result of executing a previously received request message.

conversation.ringing

This event indicates that this inbound call is ringing on the agent’s phone.  This is used for inbound calls only.  Outbound calls must raise the conversation.dialing client event.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.ringing

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.dialing

This event indicates that this outbound call is dialing and waiting for the called party to answer.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.dialing

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.busy

This event indicates that this outbound call has failed because the destination number is busy.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.busy

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.failed

This event indicates that this outbound call has failed due to some reason.  Most likely reasons include invalid number, number out of service, or the called party has rejected the call.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.failed

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

reason

String

Agent readable reason for failure

conversation.held

This event indicates that this call has been placed on hold.  This event should be raised regardless of why the call enters the hold state.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.held

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.mute

This event indicates that this call has been placed on mute.  This event should be raised regardless of why the call enters the mute state.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.mute

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.talking

This event indicates that this call has entered the TALKING state.  This can either be raised as a result of the agent accepting an inbound call, the called party answering an outbound call, a previously held call is retrieved, or a previously muted call is unmuted.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.talking

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.partyadded

This event indicates that a new party has been added to the call.  This event should be raised when the call is first answered and any time an additional party joins the call.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.partyadded

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

number

String

Destination number for added party

name

 

 

conversation.partyremoved

This event indicates that a party has been removed from the call.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.partyremoved

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

number

String

Destination number for removed party

conversation.started

This event indicates that the conversation has started.  This event should precede any hold, talking or ended events.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.started

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.ended

This event indicates that the conversation has ended.  This can be the result of the agent or other party disconnecting from the call.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.ended

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

None

 

 

conversation.transfer.failed

This event indicates that a previous request for a blind transfer has failed in some way.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.transfer.failed

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

reason

String

Agent readable reason for failure

conversation.conference.failed

This event indicates that a previous request for a blind conference has failed in some way.

Event Headers

Key

Value

Notes

type

cti.event

Event messages will always have this value

name

conversation.conference.failed

Name of this event type

target

String

See generating message targets above

Event Properties

Key

Value

Notes

reason

String

Agent readable reason for failure