Download PDF
Download page Real-Time Reporting API.
Real-Time Reporting API
Upcoming Deprecation
- The Call Event and Call Event Feed methods will be deprecated in LV19 release. You should use the Interaction Event Feed method instead. To test the Interaction Event Feed method on U17, contact the Livevox Customer Care Team to enable it.
- The Agent Event methods will be deprecated in LV19 release. You should use the Agent Event Feed method instead.
Introduction
The LiveVox Real-Time Reporting API provides methods that allow you to retrieve data in near Real-Time from the LiveVox platform, such as campaign and queue statistics. The Real-Time Reporting API methods will only retrieve data for the current day. For any data pertaining to previous days or that is aggregated by a time interval, see the Reporting API.
For a general overview of the LiveVox APIs, including security aspects, see the LiveVox API Overview.
Prerequisites
- The user must have successfully logged into the LiveVox platform to obtain a valid Session ID. See Session Management for more information.
- The user must have an active subscription to the Configuration API, in order to obtain an Access Token for use in all API requests. See Access Tokens for details.
- All messages in this API may be subject to rate limits and other restrictions.
Real-Time Reporting API WADL/Swagger
The Session API WADL/Swagger is publicly available; to obtain the WADL/Swagger for any other API category a user will need to include the LV-Session header with a valid session ID in the WADL/Swagger request.
The Real-Time Reporting API v17.0 WADL/Swagger is available at the following URL:
The URLs listed below are for the LiveVox NA3 environment and will change slightly if your portal is in a different environment. To know how the URL changes per environment, see the LiveVox Environments and APIs section.
Real-Time API Resource | Link |
---|---|
Agent Event WADL | |
Agent Event Swagger | |
Call Data WADL | |
Call Data Swagger | |
Call Event WADL | |
Call Event Swagger | |
Interaction Event WADL | |
Interaction Event Swagger | |
Campaign WADL | |
Campaign Swagger | |
Service WADL | |
Service Swagger |
User Roles
Unless otherwise specified in this documentation, for a user to be able to access any data through the Real-Time Reporting API, the user must belong to either the Sysadmin, Superuser, Manager, or Report Admin role. These roles are defined in the LiveVox Configuration Manager and correspond to users who can access LiveVox configuration data through the LiveVox user interfaces.
Real-Time APIs
Agent Event
The Agent Event API is used to gather various agent data, this data is updated in near real-time; a new Agent event is created each time an Agent changes state (i.e. they change from 'Ready
' to 'Not Ready
'). Agent events are available for a 24hr rolling window, so if the event was created at 8 AM it'll be available until 8 AM the next day. There is both a long polling implementation (Retrieve Agent Event Feed) and a bulk method (Retrieve Agent Event), we recommend using the Agent Event Feed method as the Agent Event method is scheduled for deprecation in a future version.
Before using the Agent Event APIs clients need to contact the LiveVox Customer Care Team to ensure that the proper backend settings are correctly configured.
Retrieve Agent Event
Description: Retrieves a list of Agent events and returns the available information about the agent.
The Agent Event method is scheduled for deprecation in future releases. You should use the Agent Event Feed method instead.
User Roles: Sysadmin
Method: POST /realtime/agentEvent/
Parameters:
None
Body:
Key | Type | Mandatory? | Description |
---|---|---|---|
agentId | Integer (ID) | Yes | The ID of the Agent for which events should be returned. |
start | dateTime | Yes | All Agent events that occurred after this time will be returned. |
end | dateTime | Yes | All Agent events that occurred before this time will be returned. |
Response Code: 200 OK
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
agentEvent | Array | No | An array of agent events that occurred between the requested start and end time.
|
Retrieve Agent Events
#Request (JSON)
POST /realtime/agentEvent
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"agentId":378075,
"start":"2015-10-29T09:00:00.000-07:00",
"end":"2015-10-29T11:00:00.000-07:00"
}
#Response
200 OK
Content-Type: application/json
{"agentEvent": [
{
"timestamp": 1446137970819,
"clientId": 47415,
"agentId": 378075,
"agentServiceId": 47419,
"eventType": "LOGON"
},
{
"timestamp": 1446137970827,
"clientId": 47415,
"agentId": 378075,
"agentServiceId": 47419,
"lineNumber": "ACD",
"eventType": "READY"
},
...
{
"timestamp": 1446138635284,
"clientId": 47415,
"agentId": 378075,
"agentServiceId": 47418,
"lineNumber": "DIRECT",
"eventType": "NOT_READY"
},
{
"timestamp": 1446138639408,
"clientId": 47415,
"agentId": 378075,
"agentServiceId": 47418,
"lineNumber": "DIRECT",
"eventType": "READY"
},
{
"timestamp": 1446138743868,
"clientId": 47415,
"agentId": 378075,
"agentServiceId": 47418,
"eventType": "LOGOFF"
}
]}
Retrieve Agent Event Feed
Description: A long polling implementation of Agent events. When the first request is made it should be a blank request, this is so the first token can be obtained; the next request should include the token and the response will contain all events from the time the token was created until the current request time. After the initial request, subsequent requests should contain the token from the previous request, this will ensure you aren't returned any duplicate events. If there are no new events in the window between the included token and the current time, the Agent event feed will wait 10 seconds before returning a new token; this new token should be used in the subsequent request. Before beginning to use the method backend settings must be configured by LiveVox, these settings start the feed and any events before this configuration are not available.
User Roles: Sysadmin or Manager
Method: POST /realtime/agentEvent/feed
Parameters:
None
Body:
Key | Type | Mandatory? | Description |
---|---|---|---|
token | String | No | The token is a marker for the last event that's been passed to the requester. In the initial request you will not have a token and therefore should make an empty request to receive the first token; subsequent requests should contain the token of the previous request so duplicate events are not received. |
Response Code: 200 OK
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
token | String | Yes | A marker for the last event passed; we pass a maximum of 1,000 events. If there are no new events we will wait for 10 seconds before responding, if no new events occur during this time we'll return a new token that should be used in the next request. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
agentEvent | Array | No | An array of agent events that occurred after the token included in the request.
|
Procuring the Initial Token
#Request (JSON)
POST /realtime/agentEvent/feed
Host: localhost.com
Content-Type: application/json
Accept: application/json
#Response
200 OK
Content-Type: application/json
{
"agentEvent": [],
"token": "cfaf0a70-1c52-11e6-8080-808080808080"
}
Retrieve Events from the Feed
#Request (JSON)
POST /realtime/agentEvent/feed
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"token": "cfaf0a70-1c52-11e6-8080-808080808080"
}
#Response
200 OK
Content-Type: application/json
{
"agentEvent": [
{
"timestamp": 1463032800000,
"clientId": 47415,
"agentId": 393601,
"agentServiceId": 47416,
"agentTeamId": 1234,
"lineNumber": "ACD",
"eventType": "NOT_READY",
"notReadyReasonCode": "OTHER",
"callServiceId": 47416,
"transactionId": 51296267124,
"sessionId": "U112FFCT234F79@104.403.828.68",
"phoneNumber": "6503517450",
"result": "AGENT - Customer Hung Up",
"campaignType": "OUTBOUND",
"agent2Id": 393601,
"supervisorSessionId": "U112FF324341F79@103.403.88.68",
"supervisorPhoneNumber": "6503517513",
"seqNum": 123,
"eventId": "cid=47315:aid=393401:time=146303243000:seq=123"
}
],
"token": "aea12ef0-1809-11e6-af08-8f619b2ec41c"
}
Call Data
Currently, the Real-Time Reporting API supports the gathering of metadata for a call during and post call. The metadata is dependent on the user providing a sessionId, transactionId, and clientId; which together provides the information to uniquely identify a call.
These methods can only be used to find calls for the current day.
Read In Call Metadata
Description: Gets the in call metadata for a call using the session ID, transaction ID, and Client ID.
User Roles: Sysadmin, Superuser, or Report Admin
This method can only be called while the call is in progress.
Method: GET /realtime/callData/inCall?[client={clientId}&]session={sessionId}&transaction={transactionId}
Parameters:
Path/Query Parameter Name | Variable Name | Type | Mandatory? | Description |
---|---|---|---|---|
client | clientId | Integer (ID) | No | The ID of the Client the call is associated to. |
session | sessionId | String | Yes | The Session ID of the call to be read. |
transaction | transactionId | Integer | Yes | The Transaction ID of the call to be read. |
Body:
None
Response Code: 200 OK
Body:
Key | Type | Mandatory? | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
serviceId | Integer (ID) | Yes | ID of the Service the call is associated to. | ||||||||||||
callCenterId | Integer (ID) | Yes | ID of the Call Center which contains the Service. | ||||||||||||
account | String | No | The account number for the call. | ||||||||||||
totalDue | Decimal | No | The total amount due for the call. | ||||||||||||
callDirectionOutbound | Boolean | Yes | If true the call is an outbound call, if false the call is an inbound call. | ||||||||||||
callStartTime | DateTime | Yes | The start date and time of the call. | ||||||||||||
zipCode | String | No | The zip code for the call. | ||||||||||||
consumer | Array | No | The name associated with the call.
|
Read in call metadata
#Request (JSON)
GET /realtime/callData/inCall?client=4199&session=UD6134T518A1E40@10.10.112.81&transaction=21162784221
Host: localhost.com
Content-Type: application/json
Accept: application/json
#Response
200 OK
Content-Type: application/json
{
"consumer": {
"firstName": "John",
"lastName": "Mcgee"
},
"serviceId": 4199,
"callCenterId": 15,
"account": "087764164",
"zipCode": null,
"totalDue": 216.04,
"callDirectionOutbound": true,
"callStartTime": 1368006208000
}
Read Post Call Metadata
Description: Gets the post call metadata for a call using the session ID and transaction ID.
User Roles: Sysadmin, Superuser, or Report Admin
Method: GET /realtime/callData/postCall?[client={clientId}&]session={sessionId}&transaction={transactionId}
Parameters:
Path/Query Parameter Name | Variable Name | Type | Mandatory? | Description |
---|---|---|---|---|
client | clientId | Integer (ID) | No | The ID of the Client the call is associated to. |
session | sessionId | String | Yes | The Session ID of the call to be read. |
transaction | transactionId | Integer | Yes | The Transaction ID of the call to be read. |
Body:
None
Response Code: 200 OK
Body:
Key | Type | Mandatory? | Description |
---|---|---|---|
serviceId | Integer (ID) | Yes | ID of the Service the call is associated with. |
callEndTime | DateTime | Yes | The end date and time of the call. |
lvResult | String | Yes | The LiveVox result name for the call. |
phoneDialed | Integer | Yes | The phone number dialed or the callers ANI. |
termCodeName | String | Yes | The Termination Code name for the call. |
Read post call metadata
#Request (JSON)
GET /realtime/callData/postCall?client=4199&session=UD6134T518A1E40@10.10.112.81&transaction=21162784221
Host: localhost.com
Content-Type: application/json
Accept: application/json
#Response
200 OK
Content-Type: application/json
{
"serviceId": 4199,
"callEndTime": 1368006243000,
"lvResult": "Invalid Phone Number",
"phoneDialed": "6503517508",
"termCodeName": null
}
Call Event
The Call Event API is used to gather various call data, this data is updated in near real-time. Depending on how the call progresses as many as 3 events can be created; call start, call disposition and call termination. Call events can be retrieved for a 24hr rolling window, meaning that if the event was created at 8 AM it'll be available for retrieval until 8 AM the next day.
- Before using the Call Event APIs clients need to contact the LiveVox Customer Care Team to ensure that the proper backend settings are correctly configured.
- The Call Event methods are scheduled for deprecation in future releases. You should use Interaction Event Feed methods instead.
- The Call Event Feed method will be deprecated in LV19. You should use the Interaction Event Feed method instead. To test the Interaction Event Feed method on U17, contact the Livevox Customer Care Team to enable it.
Event Recovery
If a situation arises where events are not retrieved within the 24hr window the Call Event Recovery Report method in the Reporting API can be used to retrieve most of the data of the call events, it will not be provided in event form (i.e. you won't see data for call start, call disposition and call termination) but rather in a standard CDR format. There is some data that cannot be included in the report, this includes the following fields: agentActionType
, callEventType
, callOutcome1
, callOutcome2
, callOutcome3
, eventId
, operatorTransfer
, operatorTransferSuccessful
, priority
, and serviceLevelThreshold
.
Expected Fields by Call Event Type
Each callEventType
will have certain fields that are passed in the event, not all fields will be included in all types because the data may not be available. Below is a table of the current callEventType
and the fields that can be expected back for each event, this does not mean the fields will always return data, that depends on the specific call (Ex: agentId will only be returned on calls that are handled by an Agent). This is intended to provide a basic idea of what properties to expect back with each event and not what properties are mandatory for each event. We currently only pass events for call start, call disposition and call termination.
Field | Call Event Type | ||
---|---|---|---|
CALL_START | CALL_DISPOSITION | CALL_TERMINATION | |
account | |||
agentId | |||
agentLoginId | |||
areaCodeState | |||
callCenterId | |||
callDirection | |||
callEventType | |||
callerId | |||
campaignId | |||
campaignType | |||
clientId | |||
duration | |||
end | |||
lvResult | |||
lvResultId | |||
operatorPhone | |||
operatorTransfer | |||
operatorTransferSuccessful | |||
phoneDialed | |||
phonePosition | |||
priority | |||
roundedIvrDuration | |||
serviceId | |||
serviceLevelThreshold | |||
sessionId | |||
start | |||
transactionId | |||
transferHoldDuration | |||
zipCode |
Retrieve Call Event
Description: Retrieves a list of call events and returns the available information about the call.
When the Retrieve Call Event method is first used a token will not be available to include in the request; to obtain a token you must first make a request without one and then use the token provided in the response in subsequent requests to obtain all events that occurred after the included token. When the request comes without a token the response will contain a token and zero or more callEvents
. The number of callEvents
returned is based on whether or not an event occurs before the request times out, if no event occurs then just a token will be returned. However, if an event occurs before the timeout that event plus the token will be returned; multiple events can be returned if they occur within close proximity to each other.
User Roles: Sysadmin
Method: POST /realtime/callEvent
Parameters:
None
Body:
Key | Type | Mandatory? | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
token | String | No | The | ||||||||
services | Array | No | An array of Service IDs to filter the call events.
| ||||||||
callCenter | Array | No | An array of Call Center IDs to filter the call events.
|
Response Code: 200 OK
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
token | String | No | Marks a specific point in the event feed. Including this | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
callEvent | Array | No | An array of call events that have occurred since the
|
Retrieve call events
#Request (JSON)
POST /realtime/callEvent
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"services": {
"service": [
{
"id": 113942
}
]
},
"callCenters": {
"callCenter": [
{
"id": 14090
}
]
},
"token": "f6717d80-bfc8-11ec-8080-808080808080"
}
#Response
200 OK
Content-Type: application/json
{
"callEvent": [
{
"callEventType": "CALL_START",
"clientId": 111645,
"agentId": 657096184,
"agentLoginId": "APITEST1",
"callCenterId": 14090,
"serviceId": 113942,
"campaignId": 749316929,
"transactionId": 1228571384627,
"sessionId": "U71E7T625E8AB5@10.111.17.109",
"account": "qae1111",
"phoneDialed": "6503517518",
"operatorPhone": "6503517500",
"campaignType": "MANUAL",
"callDirection": "MANUAL",
"start": 1650363061000,
"end": null,
"duration": null,
"callerId": null,
"priority": null,
"phonePosition": null,
"lvResultId": null,
"lvResult": null,
"customOutcome1": null,
"customOutcome2": null,
"customOutcome3": null,
"zipCode": null,
"zipCodeState": null,
"areaCodeState": "CA",
"toEmail": null,
"fromEmail": null,
"ptpAmount": null,
"eventId": null
},
{
"callEventType": "CALL_TERMINATION",
"clientId": 111645,
"agentId": 657096184,
"agentLoginId": "APITEST1",
"callCenterId": 14090,
"serviceId": 113942,
"campaignId": 749316929,
"transactionId": 1228571384627,
"sessionId": "U71E7T625E8AB5@10.111.17.109",
"account": "qae1111",
"phoneDialed": "6503517518",
"operatorPhone": "6503517500",
"campaignType": "MANUAL",
"callDirection": "MANUAL",
"start": 1650363061000,
"end": 1650363080000,
"duration": 17,
"callerId": "6503517500",
"priority": 308,
"phonePosition": null,
"lvResultId": 661,
"lvResult": "Operator Transfer (Agent Terminated Call)",
"customOutcome1": null,
"customOutcome2": null,
"customOutcome3": null,
"zipCode": null,
"zipCodeState": null,
"areaCodeState": "CA",
"toEmail": null,
"fromEmail": null,
"ptpAmount": null,
"eventId": null
},
{
"callEventType": "CALL_DISPOSITION",
"clientId": 111645,
"agentId": 657096184,
"agentLoginId": "APITEST1",
"callCenterId": 14090,
"serviceId": 113942,
"campaignId": 749316929,
"transactionId": 1228571384627,
"sessionId": "U71E7T625E8AB5@10.111.17.109",
"account": "qae1111",
"phoneDialed": "6503517518",
"operatorPhone": null,
"campaignType": "MANUAL",
"callDirection": "MANUAL",
"start": 1650363061000,
"end": null,
"duration": null,
"callerId": null,
"priority": 112,
"phonePosition": null,
"lvResultId": 723,
"lvResult": "AGENT - Attorney Handling",
"customOutcome1": null,
"customOutcome2": null,
"customOutcome3": null,
"zipCode": null,
"zipCodeState": null,
"areaCodeState": "CA",
"toEmail": null,
"fromEmail": null,
"ptpAmount": null,
"eventId": null
}
],
"token": "33f21e81-bfc9-11ec-8d51-c9f64d3a0b76"
}
Retrieve Call Event Feed
Description: A long polling implementation of call events. When the first request is made, it should be a request with a blank token, this is so the first token can be obtained; the next request should include the token, the response will contain all events from the time the token was created until the current request time. After the initial request, subsequent requests should contain the token from the previous request, this will ensure you aren't returned any duplicate events. If there are no new events in the window between the included token and the current time, the call events feed will wait 10 seconds before returning a new token; this new token should be used in the subsequent request. Before beginning to use the method backend settings must be configured by LiveVox, these settings start the feed and any events before this configuration are not available. Call events are available for 24 hours from the time they are created.
If you include a token that is older than 24 hours, you will be returned an error stating that the token needs to be within 24 hours.
User Roles: Sysadmin or Manager
Method: POST /realtime/callEvent/feed
Parameters:
None
Body:
Key | Type | Mandatory? | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
token | String | No | The | ||||||||
services | Array | No | An array of Service IDs to filter the call events.
| ||||||||
callCenter | Array | No | An array of Call Center IDs to filter the call events.
|
Response Code: 200 OK
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
token | String | No | Marks a specific point in the event feed. Including this | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
callEvent | Array | No | An array of call events that have occurred since the
|
Getting a first token
#Request (JSON)
POST /realtime/callEvent/feed
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"token": ""
}
#Response
200 OK
Content-Type: application/json
{
"callEvent": [],
"token": "a715b250-9081-11eb-8080-808080808080"
}
Below example shows fromEmail
, toEmail
, and ptpAmount
fields. They are not currently available and should be ignored.
Retrieve call event feed
#Request (JSON)
POST /realtime/callEvent/feed
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"services": {
"service": [
{
"id": 83626
},
{
"id": 83625
}
]
},
"callCenters": {
"callCenter": [
{
"id": 7432
}
]
},
"token": "a715b250-9081-11eb-8080-808080808080"
}
#Response
200 OK
Content-Type: application/json
{
"callEvent": [
{
"callEventType": "CALL_START",
"clientId": 83621,
"agentId": 613990,
"agentLoginId": "APITEST2",
"callCenterId": 7432,
"serviceId": 83626,
"campaignId": 29024137,
"transactionId": 55922106364,
"sessionId": "UEB77T6061BDA6@10.201.21.15",
"account": null,
"phoneDialed": "6503517485",
"operatorPhone": "6503517500",
"campaignType": "MANUAL",
"callDirection": "MANUAL",
"start": 1617018278000,
"end": null,
"duration": null,
"callerId": null,
"priority": null,
"phonePosition": null,
"lvResultId": null,
"lvResult": null,
"customOutcome1": null,
"customOutcome2": null,
"customOutcome3": null,
"zipCode": null,
"zipCodeState": null,
"areaCodeState": "CA",
"toEmail": null,
"fromEmail": null,
"ptpAmount": null,
"agentActionType": null,
"operatorTransferSuccessful": null,
"operatorTransfer": null,
"serviceLevelThreshold": null,
"transferHoldDuration": null,
"roundedIvrDuration": null,
"eventId": "e499320b-35cb-4a13-b510-8a1edb84ee19"
},
...
{
"callEventType": "CALL_TERMINATION",
"clientId": 83621,
"agentId": null,
"agentLoginId": "APITEST2",
"callCenterId": 7432,
"serviceId": 83626,
"campaignId": 29024137,
"transactionId": 55922106583,
"sessionId": "UEB8CT6061C0F0@10.201.21.15",
"account": null,
"phoneDialed": "6505153873",
"operatorPhone": "6503517500",
"campaignType": "MANUAL",
"callDirection": "MANUAL",
"start": 1617019120000,
"end": 1617019165000,
"duration": 44,
"callerId": "6503517500",
"priority": 300,
"phonePosition": null,
"lvResultId": 476,
"lvResult": "Operator Transfer",
"customOutcome1": null,
"customOutcome2": null,
"customOutcome3": null,
"zipCode": null,
"zipCodeState": null,
"areaCodeState": "CA",
"toEmail": null,
"fromEmail": null,
"ptpAmount": null,
"agentActionType": null,
"operatorTransferSuccessful": 1,
"operatorTransfer": 1,
"serviceLevelThreshold": 20,
"transferHoldDuration": 0,
"roundedIvrDuration": 4,
"eventId": "e8300de3-e53e-4c24-8989-80692796ce7a"
}
],
"token": "46eb9100-9087-11eb-8080-808080808080"
}
Retrieve call event feed when the token is older than 24 hours
#Request (JSON)
POST /realtime/callEvent/feed
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"services": {
"service": [
{
"id": 83626
},
{
"id": 83625
}
]
},
"callCenters": {
"callCenter": [
{
"id": 7432
}
]
},
"token": "5faea4a0-98cf-11e3-adc2-6b42202247a8"
}
#Response
400 Bad Request
Content-Type: application/json
{
"code": 202,
"message": "Time \"2014-02-18 14:03:38-0500\" is more than 24 hours old. This type of data is kept for 24 hours."
}
Interaction Event
The Interaction Event API is used to gather various interaction data, this data is updated in near real-time. Below are the available interaction types:
- Email (outbound)
- SMS (outbound
Call, Chat, Email (Inbound), and SMS (Inbound) interactions will be available in future releases through this method.
Expected Fields by Interaction Event Type
Each interactionType
will have certain fields that are passed in the event, not all fields will be included in all types because the data may not be available. Below is a table of the current interactionType
and the fields that can be expected back for each event, this does not mean the fields will always return data. This is intended to provide a basic idea of what properties to expect back with each event and not what properties are mandatory for each event. We currently only pass events for Email (outbound) and SMS (outbound).
Field | Interaction Event Type | |
---|---|---|
Email (outbound) | SMS (outbound) | |
accountNumber | ||
acctTransactionId | ||
callCenterId | ||
callStartTime | ||
campaignId | ||
campaignType | ||
carrier | ||
clientId | ||
eventType | ||
fromEmail | ||
interactionType | ||
phoneNumber | ||
serviceId | ||
sessionId | ||
smsCode | ||
threadId | ||
timestamp | ||
toEmail | ||
transactionId |
Retrieve Interaction Event Feed
Description: A long polling implementation of interaction events. When the first request is made, it should be a request with a blank token, this is so the first token can be obtained; the next request should include the token, the response will contain all interaction events from the time the token was created until the current request time depending on filters. After the initial request, subsequent requests should contain the token from the previous request, this will ensure you aren't returned any duplicate events. If there are no new events in the window between the included token and the current time, the interaction events feed will wait 10 seconds before returning a new token; this new token should be used in the subsequent request. Before beginning to use the method backend settings must be configured by LiveVox, these settings start the feed, and any events before this configuration are not available. Interaction events are available for 24 hours from the time they are created.
If you include a token that is older than 24 hours, you will be returned an error stating that the token needs to be within 24 hours.
User Roles: Sysadmin or Manager
Method: POST /realtime/event/feed[?count={n}]
Parameters:
Request Parameter | Value | Type | Mandatory? | Description |
---|---|---|---|---|
count | n | Integer | No | Specifies the maximum number of items to return for the request. The count value needs to be between 500 and 1,000. The default is set to 1,000 by the system. |
If the Accept-Encoding header with the value 'gzip' is provided, the served content is compressed. This header is optional.
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
token | String | No | The | ||||||||||||||||||||||||||||||||||||||||
filter | Object | No | Filter criteria for the events
|
Response Code: 200 OK
Body:
Key | Type | Mandatory? | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
token | String | Yes | Marks a specific point in the event feed. Including this | ||||||||
events | Array | Yes | An array of events that have occurred since the
|
If you provide the Accept-Encoding header with valid value ' gzip ', the served content is compressed.
Response Code: 200 OK
Body: [binary compressed]
Getting a first token
#Request (JSON)
POST /realtime/callEvent/feed
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"token": ""
}
#Response
200 OK
Content-Type: application/json
{
"token": "e0646720-a7f3-11eb-8080-808080808080",
"events": []
}
#Request (JSON)
POST /realtime/event/feed/?count=500
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"token": "e0646720-a7f3-11eb-8080-808080808080",
"filter": {
"interactionType": [
{
"type": "EMAIL"
},
{
"type": "SMS"
}
],
"callCenter": [
{
"id": 11363
}
],
"service": [
{
"id": 93140
}
]
}
}
#Response
200 OK
Content-Type: application/json
{
"token": "c388c0f0-a4d9-11eb-8080-808080808080",
"events": [
{
"eventId": "41e22410-a4d9-11eb-abe6-bd1649d297a6",
"interactionType": "SMS",
"clientId": "93119",
"callCenterId": "11363",
"serviceId": "93140",
"timestamp": "2021-04-24T04:44:08.000-04:00",
"campaignId": "29161334",
"sessionId": "93140-55926849742-1619253848682",
"phoneNumber": "4154164061",
"acctTransactionId": "55926849742",
"eventType": "Attempt",
"threadId": "55926849742",
"accountNumber": "13213",
"campaignType": "OB",
"carrier": "sap_sms365",
"smsCode": "53063"
},
{
"eventId": "41e928f0-a4d9-11eb-abe6-bd1649d297a6",
"interactionType": "Email",
"clientId": "93119",
"callCenterId": "11363",
"serviceId": "93140",
"timestamp": "2021-04-24T04:44:15.106-04:00",
"campaignId": "29161335",
"sessionId": "93140_55926849743_1619253855019",
"fromEmail": "qa@livevox.com",
"toEmail": "kyargal@livevox.com",
"acctTransactionId": "55926849743",
"eventType": "Attempt",
"threadId": null,
"accountNumber": "APIQAE1234",
"campaignType": "OB",
"carrier": "sendgrid"
}
]
}
Retrieve interaction event feed when the token is older than 24 hours
#Request (JSON)
POST /realtime/event/feed
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"token": "d57fa600-9117-11eb-8080-808080808080",
"filter": {
"interactionType": [
{
"type": "EMAIL"
},
{
"type": "SMS"
}
],
"callCenter": [
{
"id": 7432
}
],
"service": [
{
"id": 83626
}
]
}
}
#Response
400 Bad Request
Content-Type: application/json
{
"code": 202,
"message": "Time \"2021-03-30 01:21:51-0400\" is more than 24 hours old. This type of data is kept for 24 hours."
}
Retrieve Event Feed Through Server-Sent Event (SSE)
Description: Server-Sent Events allows you to receive automatic updates from a server over an HTTP connection without resorting to polling. Once the request is received by the server, a connection can be kept open as long as needed. If there are new events, the server will send as many new events as possible, up to the specified count. If there are no new events, the server will send a comment in the SSE term (a line starting with ':') for the purpose of keeping the connection alive during the idle period. Before beginning to use the method backend settings must be configured by LiveVox, these settings start the feed, and any events before this configuration are not available.
You are expected to keep a record of the eventId
from the last event such that, in case of lost connection, you can send the last eventId
as token
in a new request. This will make sure that you don't miss any events in between. Otherwise, you can send the request without a token, and the event feed will only send events that are created after the request is started.
- There is a timer for a connection. If there is no event for 5 minutes, the system will close the connection and sends a comment to you.
- SSE does not work well with Postman tool. Manually, curl may be the only tool as shown in the below examples.
User Roles: Sysadmin or Manager
Method: POST /realtime/event/feed/sse[?count={n}]
Parameters:
Request Parameter | Value | Type | Mandatory? | Description |
---|---|---|---|---|
count | n | Integer | No | Specifies the maximum number of items to return for the request The count value needs to be between 500 and 1,000. The default is set to 1,000 by the system. |
Headers:
Header | Value | Mandatory? | Description |
---|---|---|---|
Accept-Encoding | gzip | No | If this header with the value 'gzip' is provided, the served content is compressed. This header is optional. |
Accept | text/event-stream, application/json | Yes | Notice the two values for the header as we will use JSON to report validation/authorization errors. |
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
token | String | No | The | ||||||||||||||||||||||||||||||||||||||||
filter | Object | No | Filter criteria for the events
|
Response Code: 200 OK
Headers:
Header | Value | Mandatory? | Description |
---|---|---|---|
Content-Type | text/event-stream | Yes | Simple stream of text data that must be encoded using UTF-8 |
Body:
The event stream is a simple stream of text data that is encoded using UTF-8. Messages in the event stream are separated by a pair of newline characters. Each message consists of one or more lines of text listing the fields for that message. Each field is represented by the field name, followed by a colon, followed by the text data for that field's value.
Key | Type | Mandatory? | Description |
---|---|---|---|
data | String | Yes | A JSON string representation of an event. |
Retrieve interaction event feed through SSE
#Request
curl --location --request POST 'http://<LiveVox API server name>/realtime/event/feed/sse?count=500' \
--header 'LV-Session: 47cbd019-9736-4236-9a75-8a9a25d2154f' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "",
"filter": {
"interactionType": [
{
"type": "EMAIL"
},
{
"type": "SMS"
}
],
"callCenter": [
{
"id": 11363
}
],
"service": [
{
"id": 93140
}
]
}
}'
#Response
: keepalive 2021-04-24 07:34:29-0400
: keepalive 2021-04-24 07:34:39-0400
: keepalive 2021-04-24 07:34:49-0400
data: {"eventId":"41e22410-a4d9-11eb-abe6-bd1649d297a6","interactionType":"SMS","clientId":"93119",
"callCenterId":"11363","serviceId":"93140","timestamp":"2021-04-24T07:34:52.000-04:00","campaignId":"29161334",
"sessionId":"93140-55926849742-1619253848682","phoneNumber":"4154164061","acctTransactionId":"55926849742",
"eventType":"Attempt","threadId":"55926849742","accountNumber":"13213","campaignType":"OB","carrier":"sap_sms365","smsCode":"53063"}
data: {"eventId":"41e928f0-a4d9-11eb-abe6-bd1649d297a6","interactionType":"Email","clientId":"93119",
"callCenterId":"11363","serviceId":"93140","timestamp":"2021-04-24T07:34:55.106-04:00","campaignId":"29161335",
"sessionId":"93140_55926849743_1619253855019","fromEmail":"qa@livevox.com","toEmail":"kyargal@livevox.com",
"acctTransactionId":"55926849743","eventType":"Attempt","threadId":null,"accountNumber":"APIQAE1234","campaignType":"OB","carrier":"sendgrid"}
: keepalive 2021-04-24 07:35:05-0400
Retrieve interaction event feed through SSE when eventId is used as token
#Request
curl --location --request POST 'http://<LiveVox API server name>/realtime/event/feed/sse' \
--header 'LV-Session: 47cbd019-9736-4236-9a75-8a9a25d2154f' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "41e22410-a4d9-11eb-abe6-bd1649d297a6",
"filter": {
"interactionType": [
{
"type": "EMAIL"
},
{
"type": "SMS"
}
],
"callCenter": [
{
"id": 11363
}
],
"service": [
{
"id": 93140
}
]
}
}'
#Response
data: {"eventId":"41e928f0-a4d9-11eb-abe6-bd1649d297a6","interactionType":"Email","clientId":"93119",
"callCenterId":"11363","serviceId":"93140","timestamp":"2021-04-24T07:34:55.106-04:00","campaignId":"29161335",
"sessionId":"93140_55926849743_1619253855019","fromEmail":"qa@livevox.com","toEmail":"kyargal@livevox.com",
"acctTransactionId":"55926849743","eventType":"Attempt","threadId":null,"accountNumber":"APIQAE1234","campaignType":"OB","carrier":"sendgrid"}
data: {"eventId":"41ee8020-a4d9-11eb-abe6-bd1649d297a6","interactionType":"Email","clientId":"93119",
"callCenterId":"11363","serviceId":"93140","timestamp":"2021-04-24T07:52:16-100-04:00","campaignId":"29161335",
"sessionId":"93140_55926849744_1619253855759","fromEmail":"qa@livevox.com","toEmail":"kyargal@livevox.com",
"acctTransactionId":"55926849744","eventType":"Attempt","threadId":null,"accountNumber":"APIQAE1234","campaignType":"OB","carrier":"sendgrid"}
: keepalive 2021-04-24 07:52:26-0400
: keepalive 2021-04-24 07:52:36-0400
Campaign
The Campaign APIs return campaign statistical information.
Campaign Level Statistics
Description:
Returns Campaign statistical information that includes records uploaded to the platform, records processed successfully, records yet to be dialed, and records for which dialing is complete. The statistics are returned only for current day campaigns, which are not in the following states: Deactivates, scheduled unbuilt, and ready unbuilt.
User Roles: Sysadmin, Superuser, IT user, Auditor, or Manager
Method: POST /realtime/campaign/stats
Parameters:
None
Body:
Key or Element | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter | Object | No | Specifies the filter criteria. The filter is not an 'and' filter, but rather an exclusive 'or' filter, meaning that no more than 1 filter may be specified when making a request.
|
Response Code: 200 OK
Body:
Key or Attribute | Type | Mandatory? | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
stats | Array | Yes | An array of campaign statistics.
|
Campaign Level Statistics
#Request (JSON)
POST /realtime/realtime/campaign/stats
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"filter": {
"campaign": [
{
"id": "103629512"
}
]
}
}
#Response
200 OK
Content-Type: application/json
{
"stats": [
{
"timezoneBreakdown": [
{
"timezone": "AL",
"count": 0
},
{
"timezone": "AT",
"count": 2
},
{
"timezone": "CHT",
"count": 0
},
{
"timezone": "CT",
"count": 0
},
{
"timezone": "ET",
"count": 5
},
{
"timezone": "HI",
"count": 0
},
{
"timezone": "MT",
"count": 3
},
{
"timezone": "PT",
"count": 1
},
{
"timezone": "SAFE",
"count": 0
},
{
"timezone": "UK",
"count": 0
}
],
"campaignId": 103629512,
"serviceId": 1008351,
"loaded": 11,
"uploaded": 15,
"remaining": 10
}
]
}
Service
The Service APIs return in real-time the statistics pertaining to a particular Service or the Agents that are part of that Service.
Get Agent Averages
Description: Returns the average time Agents spent in various states (i.e. Ready, Not Ready, In Call, etc.)
User Roles: Sysadmin, Superuser, or Manager
Method: POST /realtime/service/agents/averages
Parameters:
None
Body:
Key or Element | Type | Mandatory? | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter | Object | No | Specifies the filter criteria
|
Response Code: 200 OK
Body:
Key or Attribute | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
agentAverages | Array | Yes | Provides summary of Agent averages for various Agent states.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
timeStamp | DateTime | Yes | Last Timestamp since the Agent Service was updated. |
Get Agent Averages
#Request (JSON)
POST /realtime/service/agents/averages
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"filter": {
"service": [{"id": "38049"}]
}
}
#Response
200 OK
Content-Type: application/json
{
"agentAverages": [
{
"averageReadyTime": "3",
"averageNotReadyTime": "2",
"averageTalkTime": "5",
"averageWrapupTime": "1",
"averagePreviewDialTime": "1",
"averageManualDialTime": "0",
"averageHoldTime": "2",
"averageTransferringTime": "1",
"averageRegisteringTime": "0",
"averageDialingTime": "0",
"averageReservedTime": "0",
"timeStamp": "1417075930315"
}],
"timeStamp": "1417077749955"
}
Get Agent Statistics
Description: Returns Agent statistical information.
User Roles: Sysadmin, Superuser, or Manager
Method: POST /realtime/service/agent/stats
Parameters:
None
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter | Object | No | Specifies the filter criteria.
|
Response Code: 200 OK
Body:
Key or Attribute | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
agentStatistics | Array | Yes | Provides statistical information of the agent.
|
Agent Statistics
#Request (JSON)
POST /realtime/service/agent/stats
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"filter": {
"service": [{"id": "38049"}]
}
}
#Response
200 OK
Content-Type: application/json
"agentStatistics": [{
"agentName": "VINAY K",
"agentStatus": "Ready",
"inboundCalls": 0,
"outboundCalls": 0,
"stateChangedTime": 1401957077840,
"readyDuration": 0,
"totalNotReadyDuration": 68,
"notReadyLunchDuration": 0,
"notReadyTrainingDuration": 0,
"notReadyBreakDuration": 0,
"notReadyMeetingDuration": 0,
"notReadyTechDiffDuration": 0,
"notReadyOtherDuration": 68,
"wrapupDuration": 0,
"talkDuration": 0,
"rpcComplete": 0,
"rpcIncomplete": 0,
"wpc": 0,
"nonContacts": 0
}]}
Get Agent Statistics Ex
Description: Returns Agent statistical information.
User Roles: Sysadmin, Superuser, or Manager
This is a newer version of the Get Agent Statistics which will eventually be deprecated. The main difference between this method and the old one besides the obvious structural differences is in the way the filter works. In the old method the filter used the Service or Call Center to determine what data was returned based on what Agents were logged in at that exact moment; while in the new version the data returned is for any Agent that logged into that Service or Call Center throughout the day.
Method: POST /realtime/service/agent/stats/ex
Parameters:
None
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter | Object | No | Specifies the filter criteria. The filter is not an 'and' filter but rather an 'or' filter, meaning that if both a Service and Call Center are included the returned data will pertain to the included Service or Call Center.
|
Response Code: 200 OK
Body:
Key or Attribute | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
agentStatistics | Array | Yes | Provides statistical information of the agent.
|
Get Agent Statistics
#Request (JSON)
POST /realtime/service/agent/stats/ex
Host: localhost.com
Content-Type: application/json
Accept: application/json
#Response
200 OK
Content-Type: application/json
{"agentStatistics": [
{
"services": [
{
"id": 23068,
"callCenterId": "1623",
"inboundCalls": 0,
"outboundCalls": 2,
"readyDuration": 75,
"totalNotReadyDuration": 48,
"notReadyLunchDuration": 0,
"notReadyTrainingDuration": 0,
"notReadyBreakDuration": 0,
"notReadyMeetingDuration": 0,
"notReadyTechDiffDuration": 0,
"notReadyOtherDuration": 48,
"wrapupDuration": 0,
"talkDuration": 156,
"rpcComplete": 1,
"rpcIncomplete": 0,
"wpc": 0,
"nonContacts": 0
},
{
"id": 38049,
"callCenterId": "1623",
"inboundCalls": 0,
"outboundCalls": 0,
"readyDuration": 191,
"totalNotReadyDuration": 1049,
"notReadyLunchDuration": 0,
"notReadyTrainingDuration": 0,
"notReadyBreakDuration": 0,
"notReadyMeetingDuration": 0,
"notReadyTechDiffDuration": 0,
"notReadyOtherDuration": 1049,
"wrapupDuration": 0,
"talkDuration": 154,
"rpcComplete": 0,
"rpcIncomplete": 0,
"wpc": 0,
"nonContacts": 0
}
],
"agentName": "LIVE VOX",
"agentLoginId": "SEBY"
},
...
{
"services": [ {
"id": 23068,
"callCenterId": "1623",
"inboundCalls": 0,
"outboundCalls": 1,
"readyDuration": 297,
"totalNotReadyDuration": 31,
"notReadyLunchDuration": 0,
"notReadyTrainingDuration": 0,
"notReadyBreakDuration": 0,
"notReadyMeetingDuration": 0,
"notReadyTechDiffDuration": 0,
"notReadyOtherDuration": 31,
"wrapupDuration": 27,
"talkDuration": 17,
"rpcComplete": 1,
"rpcIncomplete": 1,
"wpc": 0,
"nonContacts": 0
}],
"agentName": "QA PASS1234",
"agentLoginId": "1AMBY"
}
]}
Get Agent Status
Description: API responsible for returning agent status at service level.
User Roles: Sysadmin, Superuser, or Manager
Method: POST /realtime/service/agents/status
Parameters:
None
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
stateChangedAfter | dateTime | No | Timestamp for state change. | ||||||||||||||||||||||||||||
filter | Object | No | Specifies the filter criteria.
|
Response Code: 200 OK
Body:
Key or Attribute | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
agentDetails | Array | Yes | Provides current status details of the agent.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
timeStamp | DateTime | Yes | Last timestamp since the Agent Service was updated. |
Agent Status
#Request (JSON)
POST /realtime/service/status
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"filter": {
"service": [{"id": "38049"}]
}
}
#Response
200 OK
Content-Type: application/json
{
"agentDetails": [ {
"serviceId": 38049,
"serviceName": "Manual (Manual 4)",
"agentLoginId": "VKUMARK",
"agentName": "VINAY K",
"state": "Not Ready",
"stateId": 3,
"reasonCode": "",
"callType": null,
"stateChangedAfter": 1401958827016,
"inboundCalls": null,
"outboundCalls": null,
"isAgentMonitored": false,
"transactionId": null,
"sessionId": null,
"account": null,
"agentSkill": null,
"phone": null,
"callCenterId": "1623",
"callCenterName": "Call Center"
}],
"timeStamp": 1401958827016
}
Get Hold Service Details
Description: Returns information about each call that is currently on hold.
User Roles: Sysadmin, Superuser, or Manager
Method: POST /realtime/service/calls/status
Parameters:
None
Body:
Key or Element | Type | Mandatory? | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter | Object | No | Specifies the filter criteria
|
Response Code: 200 OK
Body:
Key or Element | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
callsDetails | Array | Yes | Provides details for calls on hold.
| ||||||||||||||||||||||||||||||||||||
timeStamp | DateTime | Yes | Current Server time stamp |
Get Hold Details
#Request (JSON)
POST /realtime/service/calls/status
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"filter": {
"service": [{"id": "38049"}]
}
}
#Response
200 OK
Content-Type: application/json
{
"callsDetails": [
{
"serviceName": "Manual_test",
"serviceId": "38049",
"name": "Will",
"account": "34964238",
"phone": "6503517490",
"timeStamp": "1417066734",
"agentSkill": "38049",
"priority": "1",
}]
"timeStamp": "1417077534000"
}
Get Live Connects
Description: Returns the number of live (right party) connects over the last 30 min broken down in 5 min intervals.
User Roles: Sysadmin, Superuser, or Manager
Method: POST /realtime/service/liveConnects
Parameters:
None
Body:
Key or Element | Type | Mandatory? | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter | Object | No | Specifies the filter criteria
|
Response Code: 200 OK
Body:
Key or Element | Type | Mandatory? | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
liveConnects | Array | Yes | Provides summary of right party contacts.
|
Get Right Party Live Connects
#Request (JSON)
POST /realtime/service/liveConnects
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"filter": {
"service": [{"id": "38049"}]
}
}
#Response
200 OK
Content-Type: application/json
{
"liveConnects": [
{
"total": "10",
"timeStamp": "1417075930315"
},
{
"total": "12",
"timeStamp": "1417077749955"
}
]
}
Get Service Statistics
Description: Returns Service statistical information.
User Roles: Sysadmin, Superuser, or Manager
Method: POST /realtime/service/stats
Parameters:
None
Body:
Key | Type | Mandatory? | Description | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filter | object | No | Specifies the filter criteria
|
Response Code: 200 OK
Body:
Key or Attribute | Type | Mandatory? | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
stats | Array | Yes | Provide details for the Service
|
Service Statistics
#Request (JSON)
POST /realtime/service/stats
Host: localhost.com
Content-Type: application/json
Accept: application/json
{
"filter": {
"service": [{"id": "38049"}]
}
}
#Response
200 OK
Content-Type: application/json
{"stats": [{
"calls": [],
"serviceId": "38049",
"serviceName": "Manual (Manual 4)",
"cip": 0,
"totalOffered": 0,
"totalHandled": 0,
"totalAbandoned": 0,
"abandonRate": 0,
"serviceLevel": 0,
"averageSpeedOfAnswer": 0,
"averageDurationToAbandon": 0,
"averageTalkDuration": 0,
"averageWrapupDuration": 0,
"averageHandleDuration": 0,
"totalCallsAnsweredWithinSLA": 0,
"totalCallsAbandonedWithinSLA": 0,
"pacingMethod": "Max CIP",
"throttle": "750",
"units": "calls",
"totalCallsInQueue": 1,
"callsWithAgent": 0,
"totalAgents": 1,
"longestCallInQueue": 4024,
"maxHoldTime": 30,
"loaded": 0,
"remaining": 0,
"playingDialable": 0,
"percentComplete": 100,
"callCenterId": "1623",
"callCenterName": "Call Center"
}]}
Errors
For more information, see the Errors section on the REST APIs page.