Versions Compared

Key

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

...

During session initialization, the interaction processor determines the agent's current state within the underlying CTI platform.  If the agent already has active channels, interactions, or conversations, those objects will be created within the session resource and events about their current state will be sent to the client.  Regardless of any additional events generated during initialization, the session.initialized event will always be generated when the process is complete.

session.request.logout

The client sends this session management request to indicate that the session should end and all associated objects should be released.  The interaction processor should not respond to this request until the logout process has completed.

...

Code Block
languagejson
{
  "command": "session.request.logout",
  "target": "<session-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "session.request.logout",
  "target": "<session-id>",
  "result": "success"
}

...

Code Block
languagejson
{
  "command": "session.request.logout",
  "target": "<session-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Logging out of a session should not generate any secondary events.  The session should be completely inert once the process is complete and a success is returned.

session.request.addchannel

Adds a standalone channel to this agent session.  The type of channel to be added is provided in the "data" property.  The endpoint (i.e. extension for telephony) for the channel is also included in the "data" property.

...

Code Block
languagejson
{
  "command": "session.request.addchannel",
  "target": "<session-id>",
  "data":
  {
    "channel":
    {
      "endpoint": "<CTI-channel-identifier>",
      "type": "Telephony | Chat | Email"
    }
  }
}

...

Code Block
languagejson
{
  "command": "session.request.addchannel",
  "target": "<session-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "session.request.addchannel",
  "target": "<session-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channel.created

  • state.updated (channel state event)

  • channel.initialized

session.request.removechannel

Removes a previously added standalone channel from this agent session.  The channel will automatically be deactivated if it is still active.  A failure is generated if the channel has an active interaction or cannot be deactivated before being removed from the session.

...

Code Block
languagejson
{
  "command": "session.request.removechannel",
  "target": "<session-id>",
  "data":
  {
    "channel":
    {
      "id": "<channel-identifier>"
    }
  }
}

...

Code Block
languagejson
{
  "command": "session.request.removechannel",
  "target": "<session-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "session.request.removechannel",
  "target": "<session-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channel.infochanged (If still active)

  • state.updated (channel state event, if still active)

  • channel.disposed

session.request.addchannelgroup

Adds a channel group to this agent session.  All channels associated with the given group will then be added to the group during the initialization phase.  The channel group to add is identified in the "data" property of the request.

...

Code Block
languagejson
{
  "command": "session.request.addchannelgroup",
  "target": "<session-id>",
  "data":
  {
    "channelgroup":
    {
      "name": "<CTI-channel-group-identifier>",
      "chat": true | false,
      "email": true | false,
      "callback": true | false
    }
  }
}

...

Code Block
languagejson
{
  "command": "session.request.addchannelgroup",
  "target": "<session-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "session.request.addchannelgroup",
  "target": "<session-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channelgroup.created

  • state.updated (channel group state event)

  • channel.created (for each associated channel)

  • state.updated (channel state event)

  • channel.initialized

  • channelgroup.initialized

session.request.removechannelgroup

Removes a previously added channel group and its associated channels from this agent session.  Associated channels will automatically be deactivated if they are still active.  A failure is generated if an associated channel has an active interaction or cannot be deactivated before being removed from the group.

...

Code Block
languagejson
{
  "command": "session.request.removechannelgroup",
  "target": "<session-id>",
  "data":
  {
    "channel":
    {
      "id": "<channel-group-identifier>"
    }
  }
}

...

Code Block
languagejson
{
  "command": "session.request.removechannelgroup",
  "target": "<session-id>,
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "session.request.removechannelgroup",
  "target": "<session-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Code Block
languagejson
{
  "command": "session.request.incontact.addressbook.stop",
  "target": "<session-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

Secondary Events

None.

channelgroup.request.activateall

Attempts to place all channels associated with the channel group into activated status.  Channels that are already activated will be unaffected by this request.  A failure is generated if one of the channels cannot be activated for some reason.  Any channels that were already activated during this request will remain active after a failure but remaining channels will not be activated.

...

Code Block
languagejson
{
  "command": "channelgroup.request.activateall",
  "target": "<session-id>.<channel-group-id>",
  "data":
  {
    "channeloptions":
    [
      {
        "id": "<channel-identifier>",
        "queue": "<channel-queue>"
      }
      …
    ]
  }
}

...

Code Block
languagejson
{
  "command": "channelgroup.request.activateall",
  "target": "<session-id>.<channel-group-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "channelgroup.request.activateall",
  "target": "<session-id>.<channel-group-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channel.infochanged (for each associated channel If not active)

  • state.updated (channel state event, if not active)

channelgroup.request.deactivateall

Attempts to place all channels associated with the channel group into inactive status.  Channels that are already inactive will be unaffected by this request.  A failure is generated if one of the channels cannot be deactivated for some reason.  Any channels that were already deactivated during this request will remain inactive after a failure but remaining channels will not be deactivated.

...

Code Block
languagejson
{
  "command": "channelgroup.request.deactivateall",
  "target": "<session-id>.<channel-group-id>",
  "data":
  {
  }
}

...

Code Block
languagejson
{
  "command": "channelgroup.request.deactivateall",
  "target": "<session-id>.<channel-group-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "channelgroup.request.deactivateall",
  "target": "<session-id>.<channel-group-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channel.infochanged (for each associated channel If active)

  • state.updated (channel state event, if active)

channel.request.activate

Attempts to place the given channel into activated status.  A failure is generated if the channel cannot be activated or is already in the active state.  The "data" property should carry any CTI specific activation parameters within the "channeloptions" property.

...

Code Block
languagejson
{
  "command": "channel.request.activate",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "data":
  {
    "channeloptions":
    {
      "queue": "<channel-queue>"
    }
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.activate",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.activate",
  "target": "<session-id>.<channel-id>" | "<session-id>.<channel-group-id>.<channel-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channel.infochanged

  • state.updated

channel.request.deactivate

Attempts to place the channel into inactive status.  A failure is generated if the channel cannot be deactivated for some reason or is already in the inactive state.

...

Code Block
languagejson
{
  "command": "channel.request.deactivate",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "data":
  {
    "channelOptions":
    {
      "queue": "<optional list of queues that are being deactivated>",
      "reason": "<optional numerical code for logout reason>"
    }
  }
}

...

Code Block
{
  "command": "channel.request.deactivate",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.deactivate",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channel.infochanged

  • state.updated

channel.request.ready

Attempts to place the agent into ready status on the given channel.  A failure is generated if the channel is not already in the active state or if the agent cannot be made ready on that channel.

...

Code Block
languagejson
{
  "command": "channel.request.ready",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "channel.request.ready",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.ready",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • channel.infochanged

  • state.updated

channel.request.notready

Attempts to place the agent into not ready status on the given channel.  The "reasoncode" and "reasondesc" properties of the "data" request structure control the type of not ready status the agent enters.  The "reasoncode" property is required and should map to the CTI specific configuration for that agent.  The "reasondesc" property is informational is not required.  A special reason code of "acw" can be used to enter the After Call Work mode offered by many CTI platforms.  A failure is generated if the channel is not already in the active state or if the agent cannot be made not ready on that channel.

...

Code Block
languagejson
{
  "command": "channel.request.notready",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "data":
  {
    "reasoncode": "acw | <CTI-reason-code>",
    "reasondesc": "<Descriptive text>"
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.notready",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.notready",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Telephony and Multimedia Requests and Responses

channel.request.dial (Telephony only)

Attempts to place an outbound call using the given telephony channel.  The "destination" property of the "data" request property contains the number to be dialed.  A failure is generated if the channel is not already in the active state or if the outbound call cannot be initiated for some reason.  The extensions object can be empty or missing if not applicable to the current request.

...

Code Block
languagejson
{
  "command": "channel.request.dial",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "data":
  {
    "destination": "<number-to-dial>",
    "extensions":
    {
      <platform-specific-extensions>
    }
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.dial",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.dial",
  "target": "<session-id>.<channel-id>" |
  "<session-id>.<channel-group-id>.<channel-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Code Block
languagejson
{
  "command": "channel.request.dial",
  "target": "<session-id>.<channel-id>" | "<session-id>.<channel-group-id>.<channel-id>",
  "result": "needinfo",
  "uiExtension":
  {
    "id": "inContact.outboundskill",
    "skills":
    [
      {
        "id": "<skill_id>",
        "skillName": "<skill_name>"
      }
    ]
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Signaling a script can have any number of side-effects. There may be changes to the call state or the results might be completely hidden from the agent.

interaction.request.accept (Telephony and Multimedia)

Accepts an alerting interaction.  A new interaction, whether from an inbound call or multimedia contact, will generate an "interaction.preview" event.  However, the interaction is still not officially assigned to the agent.  The agent must accept the interaction before it is assigned.  Although this request can be used to accept in inbound phone call, it is recommended for clients to use the telephony specific "conversation.answer" request instead.  A failure is generated if the interaction cannot be assigned to the agent.

...

Code Block
languagejson
{
  "command": "interaction.request.accept",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "interaction.request.accept",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.accept",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • interaction.screenpop

  • state.updated (interaction state event)

interaction.request.reject (Telephony and Multimedia)

Rejects an alerting interaction.  A new interaction, whether from an inbound call or multimedia contact, will generate an "interaction.preview" event.  However, the interaction is still not officially assigned to the agent.  The agent reject the interaction before it is assigned allowing another agent to handle the interaction.  Although this request can be used to reject in inbound phone call, it is recommended for clients to use the telephony specific "conversation.request.release" request instead.  A failure is generated if the agent cannot reject the interaction.

...

Code Block
languagejson
{
  "command": "interaction.request.reject",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "interaction.request.reject",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.reject",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • interaction.ended

  • state.updated (interaction state event)

interaction.request.setinteractiondata (Telephony and Multimedia)

Attempts to add or modify the call data of an interaction.  The "key" and "value" properties of the "data" request property hold the name of the data item and its value.  If the key already exists, the current value is overwritten with the new value.  If the key does not exist, it is added to the call data.  A failure is generated if the interaction call data cannot be updated for some reason.

...

Code Block
languagejson
{
  "command": "interaction.request.setinteractiondata",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data":
  {
    "key": "[name-of-data-item]",
    "value": "[value-of-data-item]"
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.setinteractiondata",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.setinteractiondata",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.setdisposition",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data":
  {
    "disposition": "[disposition-text]"
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.setdisposition",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.setdisposition",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Modifying the interaction disposition does not generate any secondary events.

interaction.request.complete (Telephony and Multimedia)

Marks the interaction complete indicating no additional work is required by the agent.  A failure is generated if the agent cannot reject the interaction.  Multimedia interactions can be completed at any time after being accepted.  All conversations of a telephony interaction must have ended before the interaction can be completed.

...

Code Block
languagejson
{
  "command": "interaction.request.complete",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "interaction.request.complete",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.complete",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • interaction.complete

  • state.updated (interaction state event)

  • interaction.disposed

interaction.request.consult (Telephony only)

Places the current call on hold and attempts to place a second outbound call under the same interaction.  The "destination" property of the "data" request property contains the number to be dialed.  A failure is generated if the interaction has not started or if the outbound call cannot be initiated for some reason.

...

Code Block
languagejson
{
  "command": "interaction.request.consult",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data":
  {
    "destination": "[number-to-dial]"
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.consult",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.consult",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (interaction state event)

  • state.updated (conversation state event, original call)

  • conversation.created

  • state.updated (conversation state event, new call)

  • conversation.member.added

  • conversation.initialized

  • interaction.focuschanged

interaction.request.alternate (Telephony only)

Places the current talking party on hold and retrieves the other held party.  A failure is generated if a consult call is not connected.

...

Code Block
languagejson
{
  "command": "interaction.request.alternate",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "interaction.request.alternate",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.alternate",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (conversation state event, original call)

  • state.updated (conversation state event, consult call)

  • interaction.focuschanged

interaction.request.consulttransfer (Telephony only)

Attempts to transfer the original call party to the consult call party.  If successful, both conversations will end for this agent and the two parties will be connected together.  A failure is generated if a consult call is not connected or the call cannot be transferred.

...

Code Block
languagejson
{
  "command": "interaction.request.consulttransfer",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "interaction.request.consulttransfer",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.consulttransfer",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (conversation state event, original call)

  • conversation.disposed (original call)

  • interaction.focuschanged

  • state.updated (conversation state event, consult call)

  • conversation.disposed (consult call)

  • interaction.ended

interaction.request.consultconference (Telephony only)

Attempts to conference the consult call party into the original call.  If successful, both parties will be in conference together.  A failure is generated if a consult call is not connected or the call cannot be conferenced.

...

Code Block
languagejson
{
  "command": "interaction.request.consultconference",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "interaction.request.consultconference",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "interaction.request.consultconference",
  "target": "<session-id>.<channel-id>.<interaction-id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (interaction state event)

conversation.request.answer (Telephony only)

Answers an inbound phone call.  This request also assigns the interaction to the agent as if "interaction.accept" were used.  A failure is generated if the call cannot be answered.

...

Code Block
languagejson
{
  "command": "conversation.request.answer",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "conversation.request.answer",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.answer",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (conversation state event)

  • interaction.screenpop

  • state.updated (interaction state event)

conversation.request.release (Telephony only)

Disconnects the agent from an active phone call.  If a two-party call is released both the agent and other party are disconnected.  If a multi-party conference is released, only the agent is removed from conference while the remaining parties stay in conference.  A failure is generated if the call cannot be disconnected.

...

Code Block
languagejson
{
  "command": "conversation.request.release",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "conversation.request.release",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.release",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (conversation state event)

  • conversation.disposed

  • interaction.ended (if only conversation is released)

  • state.updated (interaction state event)

conversation.request.hold (Telephony only)

Places the target conversation on hold.  A failure is generated if the call cannot be held.

...

Code Block
languagejson
{
  "command": "conversation.request.hold",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "conversation.request.hold",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.hold",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (conversation state event)

conversation.request.retrieve (Telephony only)

Retrieves the target conversation from hold.  A failure is generated if the call cannot be retrieved.

...

Code Block
languagejson
{
  "command": "conversation.request.retrieve",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "data": {}
}

...

Code Block
languagejson
{
  "command": "conversation.request.retrieve",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.retrieve",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (conversation state event)

conversation.request.mute (Telephony only)

Places the target conversation on mute.  A failure is generated if the call cannot be muted.

...

  • state.updated (conversation state event)

conversation.request.unmute (Telephony only)

Unmutes the target conversation.  A failure is generated if the call cannot be unmuted.

...

  • state.updated (conversation state event)

conversation.request.senddtmf (Telephony only)

Generates DTMF tones to the other parties on a call.  The request is used to produce DTMF tones for navigating automated systems using the client interface.  A failure is generated if DTMF cannot be sent.

...

Code Block
languagejson
{
  "command": "conversation.retrieverequest.senddtmf",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "data":
  {
    "digits": "<numbers-between-0-9-or-*-#>"
  }
}

Success Response

Code Block
languagejson
{
  "command": "conversation.retrieverequest.senddtmf",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.retrievesenddtmf",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

Sending DTMF tones does not generate any secondary events.

conversation.request.blindtransfer (Telephony only)

Attempts to transfer the call to the given destination.  The call will be disconnected from the agent regardless of whether it is successful.  A failure is generated if the call cannot be transferred.

...

Code Block
languagejson
{
  "command": "conversation.request.blindtransfer",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "data":
  {
    "destination": "[number-to-dial]"
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.blindtransfer",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.blindtransfer",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...

  • state.updated (conversation state event, original call)

  • conversation.disposed (original call)

  • interaction.focuschanged

  • interaction.ended (if only one call was active)

conversation.request.blindconference (Telephony only)

Attempts to conference the party at the given destination into the original call.  If successful, both parties will be in conference together.  A failure is generated if the call cannot be conferenced.

...

Code Block
languagejson
{
  "command": "conversation.request.blindconference",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "data":
  {
    "destination": "[number-to-dial]"
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.blindconference",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "success",
  "data":
  {
    <Same data contents as original request>
  }
}

...

Code Block
languagejson
{
  "command": "conversation.request.blindconference",
  "target": "<session-id>.<channel-id>.<interaction-id>.<conversation.id>" | "<session-id>.<channel-group-id>.<channel-id>.<interaction-id>.<conversation.id>",
  "result": "failure",
  "failure":
  {
    "code": "<error-code-for-failure>",
    "message": "<error-message>",
    "context": "<stack-trace-if-applicable>"
  },
  "original":
  {
    <Contains the original request JSON structure>
  }
}

...