NAV
javascript csharp

Introduction

Enreach Websocket API (RTE, Real-Time Engine) is a Microsoft SignalR-based WebSocket API providing real-time data updates to browsers or native clients.

It enables the clients to receive updated information about user availabilities, queue statuses, new callback items, etc. with a real-time notification instead of having to constantly poll the REST API. This produces a better user experience and greatly decreases the load inflicted on the infrastructure.

More information about SignalR and how to implement client can be found from Mirosoft SignalR client documentation. Microsoft provides SignalR client libraries for JavaScript, .NET, and Java.

Note that Benemen was renamed to Enreach in 2022, and corresponding naming changes were applied to technical products and documentation as well. Some documentation and technical details (XML namespaces, domain names) may still contain Benemen references.

Client authentication

RTE authenticates clients with a JWT generated by REST API GET /token/{userid}/rte/ endpoint.

The client gets the RTE token from REST API and passes it as a parameter to establish a connection with the RTE hub. If the user got authenticated successfully a WebSocket connection will be established. Otherwise, the client will get 401 Unauthorized as a response.

JWT is validated only when a new connection is established. The connection can remain open indefinitely.

High level authentication and communication flow is presented in diagram below:

  1. Client gets JWT token from REST API
  2. Client establishes a connection with RTE hub and passes JWT token as a parameter
  3. RTE hub validates JWT token and establishes a WebSocket connection
  4. Client subscribes to events
  5. RTE hub sends event data to the client

Authentication flow

Interface

RTE provides public interface to establish connection and manage the subscriptions.

Establishing a connection

//signalr.js from Microsoft must be referenced on the page

// retrieve RTE url and token from REST API
var url = "https://api-silox.enreachvoice.com/token/me/rte/";
const response = await fetch(url, {
  method: 'GET',
  headers: headers,
});

// response contains RTE Url and the JWT token
// {
//    "WssEndpoint": "wss://rte-silox.enreachvoice.com/rte",
//    "Token": "base64-encoded-jwt-token"
//  }
//

// create connection
var connection = new signalR.HubConnectionBuilder()
    .withUrl(response.WSSEndpoint, { accessTokenFactory: () => response.Token })
    .withAutomaticReconnect()
    .build();

using Microsoft.AspNetCore.SignalR.Client;


var RTEHubConnection = new HubConnectionBuilder()
    .WithUrl(rteUrl, options =>
    {
        options.Transports = Microsoft.AspNetCore.Http.Connections.HttpTransportType.WebSockets;
        options.AccessTokenProvider = () => Task.FromResult(RTEToken);
    }).Build();

A new connection is created using HubConnectionBuilder. RTE url and authentication token are obtained via REST API. See Authentication section.

Hub Methods

Clients call public methods on hubs via the invoke method of the HubConnection. The invoke method accepts:

RTE Hub provides following methods

Method Arguments Description
Subscribe Array of EntitySubscription Subscribes to the specific events, return array of SubscriptionResult
Unsubscribe Array of EntitySubscription Unsubscribes from the specific events, return array of SubscriptionResult
UnsubscribeAll None Unsubscribes from all events
AvailableSubscriptions None Returns an array of strings where each item is an event name
ActiveSubscriptions None Returns an array of Subscriptions for all active subscriptions for the session

Receiving events

Example of receiving messages from the hub, and print them to the console


    connection.on("MessageReceived", function (message) {
            console.log(JSON.stringify(message.data));
    });

To receive messages from the hub, define a method to process MessageReceived events. This is the only event emitted from the hub. MessageReceived payload contains subscription details and event data.

EntitySubscription

Example subscription payload used in Subscribe and Unsubscribe methods

[
    { 
        EntityId: "c9eeb030-ff4b-ea11-ac9c-00155d4fdcf3", 
        EventName: "QueueStatus" 
    },
    {
        EntityId: "a1eeb030-ff4b-ea11-ac9c-00155d4fdcf3", 
        EventName: "UserStatus"
    }
]

EntitySubscription used to subscribe and unsubscribe specific Events for a specific EntityId.

Property Type Description
EntityId string Entity id. QueueId for Queues, UserId for Users and CallListId for CallLists
EventName string Event name

SubscriptionResult

Example subscription result:


{
    "subscribed": true,
    "message": null,
    "entityId": "c9eeb030-ff4b-ea11-ac9c-00155d4fdcf3",
    "eventName": "queuestatus"
}

SubscriptionResult is returned by Subscribe and Unsubscribe methods.

Property Type Description
subscribed boolean Indicates if subscription was successful
message string Error message if subscription failed
entityId string Entity id
eventName string Event name

MessageReceived

Example MessageReceived payload of UserStatus event

