Table of Contents

Introduction

EnableX Voice API enables developers to create voice applications such as make/receive/bridge calls, or play IVR over IP, PSTN. APIs can be used to route voice calls to phones, browsers, SIP domains, and mobile applications.

Please note that Voice Service serves the legacy SIP or Telephony world, should you need an audio call in EnxRoom, please take a look at Video services to create Audio only call.

EnableX hosts the voice infrastructure that acts like a telephony switch in the cloud. Every session or participant connected to the platform is treated as a separate “call”.

The incoming call may reach the platform, over an internet connection (from a smartphone or web application using the EnableX SDKs) or through a local phone number (from the PSTN / GSM network).
Similarly, an outgoing call can reach any users over the internet (to another smartphone or web application using the EnableX SDKs) or any global destination using PSTN network

Programming voice service is simple. The APIs are standard REST requests that can be triggered by the applications. Callback from the platform is done by invoking the webhooks, provided by the developer, either configured from Portal or passing as a parameter to the APIs.

Overview

EnableX provides voice services through a set of REST APIs defined in this document. The developer should obtain a valid APP_ID/APP_Key, by registering through the portal. This is the most basic authentication mechanism to subscribe to a range of voice services. The authorization is required to use various services offered by the platform, are defined by the subscriptions you have purchased from the EnableX dashboard portal

There are 2 ways to connect to the legacy telephony SIP/PSTN world:

  • Adding participant to the EnableX Video Room
  • Pure Voice Services such as IVR, Message Broadcasting

Depending on the use case, user can choose the type of service:

  • Video Service: If EnableX Room is being used with a combination of Voice and Video services
  • Voice Service: If pure voice APIs are required.

This document refers to pure voice services. For adding a phone to the EnXRoom, please refer to the Video Services at https://developer.enablex.io

On the following sections, you will see 4 steps to start using voice services, they are:

  • Step 1. Get the Phone number.
  • Step 2. Configure Prompts
  • Step 3. Assign number and prompt from step 1 and 2 to your project
  • Step 4. Use API to program voice services

Making a Curl request

On signing to the EnableX account, basic credentials are given to the user in the form of APP_ID and APP_KEY. To form a Basic authentication use following steps

User Name == APP_ID
Password == APP_KEY

The simplest way to test these APIs is to get it on the Curl. Curl provides you a way to add the json body, authentication headers to the request URL that is to be sent to the server where the URL is the resource link that you are accessing

$curl -H "Authorization: Basic $(echo -n APP_ID:APP_KEY | base64)" URL

Adding json body can be done using –data or –d option and the request can be sent using either –request or –X option. The template of the command would look like following

$curl  -i -X %method -H "Authorization: Basic $(echo -n APP_ID:APP_KEY | base64)" -url https://api.enablex/voice/v1/%api –data ‘{json_body}’

Pre-requisites Portal Configuration

To configure a voice service, the application needs the following resources to be configured:

  • Phone Number: A shared number of a dedicated number.
  • Voice Prompts: Though EnableX provides TTS (Text To Speech) engine to play prompts using text, service also facilitates pre-configured, recorded prompts
  • Service: Voice service

Step 1: Get the phone number

Navigate to Main Menu > Voice > Phone Numbers

For Outbound, the selected number will be placed as a CLI (Caller Line Identity). The CLI provided in the Voice API calls by the developer, is validated against the configured number. If the number is not matched, the call will fail.

Step 2: Configure Prompts

EnableX provides a set of predefined prompts that can be readily used by the subscriber. The user can upload the customized prompts as an “mp3”, “.wav” files that can be assigned to play. Each uploaded file is referred by a unique name, that can be used as a handle during the “Play Prompt command” as mentioned in the section below.

To configure the prompts::

  • Navigate to the Configure prompt through Voice -> Voice-Prompts.
  • If a new prompt is desired, click on “Add new prompt”
  • The system allows us to upload a prompt media file and return a unique identification to play the prompt through the API “Play Prompt” described below.

Step 3: Assign number and prompt to project

To use any voice service (Inbound or Outbound), a phone number and prompt is required to be associated with your project. EnableX service has a pool of available shared or dedicated numbers for users on rent. If the phone number you require is not available, you will need to place an order for a number as in Step 1

The voice services are subscribed and configured by logging in to portal.

  • Navigate to Dashboard > Projects > Project Dashboards.
  • Create a new project or select an existing project that needs to have voice services
  • To use a service, you need to add a phone number to project:
  • Navigate to Project Dashboard > voice > Configure > Phone Numbers
  • Click on Add Phone to Project
  • Choose an available (configured) phone number
  • Navigate to Project Dashboard > voice > Configure > Prompt Setting
  • Choose the Prompts from the available list