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:
- Client gets JWT token from REST API
- Client establishes a connection with RTE hub and passes JWT token as a parameter
- RTE hub validates JWT token and establishes a WebSocket connection
- Client subscribes to events
- RTE hub sends event data to the client
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:
- The name of the hub method.
- Arguments defined in the hub method.
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:
- Is EntityId a valid Guid type. If not - validation failed, "Invalid EntityId" will be returned as validation result.
- Does EventName have a valid name. If not - validation failed, "Invalid event name" will be returned as validation result.
- Does the current user have permission to subscribe to this event. If not - validation failed, "Unauthorized" will be returned as validation result.
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,
"TalkingStatusChanged": null,
"ActiveQueueId": null,
"Available": false,
"Schedule": false,
"Serving": false,
"ServiceTerminals": 0,
"ActiveQueues": 0,
"ParkedCalls": 0,
"WrapUpStart": null,
"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 |
TalkingStatusChanged | DateTime? | Last time the "Talking" status changed |
UserId | Guid | Id of the user. |
WrapUpStart | DateTime? | If wrap up time is active then the start time, otherwise null |
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 |