Table of Contents

Overview

EnableX Voice Service handles both Inbound and Outbound Voice Calls. Inbound Voice Call are processed through pre-configured WebHook URL to accept call, play Tones / Voice Prompts and make onward call to Bridge. On the other hand, Outbound Voice Calls are originated through Rest API Service and handled through pre-configured WebHook URL called by Voice Services to notify progress/status, etc.

Inbound Voice WebHook

Inbound Voice Call is processed through pre-configured WebHook URL to accept a call, play Tones / Voice Prompts and make onward call to Bridge. (See how to setup webhook.. )

Configure

Inbound Voice Service needs to be configured for your Project through EnableX Portal. Follow the detailed Guidelines given in the Get Started page to configure the following:

  • A Phone Number to receive Inbound Voice Call
  • Voice Prompt (Optional) – If not configured, default prompts would be played
  • WebHook to process Inbound Voice Call

If you have chosen a shared incoming call, you will get a PIN displayed along with the assigned phone number. This PIN will be used for receiving a call and once the caller dials the PIN, call will be routed to your application.

Call Events

When an Inbound Call is received at EnableX Voice Service, event is posted to the configured WebHook URL for further processing. The event would carry a voiceId which is referred by all API calls, events affecting the same Inbound call.

Details of Events may be found in latest API Reference Documentation“.

Outbound Voice API

EnableX Outbound Voice API is a Rest API Service accessible through HTTP Basic Authentication against each request you make. Different API Credential is given to each project you create through EnableX Portal.

API Host URL

Voice API Host: https://api.enablex.io/voice/v1/

Every major version release of Voice API will have a sub-directory named after major version number. This is known as Base URL for a Voice API Version, e.g.

Version Base URL: https://api.enablex.io/voice/v1/

All API Routes are mapped to the Version Base URL, e.g.

Call Route URL: https://api.enablex.io/voice/v1/call

API Authentication

The Voice API uses HTTP Basic Authentication mechanism to authenticate API calls. Each API call is validated via the authentication header.

The following information is used as credentials to access Voice API for your Project in the HTTP basic authentication header in the API call request

  • Application ID or APP_ID as username
  • Application Key or APP_KEY as Password
POST https://api.enablex.io/voice/v1/call
Authorization: Basic XXXXXX    
Content-Type: application/json

The Authorization header in the above example contains a value XXXXX which is a base64 encoded string of the APP_ID:APP_KEY.

How to get APP_ID & APP_KEY

All API Credentials are paired to a Project. You will need to create a Project first to receive the API credentials. for the Project To create Project, follow the given steps:

  • Login to EnableX Portal
  • Navigate: (Main Menu) Projects / Create New Project

Once your project is created, you will receive an email with the Access Credentials, viz. APP_ID and APP_KEY.

API Responses

The Voice API call makes use of the JSON Result Code to determine if the API call is successful.

Success JSON

Successful Voice API calls will always return JSON with a 0 (zero) Result Code.

{    
     "result": 0,    
     ….
     ….
 }

Error JSON

If unsuccessful for whatever reason the Voice API will return a JSON with a non—zero result code. An error response in  JSON will always carry 3 keys, viz. result code, error, description. See example below:

{    
     "result": "Non-Zero Result Code",   
     "error": "Short reason",
     "desc": "Descriptive information about the error / warning"
 }

Result Code Grouping

The Result Codes of Voice API are grouped into 5 categories as shown in the table below:

CodeCategoryDescription
1xxInformationRequest received & processed
2xxSuccessRequest received & accepted
3xxRedirectionAction required to complete Request
4xxClient ErrorIllegible Request Syntax. Can’t be fulfilled
5xxServer ErrorServer failed to complete a legit Request