{
  "subscription": {
    "id": "81352549-c0be-4d58-bc76-79a29ac92e1d",
    "allRootEntities": false,
    "rootEntityId": "29f6e823-b484-e611-80c9-00505689257e",
    "rootEntityType": "Organization",
    "organizationId": "29f6e823-b484-e611-80c9-00505689257e",
    "eventType": "UserStatus",
    "entityType": "User",
    "entityId": "aa9730c4-ce86-e611-80c9-00505689257e",
    "allEntities": false
  },
  "data": {
    "rootEntityType": "Organization",
    "rootEntityId": "29f6e823-b484-e611-80c9-00505689257e",
    "eventType": "UserStatus",
    "entityType": "User",
    "entityId": "aa9730c4-ce86-e611-80c9-00505689257e",
    "messageTTLSeconds": 60,
    "userId": "aa9730c4-ce86-e611-80c9-00505689257e",
    "organizationId": "29f6e823-b484-e611-80c9-00505689257e",
    "canBeAllocatedTo": true,
    "talking": false,
    "activeQueueId": null,
    "available": true,
    "schedule": true,
    "serving": true,
    "serviceTerminals": 1,
    "activeQueues": 2,
    "parkedCalls": 0,
    "wrapUpEnd": null,
    "servingCallback": false,
    "fetchMode": true,
    "id": "aa90c608-7fd4-4c59-af60-d8141470e85b",
    "timestamp": "2023-10-19T14:21:19.7009158Z"
  }
}

MessageReceived payload contains subscription details and event data.

Property Type Description
subscription object Subscription
data object Event data payload depends on the event type. Please refer to the User, Queue and CallList sections for more details.

Subscription

Subscription contains details about the subscription.

Property Type Description
id string Subscription id
allRootEntities boolean Indicates if subscription is for all root entities
rootEntityId string Root entity id
rootEntityType string Root entity type
organizationId string Organization id
eventType string Event type
entityType string Entity type
entityId string Entity id
allEntities boolean Indicates if subscription is for all entities

Managing Subscriptions

Subscribing to events

Example Subscription

// list of events & entities to subscribe to
var subscriptions = new Array();

subscriptions.push({
  EntityId: "a1eeb030-ff4b-ea11-ac9c-00155d4fdcf3", // UserId of the user, we want to subscribe UserStatus events to
  EventName: "UserStatus" // Event name 
});

subscriptions.push({
  EntityId: "c9eeb030-ff4b-ea11-ac9c-00155d4fdcf3",  // QueueId of the queue, we want to subscribe QueueStatus events to
  EventName: "QueueStatus" // Event name
});

// Call 'Subscribe' method.
connection.invoke("Subscribe", subscriptions).then(function (payload) {
        console.log("Subscription result: " + JSON.stringify(payload));
    }).catch(function (err) {
    return console.error(err.toString());
});


// Handler to process received events, just pretty print it to the console
connection.on("MessageReceived", function (message) {
  console.log("Message details: " + JSON.stringify(message, null, 2));
});  

public class ClientSubscriptionModel
{
    public string EntityId { get; set; }
    public string EventName { get; set; }
}

public class RTEMessage
{
    public ClientSubscriptionModel Subscription { get; set; }
    public dynamic Data { get; set; }
}

RTEHubConnection.On<RTEMessage>("MessageReceived", (message) =>
{
    RTE_Message_Received(message.subscription, message.data);
});


ClientSubscriptionModel[] subscriptions = new ClientSubscriptionModel[2];
subscriptions[0] = new ClientSubscriptionModel
{
    EntityId = "a1eeb030-ff4b-ea11-ac9c-00155d4fdcf3",
    EventName = "UserAvailability"
};

subscriptions[1] = new ClientSubscriptionModel
{
    EntityId = "c9eeb030-ff4b-ea11-ac9c-00155d4fdcf3",
    EventName = "UserCallIncoming"
};

RTEHubConnection.InvokeAsync("Subscribe", subscriptions);

public void RTE_Message_Received(ClientSubscriptionModel subscription, dynamic payload)
{
}

When the connection is established it is possible to subscribe for the specific events and define handlers to process subscription results and arrived event’s data.

To subscribe to events, you must define the entity (User, Queue or CallList) and event name. It is important to note, that not all events are available for all entities. For example, UserCallIncoming event is available only for User entity. And QueueCallIncoming event is available only for Queue entity.

Event name list can be retrieved by calling AvailableSubscriptions method.

Managing subscriptions on disconnect and reconnect is a client responsibility. RTE does not store subscriptions and does not restore them on reconnect.

Subscription validation and authorization

Every subscription item is validated with the following logic:

If validation is successful, the subscription will be created and the result will be returned as "subscribed": true.

Example subscription payload

[
    { 
        EntityId: "c9eeb030-ff4b-ea11-ac9c-00155d4fdcf3", 
        EventName: "QueueStatus" 
    },
    {
        EntityId: "a1eeb030-ff4b-ea11-ac9c-00155d4fdcf3", 
        EventName: "UserStatus"
    }
]

Example subscription result:


[
    {
        "subscribed": true,
        "message": null,
        "entityId": "c9eeb030-ff4b-ea11-ac9c-00155d4fdcf3",
        "eventName": "queuestatus"
    },
    {
        "subscribed": false,
        "message": "Unauthorized",
        "entityId": "a1eeb030-ff4b-ea11-ac9c-00155d4fdcf3",
        "eventName": "userstatus"
    }
]

Unsubscribing

it is possible to unsubscribe from a specific events or all events at once. 'Unsubscribe' method accepts an array of json objects containing EntityId and EventName.

Example Unsubscribe

// list of events & entities to unsubscribe from
var subscriptions = new Array();
subscriptions.push({
  EntityId: "a1eeb030-ff4b-ea11-ac9c-00155d4fdcf3", 
  EventName: "UserAvailability" 
});


