Agent and Engagement Events

Agent and Engagement Events 1.0.1 documentation

Contact Center Agent and Engagement events are available for the streaming needs of client applications via websockets. The Notification API facilitates subscribing to different families of events and transport protocols (Websockets and Webhooks). Agent & Engagement are one of these available families.
This following focuses on the websocket implementation of Agent and Engagement events.

Create Subscription

The example provided below will create a subscription for a WebSocket stream of Agent & Engagement events. Upon a successful response a transport endpoint URL will be provided for the WebSocket interface to connect and begin consuming events from.

  POST https://{{CCaaS_FQDN}}/api/notification/v1/accounts/{accountId}/subscriptions
  Content-Type: application/json
  Accept: application/json
  Header: Authorization: Bearer {{token}}

Request Body:

    {
      "family": "AGENT_ENGAGEMENT",
      "events": ["ALL"],
      "transport": {
        "type": "WEBSOCKET"
      }
    }

Response:

    {
      "subscriptionId": "fdbec917-e76e-4645-8120-4eac46f29487",
      "createdAt": "2020-08-01T14:25:23.162Z",
      "expiresAt": "2020-08-01T15:25:23.177Z",
      "expiresIn": 900,
      "status": "ACTIVE",
      "family": "AGENT_ENGAGEMENT",
      "events": [
        "ALL"
      ],
      "transport": {
        "type": "WEBSOCKET",
        "endpoint": "wss://uk.cc.avayacloud.com/ws/notification/v1/agent-engagement",
        "pingInterval": 300
      }
    }

As you have seen above agent and engagement events are subscribed to via the Notification API. In choosing WEBSOCKET as the transport option these events are then consumed through a WebSocket connection. The events are contained within JSON that makes up the payload of the WebSocket messages.
The following section shows how to use the Websocket interface.

Table of Contents

Servers

production Server

URLProtocolDescription
wss://{server}:{port}/ws/notificationwssAfter connection to the websocket a new session is created.

URL Variables

NameDefault valuePossible valuesDescription
serverHOST-REGION.avayacloud.comAny-
port443443Secure connection (TLS) is available through port 443.

Security Requirements

TypeInNameSchemeFormatDescription
oauth2-----

Channels

/v1/agent-engagement Channel

publish Operation

Upon creating a subscription and connecting to the WebSocket endpoint you will need to send a message to the server confirming you are authenticated before any notification events will be sent. This token must be obtained from the A&A service.

NOTE: For further details and code examples please refer to: How to Authenticate with Avaya Experience Platform™ APIs

Accepts one of the following messages:

Message authentication

The first message the client should send to server after establishing the connection must be an authentication message.

Payload
NameTypeDescriptionAccepted values
event (required)stringauthentication - A constant parameter.Any
subscriptionId (required)stringThe unique id of the subscription.Any
token (required)stringThe access token string as issued by the authorization server.Any

Examples of payload (generated)

{
  "event": "authentication",
  "subscriptionId": "fdbec917-e76e-4645-8120-4eac46f29487",
  "token": "7e0cd42a22b451701fg29c3bde214…"
}
Tags
  • Authentication
Message ping

Client must send ping to the server in order to determine whether connection is alive, server responds with pong.
The ping is also used to keep the websocket connection alive, by keep sending ping messages every pingInterval time to the server.

It is recommended the client send ping more frequently (every 30 seconds) to preclude any proxies from closing the connection.

Payload
NameTypeDescriptionAccepted values
event (required)stringping - A constant parameter.Any
subscriptionIdstringOptional. The id of the subscription.Any

Examples of payload

pingMessage

Example of an ping message to server.

{
  "event": "ping"
}
Tags
  • Heartbeat

subscribe Operation

Notification messages that you receive from the server

Accepts one of the following messages:

Message notification

Notification event consumed over the WebSocket connection

Specification
This Async Specification details all the Agent and Engagement Events and structure
asyncapi: 2.1.0
info:
  title: Agent and Engagement Events
  version: 1.0.2
  description: >
    Contact Center Agent and Engagement events are available for the streaming needs of client applications via websockets. The Notification API facilitates subscribing to different families of events and transport protocols (Websockets and Webhooks). Agent & Engagement are one of these available families.

    This following focuses on the websocket implementation of Agent and Engagement events.

    ### Create Subscription

    The example provided below will create a subscription for a WebSocket
    stream of Agent & Engagement events. Upon a successful response a
    transport endpoint URL will be provided for the WebSocket interface to
    connect and begin consuming events from.

    ```
      POST https://{{CCaaS_FQDN}}/api/notification/v1/accounts/{accountId}/subscriptions
      Content-Type: application/json
      Accept: application/json
      Header: Authorization: Bearer {{token}}
    ```
      Request Body:

    ```json
        {
          "family": "AGENT_ENGAGEMENT",
          "events": ["ALL"],
          "transport": {
            "type": "WEBSOCKET"
          }
        }
    ```

      Response:

    ```json
        {
          "subscriptionId": "fdbec917-e76e-4645-8120-4eac46f29487",
          "createdAt": "2020-08-01T14:25:23.162Z",
          "expiresAt": "2020-08-01T15:25:23.177Z",
          "expiresIn": 900,
          "status": "ACTIVE",
          "family": "AGENT_ENGAGEMENT",
          "events": [
            "ALL"
          ],
          "transport": {
            "type": "WEBSOCKET",
            "endpoint": "wss://uk.cc.avayacloud.com/ws/notification/v1/agent-engagement/DYNNUG/fdbec917-e76e-4645-8120-4eac46f29487",
            "pingInterval": 300
          }
        }
    ```


    As you have seen above agent and engagement events are subscribed to via the
    Notification API. In choosing WEBSOCKET as the transport option these
    events are then consumed through a WebSocket connection. The events are
    contained within JSON that makes up the payload of the WebSocket messages.

    The following section shows how to use the Websocket interface.
  contact:
    name: Avaya API Team
    url: 'https://developers.avayacloud.com/onecloud-ccaas'
    email: [email protected]
  license:
    name: Avaya Software Development Kit (SDK) Software License Terms
    url: 'http://support.avaya.com/css/P8/documents/101038288'
tags:
  - name: Agent and Engagement Data
    description: >
      Realtime notification events are subscribed to via the Agent and Engagement API. The events are contained within JSON that makes up the payload of the WebSocket messages.
  - name: Heartbeat
    description: >
      Websocket messages used for heartbeat.
  - name: Authentication
    description: >
      Authentication related messages.
servers:
  production:
    url: wss://{server}:{port}/ws/notification
    protocol: wss
    description: |
      After connection to the websocket a new session is created.
    security:
      - apiKey: []
    variables:
      server:
        default: HOST-REGION.avayacloud.com
      port:
        description: Secure connection (TLS) is available through port 443.
        default: '443'
        enum:
          - '443'
