Call Identifiers in EnreachVoice integration interfaces

There are multiple call identifiers used in client-side and server-side integration interfaces. Unfortunately, the naming of these identifiers is not very coherent, making it possible to misinterpret callids. This document tries to shed light on the different call IDs.

Client Side

In clientside methods callId used for call control, is always an identifier of SIP-Session, which is not used at all in server-side APIs. There is an additional serverSideCallId which is the same as CallId in serverside methods.

If the same call is allocated to user multiple times, each allocation has a unique callId, but the same serverSideCallId.

JavaScript API

Description

JavaScript API

Description

callId

SIP session Id. This is not visible in any backend API, only on client side.

Used for call control via Javascript API methods.

serverSideCallId

The same as CallID in all backend APIs.
For outbound calls this is not available until call-in-progress event

Server side

There are also several IDs in serverside APIs:

Server Side API

Description

Server Side API

Description

CallId

A single unique identifier for the whole call. The same as serverSideCallId in client API

Id of call event

A separate identifier for a call event. Call event is always related to a CallId and one or more entities (user, queue, etc).

Call event identifiers are generated in post-processing.

  • Direct call events are generated after the call has been disconnected

  • ServiceCall events are generated after the call event has happened

CallLegId

Id for call allocation leg from in call-control perspective

REST API endpoints

There are multiple endpoints for retrieving call information.

All data is generated in post-processing → there is some delay (~10 sec) before data is available in REST API.

User-related call events (/calls endpoint)

https://doc.enreachvoice.com/beneapi/#user-call-information

Returns call events related to a user.

There are two different types of user calls: Direct calls and Service calls (aka. AgentCalls).

Permission to events is granted via User

Inbound Service calls (/servicecall endpoint)

https://doc.enreachvoice.com/beneapi/#service-call-information

Service calls are incoming calls made to service pools. Detailed information about call progress in the system is available via ServiceCallDetail events, while ServiceCall provides high-level information about the overall call.

Permission to events is granted via Queue

Outbound Service calls (/outbound-servicecall endpoint)

https://doc.enreachvoice.com/beneapi/#outbound-service-call-information

Outbound queue calls are initiated by the user, but are partially taken over by the service queue on behalf of which the call is made. Usually, the agent chooses to call on behalf of a queue, for example, to contact customers without exposing their own identity. The process can be automatic as well depending on configuration.

Outbound queue calls are recorded based on queue configuration, and the resulting call information as well as the recording belong primarily to the queue.

Permission to events is granted via Queue

Outbound callback calls (/outbound-callbackcall endpoint)

https://doc.enreachvoice.com/beneapi/#outbound-callback-call

Outbound callback calls are made to handle a pending callback request. The agent indicates they are calling to handle a specific request, and the call is taken over by the correspoding callback list and its configuration.

Outbound queue calls are recorded based on queue configuration, and the resulting call information as well as the recording belong primarily to the queue.

Permission to events is granted via CallBackList

Example scenario

In the example scenario below user A is using webphone to calls a service queue “Support”. The service call is allocated first to user B, which declines. Then it is allocated to user C, which answers the call.

The diagram below shows how different call Identifiers are generated

Client call events

WebPhone Javascript API use a unique clientside callId for each user. This is used for local call control via JavaScript API (answer(), reject() etc. methods)

The serverSideCallId is the same xyz for each user.

User-specific call events in REST API

There are three user-specific call events for the same CallId xyz returned from /calls/ endpoint

  • One for User A: outbound Direct call, result: Handled

    • Requires permission to see DirectCalls of user A

  • One for User B: inbound ServiceCall, result: Allocated

    • Requires permission to see AgentCalls of user B

  • One for User C: inbound ServiceCall, result: Handled

    • Requires permission to see AgentCalls of user C

 

Servicecall events in REST API

There is one ‘header’ record for a servicecall returned from /servicecall endpoint

There are multiple ‘detail’ events for a servicecall returned from /servicecall/xyz/details endpoint.

Both require permission to see servicecalls of queue ‘Support’

© Enreach, Mannerheimintie 117, 00280 Helsinki, Finland
+358 40 450 3000, www.enreach.fi