The 8x8 External IVR API is a HTTP API that provides tenants the ability to integrate with an external IVR system. The feature is embedded in the current 8x8 virtual contact center IVR server. Once a customer call enters the 8x8 IVR server, a tenant administrator has the capability to configure the IVR script to relay a call to an external IVR server. This document describes the supported parameters for using the External IVR API. Examples are provided for references. All API requests are authenticated using a token that is issued to a valid 8x8 tenant. For security reasons, the External IVR API only accepts request using HTTPS, so that request headers and response data are encrypted.
In order to make an API request, you must first obtain an authentication token that has been issued for your tenant. This token combines username and password into a single long string. To get your token, log into the Configuration Manager, select “Integration”, and click the “API Token” tab. The “Action Request Token” needs to be used in all API requests. Next, click the “New Token” button. This generates a new private token for your tenant. You will use this token in all requests to this API. You may generate a new token at any time; however, once a new token is generated, the old token becomes invalid.
Setting up an incoming call channel to route a call to external IVR:
Step 1: Add new “Forward to External IVR” node to an existing IVR script
Step 2: Assign label name and access phone number of the external IVR server.
Step 3: Add resume action when external IVR server terminate the call without sending API request via this API interface or fail to connect the external IVR server. If an external IVR request was successfully submitted before the call the terminated, the resume action will have no effect and the call will be routed base on the API request.
The following parameters are allowed parameters that can be passed along with the External IVR URL using GET or POST method.
There is a limit of 500 characters.
|Parameter Name||Description||Accepted value||Mandatory|
|tenant||Tenant name||System provided tenant id||Yes|
|sip_id||Unique sip call id||The unique sip call id of the call, which is defined in Call-ID header of a SIP message||Yes|
|action||Type of call routing action to be executed||wForwardACDwForwardAgent (not yet available)||Yes|
|param||Action parameter. The parameter will be defined base on action type.||wForwardACD – a valid queue idwForwardAgent – a valid agent id||Yes|
|extIvrData||This attribute can be used to pass name value pairs that will be used for populating the transaction panel when an agent is offered the interaction. Each name value pair is enclosed by [ ] and the name/value are separated by “|”.||There is a limit of 500 characters.||No|
Tenant name can be found in Configuration Manager under Home > Profile panel.
The per-tenant unique queue id can be obtained under “Queues” panel in Configuration Manager
External call data to be passed back to 8x8 Virtual Contact Center platform, which will then be available for agent to view in AGUI call transaction panel. The data should be in name value pair separated by | character. And each name value pair should be enclosed with open and close square brackets, such as [name|value] Example:
extIvrData=[First Name|John][Last Name|Smith]
Sample API Request URL
The web callback API makes it easy to submit a query, for experimentation, testing or debugging purposes. From a web browser, simply enter the URL. For example,
The request above will try to route to call to queue with id 102 after the call is terminated from the external IVR system.
Revise your query URL based on the login URL of your Tenant. (Refer to the Platform URL Guide to retrieve your login URL)
The following script will redirect a call to queue with id 114 once the IVR server hangs up the call.
<callxml version="3.0"> <do label="mainmenu" choices="1" repeat="10"> <say> Welcome to the 8 by 8 External IVR Demo. To redirect your call to an ACD queue, press 1. </say> <wait value="5s"/> <on event="choice:1" next="#redirectQ"/> <on event="choice:nomatch"> <say>Invalid choice. Please try again.</say> </on> </do> <do label="redirectQ"> <assign var="tenant" value="klvm2"/> <assign var="token" value="92bd5cbf9ab120b3a47bdef9284b323d"/> <assign var="action" value="wForwardACD"/> <assign var="sip_id" value="$session.SIPCallID;"/> <assign var="param" value="114"/> <assign var="extIvrData" value="[First Name|John][Last Name|Smith][Account ID|12345678]"/> <prompt> Please wait while we redirect your call. </prompt> <fetch value="https://8x8.com/SC/externalIvrAction.php" submit="sip_id, tenant, token, action, param, extIvrData" method="post" var="retValue" /> <prompt> thank you for waiting. your call is being redirected to queue $param;. </prompt> <hangup/> </do> </callxml>