defaultContentType: application/json
channels:
  /v1/agent-engagement:
    publish:
      description: >
        Upon creating a subscription and connecting to the WebSocket endpoint
        you will need to send a message to the server confirming you are
        authenticated before any notification events will be sent.  This token
        must be obtained from the A&A service.


        **NOTE:**  For further details and code examples please refer to:
        https://developers.avayacloud.com/onecloud-ccaas/docs/how-to-authenticate-with-ccaas-apis#acquiring-tokens
      operationId: authenticationMessage
      message:
        oneOf:
          - $ref: '#/components/messages/authentication'
          - $ref: '#/components/messages/ping'
    subscribe:
      description: Notification messages that you receive from the server
      operationId: notificationMessage
      message:
        oneOf:
          - $ref: '#/components/messages/notification'
          - $ref: '#/components/messages/pong'
          - $ref: '#/components/messages/authenticationResponse'
components:
  messages:
    authentication:
      name: authentication
      title: Authentication Message
      description: The first message the client should send to server after establishing the connection must be an authentication message.
      contentType: application/json
      tags:
        - name: Authentication
      payload:
        $ref: '#/components/schemas/Authentication'
      x-response:
        $ref: '#/components/schemas/AuthenticationResponse'
    notification:
      name: notification
      title: Agent and Engagement Message
      description: Notification event consumed over the WebSocket connection
      contentType: application/json
      tags:
        - name: Agent and Engagement Data
      payload:
        $ref: '#/components/schemas/Notification'
    ping:
      description: |
        Client must send ping to the server in order to determine whether connection is alive, server responds with pong.
        The ping is also used to keep the websocket connection alive, by keep sending _ping_ messages every _pingInterval_ time to the server.


        It is recommended the client send ping more frequently (every 30 seconds) to preclude any proxies from closing the connection.
      tags:
        - name: Heartbeat
      payload:
        $ref: '#/components/schemas/Ping'
      examples:
        - name: pingMessage
          summary: Example of an ping message to server.
          payload:
            event: 'ping'
    pong:
      description: Server pong response to a ping message.
      tags:
        - name: Heartbeat
      payload:
        $ref: '#/components/schemas/Pong'
      examples:
        - name: pongMessage
          summary: Example of a pong message to client.
          payload:
            event: 'pong'
    authenticationResponse:
      description: Authentication response message sent to the client after websocket authentication.
      tags:
        - name: Authentication
      payload:
        $ref: '#/components/schemas/AuthenticationResponse'
  schemas:
    Authentication:
      type: object
      additionalProperties: false
      properties:
        event:
          description:  authentication - A constant parameter.
          type: string
          const: authentication
        subscriptionId:
          type: string
          description: The unique id of the subscription.
        token:
          type: string
          description: The access token string as issued by the authorization server.
      required:
        - event
        - subscriptionId
        - token
      example:
        event: authentication
        subscriptionId: fdbec917-e76e-4645-8120-4eac46f29487
        token: 7e0cd42a22b451701fg29c3bde214…
    AuthenticationResponse:
      type: object
      additionalProperties: false
      properties:
        event:
          description:  authenticationResponse - A constant parameter.
          type: string
          const: authenticationResponse
        status:
          type: string
          enum:
            - CONNECTION_CONFIRMED
            - CONNECTION_FAILED_INVALID_TOKEN
            - CONNECTION_FAILED_UNKNOWN_SUBSCRIPTION
            - CONNECTION_FAILED_INTERNAL_SERVER_ERROR
            - CONNECTION_FAILED_CONSTRAINT_VIOLATION
          description: |
            You will then receive 1 of 5 statuses:
              - CONNECTION_CONFIRMED: Connection was confirmed
              - CONNECTION_FAILED_INVALID_TOKEN: Authentication token is invalid
              - CONNECTION_FAILED_UNKNOWN_SUBSCRIPTION: Unknown Subscription, can be for a subscription that never existed or one that is no longer active
              - CONNECTION_FAILED_INTERNAL_SERVER_ERROR: Server Error, client can retry later
              - CONNECTION_FAILED_CONSTRAINT_VIOLATION: Client issue, malformed client request, client must update payload and rerty
        subscriptionId:
          type: string
          description: The unique id of the subscription.
        pingInterval:
          type: integer
          format: int64
          description: |
            The maximum interval (seconds) at which a ping is expected to be sent by the client before websocket is closed and subscription set to INACTIVE.

            It is recommended the client send ping more frequently (every 30 seconds) to preclude any proxies from closing the connection.
        expiresInterval:
          type: integer
          format: int64
          description: Expiration interval in seconds before the subscription is set to INACTIVE.
      example:
        event: authenticationResponse
        status: CONNECTION_CONFIRMED
        subscriptionId: fdbec917-e76e-4645-8120-4eac46f29487
        pingInterval: 300
        expiresInterval: 900
    Notification:
      type: object
      additionalProperties: false
      properties:
        correlationId:
          type: string
          description: The unique ID of the notification being sent
        subscriptionId:
          type: string
          description: The unique ID of the Agent and Engagement subscription
        family:
          type: string
          description: The family of events the subscription is for
        sentAt:
          type: string
          description: Datetime (in ISO 8601 format) of when the notification event was sent
          format: datetime
        accountId:
          type: string
          description: >-
            The unique identifier for the Account.
        loginId:
          description: >
            The unique login handle for the Agent.

            *NOTE* Only present on Agent related events
          type: string
        initiatingLoginId:
          description: >
            The unique login handle for the Agent initiating a transfer.

            *NOTE* Only present on Single Step Transfer related events
          type: string
        destinationLoginId:
          description: >
            The unique login handle for the Agent the transfer is being made to.

            *NOTE* Only present on Single Step Transfer to User related events
          type: string
        observedLoginId:
          description: >
            The unique login handle for the observed Agent.
            
            *NOTE* Only present on Agent Participant Observing related events
          type: string
        observingLoginId:
          description: >
            The unique login handle for the observing Supervisor.
            
            *NOTE* Only present on Agent Participant Observing related events
          type: string
        coachedLoginId:
          description: >
            The unique login handle for the coached Agent.
            
            *NOTE* Only present on Agent Participant Coaching related events
          type: string
        coachingLoginId:
          description: >
            The unique login handle for the coaching Supervisor.
            
            *NOTE* Only present on Agent Participant Coaching related events
          type: string
        bargingLoginId:
          description: >
            The unique login handle for the barging Supervisor.
            
            *NOTE* Only present on Agent Participant Barged related events
          type: string
        body:
          $ref: '#/components/schemas/NotificationBody'
      example:
        correlationId: a425851d-5225-4b76-8ca0-4fa31ecfd5db
        subscriptionId: fdbec917-e76e-4645-8120-4eac46f29487
        family: AGENT_ENGAGEMENT
        sentAt: "2020-08-24T08:20:23.395Z"
        accountId: DYNNUG
        loginId: [email protected]
        body:
          event: AgentState
          agentId: 4a785201-73b8-4842-abf7-36f5e572d310
          profileId: HomeProfile
          state: NOT_READY
          reasonCode: 514
          cause: RONA
          id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
          timestamp: 9223372036854776000
    NotificationBody:
      type: object
      discriminator: event
      description: The raw event payload that will be different based on the event.
      properties:
        event:
          type: string
          description: The name of the specific event being sent. For instance AgentState, AgentParticipant, InboundEngagementCreated, etc...
      oneOf:
        - $ref: '#/components/schemas/AgentState'
        - $ref: '#/components/schemas/AgentParticipant'
        - $ref: '#/components/schemas/AutomationParticipant'
        - $ref: '#/components/schemas/ExternalParticipant'
        - $ref: '#/components/schemas/EngagementPrerouted'
        - $ref: '#/components/schemas/InboundEngagementCreated'
        - $ref: '#/components/schemas/MatchOffered'
        - $ref: '#/components/schemas/OutboundEngagementCreated'
        - $ref: '#/components/schemas/SingleStepTransfer'
        - $ref: '#/components/schemas/SingleStepTransferError'
        - $ref: '#/components/schemas/ChannelReady'
        - $ref: '#/components/schemas/AfterContactWorkActivated'
        - $ref: '#/components/schemas/AfterContactWorkCompleted'
    AgentState:
      type: object
      additionalProperties: false
      properties:
        agentId:
          $ref: '#/components/schemas/AgentId'
        profileId:
          type: string
          description: >-
            The profile ID used to login the agent.  The profile
            indicates what channels should be logged in.
        state:
          type: string
          description: >-
            The current state of the agent.
          enum:
            - LOGGED_IN
            - LOGGED_OUT
            - READY
            - NOT_READY
        reasonCode:
          type: string
          description: The reason code for going not ready. Only for AGENT_NOT_READY state
        cause:
          type: string
          description: The cause of the agent not being ready. Only for AGENT_NOT_READY state
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        agentId: 4a785201-73b8-4842-abf7-36f5e572d310
        profileId: HomeProfile
        state: NOT_READY
        reasonCode: 514
        cause: RONA
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    AgentParticipant:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        connectionId:
          $ref: '#/components/schemas/ConnectionId'
        action:
          type: string
          description: >-
            The agent participant action
          enum:
            - ADDED
            - HELD
            - UNHELD
            - INVITED
            - REMOVED
            - MOVED
            - OBSERVING
            - COACHING
            - BARGEDIN
        agentId:
          $ref: '#/components/schemas/AgentId'
        previousDialogId:
          type: string
          description: The unique identifier for the previous dialog the agent was a part of. Only for MOVED action
        dialogId:
          $ref: '#/components/schemas/DialogId'
        extension:
          $ref: '#/components/schemas/Extension'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        providerEngagementId:
          $ref: '#/components/schemas/ProviderEngagementId'
        agentInitiatedDisconnect:
          type: boolean
          description: An indication if the agent initiated disconnect from the dialog. Only for REMOVED action
        observedAgentId:
          type: string
          description: The unique identifier for the observed agent. Only for OBSERVING action
        observingAgentId:
          type: string
          description: The unique identifier for the observing agent. Only for OBSERVING action
        observingAgentConnectionId:
          type: string
          description: The unique identifier for this appearance of the observing participant on this engagement. Only for OBSERVING action
        observedAgentConnectionId:
          type: string
          description: The unique identifier for this appearance of the participant already on this engagement. Only for OBSERVING action
        coachingAgentId:
          type: string
          description: The unique identifier for the coaching agent. Only for COACHING action
        coachedAgentId:
          type: string
          description: The unique identifier for the coached agent. Only for COACHING action
        coachingAgentConnectionId:
          type: string
          description: The unique identifier for this appearance of the coaching participant on this engagement. Only for COACHING action
        coachedAgentConnectionId:
          type: string
          description: The unique identifier for this appearance of the participant already on this engagement. Only for COACHING action
        bargingAgentId:
          type: string
          description: The unique identifier for the barging in agent. Only for BARGEDIN action
        bargingAgentConnectionId:
          type: string
          description: the unique identifier for this appearance of the participant barging in to this engagement. Only for BARGEDIN action
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        connectionId: b2bcbf1e-905b-4164-bab5-6efcde49933b
        action: ADDED
        agentId: 4a785201-73b8-4842-abf7-36f5e572d310
        dialogId: 01005000281645486013
        extension: 8010017
        channelId: Voice
        providerEngagementId: 00001084011532384922
        agentInitiatedDisconnect: false
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    AutomationParticipant:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        automationParticipantId:
          $ref: '#/components/schemas/AutomationParticipantId'
        action:
          type: string
          description: >-
            The automation participant action
          enum:
            - ADDED
            - REMOVED
        dialogId:
          $ref: '#/components/schemas/DialogId'
        automationType:
          $ref: '#/components/schemas/AutomationType'
        connectionId:
          $ref: '#/components/schemas/ConnectionId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        providerEngagementId:
          $ref: '#/components/schemas/ProviderEngagementId'
        automationInitiatedDisconnect:
          $ref: '#/components/schemas/AutomationInitiatedDisconnect'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        automationParticipantId: AvayaVoiceIVR
        action: ADDED
        dialogId: 01005000281645486013
        automationType: SELF_SERVICE
        connectionId: d2775626-66d4-459b-8147-09ea4b98c370
        channelId: Voice
        providerEngagementId: 00001084011532384922
        automationInitiatedDisconnect: false
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    ExternalParticipant:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        externalParticipantId:
          $ref: '#/components/schemas/ExternalParticipantId'
        action:
          type: string
          description: >-
            The external participant action
          enum:
            - ADDED
            - REMOVED
            - INVITED
        connectionId:
          $ref: '#/components/schemas/ConnectionId'
        dialogId:
          $ref: '#/components/schemas/DialogId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        providerEngagementId:
          $ref: '#/components/schemas/ProviderEngagementId'
        externalParticipantInitiatedDisconnect:
          type: boolean
          description: An indication if the external participant (aka the Customer) initiated disconnect from the dialog
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        externalParticipantId: +35395554321
        action: ADDED
        connectionId: b2bcbf1e-905b-4164-bab5-6efcde49933b
        dialogId: 01005000281645486013
        channelId: Voice
        providerEngagementId: 00001084011532384922
        externalParticipantInitiatedDisconnect: true
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    EngagementPrerouted:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        dialogId:
          $ref: '#/components/schemas/DialogId'
        orchestrationFlow:
          $ref: '#/components/schemas/OrchestrationFlow'
        attributes:
          $ref: '#/components/schemas/Attributes'
        attributeList:
          type: array
          description: >
            A simplified flat list of attributes

            *NOTE* this flat array of attributes will help to easily identify “System.Outbound” to represent a POM call
          items:
            type: string
        engagementParameters:
          $ref: '#/components/schemas/EngagementParameters'
        agentRoutingStrategy:
          $ref: '#/components/schemas/AgentRouting'
        adhocEmail:
          type: boolean
          description: Flag to determine if adhoc email or not (email routing only)
        autoResponse:
          type: string
          description: The auto response suggested to be used
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        channelIdentifier:
          type: string
          description: The channel identifier of the engagement
        queue:
          type: object
          additionalProperties: false
          description: The queue details
          properties:
            queueId:
              type: string
              description: The unique identifier of the queue
            queueName:
              type: string
              description: The name of the queue
            priority:
              type: integer
              description: The priority of the queue
            proficiencyRangeMin:
              type: integer
              description: The minimum proficiency of the queue
            proficiencyRangeMax:
              type: integer
              description: The maximum proficiency of the queue
        customerIdentifiers:
          $ref: '#/components/schemas/CustomerIdentifiers'
        externalParticipantId:
          $ref: '#/components/schemas/ExternalParticipantId'
        sourceAddress:
          type: string
          description: The source address of the external participant, e.g. calling number or customer email
        destinationAddress:
          $ref: '#/components/schemas/DestinationAddress'
        subject:
          type: string
          description: The subject field of the incoming email
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        dialogId: 01005000281645486013
        orchestrationFlow: OneCloud Voice Outbound
        attributes:
          category: Language
          values:
            - English
        attributeList:
          - System.Outbound
        engagementParameters:
          language: en
        adhocEmail: false
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        channelIdentifier: Voice
        queue:
          queueId: 6d1490d5-7886-417d-ac85-fb0825d53a93
          queueName: Default
          priority: 5
          proficiencyRangeMin: 1
          proficiencyRangeMax: 1
        externalParticipantId: +35395554321
        sourceAddress: +35395554321
        destinationAddress: +12125554321
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    InboundEngagementCreated:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        connectionId:
          $ref: '#/components/schemas/ConnectionId'
        externalParticipantId:
          $ref: '#/components/schemas/ExternalParticipantId'
        dialogId:
          $ref: '#/components/schemas/DialogId'
        callingNumber:
          type: string
          description: The calling number of the external participant
        dialledNumber:
          type: string
          description: The original dialed number for the engagement
        channelId:
          $ref: '#/components/schemas/ChannelId'
        customerIdentifiers:
          $ref: '#/components/schemas/CustomerIdentifiers'
        providerEngagementId:
          $ref: '#/components/schemas/ProviderEngagementId'
        engagementParameters:
          $ref: '#/components/schemas/EngagementParameters'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        connectionId: d2775626-66d4-459b-8147-09ea4b98c370
        externalParticipantId: +35395554321
        dialogId: 01005000281645486013
        callingNumber: +15551235555
        dialledNumber: +18005555555
        channelId: Voice
        providerEngagementId: 00001084011532384922
        engagementParameters:
          language: en
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    MatchOffered:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        matchId:
          type: string
          description: The unique identifier for this match
        correlationId:
          type: string
          description: The correlation Id from the original match request (can be ignored)
        strategy:
          type: string
          description: >-
            The agent selection strategy used for this match (values include
            MOST_IDLE or OCCUPANCY)
          enum:
            - MOST_IDLE
            - OCCUPANCY
        offeredQueue:
          $ref: '#/components/schemas/OfferedQueue'
        offeredService:
          $ref: '#/components/schemas/OfferedService'
        offeredSpecifiedAgent:
          $ref: '#/components/schemas/OfferedSpecifiedAgent'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        matchId: 43dc4b96-dfd6-438c-867e-a0d032e1e0a6
        correlationId: 1682f876-f7b7-4347-accd-495cae95f860
        strategy: MOST_IDLE
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    OutboundEngagementCreated:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        agentId:
          $ref: '#/components/schemas/AgentId'
        dialogId:
          $ref: '#/components/schemas/DialogId'
        destinationAddress:
          $ref: '#/components/schemas/DestinationAddress'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        customerIdentifiers:
          $ref: '#/components/schemas/CustomerIdentifiers'
        engagementParameters:
          $ref: '#/components/schemas/EngagementParameters'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        agentId: zz3tDKfrQx-Mv78Q_AIpGG
        dialogId: 01005000281645486013
        destinationAddress: +12125554321
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        engagementParameters:
          language: en
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    SingleStepTransfer:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        initiatingAgentId:
          $ref: '#/components/schemas/InitiatingAgentId'
        transferTo:
          type: string
          description: >-
            The type of the transfer
          enum:
            - QUEUE
            - USER
            - AUTOMATION
            - EXTERNAL
        destination:
          type: string
          description: >-
            Contains different values accordingly to transferTo:
            - If transferTo is QUEUE, then returns the queueId
            - If transferTo is USER, then returns the destinationAgentId
            - If transferTo is AUTOMATION, then returns the ivrAddress
            - If transferTo is EXTERNAL, then returns the externalAddress
        queueId:
          $ref: '#/components/schemas/QueueId'
        queueName:
          $ref: '#/components/schemas/QueueName'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        connectionId:
          $ref: '#/components/schemas/ConnectionId'
        dialogId:
          $ref: '#/components/schemas/DialogId'
        providerDialogId:
          $ref: '#/components/schemas/ProviderDialogId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        correlationId:
          $ref: '#/components/schemas/CorrelationId'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        initiatingAgentId: ab8f46f8-fd79-4380-8d0e-ce739ca481db
        transferTo: QUEUE
        destination: 16119117-7986-426e-bd3f-6f2e1d92ee1d
        queueId: 16119117-7986-426e-bd3f-6f2e1d92ee1d
        queueName: VoiceQ
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        connectionId: d2775626-66d4-459b-8147-09ea4b98c370
        dialogId: 01005000281645486013
        providerDialogId: 00001000321636990744
        channelId: Voice
        correlationId: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    SingleStepTransferError:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        initiatingAgentId:
          $ref: '#/components/schemas/InitiatingAgentId'
        transferTo:
          type: string
          description: >-
            The type of the transfer
          enum:
            - QUEUE
            - USER
            - AUTOMATION
            - EXTERNAL
        errorType:
          type: string
          description: >-
            The type of the error
          enum:
            - CANCELLED
            - FAILED
        destination:
          type: string
          description: >-
            Contains different values accordingly to transferTo:
              - If transferTo is QUEUE, then returns the queueId
              - If transferTo is USER, then returns the destinationAgentId
              - If transferTo is AUTOMATION, then returns the ivrAddress
              - If transferTo is EXTERNAL, then returns the externalAddress
        dialogId:
          $ref: '#/components/schemas/DialogId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        correlationId:
          $ref: '#/components/schemas/CorrelationId'
        title:
          $ref: '#/components/schemas/ErrorTitle'
        detail:
          $ref: '#/components/schemas/ErrorDetail'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        initiatingAgentId: ab8f46f8-fd79-4380-8d0e-ce739ca481db
        transferTo: USER
        errorType: CANCELLED
        destination: db9c8c9b-cb3a-42c9-8078-7a347726f016
        dialogId: 01005000281645486013
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        correlationId: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        title: Engagement no longer active
        detail: The current engagement has terminated
        id: d433ef5c-7954-4b39-9d99-ab9ffeae725b
        timestamp: 9223372036854776000
    ChannelReady:
      type: object
      additionalProperties: false
      properties:
        agentId:
          $ref: '#/components/schemas/AgentId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        agentId: zz3tDKfrQx-Mv78Q_AIpGG
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    AfterContactWorkActivated:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        agentId:
          $ref: '#/components/schemas/AgentId'
        dialogId:
          $ref: '#/components/schemas/DialogId'
        connectionId:
          $ref: '#/components/schemas/ConnectionId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        agentId: zz3tDKfrQx-Mv78Q_AIpGG
        dialogId: 01005000281645486013
        connectionId: d2775626-66d4-459b-8147-09ea4b98c370
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    AfterContactWorkCompleted:
      type: object
      additionalProperties: false
      properties:
        engagementId:
          $ref: '#/components/schemas/EngagementId'
        agentId:
          $ref: '#/components/schemas/AgentId'
        dialogId:
          $ref: '#/components/schemas/DialogId'
        connectionId:
          $ref: '#/components/schemas/ConnectionId'
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        id:
          $ref: '#/components/schemas/Id'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      example:
        engagementId: 15bcf682-3edf-4c79-b083-07864fa1fb55
        agentId: zz3tDKfrQx-Mv78Q_AIpGG
        dialogId: 01005000281645486013
        connectionId: d2775626-66d4-459b-8147-09ea4b98c370
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        id: d3c8400d-c44f-4451-8316-e75c4efb8bb2
        timestamp: 9223372036854776000
    OfferedQueue:
      type: object
      additionalProperties: false
      description: The offered queue details including offered agent
      properties:
        queueId:
          type: string
          description: The unique identifier of this queue
        channelId:
          type: string
          description: The channel of this queue
        priority:
          type: integer
          description: The priority of this service
        rank:
          type: integer
          description: The rank of this service
        proficiencyRangeMin:
          type: integer
          description: The minimum proficiency of this service
        proficiencyRangeMax:
          type: integer
          description: The maximum proficiency of this service
        attributes:
          type: array
          description: >
            A simplified flat list of attributes
          items:
            type: string
        offeredAgentData:
          $ref: '#/components/schemas/OfferedAgentData'
      example:
        priority: 1
        rank: 1
        proficiencyRangeMin: 1
        proficiencyRangeMax: 1
        attributes:
          category: Language
          values:
            - English
    OfferedService:
      type: object
      additionalProperties: false
      description: Details about the service offered including the offered agent
      properties:
        priority:
          type: integer
          description: The priority of this service
        rank:
          type: integer
          description: The rank of this service
        proficiencyRangeMin:
          type: integer
          description: The minimum proficiency of this service
        proficiencyRangeMax:
          type: integer
          description: The maximum proficiency of this service
        attributes:
          $ref: '#/components/schemas/Attributes'
        offeredAgentData:
          $ref: '#/components/schemas/OfferedAgentData'
      example:
        priority: 1
        rank: 1
        proficiencyRangeMin: 1
        proficiencyRangeMax: 1
        attributes:
          category: Language
          values:
            - English
    OfferedAgentData:
      type: object
      additionalProperties: false
      description: Details about the agent
      properties:
        agentId:
          $ref: '#/components/schemas/AgentId'
        providerAgentId:
          type: string
          description: The provider agent id of the offered agent
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        channelProviderAddress:
          type: string
          description: The address of the engagement provider
        providerAgentAddress:
          type: string
          format: email
          description: The address of the agent
      example:
        agentId: 4a785201-73b8-4842-abf7-36f5e572d310
        providerAgentId: 8011001
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        channelProviderAddress: +7775550113555
        providerAgentAddress: [email protected]
    OfferedSpecifiedAgent:
      type: object
      additionalProperties: false
      description: Details about the agent specified in the match request
      properties:
        rank:
          type: integer
          description: The rank of this agent
        offeredSpecifiedAgentData:
          $ref: '#/components/schemas/OfferedSpecifiedAgentData'
    OfferedSpecifiedAgentData:
      type: object
      additionalProperties: false
      properties:
        agentId:
          $ref: '#/components/schemas/AgentId'
        providerAgentId:
          type: string
          description: The provider agent id of the offered agent
        channelProviderId:
          $ref: '#/components/schemas/ChannelProviderId'
        channelId:
          $ref: '#/components/schemas/ChannelId'
        channelProviderAddress:
          type: string
          description: The address of the engagement provider
        providerAgentAddress:
          type: string
          format: email
          description: The address of the agent
      example:
        agentId: 4a785201-73b8-4842-abf7-36f5e572d310
        providerAgentId: 8011001
        channelProviderId: 4dc53692-e25c-4e8c-a780-0b2f05008478
        channelId: Voice
        channelProviderAddress: +7775550113555
        providerAgentAddress: [email protected]
    Attribute:
      type: object
      additionalProperties: false
      description: A Category and Values identified for routing the call
      properties:
        category:
          type: string
          description: A category for routing
        values:
          type: array
          description: A list of values specific to the category
          items:
            type: string
    Attributes:
      type: array
      description: A list of Category and Values identified for routing the call
      items:
        $ref: '#/components/schemas/Attribute'
    AgentId:
      type: string
      description: The unique identifier for the Agent
    AutomationType:
      type: string
      description: The type of automation being added
    AutomationInitiatedDisconnect:
      type: boolean
      description: >-
        An indication if the automation participant initiated disconnect from
        the dialog
    AutomationParticipantId:
      type: string
      description: The unique identifier for the automation participant
    ConnectionId:
      type: string
      description: >-
        The unique identifier for this appearance of this specific participant
        on the engagement
    ChannelId:
      type: string
      description: The channel ID which represents the media type
    ChannelProviderId:
      type: string
      description: The unique identifier for this engagement provider
    CustomerIdentifiers:
      type: object
      additionalProperties: false
      description: >
        A set of attributes used to identify the customer if any are known at
        engagement creation.

        *NOTE:* the list of Customer Identifiers is configurable per account so
        expect this to be dynamic per customer.  This will include all known
        customer identifiers, but some customers may have more or less collected
        than others.'
      properties:
        phoneNumbers:
          type: array
          items:
            type: string
        emailAddresses:
          type: array
          items:
            type: string
        accountIds:
          type: array
          items:
            type: string
    DialogId:
      type: string
      description: >
        The identifier for the dialog. *NOTE* this will equate to the UCID
        created by the ASBCE for an inbound call
    EngagementId:
      type: string
      description: The unique identifier for this engagement
    Extension:
      type: string
      description: The extension/line of the agent
    ExternalParticipantId:
      type: string
      description: >
        The Channel Provider's identifier for this external participant (aka the
        Customer)
    Id:
      type: string
      description: Each event has its own unique ID
    ProviderEngagementId:
      type: string
      description: The provider-native identifier for the engagement
    Timestamp:
      type: string
      description: Timestamp (milliseconds since epoch) when the event was generated
      format: long
    Ping:
      type: object
      additionalProperties: false
      properties:
        event:
          description:  ping - A constant parameter.
          type: string
          const: ping
        subscriptionId:
          description:  Optional. The id of the subscription.
          type: string
      required:
        - event
    Pong:
      type: object
      additionalProperties: false
      properties:
        event:
          description:  pong - A constant parameter.
          type: string
          const: pong
      required:
        - event
    DestinationAddress:
      type: string
      description: >
        Destination number or uri
    EngagementParameters:
      type: object
      additionalProperties: false
      description: >
        Additional information that could be tagged on an engagement
    OrchestrationFlow:
      type: string
      description: >
        The orchestration flow name that should be used for this engagement
    AgentRouting:
      type: object
      additionalProperties: false
      description: >
        Agent routing strategy configuration
      properties:
        type:
          type: string
          description: >
            LAR: last Agent routing, PAR: preferred Agent Routing
          enum:
            - LAR
            - PAR
        waitTime:
          type: integer
          description: >
            Wait time in minutes before default routing is applied
    InitiatingAgentId:
      type: string
      description: >
        The unique identifier for the agent that initiated the transfer
    QueueId:
      type: string
      description: >
        The destination queue identifier for the transfer or the fallback queue in the event destination agent is not available
    QueueName:
      type: string
      description: >
        The destination queue name of the transfer or the fallback queue in the event destination agent is not available
    CorrelationId:
      type: string
      description: >
        The correlationId for the request. This should be referenced when notifying a related error
    DestinationAgentId:
      type: string
      description: >
        A unique identifier for the destination agent of the transfer
    ErrorTitle:
      type: string
      description: The error description
    ErrorDetail:
      type: string
      description: The cause of the error
    ExternalAddress:
      type: string
      description: >
        The number or URI of the target external party
    IvrAddress:
      type: string
      description: >
        The number used to access the required automation (typically an IVR)
    ProviderDialogId:
      type: string
      description: >
        The unique identifier of the dialog generated by provider

  securitySchemes:
    apiKey:
      type: oauth2
      flows:
        password:
          tokenUrl: https://localhost/auth/realms/ABCDEF/protocol/openid-connect/token
          scopes: {}

