LiveVox REST APIs:
Details regarding each API referenced below can be found in the LiveVox Session, Call Control and Contact APIs on the LiveVox Developer portal.
LiveVox Developer Portal access:
https://docs.livevox.com/display/DP/Developer+Portal
username: prospect
password: Livevox12345^
Start with “LiveVox API Overview”-> ”LiveVox API Quick Start Guide”
Virtual Agent Management and Data Collection
- A set of Virtual Agents will be configured on the LiveVox portal. There is a 1 to 1 ratio of Virtual Agents to calls handled by the AI Vender. The client will need to plan for the appropriate # of Virtual Agents required to handle their call volume (determine max # of simultaneous calls per service connected to the AI Vendor)
- AI Vendor will need to make the Virtual Agents READY on the platform:
- Obtain the Virtual Agent Session ID
POST https://{{APIHost}}/session/login
Header: LV provided API Token
Body example : {"clientName": "Training2", "userName": "AI Vendor1", "password": "xxxx", "agent": "true" } - Add the Virtual Agent to the appropriate Service
POST https://{{APIHost}}/callControl/agent/service/join?serviceId=XXXXXX&phoneNumber=899XXXXXXX (see below for more info related assigning agent 899#s)
Header: SessionID from 2a. - Set the Virtual Agent to READY
POST https://{{APIHost}}/callControl/agent/status/ready
Header: SessionID from 2a.
NOTE : LiveVox Session IDs expire with no activity after 2 hours. If a Virtual agent does not change state (i.e. receive a call), the Session ID will expire. Thus, it’s recommended to cycle any Virtual agents in a Ready state to Not Ready and back to Ready every hour.
It’s recommended that Virtual Agents are only logged in during the defined LiveVox call center open hours. If Virtual Agents are expected to receive calls outside of open hours, additional planning related to routing and other factors such maintenance windows should be considered. Virtual Agent support during closed hours should be addressed as part of phase 2+ work.
- Obtain the Virtual Agent Session ID
When a call is routed to the Virtual Agent via LiveVox standard routing services, LiveVox will “conference” the AI Vendor using a unique 899# for the agent. The unique agent 899# will pass as part of the INVITE. This allows the AI Vender to identify the call associated with each agent. For example:
LiveVox Virtual Agent INVITE (example only) Virtual_Agent_1 INVITE sip:+18990000001@XX.XXX.XX.XX:5070 SIP/2.0^M Virtual_Agent_2 INVITE sip:+18990000002@XX.XXX.XX.XX:5070 SIP/2.0^M Virtual_Agent_3 INVITE sip:+18990000003@XX.XXX.XX.XX:5070 SIP/2.0^M See below for a detailed INVITE example.
If the AI Vendor collects additional data that should be associated with the contact, use the LiveVox Update Contact API.
Update the Contact
PUT https://{{APIHost}}/contact/contacts/{account}
Header: SessionID from 2a.
Body : See LiveVox Developer Portal for details and work with the client to determine which fields in Contact Manager to update
NOTE: this should be data that is stored long term and associated with the contact. For example, update to contact info, recording of payment, etc. This is not intended for call specific data that would be presented in the Human Agent screen pop and would change for subsequent calls, such as were the consumer left the Virtual agent, call reason, etc. Call specific screen pop data should use the LiveVox AI Integration App (see #5)If the AI Vender collects call specific data that should be screen popped to a Human Agent, use the LiveVox AI Integration App(AIA) API.
Update the AIA
URL is client specific (will be provided as part of the client specific project)
A Separate Specification document will be provided for the Method, Headers, Parameters and Body of the AIA
Data fields include:
- transactionId
- sessionId
- ani
- accountNumber
- nextAction
- callOutcome
- lvresult
- Other1
thru - Other20
If the Client wants to route non LiveVox validated Consumers to the AI Vendor, AI Vendor can collect info and Update Contact via ‘Update Contact API’ or Create a Contact via ‘Create Contact API’
Update the Contact
PUT https://{{APIHost}}/contact/contacts/{account}
Header: SessionID from 2a.
Body : See LiveVox Developer Portal for options to updateCreate Contact
PUT https://{{APIHost}}/contact/contacts/
Header: SessionID from 2a.
Body : See LiveVox Developer Portal for options to update
When the AI Vendor completes the call, a term code will be assigned to the call indicating either the call is done, or the call needs to be transferred to a Human Agent:
Get the TransID and SessionID for the call:
POST https://{{APIHost}}/callControl/agent/status
Header: SessionID from 2a
Body example: {"stateChangedAfter": "1573809480000"}Assign the agent Term code:
PUT https://{{APIHost}}/callControl/agent/call/termCode
Header: SessionID from 2a
Body example: {"callTransactionId": "108821676850", "callSessionId": "U5EF8FT5DFC07F9@10.101.21.216", "termCodeId": "101416228", "phoneDialed": "2134634007", "moveAgentToNotReady" : "false"}
- Virtual Agent is ready to receive another call
Customer Portal Config Requirements:
- Create/Configure Virtual Agents (requires LiveVox to configure Virtual Agents):
- Set Service ACD mode to “Agent Call Out”
- Set Service Groups for Virtual Agents as “LONGEST_AVAILABLE_AGENT”
- Create Term codes to support transfers to Human Agents
- Load contacts into Contact Manager
- Update Call Flows to validate Consumers against Contact Manager
Sample SIP INVITE
Request-Line: INVITE sip:+18990000001@XX.XX.XX.XX:5060 SIP/2.0
Message Header
Record-Route: <sip: XX.XX.XX.XX:5060;r2=on;lr;did=0c.a75cb3e7>
Record-Route: <sip: XX.XX.XX.XX;r2=on;lr;did=0c.a75cb3e7>
Record-Route: <sip: XX.XX.XX.XX:5070;lr;did=0c.9c237b23>
To: sip:+ 18990000001@ XX.XX.XX.XX:5070
Contact: <sip: XX.XX.XX.XX:5060;transport=udp>
Call-ID: 5e18e8dc-0000-7b7397a3-f7f2e4ec-d3e93b6c@10.101.21.27
CSeq: 4117825 INVITE
Content-Length: 177
Content-Type: application/sdp
From: <sip:+19192109237@ XX.XX.XX.XX:5060>;tag=telstage-4c11af69-5e18e8dc
X-Lv-Destination-Ip:
X-Lv-Destination-Port: 5060
Session-Privacy: no
Carrier-Name: tmis
Session-ID: U2DB327T5E18E8DC@XX.XX.XX.XX
Pool-Name: carrierinbound
Allow: INVITE, ACK, CANCEL, BYE, REFER, NOTIFY, OPTIONS, INFO, REGISTER, SUBSCRIBE, MESSAGE, UPDATE
Session-Expires: 1800;refresher=uac
Supported: timer
Max-Forwards: 68
Via: SIP/2.0/UDP XX.XX.XX.XX:5060;branch=z9hG4bK623f.ac426ea3.0
Via: SIP/2.0/UDP XX.XX.XX.XX:5070;received= XX.XX.XX.XX;branch=z9hG4bK623f.02823352.0
Via: SIP/2.0/UDP XX.XX.XX.XX:5060;branch=z9hG4bK5e18e8dc-0000-7b7397a4-f7f2e4ec-d3e93b6c