Send a Voice Messaging campaign
Routee's Voice Messaging API helps you to get in touch with your audience by sending Voice Messaging campaigns.
Either use your pre-recorded audio file (.wav format) or set a desired text message and leave our engine to transform Text to Speech.
The following example shows you how easy it is to send a Voice Messaging campaign using a pre-defined text.
Your Header should contain authorization and content type:
KEY | VALUE |
---|---|
Authorization: | Bearer {access_token} |
Content-Type: | application/json |
Request body contains the voice message (text, language, gender), the sender (from), the recipient (to).
An example request is shown below:
curl -X POST
-H "Authorization: Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59"
-H "Content-Type: application/json"
-H "Cache-Control: no-cache"
-d '{
"from":"+306977663000",
"to":["+306977889000"],
"message":{
"text":"This is a test message, please ignore. Have a good day.",
"language":"en-US",
"gender":"female"
},
"campaignCallback": {
"strategy": "OnChange",
"url": "http://YOUR-CAMPAIGN-CALLBACK-URL.COM/campaign"
},
"callback": {
"strategy": "OnCompletion",
"url": "http://YOUR-CAMPAIGN-CALLBACK-URL.COM/message"
}
}'
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"from\":\"+306977663000\",\n \"to\":[\"+306977663000\"],\n \"message\":{\n \"text\":\"This is a test message, please ignore. Have a good day.\",\n \"language\":\"en-US\",\n \"gender\":\"female\",\"campaignCallback\": { \"strategy\": \"OnCompletion\",\"url\": \"http://xxx.xxxxxxxx.xxx/campaign\" }, \"callback\": {\"strategy\": \"OnChange\", \"url\": \"http://xxx.xxxxxxxx.xxx/message\"}}");
Request request = new Request.Builder()
.url("https://connect.routee.net/voice/campaign")
.post(body)
.addHeader("authorization", "Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59")
.addHeader("content-type", "application/json")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://connect.routee.net/voice/campaign");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59");
request.AddParameter("application/json", "{\n \"from\":\"+306977663000\",\n \"to\":[\"+306977663000\"],\n \"message\":{\n \"text\":\"This is a test message, please ignore. Have a good day.\",\n \"language\":\"en-US\",\n \"gender\":\"female\"\n },\n \"campaignCallback\": { \"strategy\": \"OnCompletion\",\"url\": \"http://xxx.xxxxxxxx.xxx/campaign\" }, \"callback\": {\"strategy\": \"OnChange\", \"url\": \"http://xxx.xxxxxxxx.xxx/message\"}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://connect.routee.net/voice/campaign",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"from\":\"+306977663000\",\n \"to\":[\"+306977663000\"],\n \"message\":{\n \"text\":\"This is a test message, please ignore. Have a good day.\",\n \"language\":\"en-US\",\n \"gender\":\"female\"\n },\n \"campaignCallback\": { \"strategy\": \"OnCompletion\",\"url\": \"http://xxx.xxxxxxxx.xxx/campaign\" }, \"callback\": {\"strategy\": \"OnChange\", \"url\": \"http://xxx.xxxxxxxx.xxx/message\"}}",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59",
"cache-control: no-cache",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import http.client
conn = http.client.HTTPSConnection("connect.routee.net")
payload = "{\n \"from\":\"+306977663000\",\n \"to\":[\"+306977663000\"],\n \"message\":{\n \"text\":\"This is a test message, please ignore. Have a good day.\",\n \"language\":\"en-US\",\n \"gender\":\"female\"\n },\n \"campaignCallback\": { \"strategy\": \"OnCompletion\",\"url\": \"http://xxx.xxxxxxxx.xxx/campaign\" }, \"callback\": {\"strategy\": \"OnChange\", \"url\": \"http://xxx.xxxxxxxx.xxx/message\"}}"
headers = {
'authorization': "Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59",
'content-type': "application/json",
'cache-control': "no-cache"
}
conn.request("POST", "/voice/campaign", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
url = URI("https://connect.routee.net/voice/campaign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["authorization"] = 'Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59'
request["content-type"] = 'application/json'
request["cache-control"] = 'no-cache'
request.body = "{\n \"from\":\"+306977663000\",\n \"to\":[\"+306977663000\"],\n \"message\":{\n \"text\":\"This is a test message, please ignore. Have a good day.\",\n \"language\":\"en-US\",\n \"gender\":\"female\"\n },\n \"campaignCallback\": { \"strategy\": \"OnCompletion\",\"url\": \"http://xxx.xxxxxxxx.xxx/campaign\" }, \"callback\": {\"strategy\": \"OnChange\", \"url\": \"http://xxx.xxxxxxxx.xxx/message\"}}"
response = http.request(request)
puts response.read_body
var settings = {
"async": true,
"crossDomain": true,
"url": "https://connect.routee.net/voice/campaign",
"method": "POST",
"headers": {
"authorization": "Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59",
"content-type": "application/json",
"cache-control": "no-cache"
},
"processData": false,
"data": "{\n \"from\":\"+306977663000\",\n \"to\":[\"+306977663000\"],\n \"message\":{\n \"text\":\"This is a test message, please ignore. Have a good day.\",\n \"language\":\"en-US\",\n \"gender\":\"female\"\n },\n \"campaignCallback\": { \"strategy\": \"OnCompletion\",\"url\": \"http://xxx.xxxxxxxx.xxx/campaign\" }, \"callback\": {\"strategy\": \"OnChange\", \"url\": \"http://xxx.xxxxxxxx.xxx/message\"}}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"Bearer e6c6531c-4083-481e-b7a3-05be2ff41f59",
@"content-type": @"application/json",
@"cache-control": @"no-cache" };
NSDictionary *parameters = @{ @"from": @"+306977663000",
@"to": @[ @"+306977663000" ],
@"message": @{ @"text": @"This is a test message, please ignore. Have a good day.", @"language": @"en-US", @"gender": @"female" },
@"campaignCallback": @{ @"strategy": @"OnCompletion", @"url": @"http://xxx.xxxxxxxx.xxx/campaign" },
@"callback": @{ @"strategy": @"OnChange", @"url": @"http://xxx.xxxxxxxx.xxx/message" } };
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://connect.routee.net/voice/campaign"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
To get more information for sending Voice Campaigns check out our Resource Reference
Updated almost 6 years ago
What’s Next