AsyncAPI code generator

Please use the AsyncAPI code generator to build client SDK to interface with the Avaya Experience Platform™ Notification Agent and Engagement Async API.

https://www.asyncapi.com/tools/generator

The above specification can also be loaded into the AsyncAPI Studio for a user-friendly view similar to Swagger.

https://studio.asyncapi.com/

Payload
Payload details
NameTypeDescriptionAccepted values
correlationIdstringThe unique ID of the notification being sentAny
subscriptionIdstringThe unique ID of the Agent and Engagement subscriptionAny
familystringThe family of events the subscription is forAny
sentAtstringDatetime (in ISO 8601 format) of when the notification event was sentAny
accountIdstringThe unique identifier for the Account.Any
loginIdstringThe unique login handle for the Agent.
NOTE Only present on Agent related eventsAny
initiatingLoginIdstringThe unique login handle for the Agent initiating a transfer.
NOTE Only present on Single Step Transfer related eventsAny
destinationLoginIdstringThe unique login handle for the Agent the transfer is being made to.
NOTE Only present on Single Step Transfer to User related eventsAny
bodyobjectoneOfThe raw event payload that will be different based on the event.Any
body.0object-Any
body.0.agentIdstringThe unique identifier for the AgentAny
body.0.profileIdstringThe profile ID used to login the agent. The profile indicates what channels should be logged in.Any
body.0.statestringThe current state of the agent.LOGGED_IN, LOGGED_OUT, READY, NOT_READY
body.0.reasonCodestringThe reason code for going not ready. Only for AGENT_NOT_READY stateAny
body.0.causestringThe cause of the agent not being ready. Only for AGENT_NOT_READY stateAny
body.0.idstringEach event has its own unique IDAny
body.0.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.1object-Any
body.1.engagementIdstringThe unique identifier for this engagementAny
body.1.channelProviderIdstringThe unique identifier for this engagement providerAny
body.1.connectionIdstringThe unique identifier for this appearance of this specific participant on the engagementAny
body.1.actionstringThe agent participant actionADDED, HELD, UNHELD, INVITED, REMOVED
body.1.agentIdstringThe unique identifier for the AgentAny
body.1.dialogIdstringThe identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound callAny
body.1.extensionstringThe extension/line of the agentAny
body.1.channelIdstringThe channel ID which represents the media typeAny
body.1.providerEngagementIdstringThe provider-native identifier for the engagementAny
body.1.agentInitiatedDisconnectbooleanAn indication if the agent initiated disconnect from the dialog. Only for REMOVED actionAny
body.1.idstringEach event has its own unique IDAny
body.1.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.2object-Any
body.2.engagementIdstringThe unique identifier for this engagementAny
body.2.channelProviderIdstringThe unique identifier for this engagement providerAny
body.2.automationParticipantIdstringThe unique identifier for the automation participantAny
body.2.actionstringThe automation participant actionADDED, REMOVED
body.2.dialogIdstringThe identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound callAny
body.2.automationTypestringThe type of automation being addedAny
body.2.connectionIdstringThe unique identifier for this appearance of this specific participant on the engagementAny
body.2.channelIdstringThe channel ID which represents the media typeAny
body.2.providerEngagementIdstringThe provider-native identifier for the engagementAny
body.2.automationInitiatedDisconnectbooleanAn indication if the automation participant initiated disconnect from the dialogAny
body.2.idstringEach event has its own unique IDAny
body.2.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.3object-Any
body.3.engagementIdstringThe unique identifier for this engagementAny
body.3.channelProviderIdstringThe unique identifier for this engagement providerAny
body.3.externalParticipantIdstringThe Channel Provider's identifier for this external participant (aka the Customer)Any
body.3.actionstringThe external participant actionADDED, REMOVED, INVITED
body.3.connectionIdstringThe unique identifier for this appearance of this specific participant on the engagementAny
body.3.dialogIdstringThe identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound callAny
body.3.channelIdstringThe channel ID which represents the media typeAny
body.3.providerEngagementIdstringThe provider-native identifier for the engagementAny
body.3.externalParticipantInitiatedDisconnectbooleanAn indication if the external participant (aka the Customer) initiated disconnect from the dialogAny
body.3.idstringEach event has its own unique IDAny
body.3.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.4object-Any
body.4.engagementIdstringThe unique identifier for this engagementAny
body.4.dialogIdstringThe identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound callAny
body.4.orchestrationFlowstringThe orchestration flow name that should be used for this engagementAny
body.4.attributesarrayobjectA list of Category and Values identified for routing the callAny
body.4.attributes.categorystringA category for routingAny
body.4.attributes.valuesarraystringA list of values specific to the categoryAny
body.4.attributeListarraystringA simplified flat list of attributes
NOTE this flat array of attributes will help to easily identify “System.Outbound” to represent a POM callAny
body.4.engagementParametersobjectAdditional information that could be tagged on an engagementAny
body.4.agentRoutingStrategyobjectAgent routing strategy configurationAny
body.4.agentRoutingStrategy.typestringLAR: last Agent routing, PAR: preferred Agent RoutingLAR, PAR
body.4.agentRoutingStrategy.waitTimeintegerWait time in minutes before default routing is appliedAny
body.4.adhocEmailbooleanFlag to determine if adhoc email or not (email routing only)Any
body.4.autoResponsestringThe auto response suggested to be usedAny
body.4.channelProviderIdstringThe unique identifier for this engagement providerAny
body.4.channelIdstringThe channel ID which represents the media typeAny
body.4.channelIdentifierstringThe channel identifier of the engagementAny
body.4.queueobjectThe queue detailsAny
body.4.queue.queueIdintegerThe unique identifier of the queueAny
body.4.queue.queueNameintegerThe name of the queueAny
body.4.queue.priorityintegerThe priority of the queueAny
body.4.queue.proficiencyRangeMinintegerThe minimum proficiency of the queueAny
body.4.queue.proficiencyRangeMaxintegerThe maximum proficiency of the queueAny
body.4.customerIdentifiersobjectA set of attributes used to identify the customer if any are known at engagement creation.
NOTE: the list of Customer Identifiers is configurable per account so expect this to be dynamic per customer. This will include all known customer identifiers, but some customers may have more or less collected than others.'Any
body.4.customerIdentifiers.phoneNumbersarraystring-Any
body.4.customerIdentifiers.emailAddressesarraystring-Any
body.4.customerIdentifiers.accountIdsarraystring-Any
body.4.externalParticipantIdstringThe Channel Provider's identifier for this external participant (aka the Customer)Any
body.4.sourceAddressstringThe source address of the external participant, e.g. calling number or customer emailAny
body.4.destinationAddressstringDestination number or uriAny
body.4.subjectstringThe subject field of the incoming emailAny
body.4.idstringEach event has its own unique IDAny
body.4.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.5object-Any
body.5.engagementIdstringThe unique identifier for this engagementAny
body.5.channelProviderIdstringThe unique identifier for this engagement providerAny
body.5.connectionIdstringThe unique identifier for this appearance of this specific participant on the engagementAny
body.5.externalParticipantIdstringThe Channel Provider's identifier for this external participant (aka the Customer)Any
body.5.dialogIdstringThe identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound callAny
body.5.callingNumberstringThe calling number of the external participantAny
body.5.dialledNumberstringThe original dialed number for the engagementAny
body.5.channelIdstringThe channel ID which represents the media typeAny
body.5.customerIdentifiersobjectA set of attributes used to identify the customer if any are known at engagement creation.
NOTE: the list of Customer Identifiers is configurable per account so expect this to be dynamic per customer. This will include all known customer identifiers, but some customers may have more or less collected than others.'Any
body.5.customerIdentifiers.phoneNumbersarraystring-Any
body.5.customerIdentifiers.emailAddressesarraystring-Any
body.5.customerIdentifiers.accountIdsarraystring-Any
body.5.providerEngagementIdstringThe provider-native identifier for the engagementAny
body.5.engagementParametersobjectAdditional information that could be tagged on an engagementAny
body.5.idstringEach event has its own unique IDAny
body.5.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.6object-Any
body.6.engagementIdstringThe unique identifier for this engagementAny
body.6.matchIdstringThe unique identifier for this matchAny
body.6.correlationIdstringThe correlation Id from the original match request (can be ignored)Any
body.6.strategystringThe agent selection strategy used for this match (values include MOST_IDLE or OCCUPANCY)MOST_IDLE, OCCUPANCY
body.6.offeredQueueobjectThe offered queue details including offered agentAny
body.6.offeredQueue.queueIdintegerThe unique identifier of this queueAny
body.6.offeredQueue.channelIdintegerThe channel of this queueAny
body.6.offeredQueue.priorityintegerThe priority of this serviceAny
body.6.offeredQueue.rankintegerThe rank of this serviceAny
body.6.offeredQueue.proficiencyRangeMinintegerThe minimum proficiency of this serviceAny
body.6.offeredQueue.proficiencyRangeMaxintegerThe maximum proficiency of this serviceAny
body.6.offeredQueue.attributesarrayobjectA list of Category and Values identified for routing the callAny
body.6.offeredQueue.attributes.categorystringA category for routingAny
body.6.offeredQueue.attributes.valuesarraystringA list of values specific to the categoryAny
body.6.offeredQueue.offeredAgentDataobjectDetails about the agentAny
body.6.offeredQueue.offeredAgentData.agentIdstringThe unique identifier for the AgentAny
body.6.offeredQueue.offeredAgentData.providerAgentIdstringThe provider agent id of the offered agentAny
body.6.offeredQueue.offeredAgentData.channelProviderIdstringThe unique identifier for this engagement providerAny
body.6.offeredQueue.offeredAgentData.channelIdstringThe channel ID which represents the media typeAny
body.6.offeredQueue.offeredAgentData.channelProviderAddressstringThe address of the engagement providerAny
body.6.offeredQueue.offeredAgentData.providerAgentAddressstringThe address of the agentAny
body.6.offeredServiceobjectDetails about the service offered including the offered agentAny
body.6.offeredService.priorityintegerThe priority of this serviceAny
body.6.offeredService.rankintegerThe rank of this serviceAny
body.6.offeredService.proficiencyRangeMinintegerThe minimum proficiency of this serviceAny
body.6.offeredService.proficiencyRangeMaxintegerThe maximum proficiency of this serviceAny
body.6.offeredService.attributesarrayobjectA list of Category and Values identified for routing the callAny
body.6.offeredService.attributes.categorystringA category for routingAny
body.6.offeredService.attributes.valuesarraystringA list of values specific to the categoryAny
body.6.offeredService.offeredAgentDataobjectDetails about the agentAny
body.6.offeredService.offeredAgentData.agentIdstringThe unique identifier for the AgentAny
body.6.offeredService.offeredAgentData.providerAgentIdstringThe provider agent id of the offered agentAny
body.6.offeredService.offeredAgentData.channelProviderIdstringThe unique identifier for this engagement providerAny
body.6.offeredService.offeredAgentData.channelIdstringThe channel ID which represents the media typeAny
body.6.offeredService.offeredAgentData.channelProviderAddressstringThe address of the engagement providerAny
body.6.offeredService.offeredAgentData.providerAgentAddressstringThe address of the agentAny
body.6.offeredSpecifiedAgentobjectDetails about the agent specified in the match requestAny
body.6.offeredSpecifiedAgent.rankintegerThe rank of this agentAny
body.6.offeredSpecifiedAgent.offeredSpecifiedAgentDataobject-Any
body.6.offeredSpecifiedAgent.offeredSpecifiedAgentData.agentIdstringThe unique identifier for the AgentAny
body.6.offeredSpecifiedAgent.offeredSpecifiedAgentData.providerAgentIdstringThe provider agent id of the offered agentAny
body.6.offeredSpecifiedAgent.offeredSpecifiedAgentData.channelProviderIdstringThe unique identifier for this engagement providerAny
body.6.offeredSpecifiedAgent.offeredSpecifiedAgentData.channelIdstringThe channel ID which represents the media typeAny
body.6.offeredSpecifiedAgent.offeredSpecifiedAgentData.channelProviderAddressstringThe address of the engagement providerAny
body.6.offeredSpecifiedAgent.offeredSpecifiedAgentData.providerAgentAddressstringThe address of the agentAny
body.6.idstringEach event has its own unique IDAny
body.6.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.7object-Any
body.7.engagementIdstringThe unique identifier for this engagementAny
body.7.agentIdstringThe unique identifier for the AgentAny
body.7.dialogIdstringThe identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound callAny
body.7.destinationAddressstringDestination number or uriAny
body.7.channelProviderIdstringThe unique identifier for this engagement providerAny
body.7.channelIdstringThe channel ID which represents the media typeAny
body.7.customerIdentifiersobjectA set of attributes used to identify the customer if any are known at engagement creation.
NOTE: the list of Customer Identifiers is configurable per account so expect this to be dynamic per customer. This will include all known customer identifiers, but some customers may have more or less collected than others.'Any
body.7.customerIdentifiers.phoneNumbersarraystring-Any
body.7.customerIdentifiers.emailAddressesarraystring-Any
body.7.customerIdentifiers.accountIdsarraystring-Any
body.7.engagementParametersobjectAdditional information that could be tagged on an engagementAny
body.7.idstringEach event has its own unique IDAny
body.7.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.8object-Any
body.8.engagementIdstringThe unique identifier for this engagementAny
body.8.initiatingAgentIdstringThe unique identifier for the agent that initiated the transferAny
body.8.transferTostringThe type of the transferQUEUE, USER, AUTOMATION, EXTERNAL
body.8.destinationstringContains different values accordingly to transferTo: - If transferTo is QUEUE, then returns the queueId - If transferTo is USER, then returns the destinationAgentId - If transferTo is AUTOMATION, then returns the ivrAddress - If transferTo is EXTERNAL, then returns the externalAddressAny
body.8.queueIdstringThe destination queue identifier for the transfer or the fallback queue in the event destination agent is not availableAny
body.8.queueNamestringThe destination queue name of the transfer or the fallback queue in the event destination agent is not availableAny
body.8.channelProviderIdstringThe unique identifier for this engagement providerAny
body.8.connectionIdstringThe unique identifier for this appearance of this specific participant on the engagementAny
body.8.dialogIdstringThe identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound callAny
body.8.providerDialogIdstringThe unique identifier of the dialog generated by providerAny
body.8.channelIdstringThe channel ID which represents the media typeAny
body.8.correlationIdstringThe correlationId for the request. This should be referenced when notifying a related errorAny
body.8.timestampstringTimestamp (milliseconds since epoch) when the event was generatedAny
body.9object-Any
body.9.engagementIdstringThe unique identifier for this engagementAny
body.9.initiatingAgentIdstringThe unique identifier for the agent that initiated the transferAny
body.9.transferTostringThe type of the transferQUEUE, USER, AUTOMATION, EXTERNAL
body.9.errorTypestringThe type of the errorCANCELLED, FAILED
body.9.destinationstringContains different values accordingly to transferTo:
  • If transferTo is QUEUE, then returns the queueId
  • If transferTo is USER, then returns the destinationAgentId
  • If transferTo is AUTOMATION, then returns the ivrAddress
  • If transferTo is EXTERNAL, then returns the externalAddress | Any |
    | body.9.dialogId | string | The identifier for the dialog. NOTE this will equate to the UCID created by the ASBCE for an inbound call | Any |
    | body.9.channelProviderId | string | The unique identifier for this engagement provider | Any |
    | body.9.channelId | string | The channel ID which represents the media type | Any |
    | body.9.correlationId | string | The correlationId for the request. This should be referenced when notifying a related error | Any |
    | body.9.title | string | The error description | Any |
    | body.9.detail | string | The cause of the error | Any |
    | body.9.id | string | Each event has its own unique ID | Any |
    | body.9.timestamp | string | Timestamp (milliseconds since epoch) when the event was generated | Any |
    | body.event | string | The name of the specific event being sent. For instance AgentState, AgentParticipant, InboundEngagementCreated, etc... | Any |

