Skip to main content

Инструкция по 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

 

 

 

record.id

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%\"}",
                ...
            }
        ]
    }