// This will delete subscriptions for the specific events and return true on success.
connection.invoke("Unsubscribe", subscriptions).then(function (payload) {
            console.log("Unsubscription result: " + JSON.stringify(payload));
        }).catch(function (err) {
    return console.error(err.toString());
});

//This will delete all subscriptions and return true on success.
connection.invoke("UnsubscribeAll").then(function (payload) {
            console.log("UnsubscribeAll result: " + JSON.stringify(payload));
        }).catch(function (err) {
    return console.error(err.toString());
});


Get available subscription events

All available subscription events can be retrieved by calling "AvailableSubscriptions" method. The result will be presented as an array of strings where each item is an event name.

Note that not all events are available for all entities. For example, UserCallIncoming event is available only for User entity. And QueueCallIncoming event is available only for Queue entity.

connection.invoke("AvailableSubscriptions", subscriptions).then(function (payload) {
            console.log("Available subscriptions " + JSON.stringify(payload));
        }).catch(function (err) {
    return console.error(err.toString());
});

Get Active subscription events

ActiveSubscription for the session can be retrieved by calling "ActiveSubscriptions" method. The result will be presented as an array of Subscription.

connection.invoke("ActiveSubscriptions").then(function (payload) {
            console.log("Available subscriptions " + JSON.stringify(payload));
        }).catch(function (err) {
    return console.error(err.toString());
});


User

Event: UserAlert

Example payload of Event: UserAlert

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserAlert",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "AlertId": "00000000-0000-0000-0000-000000000000",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "ConditionName": "Example ConditionName",
  "ConditionValue": "Example ConditionValue",
  "ConditionExpression": "Example ConditionExpression",
  "Value": "Example Value",
  "Id": "267b246b-bc69-47fe-92ba-89179785a574",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

This is emitted when a service pool alert defined by the user is triggered.

Property name Value type Description
AlertId Guid Id of alert.
ConditionExpression string Expression of the triggered condition.
ConditionName string Name of the triggered condition.
ConditionValue string Value of the triggered condition.
OrganizationId Guid Id of related organization.
UserId Guid Id of target user.
Value string Actual value for the triggered condition.

Event: UserAvailability

Example payload of Event: UserAvailability

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserAvailability",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "UserName": "user.name@example.com",
  "ProfileId": "00000000-0000-0000-0000-000000000000",
  "Availability": "Example Availability",
  "StartTime": "0001-01-01T00:00:00",
  "EndTime": "0001-01-01T00:00:00",
  "Note": "Example Note",
  "EventSource": "Example EventSource",
  "TransferNumber": "+123457890123",
  "Id": "8c84c563-5414-4ce7-933d-c533cd575d32",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

User's current availability state

Property name Value type Description
Availability string Availability state, possible values: Available, Busy, DoNotDisturb, OffWork, BRB, Away
EndTime DateTime End time of the state, DateTime.MaxValue if the state is continuous
EventSource String Availability event source from db
Note String User-defined message or description
OrganizationId Guid Id of related organization.
ProfileId Guid Id of the availability profile in database.
StartTime DateTime Start time of the state
TransferNumber string The phone number calls are transferred to if appropriate.
UserId Guid Id of target user.
UserName string Username of target user.

Event: UserCallAvailableForMonitoring

Example payload of Event: UserCallAvailableForMonitoring

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallAvailableForMonitoring",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "TargetUserId": "00000000-0000-0000-0000-000000000000",
  "TargetUserName": "Example TargetUserName",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "SupervisorUserId": "00000000-0000-0000-0000-000000000000",
  "SupervisorUserName": "Example SupervisorUserName",
  "QueueName": "Example QueueName",
  "QueueId": null,
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "AgentLegId": "Example AgentLegId",
  "SupervisorTerminalNumber": "+123457890123",
  "SupervisionCallInNumber": "+123457890123",
  "CallType": "Example CallType",
  "CallerNumber": "+123457890123",
  "ConnectedToAgentTime": "0001-01-01T00:00:00",
  "Id": "fc2ea1ea-7960-44b8-8ede-6d34bfcac080",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

There is a new call for a user that can be supervised by the supervisor.

Property name Value type Description
AgentLegId string LegId of of the forked call to agent
CallerNumber string Caller number
CallId Guid Id of of the supervised call.
CallType string Call type: servicecall (directcall) (callout)
ConnectedToAgentTime DateTime Time when the call was connected to the agent
LegId string LegId of of the supervised call.
OrganizationId Guid Id of related organization.
QueueId Guid? Id of the service queue
QueueName string Name of the service queue
SupervisionCallInNumber string Information for Supervisor UI where to call for the supervision call
SupervisorTerminalNumber string Which number Core should expect the supervisor call to come from
SupervisorUserId Guid Id of the supervisor.
SupervisorUserName string Name of the supervisor.
TargetUserId Guid Id of target user.
TargetUserName string User being supervised.

Event: UserCallInArrived

Example payload of Event: UserCallInArrived

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInArrived",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "UserName": "user.name@example.com",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "22f99214-6dec-4a5d-990b-8244d2468d25",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call. Current target is user. Call entered for allocation.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
UserId Guid Id of current target user.
UserName string Username of current target user.