Examples of payload (generated)

{
  "correlationId": "a425851d-5225-4b76-8ca0-4fa31ecfd5db",
  "subscriptionId": "fdbec917-e76e-4645-8120-4eac46f29487",
  "family": "AGENT_ENGAGEMENT",
  "sentAt": "2020-08-24T08:20:23.395Z",
  "accountId": "DYNNUG",
  "loginId": "[email protected]",
  "body": {
    "event": "AgentState",
    "agentId": "4a785201-73b8-4842-abf7-36f5e572d310",
    "profileId": "HomeProfile",
    "state": "NOT_READY",
    "reasonCode": 514,
    "cause": "RONA",
    "id": "d3c8400d-c44f-4451-8316-e75c4efb8bb2",
    "timestamp": 9223372036854776000
  }
}
Tags
  • Agent and Engagement Data
Message pong

Server pong response to a ping message.

Payload
NameTypeDescriptionAccepted values
event (required)stringpong - A constant parameter.Any

Examples of payload

pongMessage

Example of a pong message to client.

{
  "event": "pong"
}
Tags
  • Heartbeat
Message authenticationResponse

Authentication response message sent to the client after websocket authentication.

Payload
NameTypeDescriptionAccepted values
eventstringauthenticationResponse - A constant parameter.Any
statusstringYou will then receive 1 of 5 statuses:
  • CONNECTION_CONFIRMED: Connection was confirmed
  • CONNECTION_FAILED_INVALID_TOKEN: Authentication token is invalid
  • CONNECTION_FAILED_UNKNOWN_SUBSCRIPTION: Unknown Subscription, can be for a subscription that never existed or one that is no longer active
  • CONNECTION_FAILED_INTERNAL_SERVER_ERROR: Server Error, client can retry later
  • CONNECTIONFAILED_CONSTRAINT_VIOLATION: Client issue, malformed client request, client must update payload and rerty | CONNECTION_CONFIRMED, CONNECTION_FAILED_INVALID_TOKEN, CONNECTION_FAILED_UNKNOWN_SUBSCRIPTION, CONNECTION_FAILED_INTERNAL_SERVER_ERROR, CONNECTION_FAILED_CONSTRAINT_VIOLATION |
    | subscriptionId | string | The unique id of the subscription. | _Any
    |
    | pingInterval | integer | The maximum interval (seconds) at which a ping is expected to be sent by the client before websocket is closed and subscription set to INACTIVE.

It is recommended the client send ping more frequently (every 30 seconds) to preclude any proxies from closing the connection. | Any |
| expiresInterval | integer | Expiration interval in seconds before the subscription is set to INACTIVE. | Any |

Examples of payload (generated)

{
  "event": "authenticationResponse",
  "status": "CONNECTION_CONFIRMED",
  "subscriptionId": "fdbec917-e76e-4645-8120-4eac46f29487",
  "pingInterval": 300,
  "expiresInterval": 900
}
Tags
  • Authentication