Introduction
This document describes Enreach webhook implementation, providing integrators push notifications about events in Enreach core systems. This functionality supplements EnreachAPI, which is a RESTful API relying on request-response pattern unsuitable for notifications.
Simply put, webhooks send a HTTPS POST request to predefined URL whenever defined events occur in the system. The request contains JSON data providing information about the event instance.
For example, if the notification is about an incoming service pool call, the data might include arrival timestamp, caller number and target service pool. This information can then be used in the receiving end to perform any additional logic relating to the notification.
Some possible use scenarios include:
- Receiving notifications about completed service pool calls to send SMS feedback questionnaires
- Receiving notifications about service pool allocations to agents to display custom information from an internal system on their workstations
- Generate contact events to a CRM system about completed calls
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.
Configuration
Webhooks are configured in two steps. Any number of webhook endpoints are configured and then event subscriptions are bound to them.
Currently configuration can be managed by support only.
Sample configuration for one endpoint with two events
{
"Webhook": {
"Endpoint": "https://my.integration.com/wehook/",
"InsecureSSL": true,
"Secret": "MySecretString"
},
"Subscriptions": [
{
"EventType":"QueueCallInConnected",
"AllEntities": true
},
{
"EventType":"QueueCallInAllocated",
"AllEntities":true
}
]
}
Webhook endpoint
Webhook-receiving HTTPS endpoints are defined with following options:
| Option | Description | Example value |
|---|---|---|
| Endpoint | Full URL to endpoint | https://my.integration.com/webhook/ |
| InsecureSSL | Enable self-signed SSL certificates (see SSL verification) | true |
| Secret | Secret string included in HTTP calls. See Secret token | MySecretString |
Subscription
| Option | Description | Example value |
|---|---|---|
| EventType | Name of event that should be notified (see event types) | QueueCallInConnected |
| EntityId | Id of specific entity to get events about | e0072f3a-cc7c-42ee-b0ac-34cd7238150a |
| AllEntities | Alternatively to specific EntityId, return events for all entities | true |
Secret token
If webhook configuration defines Secret parameter, that string will be included
in X-Benemen-Token HTTP header in all requests. It should be verified to make sure
the request is coming from the authorized server.
SSL verification
The HTTPS endpoint certificate is validated against known certificate
authority list. This means that the certificate must be signed by a public Certificate Authority.
Self-signed certificates cannot be used, unless explicitly enabled by the InsecureSSL flag in
webhook configuration. Bypassing the certificate validation is discouraged in general, as it
may expose the sensitive data to unauthorized parties.
Endpoint implementation
While implementing a webhook listener, several considerations should be noted.
The listener must work over HTTPS only. Plain HTTP is not allowed, as the payload is potentially very sensitive.
The listener must listen in default HTTPS port 443. Using other ports is not possible.
The listener should verify the Secret token sent in X-Benemen-Token header to verify sender identity.
The listener must respond as fast as possible with a 200 OK status code. It is important to
perform any processing separately from responding to the webhook request. Otherwise you risk the
request timing out and getting re-sent. Similarly, sending any other response code than 200 OK will
make the request get re-sent.
The listener should not include any response body. It will be ignored in any case and simply causes unnecessary network traffic.
If the request times out or receives status code other than 200, it will be retried a few times and
then discarded. This means that notifications are not guaranteed to be delivered exactly once, even
though that is normally the case. If your implementation must be sure that each event is handled
exactly once, keep track of handled events based on their Id.
Each endpoint can only define a single URL. No load-balancing sets or failovers are supported. If you require such functionalities, run your own load-balancer in front of the actual receivers.
Request payload
Example full request (line breaks in body added for readability)
POST /webhook/
X-Benemen-Event: QueueCallInUserAllocated
X-Benemen-Token: MySecretString
Content-Type: application/json; charset=utf-8
Host: my.integration.com
Content-Length: 656
Connection: Keep-Alive
{
"RootEntityType":"Organization",
"RootEntityId":"fd434d24-f685-431d-8df5-386b5d5ffa73",
"EventType":"QueueCallInUserAllocated",
"EntityType":"Queue",
"EntityId":"6cb31d7d-9cd9-41dc-a096-62cf31fd0281",
"CallId":"9cae633f-68d0-4315-8b9a-b83c7673d8dc",
"QueueId":"6cb31d7d-9cd9-41dc-a096-62cf31fd0281",
"OrganizationId":"fd434d24-f685-431d-8df5-386b5d5ffa73",
"QueueName":"Sample queue 1",
"QueueNumber":"+358101231234",
"UserId":"b4df099e-70dc-4ff5-b4ea-c2c3547d97fb",
"Username":"sample.agent@customer.com",
"CallerNumber":"+358501231234",
"TargetNumber":"+35810123",
"Id":"85b214f2-1d27-4262-87b6-8f55b3199400",
"Timestamp":"2018-01-01T08:01:23.45"
}
All requests include two specific HTTP headers:
X-Benemen-Event- type of contained event. Used to aid in deserialization in cases where same HTTP endpoint handles multiple event typesX-Benemen-Token- secret token
Request body is always JSON encoded.
Common event properties
All event types have a basic set of properties defined. These are included to make it possible to process event payloads to some degree without explicit handling logic for each individual type. You might want to receive all webhooks in one endpoint but route them to different or several backends depending on the event type.
| Property | Type | Description |
|---|---|---|
| Id | Guid | Unique event instance id. Can be used to keep track of handled events as well as troubleshooting |
| Timestamp | DateTime | Timestamp when event was initially instantiated (i.e. when the event happened) |
| RootEntityType | RootEntityType | Root entity type event relates to |
| RootEntityId | Guid | Id of root entity |
| EntityType | EntityType | Main entity type event relates to |
| EntityId | Guid | Id of main entity |
| EventType | string | Name of event |
Root entity types
Root entity types are top-level containers events can be related to. Currently
only Organization events are provided, meaning events relating to a single
organization tenant as opposed to for example system-wide events.
| Type | Description |
|---|---|
| Undefined | Undefined value for backwards-compatibility if new types are introduced later. |
| Organization | Organization type. Currently all events belong to this root entity. |
Entity types
| Type | Description |
|---|---|
| Undefined | Undefined value for backwards-compatibility if new types are introduced later |
| User | User type, i.e. normal end-user |
| Queue | Service pool, i.e. a single queue handling service calls |
| CallList | Call list handling call-back requests and outbound calling |
User
Event: UserAvailability
User's current availability state
| Property name | Value type | Description |
|---|---|---|
| Availability | string | Availability state, possible values: Available, Busy, DoNotDisturb, OffWork |
| 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 |
| UserId | Guid | Id of target user. |
| UserName | string | Username of target user. |
Event: UserCallInArrived
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. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of current target user. |
| UserName | string | Username of current target user. |
Event: UserCallInComing
Incoming direct call to user entered BeneController.
| 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. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of target user. |
| Username | string | Username of target user |
Event: UserCallInDisconnected
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. |
| 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 target user. |
| Username | string | Username of target user |
Event: UserCallInOverflow
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. |
| 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
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. |
| 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
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. |
| 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
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. |
| 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
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. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of allocating User. |
| UserName | string | Allocation target username |
| UserNumber | string | Number of allocating User. |
Event: UserCallInUserCancelled
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. |
| Reason | string | Cancellation reason. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of allocated user. |
| UserName | string | Username of cancelling user. |
Event: UserCallInUserConnected
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. |
| 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
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 |
| 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
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. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of calling User. |
| UserName | string | Username of calling User. |
Event: UserCallOutDisconnected
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. |
| 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: UserCallOutGoing
Outgoing direct call initiated by a user
| 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. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of calling user. |
| UserName | string | Username of calling user. |
Event: UserStatus
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 quess". |
| 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
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
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
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
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: QueueAttachedUsers
Incoming call was accepted into service queue.
| Property name | Value type | Description |
|---|---|---|
| AttachedUsers | List<QueueAttachedUser> | List of attached users |
| OrganizationId | Guid | Id of related organization. |
| QueueId | Guid | Id of service queue. |
Event: QueueCallInArrived
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
New incoming call to service or technical queue entered BeneController.
| 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
Incoming call. Current target is service or technical queue. 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 |
| QueueId | Guid | Id of last allocating service queue. |
| QueueName | string | Name of last allocating service queue |
| Reason | string | Reason for the disconnect. 'remote' or 'local' |
| TargetNumber | string | Original called number |
| TechReason | string | Informative technical local reason for the disconnect. E.g "busy_on_busy", "ivr_menu_failure" etc. |
Event: QueueCallInOverflow
Incoming call. Current target is service or technical queue. Call overflows to 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. |
| QueueId | Guid | Id of service queue responsible for overflow. |
| 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
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 servic equeue. |
| 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
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
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: QueueCallInUserAllocated
Incoming call. Current target is service or technical queue. Allocated to an agent.
| 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. |
| QueueId | Guid | Id of allocating queue. |
| QueueName | string | Name of allocating queue. |
| QueueNumber | string | Number of allocating queue. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of allocation target user. |
| UserName | string | Username of allocation target user. |
Event: QueueCallInUserCancelled
Incoming call. Current target is service or technical queue. Allocation to agent 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 allocating queue. |
| QueueName | string | Name of allocating service queue. |
| QueueNumber | string | Number of allocating service queue. |
| Reason | string | Cancellation reason. 'local' or 'remote'. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of cancelling user. |
| UserName | string | Username of cancelling user. |
Event: QueueCallInUserConnected
Incoming call. Current target is service or technical queue. Answered by an agent.
| Property name | Value type | Description |
|---|---|---|
| AgentLegId | string | Id of core call leg event relates to. |
| 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 queue. |
| QueueName | string | Name of allocating service queue. |
| QueueNumber | string | Number of allocating service queue. |
| TargetNumber | string | Original called number. |
| UserId | Guid | Id of connected user. |
| UserName | string | Username of connected user. |
| UserNumber | string | Connected target number. |
Event: QueueStatus
Service queue status message, contains various counter values.
| 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). |
| 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. |
Misc: QueueAttachedUser
| Property name | Value type | Description |
|---|---|---|
| Active | bool | Active in queue |
| Priority | int | User's priority in queue |
| UserId | Guid | Attached UserId |
CallList
Event: CallbackChanged
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 calld |
| 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 |
| 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. |
| 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 |
Event: CallbackListStatus
Emitted with the latest status of each call list, if the status changed. Status changes are evaluated every 15 seconds. Can be used to construct alerts based on open items, automagically assign more agents to the lists or just simple dashboards.
| Property name | Value type | Description |
|---|---|---|
| CallListId | Guid | Corresponding list id |
| ExpiresIn24h | int | Number of requests that will expire today |
| IsAutoAllocate | bool | If the CallbackList is AutoAllocate list |
| NextHourOverDueDate | int | Total number of requests that will be past DueDate during next hour |
| NextHourRevealedNotBefore | int | Total number of requests that will be allocable during next hour |
| OrganizationId | Guid | Id of related organization. |
| TotalActiveAgents | int | Total "Active" ("checked" in the list, not necessary serving) agents in the queue. |
| TotalAssigned | int | Total number of requests that are currently assigned to an agent |
| TotalAutoAllocateAgents | int | Total number of Agents "Active" and "Serving_CallbackLists" |
| TotalFreeForAllocation | int | Total number of requests that can be allocated |
| TotalHidingNotBefore | int | Total number of requests that are not allocable due NotBefore has not elapsed |
| TotalOpenRequests | int | Total number open unhandled requests |
| TotalOverDueDate | int | Total number of requests that are already over DueDate |
| TotalServingAgents | int | Total number of agents having "Serving_CallbackLists" = 1 |
| TotalServingAutoAllocateAgents | int | Total immediately AutoAllocable agents. Agent must be "Active" and "Serving_CallbackLists", and the list must be "IsAutoAllocate" NOTE: Does not (at least YET) consider if agent already has an active allocated request, so a bit duplicate of TotalAutoAllocateAgents for now |
Misc: CallbackAttempt
Helper for CallbackAttempt transportation
| Property name | Value type | Description |
|---|---|---|
| CallbackAttemptTypeId | int? | Attempt result type |
| Id | Guid | Attempt id |
| Note | string | User-provided note |
| Timestamp | DateTime? | Attempt timestamp |
| UserId | Guid? | UserId attempt relates to |
Misc: CallbackExtra
Helper for CallBackExtraData transportation
| Property name | Value type | Description |
|---|---|---|
| Id | int | Property name |
| Name | string | Property name |
| Value | string | Property value |
Misc: CallbackRelatedItem
Helper for CallbackRelatedItem transportation
| Property name | Value type | Description |
|---|---|---|
| Id | Guid | Related request id |
| IsClosed | bool | IsClosed : if the related request is already closed |
| ListId | Guid? | Related request list id |
| StatusId | int? | StatusId : Raw status id for the last Attempt |