Event: UserCallInComing

Example payload of Event: UserCallInComing

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInComing",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Username": "user.name@example.com",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "f70bb941-505a-497b-85c6-60f2314eb792",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming direct call to user entered Controller.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
UserId Guid Id of target user.
Username string Username of target user

Event: UserCallInDisconnected

Example payload of Event: UserCallInDisconnected

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInDisconnected",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Username": "user.name@example.com",
  "Reason": "Example Reason",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechReason": "Example TechReason",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "6b0cfd7e-f5e9-4fd6-970d-12aef726b23d",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Call in, currently for user, was disconnected.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
Reason string Reason for the disconnect. 'remote' or 'local'
TargetNumber string Original called number.
TechQueueId Guid? Id of then current technical queue, may be different to the service queue.
TechReason string Technical reason (e.g SIP cause code) for the disconnect.
UserId Guid Id of current target user.
Username string Username of target user

Event: UserCallInOverflow

Example payload of Event: UserCallInOverflow

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInOverflow",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Username": "user.name@example.com",
  "ConnectedTarget": "Example ConnectedTarget",
  "TechSource": "Example TechSource",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "OverflowApplet": "Example OverflowApplet",
  "TechNumber": "+123457890123",
  "TechEvent": "Example TechEvent",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "02aa3c3a-c5c4-445a-b747-01164b46e6a4",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call, currently for user, overflows to next routing target.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
ConnectedTarget string Currently connected target.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
OverflowApplet string Overflow Applet name.
OverflowReason string Overflow reason description, values like: NoAvailableProviders, QueueFull, UserActivelyDeclined ...
OverflowType string Overflow type, large set values like: AdHoc_1, ServiceOpen, QueueHandler, QueueOverflowDefault, UserTransferAll, ActPreEnter, TerminationHandling
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
TechEvent string Technical event.
TechNumber string Technical source type.
TechQueueId Guid Id of current technical queue.
TechQueueName string Name of current technical queue.
TechSource string Overflow source type.
UserId Guid Id of current user.
Username string Username of target user

Event: UserCallInTransferCancelled

Example payload of Event: UserCallInTransferCancelled

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInTransferCancelled",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Username": "user.name@example.com",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "TransferApplet": "Example TransferApplet",
  "TechSource": "Example TechSource",
  "Reason": "Example Reason",
  "DetailedReason": "Example DetailedReason",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "a8e43920-558a-4175-9f0a-9c802568fb6f",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call, currently targeted to user. Transfer cancelled.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
DetailedReason string Detailed cancellation reason.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
Reason string Cancellation reason.
TargetNumber string Original called number.
TechQueueId Guid Id of current technical queue.
TechQueueName string Name of current technical queue.
TechSource string Technical source type.
TransferApplet string Transferring Applet name.
UserId Guid Id of current user.
Username string Transferring user's username

Event: UserCallInTransferConnected

Example payload of Event: UserCallInTransferConnected

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInTransferConnected",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Username": "user.name@example.com",
  "ConnectedTarget": "Example ConnectedTarget",
  "TransferSource": "Example TransferSource",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "TransferApplet": "Example TransferApplet",
  "TechSource": "Example TechSource",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "3085d3ac-abab-49ea-95cb-dcc4844f9071",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call, currently targeted to user. Transfer to overflow target connected.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
ConnectedTarget string Connected target.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
TechQueueId Guid Id of current technical queue.
TechQueueName string Name of current technical queue.
TechSource string Technical source type.
TransferApplet string Transferring Applet name.
TransferSource string Transfer source.
UserId Guid Id of transferring current user.
Username string Transferring user's username

Event: UserCallInTransferStarted

Example payload of Event: UserCallInTransferStarted

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInTransferStarted",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Username": "user.name@example.com",
  "TransferTarget": "Example TransferTarget",
  "TransferSource": "Example TransferSource",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "TransferApplet": "Example TransferApplet",
  "TechSource": "Example TechSource",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "0bcb589b-2129-4429-aee2-34452ac5bb6f",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call, currently targeted to user. Transfer to overflow target started.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
TechQueueId Guid Id of current technical queue.
TechQueueName string Name of current technical queue.
TechSource string Technical source type.
TransferApplet string Transferring Applet name.
TransferSource string Transfer source.
TransferTarget string Transfer target, guid or phone number.
UserId Guid Id of current transferring user.
Username string Transferring user's username

Event: UserCallInUserAllocated

Example payload of Event: UserCallInUserAllocated

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInUserAllocated",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "UserName": "user.name@example.com",
  "UserNumber": "+123457890123",
  "DetailedReason": "Example DetailedReason",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "45f875ee-edb6-4441-bc08-6f67b68f0810",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call, currently targeted to user. Call allocated to user.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
DetailedReason string Optional detailed reason for allocation.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
UserId Guid Id of allocating User.
UserName string Allocation target username
UserNumber string Number of allocating User.

Event: UserCallInUserCancelled

Example payload of Event: UserCallInUserCancelled

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInUserCancelled",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "UserName": "user.name@example.com",
  "Reason": "Example Reason",
  "DetailedReason": "Example DetailedReason",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "8074a900-2740-4979-bbb4-5c152d4aba44",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call, currently targeted to user. Call allocation to user cancelled.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
