Call lists for automated calls
With Voximplant's Call Lists feature you can build even complex scenarios with call campaigns in minutes. You can create a CSV table with a call list to process by a VoxEngine scenario.
In this article, we create an example scenario that calls through a CSV table with a customer list and tells each customer their appointment time.
Contents
Prerequisites
- Create an application.
- Create a scenario.
- Create a routing rule and attach it to the scenario.
- Prepare a call list CSV table with phone numbers and additional information.
CSV table setup
CSV table for call lists contains phone numbers to call and any additional information to pass into a VoxEngine scenario. Here is an example of a call list CSV table format:
first_name;last_name;phone_number;appointment_date
Jon;Snow;+16501234567;November 15th
Daenerys;Targaryen;+16501234568;November 16th
The CSV file contains names of the callees, phone numbers, and appointment dates. The first string describes parameter names.
If needed, you can add time intervals when the call list processing starts and ends every day, UTC+0 24-h format: HH:mm:ss.
Jon;Snow;+16501234567;November 15th;17:00:00;22:00:00
Daenerys;Targaryen;+16501234568;November 16th;10:00:00;15:00:00
Scenario setup
In the scenario, require the CallList module and create variables for all the fields from the CSV table. The scenario processes each table row at a time. In this example, we use the AI module to detect voicemail. Then, we use the speech synthesis feature to announce the appointment time.
Please take a look at the scenario example to understand how it works.
Launching the call list
To launch a call list, you need to send a Management API request. You can find more about our call lists management API in our API reference.
You cannot start a call list if your balance is below 1 USD. Once you top up your account, the lists launch automatically.
Let us take a look at the createCallList request parameters:
account_name — your Voximplant account name
api_key — your Voximplant API key
rule_id — the application rule id with the assigned scenario
priority — dialing priority, if you have more than one call list
max_simultaneous — maximum number of simultaneously processed records from CSV file
num_attempts — dialing attempts number, a new attempt appears in case of CallList.reportError
name — call list name, useful to differentiate different call lists from each other
file_content — CSV file to be sent in the request body
interval_seconds — time interval for the next attempt in seconds
encoding — CSV file encoding, if different from UTF-8
delimiter — CSV file columns delimiter, default is ";"
The getCallListDetails request result looks the following:
"appointment_date";"last_name";"phone_number";"first_name";"__end_execution_time";"__start_execution_time";"result_data";"last_attempt";"attmepts_left";"status_id";status
November 15th;Jon;16501234567;Snow;;;"{""result"":true,""duration"":27}";"2021-05-24 19:21:39";1;2;Processed
November 16th;Daenerys;16501234568;Targaryen;;;"{""result"":true,""duration"":18}";"2021-05-24 19:22:10";1;2;Processed
Processing user input
There are two ways of user feedback during a call: voice and pressing buttons. To process voice feedback you can use our built-in voice recognition. To process button feedback, you need to handle the ToneReceived event.
Handle DTMF tones
In our code example, let us ask the customer to rate the service quality from 1 to 5 and then handle the event:
Handle user speech
Use Voximplant's voice recognition feature to handle the user's speech.
In our code example, require the ASR module and create a speech recognition instance via the createASR method. Then use the sendMediaTo method to send the customer's input to the instance.
You receive the result in the ASREvents.Result event. You can process the result as you need.
Please take a look at the code example to understand how it works:
The result is the following:
"last_name";"phone_number";"first_name";"__end_execution_time";"__start_execution_time";"result_data";"last_attempt";"attmepts_left";"status_id";status
Jon;16501234567;Snow;;;"{""result"":true,""duration"":27,""rating"":""four""}";"2021-05-24 20:17:13";1;2;Processed
Snow;"November 15th";"+16501234567";Jon;;;"{""result"":true,""duration"":14,""rating"":""four""}";"2021-07-15 20:20:38";0;0;2;Processed;
Targaryen;"November 16th";"+16501234568";Daenerys;;;"{""result"":true,""duration"":27,""rating"":""five""}";"2021-07-15 20:21:37";0;0;2;Processed;
You can also make HTTP requests from the scenario to pass the data to your backend in real-time. You can save the survey results to the customData parameter and then use it to get statistics, through the call_session_history_custom_data
parameter of the GetCallHistory method.
Frequently asked questions
Q: My call list processing suddenly stopped, why?
A: Call lists do not work if your account balance is less than $1. After you replenish the balance, call lists resume automatically.
Q: I cannot delete my call list, why?
A: To delete a call list, pause it or wait until completion because you cannot delete a call list that is in progress.