Инструкция по API-интеграции
Страница предназначена для ознакомления со всеми возможными запросами API и их параметрами. Все API-запросы отправляются простыми HTTPS запросами. Все ответы на запросы возвращаются в формате json-строки.
Модерация звонков через API отличается от обычной. Она может проходить одним из двух способов:
1. Вы связываетесь со своим менеджером, и вам убирают модерацию на звонки с аккаунта. Для этого вам надо подтвердить, что вы не будете рассылать голосовые ролики, противоречащие нашим правилам (можно заключить договор, некоторым клиентам мы убираем модерацию после полугода совместной работы).
2. Вы связываетесь со своим менеджером, и вам убирают модерацию на некоторые загруженные вами аудиоролики.
Если не снять модерацию со всего аккаунта или рассылаемых аудиороликов, звонки не будут запускаться.
Варианты запросов
-
Запрос на звонок
URL: https://{domain}/apiCalls/create
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
phone |
string(11) |
Номер вызываемого абонента |
Да, если нет phones |
В запросе должен присутствовать или номер вызываемого абонента (phone) |
|
phones |
array |
Массив номеров вызываемых абонентов |
Да, если нет phone |
В запросе должен присутствовать или номер вызываемого абонента (phone) |
|
outgoingPhone |
string(11) |
Номер, с которого поступает вызов |
Да, если dutyPhone отсутствует или равен 0 |
Номер должен быть добавлен и подтвержден в личном кабинете |
|
dutyPhone |
0 или 1 |
Случайным образом выбрать номер, с которого поступает вызов, из списка дежурных номеров |
Да, если outgoingPhone отсутствует |
|
|
plannedAt |
date_format:U |
Дата планирования сообщения |
Нет |
|
|
smartDelay |
integer |
Время в минутах, через которое будет запускаться повторный обзвон базы (минимум 15, максимум 90 минут) |
Нет |
Эта функция позволяет дозвониться до большего количества людей. После окончания звонка, спустя выбранное время, начнется новый звонок, в котором будет обзвон тех, кто не взял трубку. |
|
needRecording |
0 или 1 |
Записывать звонок или нет |
Нет |
По умолчанию звонок не записывается. Аудиозапись будет доступна по адресу recordPath (Информация о звонке) |
|
webhookUrl |
string(255) |
URL, на который будет отправляться информация о звонке при изменении его статуса |
Нет |
На данный URL будет отправлен POST-запрос с данными в формате json с адреса 82.202.206.194, формат данных представлен в ответе на запрос в разделе 'Запрос информации о звонке'. Запрос будет отправляться каждую минуту до трех раз или пока не будет получен HTTP-code 200 |
|
webhookParameters |
string |
Json-строка, параметры из этой строки будут добавлены в запрос. Пример:{"user_parameter1": "value1", "user_parameter2": "value2"} |
Нет |
|
|
webhookHeaders |
string |
Json-строка, параметры из этой строки будут добавлены в запрос. Пример:{"user_header1": "value1", "user_header2": "value2"} |
Нет |
|
|
record |
object |
|
|
|
|
integer |
аудиозаписи |
Да (если нет text) |
Аудиозапись можно добавить в личном кабинете и посмотреть ее id в разделе аудиозаписи |
|
|
record.text |
string(1024) |
Текст для генерации аудиоролика |
Да (если нет id) |
Генерация стоит 40 копеек, и для совершения звонков с генерацией голоса нужно договориться с менеджером об отключении модерации аккаунта |
|
record.gender |
0 или 1 |
Определяет пол голоса для генерируемого текста |
Да |
0 - женский, 1 - мужской, по умолчанию - 0 |
|
ivrs |
array |
Список обработчиков нажатия цифр |
Нет |
|
|
ivrs.*.digit |
integer(0-9) |
Обрабатываемая цифра |
Нет |
Если цифра пустая, то будет выполняться условие 'Оставаться на линии' - действие, которое выполнится, если никакое другое действие не будет выбрано |
|
ivrs.*.keyWords |
string |
Список ключевых слов через разделитель '|' |
Нет |
|
|
ivrs.*.needBlock |
integer(0-1) |
Добавление в ЧС при нажатии |
Нет |
|
|
ivrs.*.record.id |
integer |
аудиозаписи |
Нет |
|
|
ivrs.*.managerPhone |
string(11) |
Номер для переадресации при нажатии |
Нет |
|
|
ivrs.*.smsText |
string(70) |
Текст СМС для отправки абоненту |
Нет |
|
|
ivrs.*.smsTemplateId |
integer |
ID шаблона СМС |
Нет |
Используемый шаблон СМС должен быть отмодерирован. Если указываете ID шаблона СМС, то текст смс (ivrs.*.smsText) подставляется автоматически |
|
ivrs*.webhookUrl |
string |
При данном действии на указанный URL будет отправлен POST-запрос в формате json с адреса 82.202.206.194, в который будут добавлены указанные вами параметры (поле webhookParameters), а также параметры по умолчанию. Параметры по умолчанию: call — объект, содержащий информацию о звонке, в нем содержатся следующие поля: phone — строка, содержащая номер телефона, на который был совершен звонок, answer — число или строка, содержащая ответ абонента (например, 1 — в случае, если абонент нажал «1», или «да», если абонент ответил да) Пример тела запроса: {"call": {"phone": "10000000000", "answer": 1}, "user_parameter1": "value1", "user_parameter2": "value2"} |
Нет |
|
|
ivrs*.webhookParameters |
string |
Json-строка, параметры из этой строки будут добавлены в запрос. Пример:{"user_parameter1": "value1", "user_parameter2": "value2"} |
Нет |
|
|
ivrs*.webhookHeaders |
string |
Json-строка, параметры из этой строки будут добавлены в запрос. Пример:{"user_header1": "value1", "user_header2": "value2"} |
Нет |
|
|
ivrs.*.anyWord |
integer(0-1) |
Использовать для распознавания любые фразы от пользователя или нет |
Нет |
Можно использовать, если ivrs.*.keyWords и ivrs.*.digit пусты |
|
ivrs.*.recognitionTimeout |
integer(1-15) |
Настраиваемый период времени ответа пользователя. |
Нет |
Может использоваться, если ivrs.*.anyWord=1. По умолчанию значение 7 секунд. |
|
ivrs.*.recognize |
integer(0-1) |
Распознавать ответ от пользователя или нет. |
Нет |
|
|
ivrs.*.record.source |
string |
Источник ролика |
Нет |
Источник аудио: text - текст, file - для записей микрофона и аудиофайлов. |
|
ivrs.*.smsChannel |
string |
Канал отправки СМС сообщения |
Нет |
По умолчанию СМС сообщения отправляются с VIRTA |
|
ivrs.*.emailTimeout |
|
Интервал отправки письма в минутах |
Нет |
|
|
ivrs.*.ivrs |
array |
Список обработчиков нажатия цифр |
Нет |
Можно добавлять несколько уровней вложенности в дерево звонка |
|
isManagerDeliveryPhone |
integer(0-1) |
Использовать номер отправителя, при связи с менеджером |
Нет |
|
|
endOfSpeech |
integer(0-1) |
Автоматически определять конец речи пользователя или нет |
Нет |
|
|
lang |
string(5) |
Код языка в формате «ru-RU» |
Нет |
По умолчанию у вас стоит язык, установленный как язык по умолчанию для вашего партнера. Чтобы получить список возможных языков, отправьте GET-запрос на их получение (метод описан в пункте 7) |
|
voiceDetection |
integer(0-1) |
Автоматически определять перебивание робота абонентом или нет |
Нет |
|
|
startTime |
string |
Начало допустимого временного интервала |
Нет |
В формате 00:00 |
|
endTime |
string |
Конец допустимого временного интервала |
Нет |
В формате 00:00 |
|
plannedAtTimeZone |
integer(0-1) |
Нужно ли учитывать часовой пояс абонента |
Нет |
Если не использовать этот параметр, то для создания звонков будет использоваться часовой пояс клиента из личного кабинета на сервисе. |
|
excludeWeekends |
integer(0-1) |
Исключить выходные дни |
Нет |
Использовать вместе параметры weekdays и excludeWeekends нельзя. Также, эти два параметра не будут давать никакого эффекта без параметров startTime и endTime. |
|
weekdays |
array |
Дни недели для совершения звонка |
Нет |
В формате [1, 2, 3, 4, 5], где 1 - это понедельник и тд. |
|
answerTimeout |
integer(15-60) |
Время ожидания ответа в секундах |
Нет |
По умолчанию 30 секунд |
Примеры запросов на PHP:
Пример запроса с использованием загруженного аудиоролика и IVR
<?php
if( $curl = curl_init() ) {
$jsonstr = '{"apiKey": "nWvGmHIvkj1tM323tsEgfdRYkagGi********", "phone":"99999999999", "outgoingPhone":"99999999999", "record":{"id":1},
"ivrs":[{"digit": 1,"needBlock": 0,"record": {"id": 1342}}, {"digit": 2,"needBlock": 0,"managerPhone": "99999999998"}]}';
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/create');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonstr);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Пример запроса с использованием генерации текста и IVR
<?php
if( $curl = curl_init() ) {
$jsonstr = '{"apiKey": "nWvGmHIvkj1tM323tsEgfdRYkagGi********", "phone":"99999999999", "outgoingPhone":"99999999997",
"record":{"text":"Текст для генерации аудиоролика"},"ivrs":[{"digit": 1,"needBlock": 0,"smsText": "текст СМС"}]}';
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/create');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonstr);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Пример запроса с использованием технологии распознавания голоса
<?php
if( $curl = curl_init() ) {
$jsonstr = '{"apiKey": "nWvGmHIvkj1tM323tsEgfdRYkagGi********", "phone":"99999999999", "outgoingPhone":"99999999997",
"record":{"text":"Текст для генерации аудиоролика"},
"ivrs":[{"keyWords":"Да|нет|не знаю","smsText": "текст СМС", "record": {"text": "Текст аудиоролика"}},
{"record": { "text": "Текст аудиоролика"}}]}';
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/create');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonstr);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Примеры запросов на 1С:
Пример запроса с использованием загруженного аудиоролика и IVR
Соединение = Новый HTTPСоединение("{domain}/apiCalls/",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("create");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("accept", "application/json");
Запрос.УстановитьТелоИзСтроки("{""apiKey"": ""nWvGmHIvkj1tM323tsEgfdRYkagGi********"", ""phone"":""99999999999"", ""outgoingPhone"":""99999999997"",
""record"":{""id"":1},
""ivrs"":[{""digit"": 1,""needBlock"": 0,""record"": {""id"": 1342}},{""digit"": 2,""needBlock"": 0,""managerPhone"": ""99999999998""}]}",
"utf-8", ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ТелоОтвет = Ответ.ПолучитьТелоКакСтроку();
Пример запроса с использованием генерации текста и IVR
Соединение = Новый HTTPСоединение("{domain}/apiCalls/",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("create");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("accept", "application/json");
Запрос.УстановитьТелоИзСтроки("{""apiKey"": ""nWvGmHIvkj1tM323tsEgfdRYkagGi********"", ""phone"":""99999999999"", ""outgoingPhone"":""99999999997"",
""record"":{""text"":""Текст для генерации аудиоролика""}, ""ivrs"":[{""digit"": 1,""needBlock"": 0,""smsText"": ""text sms""}]}",
"utf-8", ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ТелоОтвет = Ответ.ПолучитьТелоКакСтроку();
Пример запроса с использованием генерации текста и IVR
Соединение = Новый HTTPСоединение("{domain}/apiCalls/",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("create");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("accept", "application/json");
Запрос.УстановитьТелоИзСтроки("{""apiKey"": ""nWvGmHIvkj1tM323tsEgfdRYkagGi********"", ""phone"":""99999999999"", ""outgoingPhone"":""99999999997"",
""record"":{""text"":""Текст для генерации аудиоролика""},
""ivrs"":[{
""keyWords"":""Да, нет, не знаю"",
""smsText"":""текст СМС"",
""record"": { ""text"": ""Текст аудиоролика""}
}, {""record"": { ""text"": ""Текст аудиоролика""}}]}",
"utf-8", ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ТелоОтвет = Ответ.ПолучитьТелоКакСтроку();
Ответ на запрос
{
"id":<id звонка>,
"createdAt":<время создания, UNIX timestamp>
"plannedAt": <запланированная дата звонка, UNIX timestamp>,
"smartDelay": <время в минутах, через которое запустится повторный обзвон базы>,
"needrecording": <необходимость записывать звонок>,
"phone": <номер телефона>,
"recordCost": <суммарная стоимость аудиороликов, созданных в данном запросе>
}
-
Запрос информации о звонке
URL для API-звонков: https://{domain}/apiCalls/get
URL для API-звонков по шаблону: https://{domain}/apiCalls/getWithTemplates
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
apiCallIdList |
array |
Список id звонков |
Да |
Отправлять запрос на получение информации можно не более, чем о 5000 звонках |
Пример на PHP:
<?php
$requestArray = array(
'apiKey' => '*******....' //Ваш API-ключ
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/get?apiCallIdList[]=1');
// curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/getWithTemplates?apiCallIdList[]=1'); // для API-звонков по шаблону
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"id":<id звонка>,
"createdAt":<время создания, UNIX timestamp>,
"smartDelay": <время в минутах, через которое запустится повторный обзвон базы>,
"prevCallId":<ID первоначального звонка умной рассылки>,
"needRecording":<включена или выключена запись звонка>,
"plannedAt":<запланированная дата звонка, UNIX timestamp>,
"webhookUrl":<URL, на который будет отправляться информация о звонке при изменении его статуса>,
"webhookSent":<был ли отправлен вебхук по окончании звонка>,
"templateId":<id шаблона, (только для API-звонков по шаблону)>,
"amoscriptId":<id amoscript-а>,
"webhookParameters":<параметры вебхука по окончании звонка>,
"webhookTry":<номер попытки отправки вебхука>,
"recognitionGroupId":<id из таблицы направления генерации>,
"generateGroupId":<id из таблицы направления распознавания>,
"calls":[{
"phone":<номер телефона>,
"ivrDigit":<нажатая цифра>,
"startedAt":<время начала набора, UNIX timestamp>,
"answeredAt":<время ответа, UNIX timestamp>,
"managerStartedAt":<время начала набора менеджера, UNIX timestamp>,
"managerAnsweredAt":<время ответа менеджера, UNIX timestamp>,
"finishedAt":<время окончания, UNIX timestamp>,
"toBlock":<занесен или не занесен в черный список>,
"status":<статус звонка>,
"nextCallId":<ID повторного звонка умной рассылки>,
"hangupCause": <код завершения>,
"managerStatus":<статус звонка менеджеру>,
"recordFilePath":<ссылка на аудиоролик>,
"cost":<стоимость звонка, руб.>,
"createdAt":<время создания, UNIX timestamp>,
"updatedAt":<время обновления, UNIX timestamp>,
"label": <метка, по умолчанию - ip клиента>,
"ivrAnswers":<ответы на ivr, разделённые символом |>
"ivrIdList":<id действий, произведённых по ответу пользователя>,
"comment":<комментарии>,
}]
}
Статусы звонка:
-
processed - в процессе обработки
-
created - создан, но не начат
-
finished - закончен, и разговор состоялся
-
canceled - закончен, и разговор не состоялся
-
answered - в процессе разговора
-
started - начат
ivrAnswer может быть равным -1, это означает, что человек остался на линии и не повесил трубку. Отображается при выборе функции «Оставаться на линии», либо при использовании функции «Повтор IVR»
-
Создание аудиоролика
URL: https://{domain}/apiCalls/createRecord
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
name |
string |
Название аудиоролика |
Да |
|
|
source |
‘text' или 'file' |
Тип источника аудиоролика |
Да |
|
|
file |
file |
Звуковой файл |
Да, если source='file' |
|
|
text |
string |
Текст для генерации ролика |
Да, если source='text' |
|
Пример на PHP:
<?php
$requestArray = array(
'apiKey' => '*******....', //Ваш API-ключ
'source' => 'text', //Тип аудиоролика
'text' => 'Hello world' //Содержание аудиоролика
'name' => 'TestRecord' //Название аудиоролика
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/createRecord');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"id":<id аудиоролика>,
"createdAt":<время создания, UNIX timestamp>,
"needModeration":<включена или выключена модерация>,
"moderatorComment":<комментарий модератора>,
"name":<имя аудиоролика>,
"path":<ссылка на аудиоролик>,
"status":<статус аудиоролика>,
"recordText":<текст для генерации аудиоролика>,
"cost":<стоимость аудиоролика>
}
-
Удаление аудиоролика
URL: https://{domain}/apiCalls/removeRecord
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
idList |
array |
Идентификатор аудиоролика |
Да |
|
Пример на PHP:
<?php
$requestArray = array(
'apiKey' => '*******....', //Ваш API-ключ
'idList' => [123], //Идентификатор
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/removeRecord');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"id":<id звонка>,
"createdAt":<время создания, UNIX timestamp>
"name":<имя аудиоролика>,
"path":<ссылка на аудиоролик>,
"moderatorComment": <комментарий модератора>
"needModeration": <включена или выключена модерация>,
"status": <статус звонка>,
"deletedAt": <время удаления, UNIX timestamp>
}
-
Информация о пользователе
URL: https://{domain}/apiCalls/userInfo
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
Пример на PHP:
<?php
$requestArray = array(
'apiKey' => '*******....', //Ваш API-ключ
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/userInfo');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"id":<id пользователя>,
"balance":<текущий баланс>
}
-
Получить список исходящих номеров
URL: https://{domain}/apiCalls/getPhones
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
all |
boolean |
true или false |
Нет |
По умолчанию false |
Пример на PHP:
<?php
$requestArray = array(
'apiKey' => '*******....', //Ваш API-ключ
'all' => true
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/getPhones');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"status": success,
"data": [{"id": <id номера>,
"phone": <номер телефона>,
"isSystem": <true или false>,
"overall": <если номер общий - 1, личный - 0>}]
}
-
Получить коды доступных языков
URL: https://{domain}/apiCalls/getAvailableLanguages
Метод: GET
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
Пример на PHP:
<?php
$requestArray = array(
'apiKey' => '*******....', //Ваш API-ключ
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/getAvailableLanguages');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"status": success,
"data": [{"id": <id языка>,
"name": <название языка>,
"defaultLangCode": <код языка>}]
}
-
Верификация клиента по номеру методом FlashOnCall
URL: https://{domain}/apiVerificationPhones/confirmPhone
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
phone |
string(11) |
Номер вызываемого абонента |
Да |
В запросе должен присутствовать или номер вызываемого абонента (phone) |
|
pin |
string |
Последние 4 цифры номера, с которого будет совершен верификационный звонок |
Да |
Данные 4 цифры будут являться кодом |
Пример на PHP:
<?php
$requestArray = array(
'apiKey' => '*******....', //Ваш API-ключ
'phone' => '99999999999',
'pin' => '1234',
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiVerificationPhones/confirmPhone');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"status": success,
"data": done
}
-
Обновление времени отправки звонка
URL: https://{domain}/apiCalls/update
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
callList |
array |
Список звонков для переноса |
Да |
|
|
callList.*.id |
integer |
id запланированного звонка |
Да |
|
|
callList.*.replannedAt |
date_format:U |
Новое время для звонка |
Да |
|
Пример на PHP:
<?php
if ($curl = curl_init()) {
$requestArray = array(
'apiKey' => '*******....', // Ваш API-ключ
'callList' => array(
array(
'id' => 123, // Идентификатор первого звонка
'replannedAt' => 12345 // Количество секунд Unix timestamp
),
array(
'id' => 321, // Идентификатор второго звонка
'replannedAt' => 54321 // Количество секунд Unix timestamp
)
),
);
$json = json_encode($requestArray);
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/update');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
{
"status": success,
"data": { // список id обновленных роликов
"callIdList": [
123,
321
]
}
}
-
Удаление запланированного звонка
URL: https://{domain}/apiCalls/remove
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
idList |
array |
Идентификатор звонка |
Да |
|
|
isTemplate |
integer(0-1) |
Является ли звонок API-шаблоном |
Нет |
Если звонок был создан из шаблона, то указание этого параметра обязательно, иначе звонок не сможет быть удален |
Пример на PHP:
Пример запроса массового удаления API звонков
<?php
if ($curl = curl_init()) {
$requestArray = array(
'apiKey' => '*******....', // Ваш API-ключ
'idList' => array(123, 321), // Список идентификаторов звонков
);
$json = json_encode($requestArray);
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/remove');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Пример запроса удаления одного API звонка
<?php
if ($curl = curl_init()) {
$requestArray = array(
'apiKey' => '*******....', // Ваш API-ключ
'id' => 123, // Идентификатор звонка
);
$json = json_encode($requestArray);
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/remove');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
?>
Ответ на запрос:
Ответ массового удаления API звонков
{
"status": success,
"data": { // список id удаленных звонков
"callIdList": [
123,
321
]
}
}
Ответ удаления одного API звонка
{
"status": success,
"data": []
}
-
Запрос на получение списка шаблонов API звонков
URL: https://{domain}/apiCalls/getTemplates
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
onlyModerated |
boolean |
0 - выдает все шаблоны, 1 - только отмодерированные |
Нет |
Отображать только отмодерированные шаблоны или нет |
-
Запрос на создание API звонка с использованием шаблона
URL: https://{domain}/apiCalls/createWithTemplate
Метод: POST
Параметры:
|
Имя |
Тип |
Значение |
Обязательный |
Примечание |
|
apiKey |
string |
API-ключ |
Да |
API-ключ нужно запросить у менеджера или партнера |
|
phone |
string(11) |
Номер вызываемого абонента |
Да, если нет phones |
В запросе должен присутствовать или номер вызываемого абонента (phone) |
|
phones |
array |
Массив номеров вызываемых абонентов |
Да, если нет phone |
В запросе должен присутствовать или номер вызываемого абонента (phone) |
|
templateId |
integer |
id шаблона |
Да |
Шаблон можно добавить в личном кабинете и посмотреть его id в разделе «Шаблоны API» |
|
plannedAt |
date_format:U |
Дата планирования сообщения |
Нет |
|
|
variables |
array |
Переменные |
Нет |
В variables указываются переменные для номеров, указанных в phones. Для каждого из указанных номеров переменные будут подставлены индивидуально. Переменные указываются в текстовом (сгенерированном) аудиоролике |
Пример на PHP:
$requestArray = array(
'apiKey' => '*******....', //Ваш API-ключ
'phones' => [
'79993331122',
'79993332211',
],
'templateId' => 1,
'variables' => array(
'79993331122' => array(
'Elena' => '{name}',
'40%' => '{var1}',
),
'79993332211' => array(
'Oleg' => '{name}',
'25%' => '{var1}',
)
)
);
$json = json_encode($requestArray);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://{domain}/apiCalls/createWithTemplate');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
Ответ на запрос:
{
"status": "success",
"data": [
{
"id": 1,
"phone": "79993331122",
"templateId": 1,
"phoneInfo": "{\"name\":\"Elena\",\"var1\":\"40%\"}",
...
},
{
"id": 2,
"phone": "79993332211",
"templateId": 1,
"phoneInfo": "{\"name\":\"Oleg\",\"var1\":\"25%\"}",
...
}
]
}