DetailedReason string Detailed cancellation reason.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
Reason string Cancellation reason.
TargetNumber string Original called number.
UserId Guid Id of allocated user.
UserName string Username of cancelling user.

Event: UserCallInUserConnected

Example payload of Event: UserCallInUserConnected

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInUserConnected",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "AgentLegId": "Example AgentLegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "UserName": "user.name@example.com",
  "UserNumber": "+123457890123",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "f74e6717-14fc-4461-b996-5a351791ea56",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call, currently targeted to user. Call allocation to user connected.

Property name Value type Description
AgentLegId string LegId of of the forked call to agent
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
UserId Guid Id of connected User.
UserName string Username of connected User.
UserNumber string Number of connected User.

Event: UserCallInUserOverflow

Example payload of Event: UserCallInUserOverflow

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallInUserOverflow",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Username": "user.name@example.com",
  "Reason": "Example Reason",
  "Target": "Example Target",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "22605af7-c7f7-4782-9474-d78be72f1ef8",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Worknumber call is overflowing to other destination

Property name Value type Description
CallerNumber string Original caller number
CallId Guid Id of core call event relates to
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization
Publicity CallEventPublicityCategory The publicity of user's direct calls
Reason string Reason for the overflow: AVAActiveProfile, BusyForTechnicalError, DND, OffWork, NoAnswer, InterruptOverflow BusyOnBusy, TransferAll, BlindTransfer
Target string Transfer target. Guid or phone number, or list of targets.
TargetNumber string Original called number
UserId Guid Id of transferring "responsible" user
Username string Username

Event: UserCallOutConnected

Example payload of Event: UserCallOutConnected

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallOutConnected",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "UserName": "user.name@example.com",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "7c513e34-6fbf-4c2e-be1e-13fd0bf818f0",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Outgoing call

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
TargetNumber string Original called number.
UserId Guid Id of calling User.
UserName string Username of calling User.

Event: UserCallOutDisconnected

Example payload of Event: UserCallOutDisconnected

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserCallOutDisconnected",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "UserName": "user.name@example.com",
  "Reason": "Example Reason",
  "TechReason": "Example TechReason",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "ad011d67-a7ee-4953-8ee2-2cd687008c1b",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

User call was disconnected.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
Publicity CallEventPublicityCategory The publicity of user's direct calls
Reason string Reason for the disconnect. 'remote' or 'local'
TargetNumber string Original called number.
TechReason string Technical reason (e.g SIP cause code) for the disconnect.
UserId Guid Id of current calling user.
UserName string Username of current calling user.

Event: UserSetting

Example payload of Event: UserSetting

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserSetting",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Keyword": "Example Keyword",
  "Value": "Example Value",
  "Values": null,
  "AllowedValues": null,
  "Deleted": false,
  "Level": "Undefined",
  "Id": "1b028e98-c673-46d0-82e6-3a8ce53c90a4",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

User setting changed.

Property name Value type Description
AllowedValues Dictionary<string, string> Setting allowed values.
Deleted bool Is setting deleted.
Keyword string Setting keyword
Level UserSettingLevelEnum Setting level for authorization
OrganizationId Guid Id of related organization
UserId Guid Id of related user
Value string Setting value
Values Dictionary<string, string> Key/Value setting values

Event: UserStatus

Example payload of Event: UserStatus

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserStatus",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "MessageTTLSeconds": 60,
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "CanBeAllocatedTo": false,
  "Talking": false,
  "ActiveQueueId": null,
  "Available": false,
  "Schedule": false,
  "Serving": false,
  "ServiceTerminals": 0,
  "ActiveQueues": 0,
  "ParkedCalls": 0,
  "WrapUpEnd": null,
  "ServingCallback": false,
  "FetchMode": false,
  "Id": "3144cbed-7bfa-480e-a782-66ea86fb61c4",
  "Timestamp": "2020-01-01T12:00:00Z"
}

UserStatus changed. UserStatus represents users status from queue components view. Contains information about users serving status, such as talking, available and the ultimate “can receive calls” result.

Property name Value type Description
ActiveQueueId Guid? Guid of the service queue the user can be presumed be talking right now
ActiveQueues int Number of active queues
Available bool If AVA status is "available", typically when not "DND".
CanBeAllocatedTo bool If it is possible to allocate a call to the user. This is a composite value from several status items, "best guess".
FetchMode bool User is in FetchMode, no automatic allocation from ServiceQueues
OrganizationId Guid Id of the related organization.
ParkedCalls int Number of parked calls
Schedule bool If AVA availability code is not OffWork
ServiceTerminals int Number of active terminals
Serving bool User is serving in queues
ServingCallback bool User is serving in callback list "queues"
Talking bool If the user is having a call right now. Incoming and outgoing calls are considered as active calls even before call is connected to user
UserId Guid Id of the user.
WrapUpEnd DateTime? If wrap up time is active then the end time, otherwise null

Event: UserSupervisionStatus

