×

Campaign using a dynamic Caller ID, and pacing based on the call completion percentage

Blended APIs
  • Blended APIs
Any & 1 more
  • Any
  • BFSI
Automation & 4 more
  • Automation
  • Campaign using a dynamic Caller ID
  • Number Masking
  • Sales calls
  • Virtual Numbers
17935 views

Overview

Call campaigns are automated calls scheduled to trigger a list of people. You can use it to communicate critical information, reminders, or promote a new offer/deal. Just record your message, upload a list of contacts and schedule a particular time. It completely removes the need for manual calling hence saving a ton of time.

The pickup rate or the call completion rate becomes very crucial in these campaigns. The following solution will help you to increase the completion rate. 

Industry Application

  • Reminders: Schedule automated calls reminding customers about payments, appointments, bookings and more.
  • Transactional alerts: Use automated calls to keep the customer informed in case of large online or cash transactions. This helps in detecting any fraudulent transactions.
  • Notifications: Alert customers about important notifications by implementing automated calls in your customer workflow.
  • Feedback: Value the opinions of your customers by collecting customer feedback using IVR automated calls. Easily map this data onto your CRM using API Integrations
  • Surveys: Gather important data for marketing or product by using personalized automated calls. They are by far the most cost-effective way of collecting such data.
  • Trigger events: ​​You can use automated calls to trigger an action like cancellation, balance enquiry and more.
  • Collections calls: Connect with your customers personally and provide them assistance to collect the pending dues

About Outbound single leg API, Number metadata API

Outgoing call to connect number to a call flow: This API will first call the Customer number, and once they pick up the phone, it will connect them to a call flow (aka applet) that you have created in the system - like your landing app, or any other app that can play a greeting, have IVR, etc.

You can use this API to trigger calls in a sequential manner. The maximum number of API requests you can make is 200 per minute*.

Number metadata API: This API provides the following metadata about a phone number viz.Telecom Circle, Telecom Circle Name,Number Type. This is used to find the carrier circle.

Pre-requisites

  • An active Exotel account.
  • The authentication Key and Token.
  • Integration to be completed by the customer development team using API Documentation.

Flow Diagram

How it works

Step 1: Your server can either batch process the data set or process one by one. Your server needs to trigger “Number Metadata API”. To get the Circle of the number

var request = require('request');
var options = {
    url: 'https://<your_api_key>:<your_api_token><subdomain>/v1/Accounts/<your_sid>/Numbers/XXXXX30240'
};
function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}
request(options, callback);
{
  "Call": {
    "Sid": "80bfbec2d78bbbf10fb851f4fa165211",
    "ParentCallSid": null,
    "DateCreated": "2017-03-03 12:30:24",
    "DateUpdated": "2017-03-03 12:30:27",
    "AccountSid": "Exotel",
    "To": "0XXXXX40682",
    "From": "0XXXXX30240",
    "PhoneNumberSid": "0XXXXXX4890",
    "Status": "in-progress",
    "StartTime": "2017-03-03 12:30:27",
    "EndTime": null,
    "Duration": null,
    "Price": null,
    "Direction": "outbound-api",
    "AnsweredBy": null,
    "ForwardedFrom": null,
    "CallerName": null,
    "Uri": "/v1/Accounts/Exotel/Calls.json/80bfbec2d78bbbf10fb851f4fa165211",
    "RecordingUrl": null
  }
}
{
  "Numbers": {
    "PhoneNumber": "0XXXXX30240",
    "Circle": "GJ",
    "CircleName": "Gujarat Telecom Circle (includes Daman & Diu, Dadra & Nagar Haveli)",
    "Type": "Mobile",
    "Operator": "R",
    "OperatorName": "Reliance",
    "DND": "Yes"
  }
}

Step 2: Exotel returns the Circle, Circle name, Operator etc. These details should be stored against the customer phone number.

Step 3:   Your server has to pick up matching VN against the circle of the customer.

Step 4: Your server initiates the “outbound call to connect to a call flow API” 

 

var request = require('request');
var dataString = 'From=XXXXX30240&CallerId=0XXXXXX4890&Url=http://my.exotel.com/Exotel/exoml/start_voice/926';
var options = {
    url: 'https://<your_api_key>:<your_api_token><subdomain>/v1/Accounts/<your_sid>/Calls/connect',
    method: 'POST',
    body: dataString
};
function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}
request(options, callback);

Step 5:  The status call back is fed into your server. The status call back has the CallSid, status, Date updated parameters.

Sample Response

Step 6:  Using the call reference Id from the status call back, Your server triggers Call details API synchronously.

var request = require('request');
var options = {
    url: 'https://<your_api_key>:<your_api_token><subdomain>/v1/Accounts/<your_sid>/Calls/b6cfaf5f5cef3ca0fc937749ef960e25?details=true’
};
function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}
request(options, callback);

Step 7:  Exotel sends the call details response to your server. 

{
  "Call": {
    "Sid": "b6cfaf5f5cef3ca0fc937749ef96d245",
    "ParentCallSid": "",
    "DateCreated": "2016-11-29 15:58:45",
    "DateUpdated": "2016-11-29 16:00:09",
    "AccountSid": "Exotel",
    "To": "0XXXXX30240",
    "From": "0XXXXX85175",
    "PhoneNumberSid": "0XXXXXX4890",
    "Status": "completed",
    "StartTime": "2016-11-29 15:59:10",
    "EndTime": "2016-11-29 15:59:27",
    "Duration": "17",
    "Price": "1.500",
    "Direction": "outbound-api",
    "AnsweredBy": "human",
    "ForwardedFrom": "",
    "CallerName": "",
    "Uri": "/v1/Accounts/Exotel/Calls/b6cfaf5f5cef3ca0fc937749ef96d245",
    "RecordingUrl": "https://s3-ap-southeast-1.amazonaws.com/exotelrecordings/Exotel/b6cfaf5f5cef3ca0fc937749ef96d245.mp3",
    "Details": {
      "ConversationDuration": 8,
      "Leg1Status": "completed",
      "Leg2Status": "completed"
      "Legs": [
        {    "Leg": {
              "Id": "1",
              "OnCallDuration": 21
             }
        },
        {    "Leg": {
             "Id": "2",
             "OnCallDuration": 8
             }
        }
      ]
    }
  }
}

Step 8:  Your server sends the data to the Data processing engine. 


Step 9:   The data processing engine processes the data using following variables and stores the data.

Step 10:  Your server triggers the next calls based on the recommendation from the data processing engine. 

Case Study

  • Swiggy streamlined its operations with Exotel - Automated calls helped save on manual work. When an order is placed, the restaurant gets an automated call with the order notification. This automated call helps reduce delivery delays.
  • How Exotel helps Saarthi Education understand their program success with call pickup and completion rates - Saarthi Education is an NGO that is based out of Delhi. They aim to create early childhood experiences for children by providing them with age-appropriate activities. They also empower parents from a low-income background to take control of their child’s early education experience. Therefore the name ‘Saarthi’, which translates to ‘charioteer’. During the pilot phase, Saarthi Education worked with 200 families. They grew rapidly in 10 months and now work with 5000 families.

Advantages

Resources

Solution Pricing

There are three SKUs under which costs of solution is charged:

  • Software Rentals: This is monthly fixed charge for availing the Exotels services
  • Exophone Charges: Each Exophone will be charged at fixed/flat price based on the count of Exophones
  • Call Charges: Normal call charges, charged at pulse rate (where pulse can be 30s, 60s, or any other agreed upon value)

Last modified Date

December 10th, 2022