Example payload of Event: UserSupervisionStatus

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserSupervisionStatus",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "TargetUserId": "00000000-0000-0000-0000-000000000000",
  "TargetUserName": "Example TargetUserName",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "SupervisorUserId": "00000000-0000-0000-0000-000000000000",
  "SupervisorUserName": "Example SupervisorUserName",
  "QueueName": "Example QueueName",
  "QueueId": null,
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "SupervisorLegId": "Example SupervisorLegId",
  "State": 0,
  "Id": "168a73f0-4139-42bd-82f0-10e56a1d06a5",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

This is emitted when supervisor status relating to a call changed.

Property name Value type Description
CallId Guid Id of of the supervised call.
LegId string LegId of of the supervised call.
OrganizationId Guid Id of related organization.
QueueId Guid? Id of the service queue
QueueName string Name of the service queue
State SupervisionState Supervision state relating to the call.
SupervisorLegId string Optional LegId of of the supervisor incoming call.
SupervisorUserId Guid Id of the supervisor.
SupervisorUserName string User supervising.
TargetUserId Guid Id of target user.
TargetUserName string User being supervised.

Event: UserWrapUpEnabled

Example payload of Event: UserWrapUpEnabled

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserWrapUpEnabled",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "MaxWrapUpDurationSec": 0,
  "Id": "dfce3c42-1179-4e8b-abf4-a2f6627025f8",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Event emitted after a service call connects to indicate that wrap-up time is enabled for the call. This is used by clients supporting wrap-up functionality to indicate to the end user that wrap-up time is in progress after the call completes.

This event is followed by UserWrapUpStarted and UserWrapUpTerminated events.

Property name Value type Description
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
MaxWrapUpDurationSec int Max wrap-up duration, seconds
OrganizationId Guid Id of related organization.
QueueId Guid Id of target user.
UserId Guid Id of target user.

Event: UserWrapUpStarted

Example payload of Event: UserWrapUpStarted

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserWrapUpStarted",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "MaxWrapUpDurationSec": 0,
  "Id": "7c745d67-0ab1-4396-b717-69b44a3aff06",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Event emitted after a call with wrap-up functionality enabled disconnects and thus wrap-up time starts. It is relayed to supporting clients to indicate that wrap-up is ongoing and no calls are allocated during that time.

Property name Value type Description
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
MaxWrapUpDurationSec int Max wrap-up duration, seconds
OrganizationId Guid Id of related organization.
QueueId Guid Queue Id
UserId Guid Id of target user.

Event: UserWrapUpTerminated

Example payload of Event: UserWrapUpTerminated

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "UserWrapUpTerminated",
  "EntityType": "User",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "UserId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "Reason": "Example Reason",
  "ElapsedTimeSec": 0,
  "Id": "13d601c2-4013-4ce7-8e43-4e278f69b281",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Emitted after wrap-up time for given call ends. It is emitted both when the maximum allowed time is up, and when an explicit termination request has been handled by the backend.

Property name Value type Description
CallId Guid Id of core call event relates to.
ElapsedTimeSec int How long the wrap-up time was on
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
QueueId Guid Queue Id
Reason string Reason for termination: e.g "manual" or "timer"
UserId Guid Id of target user.

Queue

Event: QueueCallInArrived

Example payload of Event: QueueCallInArrived

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueCallInArrived",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "QueueNumber": "+123457890123",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "a8429127-45bc-402c-a294-52f6ce12c9df",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call was accepted into service queue.

Property name Value type Description
CallerNumber string Original caller number
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
QueueId Guid Id of allocating service queue.
QueueName string Name of allocating service queue.
QueueNumber string Number of allocating service queue
TargetNumber string Original called number

Event: QueueCallInComing

Example payload of Event: QueueCallInComing

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueCallInComing",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "QueueNumber": "+123457890123",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "8fcca4c0-4d00-4459-862c-a0fee51604cf",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

New incoming call to service or technical queue entered Controller.

Property name Value type Description
CallerNumber string Original caller number
CallId Guid Id of core call event relates to
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization
QueueId Guid Id of service queue
QueueName string Name of target service or technical queue
QueueNumber string Number of target service or technical queue
TargetNumber string Original called number

Event: QueueCallInDisconnected

Example payload of Event: QueueCallInDisconnected

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueCallInDisconnected",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "Reason": "Example Reason",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechReason": "Example TechReason",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "ed4ff0b5-dd72-476f-95d3-5dc842dfea59",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call was disconnected, the current owner (original target might have been e.g. agent) is service or technical queue.

Property name Value type Description
CallerNumber string Original caller number
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization
QueueId Guid Id of the last service queue the call has visited, or if none then the latest technical queue.
QueueName string Name of last service queue the call has visited.
Reason string Reason for the disconnect. 'remote' or 'local'
TargetNumber string Original called number
TechQueueId Guid? Id of then current technical queue, may be different to the service queue.
TechReason string Informative technical local reason for the disconnect. E.g "busy_on_busy", "ivr_menu_failure" etc.

Event: QueueCallInOverflow

Example payload of Event: QueueCallInOverflow

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueCallInOverflow",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "OverflowApplet": "Example OverflowApplet",
  "TechSource": "Example TechSource",
  "TechNumber": "+123457890123",
  "TechEvent": "Example TechEvent",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "8998603c-e85a-4a6f-8819-6f724ac583fc",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call. Current handler is service or technical queue. This is generic event sent when then call overflows to the next routing point.

Property name Value type Description
CallerNumber string Original caller number
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
OverflowApplet string Technical name of the current applet.
OverflowReason string Overflow reason description, values like: NoAvailableProviders, QueueFull, UserActivelyDeclined ...
OverflowType string Overflow type, large set values like: AdHoc_1, ServiceOpen, QueueHandler, QueueOverflowDefault, UserTransferAll, ActPreEnter, TerminationHandling
QueueId Guid Id of the last service queue the call has visited, or if none then the latest technical queue.
QueueName string Name of the service queue.
TargetNumber string Original called number
TechEvent string Technical event name.
TechNumber string Technical source number if any.
TechQueueId Guid Id of then current technical queue, may be different to the service queue.
TechQueueName string Name of the current technical queue.
TechSource string Technical source type.

Event: QueueCallInTransferCancelled

Example payload of Event: QueueCallInTransferCancelled

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueCallInTransferCancelled",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "TransferApplet": "Example TransferApplet",
  "TechSource": "Example TechSource",
  "Reason": "Example Reason",
  "DetailedReason": "Example DetailedReason",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "f27440ed-1d50-4fcf-8dab-320090c36fa7",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call. Current target is service or technical queue. Transferring the call forward was cancelled.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
DetailedReason string Detailed cancellation reason.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization
QueueId Guid Id of transferring service queue.
QueueName string Name of transferring service queue.
Reason string Cancellation reason.
TargetNumber string Original called number.
TechQueueId Guid Id of current technical queue, may differ from QueueId.
TechQueueName string Name of current transferring technical queue.
TechSource string Technical source type.
TransferApplet string Current transferring Applet name.

Event: QueueCallInTransferConnected

Example payload of Event: QueueCallInTransferConnected

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueCallInTransferConnected",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "ConnectedTarget": "Example ConnectedTarget",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "TransferApplet": "Example TransferApplet",
  "TechSource": "Example TechSource",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "f7e96378-9bce-48b6-a4e1-f2faccecc92d",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call. Current target is service or technical queue. Transferring the call forward was connected.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
ConnectedTarget string Transfer target. Guid or phone number.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
QueueId Guid Id of transferring queue.
QueueName string Name of transferring service queue
TargetNumber string Original called number.
TechQueueId Guid Id of current technical queue. May differ from QueueId.
TechQueueName string Name of current technical queue.
TechSource string Technical source type.
TransferApplet string Transferring Applet name.

Event: QueueCallInTransferStarted

Example payload of Event: QueueCallInTransferStarted

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueCallInTransferStarted",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "CallId": "00000000-0000-0000-0000-000000000000",
  "LegId": "Example LegId",
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "TransferTarget": "Example TransferTarget",
  "TransferSource": "Example TransferSource",
  "TechQueueId": "00000000-0000-0000-0000-000000000000",
  "TechQueueName": "Example TechQueueName",
  "TransferApplet": "Example TransferApplet",
  "TechType": "Example TechType",
  "CallerNumber": "+123457890123",
  "TargetNumber": "+123457890123",
  "Id": "b8ffaeb6-2d12-48a3-a081-b16208ec02af",
  "Timestamp": "2020-01-01T12:00:00Z",
  "MessageTTLSeconds": -1
}

Incoming call. Current target is service or technical queue. Transferring the call forward was started.

Property name Value type Description
CallerNumber string Original caller number.
CallId Guid Id of core call event relates to.
LegId string Id of core call leg event relates to.
OrganizationId Guid Id of related organization.
QueueId Guid Id of transferring queue.
QueueName string Name of transferring queue.
TargetNumber string Original called number.
TechQueueId Guid Id of current technical queue. May differ from QueueId.
TechQueueName string Name of current technical queue.
TechType string Technical source type.
TransferApplet string Transferring Applet name.
TransferSource string Transfer source.
TransferTarget string Transfer target. Guid or phone number.

Event: QueueStatus

Example payload of Event: QueueStatus

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "QueueStatus",
  "EntityType": "Queue",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "MessageTTLSeconds": 60,
  "QueueId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "QueueName": "Example QueueName",
  "NbrOfProviders": 0,
  "NbrOfRequesters": 0,
  "NbrOfServingAgentsEstimate": 0,
  "NbrOfAllocated": 0,
  "NbrOfConnected": 0,
  "NbrOfQueuingRequesters": 0,
  "NbrOfNotServedRequesters": 0,
  "NbrOfAgentsLongTermAway": 0,
  "NbrOfAgentsShortTermAway": 0,
  "NbrOfAgentsImmediatelyFree": 0,
  "NbrOfAgentsCheckedInQueue": 0,
  "NbrOfAgentsOnWrapUp": 0,
  "NbrOfAgentsOnFetchMode": 0,
  "MaxWaitTime": 0,
  "OpenStatus": 0,
  "Id": "a10387c9-a98b-4a1a-98fb-f8532587164d",
  "Timestamp": "2020-01-01T12:00:00Z"
}

Service queue status message, contains various counter values. Sent by Controller periodically if the status of the queue has changed since the last event.

Property name Value type Description
MaxWaitTime long Maximum current wait time in queue
NbrOfAgentsCheckedInQueue int Total number agents that are serving in the queue (away or not).
NbrOfAgentsImmediatelyFree int Number agents that are immediately free for service.
NbrOfAgentsLongTermAway int Number agents that are not currently available for service in long term (e.g DND state).
NbrOfAgentsOnFetchMode int Total number agents that are currently in FetchMode (no automatic allocation).
NbrOfAgentsOnWrapUp int Total number agents that are serving in the queue (away or not).
NbrOfAgentsShortTermAway int Number agents that are not currently available for service in short term (e.g. already talking).
NbrOfAllocated int Number of current allocated calls in the queue.
NbrOfConnected int Number of current connected (served by agent) calls in the queue.
NbrOfNotServedRequesters int Number of calls currently not being served by an agent right now
NbrOfProviders int Total number of current providers (agents) in the queue.
NbrOfQueuingRequesters int Number of current queuing calls in the queue
NbrOfRequesters int Total number of current requesters (calls) in the queue.
NbrOfServingAgentsEstimate int Estimated number of current serving agents in the queue.
OpenStatus int Queue open status estimation NA = 0 NoActiveHandler = 1 : There are no active handling endpoints/numbers for the queue. So basically "Closed" NoActiveHandlerUncertain = 2 : There are no active handling endpoints/numbers for the queue. But uncertain due script on some handlers. Closed = 3 : The only active handler is "ServiceClosed". ClosedUncertain = 4 : The only active handler is "ServiceClosed". But uncertain due script on some handlers. Open = 5 : Queue is open. OpenUncertain = 6 : Queue is open. But uncertain due script on some handlers.
OrganizationId Guid Id of related organization.
QueueId Guid Id of service queue.
QueueName string Name of service queue.

CallList

Event: CallbackChanged

Example payload of Event: CallbackChanged

{
  "RootEntityType": "Organization",
  "RootEntityId": "00000000-0000-0000-0000-000000000000",
  "EventType": "CallbackChanged",
  "EntityType": "CallList",
  "EntityId": "00000000-0000-0000-0000-000000000000",
  "MessageTTLSeconds": 120,
  "CallBackId": "00000000-0000-0000-0000-000000000000",
  "CallListId": "00000000-0000-0000-0000-000000000000",
  "OrganizationId": "00000000-0000-0000-0000-000000000000",
  "Modified": "0001-01-01T00:00:00",
  "AssignedUserId": null,
  "LastAttemptUserId": null,
  "LastModifiedUserId": null,
  "LastAttemptTypeId": null,
  "ContactName": "Example ContactName",
  "ContactNumber": "+123457890123",
  "ContactMessage": "Example ContactMessage",
  "Note": "Example Note",
  "QueueId": null,
  "ChannelIn": "Example ChannelIn",
  "CreationTime": "0001-01-01T00:00:00",
  "Created": false,
  "IsClosed": false,
  "RecordingId": null,
  "TypeId": 0,
  "DueDate": null,
  "CallId": null,
  "TranscriptId": null,
  "ClassificationId": null,
  "ExpiryDate": null,
  "LastAttemptTimestamp": null,
  "LastAttemptNote": "Example LastAttemptNote",
  "CalculatedPriority": "Example CalculatedPriority",
  "NotBefore": null,
  "CallbackAttempts": null,
  "CallbackExtras": null,
  "CallbackRelatedItems": null,
  "Id": "81b75b6c-25c9-4266-b537-787db03d7a52",
  "Timestamp": "2020-01-01T12:00:00Z"
}

Produced when a callback request changes (is created, updated, closed etc).

Property name Value type Description
AssignedUserId Guid? Id of user the callback is currently assigned
CalculatedPriority string Calculated priority
CallbackAttempts List<CallbackAttempt> History of all handling attempts
CallbackExtras List<CallbackExtra> Extra name-value fields
CallBackId Guid CallBack Id this event relates to.
CallbackRelatedItems List<CallbackRelatedItem> List of cases related to this case
CallId Guid? The id of the original call that prompted the creation of this request
CallListId Guid Id of the CallList for this CallBack
ChannelIn string Name of the channel (usually service pool) the request came in through
ClassificationId Guid? If the case has been classified, id of the classification entry
ContactMessage string Any message left by the contact (usually empty)
ContactName string Contact name (usually empty)
ContactNumber string Contact number that is supposed to be called
Created bool Whether the request was created, or updated if not created
CreationTime DateTime WHen the request was initially created
DueDate DateTime? When the case is due to be handled
ExpiryDate DateTime? The date when the case automatically expires if not closed before it
IsClosed bool Whether the request is closed
LastAttemptNote string Note on the latest handling attempt
LastAttemptTimestamp DateTime? Timestamp of the latest handling attempt
LastAttemptTypeId int? Id of the last attempt's type
LastAttemptUserId Guid? Id of user that made the last attempt
LastModifiedUserId Guid? Id of user that made the last change, null if new or admin
Modified DateTime Modified date
NotBefore DateTime? Date before which the case should not be handled
Note string Internal notes on the case
OrganizationId Guid Id of related organization.
QueueId Guid? Guid of the responsible service queue or IVR queue, if any came in through
RecordingId Guid? Id of the corresponding audio recording (if any)
TranscriptId Guid? Id of the transcript created from the recording
TypeId short Type identifier. 1 - Explicit callback request 2 - Overflown call 3 - Call list item created manually