Общая информация
Общая информация
Форматы данных: JSON (in/out), XML (in/out), POST(in)
Входные параметры собираются последовательно. При совпадении названий параметров старые значения будут заменены новыми. Последовательность получения входных параметров:
1) Параметры из GET
2) Параметры из тела запроса (POST) в формате согласно указанному mode — JSON[P] / XML. Если не получается разобрать параметры тела запроса согласно формату ‘mode’ — делается попытка загрузить POST-параметры или разобрать тело запроса (POST) самостоятельно по формату «application/x-www-form-urlencoded».
Языки: русский, английский.
Виды авторизации:
Подпись запроса (симметричный ключ, известный клиенту и серверу). Подпись необходима во многих запросах. см. Алгоритм формирования подписи ниже.
Собственная авторизация API-вызова, когда скрипт конкретного API-вызова ожидает на вход параметры login+password или что-то подобное.
Общие входные параметры
svc | Обязательный | Код запроса |
mode | Необязательный, по-умолчанию: xml. | Формат обмена. Только в GET. Доступны форматы: json, jsonp, xml. |
lang | Необязательный, по-умолчанию: en. | Язык сообщений. Доступные значения: ru, en. |
rlogin | Обязательный для некоторых запросов | Идентификатор (логин) приложения-клиента API |
rsign | Обязательный для некоторых запросов | Подпись запроса. |
При форматах json и xml запросы передаются в теле HTTP POST.
Форматы входных параметров
string | Строка из любых символов | |
date | Дата | yyyy-mm-dd |
time | Время | HH:MM:SS |
datetime | Дата+время | yyyy-mm-dd HH:MM:SS |
int | Целое число | |
decimal | Дробное число | |
login | Логин | |
alpha | Буквы | ctype_alpha() |
alnum | Буквы+цифры | ctype_alnum() |
digit / numeric | Цифры | ctype_digit() |
Адрес эл. почты | ||
phone | Номер телефона |
Формат ответа
В формате результата XML массивы передаются как элементы <item1></item1><item2></item2> … <itemN></itemN> .
Ответ
Обычно ответ содержит 2 параметра:
result | Результат | 1-успех, 0-ошибка |
data | Данные, если result=1 ИЛИ текст ошибки, если result=0 |
Формат содержимого поля data (данные) зависит от запроса, часто это бывает ассоциативный массив (ключи — строки).
Табличные данные
Типовой формат data при возврате табличных данных — массив :
names | Массив название колонок | array |
data | Массив записей | array |
total | Общее количество записей | int |
Названия и типы колонок data.names зависят от запроса. Формат data.names — массив значений. Массив не ассоциативный.
Формат data.data — массив из массивов значений. Массивы не ассоциативные.
Алгоритм формирования подписи запроса
Некоторые запросы требуют подписи. Для таких запросов должны быть переданы параметры: rlogin и rsign .
Алгоритм формирования подписи:
-
Создается массив пар (ключ-значение) из всех параметров будущего запроса, кроме: mode, svc, lang, rsign, charset
-
Полученный массив сортируется по ключу. Сортировка по возрастанию по ASCII-коду (функция php sort(), флаг сортировки SORT_REGULAR или javascript Array().prototype.sort() без ‘compare function’)
-
Все параметры (только значения) соединяются через разделитель ‘;’ в одну строку, к этой строке добавляется личный rkey пользователя
-
Полученная строка хешируется md5
-
Результат хеширования помещается в параметр rsign
Пример.
Параметры запроса:
-
svc=testme
-
lang=ru
-
mode=json
-
name=john
-
fname=doe
-
birthday=2000-01-01
-
login=john.d
Персональные данные пользователя:
-
rlogin=vasya
-
rkey=01234567890
Строка для хеширования:
2000-01-01;doe;john.d;john;vasya;01234567890
Строк после хеширования ⇒ подпись:
4aeb7e509b1cc152321bc641e34cd18b
Запрос, передаваемый на сервер (вариант GET/POST, для xml/json будут соответствующие им форматы):
svc=testme&lang=ru&mode=json&name=john&fname=doe&birthday=2000-01-01&login=
john.d&rlogin=vasya&rsign=4aeb7e509b1cc152321bc641e34cd18b
Основные вызовы API
connect2
Соединить два номера.
Параметры POST:
sip_login | Логин учетной записи | int(7) |
sip_password | Пароль учетной записи | string |
caller | Вызывающий номер | string |
callee | Вызываемый номер | string |
Результат:
result | Результат обработки | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data:
cbid | Код запроса соединения | string |
getBalance2
Получить баланс.
Авторизация через любую активную учетную запись клиента.
Параметры POST:
sip_login | Логин учетной записи | int(7) |
sip_password | Пароль учетной записи | string |
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data при ‘result’ == 1:
balance | Баланс указанной учетной записи | float |
getPriceByDirection2
Получить стоимость звонка на указанный номер для учетной записи.
Параметры POST:
sip_login | Логин учетной записи | int(7) |
sip_password | Пароль учетной записи | string |
phonenumber | Номер телефона для расчета тарифа | int |
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data при ‘result’ == 1:
prefix | Префикс направления | string |
name | Название направления | string |
price | Стоимость минуты | float |
currency | Валюта | string |
getSipInfo
Получение информации об указанной учетной записи.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный (*1) |
login | Логин ЛК или SIP | string | Необязательный (*1) |
password | Пароль ЛК или SIP | string | Необязательный (*1) |
sip_login | Логин SIP | int(7) | |
sip_password | Пароль SIP | string | Устаревший, необязательный (*2) |
-
*1) Обязательно указать один набор параметров — access_token или login+password. Login+password могут быть данными SIP, в таком случае sip_login должен совпадать с login, доступ будет только к нему.
-
*2) Если не указаны login+password, то будут проверены параметры sip_login+sip_password
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data при ‘result’ == 1:
name | Имя, присвоенное учетной записи | string |
getUserInfo
Информация о пользователе.
В случае, если представлены учетные данные SIP и есть роль ‘full_user_access’ — информация будет выдана об админском пользователе ЛК.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный (*1) |
login | Логин ЛК или SIP | string | Необязательный (*1) |
password | Пароль ЛК или SIP | string | Необязательный (*1) |
sip_login | Логин SIP | int(7) | Устаревший, необязательный (*2) |
sip_password | Пароль SIP | string | Устаревший, необязательный (*2) |
-
*1) Обязательно указать один набор параметров — access_token или login+password.
-
*2) Если не указаны login+password, то будут проверены параметры sip_login+sip_password
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data при ‘result’ == 1:
name | ФИО / Название организации | string |
lk_login | Логин в личном кабинете | string |
lk_image_url | URL на картинку в профиле | string |
lk_avatar_url | URL на картинку в профиле | string |
currency | Валюта договора | string |
currency_code | Валюта договора (код) | string |
connectTransfer
Перевод звонка.
Параметры POST:
sip_login | Логин учетной записи | int(7) |
sip_password | Пароль учетной записи | string |
cb_id | Код запроса соединения | string |
callee | Куда переводить звонок | string |
Результат:
result | Результат обработки | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data:
cbid | Код запроса соединения | string |
connectHangup
Завершить звонок.
Параметры POST:
sip_login | Логин учетной записи | int(7) |
sip_password | Пароль учетной записи | string |
cb_id | Код запроса соединения | string |
Результат:
result | Результат обработки | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data:
cbid | Код запроса соединения | string |
listSip2
Запрос списка SIP.
Авторизация через любую активную учетную запись клиента.
Параметры POST:
login | Логин ЛК | string |
password | Пароль ЛК | string |
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
listNumberPlan
Внутренние номера.
Авторизация через любую активную учетную запись клиента.
Параметры POST:
login | Логин ЛК | string |
password | Пароль ЛК | string |
page_size | Размер страницы (по умолчанию 10) | int(7) |
page_number | Выбор страницы (по умолчанию 1) | int(7) |
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Статистика (stats)
getCallsTotals
Получение итоговых данных по вызовам за период.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный* |
login | Логин ЛК | string | Необязательный* |
password | Пароль ЛК | string | Необязательный* |
from | Начальное время | datetime | |
to | Конечное время | datetime |
*Обязательно указать один набор параметров — access_token или login+password.
Результат — табличные данные.
Названия и типы колонок:
sip_login | SIP логин | string |
inbound_count | Количество входящих | int |
inbound_time | Общее время входящих | time |
outbound_count | Количество исходящих | int |
outbound_time | Общее время исходящих | time |
amount | Общая стоимость | decimal (.2) |
currency | Валюта | string |
getCallsDetails
Получение детализации по вызовам за период.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный* |
login | Логин ЛК | string | Необязательный* |
password | Пароль ЛК | string | Необязательный* |
sip_login | SIP логин | string | |
from | Начальное время | datetime | |
to | Конечное время | datetime | |
min_duration | Минимальная длительность разговора | int | Необязательный, по-умолчанию 0 |
page_size | Количество на странице | int | Необязательный, по-умолчанию 10 |
page_number | Номер страницы, начинается с 1 | int | Необязательный, по-умолчанию 1 |
sort | Сортировка. Варианты: date-desc, date-asc | string | Необязательный, по-умолчанию ‘date-asc’ |
show_cb_id | Показывать колонку cbid? | int | Необязательный |
*Обязательно указать один из параметров — access_token или login+password.
Результат — табличные данные.
Названия и типы колонок:
time | Время записи | datetime | |
numfrom | Номер А | digit | |
numto | Номер Б | digit | |
direction | Направление. 1 ⇒ от А к Б | int | |
duration | Длительность в секундах | int | |
zone | Тарифное направление | digit | |
amount | Стоимость | decimal(.2) | |
currency | Валюта | string | |
callid | Идентификатор разговора | string(32) | |
disposition | Статус завершения звонка | string | |
cbid | Идентификатор callback | string | Колонка будет выдана, если в запросе будет передан непустой параметр show_cb_id |
Записи разговоров (callrec)
getCallsRecords
Получение детализации по записям разговоров за период.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный (*1) |
login | Логин ЛК | string | Необязательный (*1) |
password | Пароль ЛК | string | Необязательный (*1) |
master_password | Мастер-пароль ЛК | string | Необязательный (*2) |
from | Начальное время | datetime | |
to | Конечное время | datetime | |
page_size | Количество на странице | int | Необязательный, по-умолчанию 10 |
page_number | Номер страницы, начинается с 1 | int | Необязательный, по-умолчанию 1 |
sort | Сортировка. Варианты: date-desc, date-asc | string | Необязательный, по-умолчанию ‘date-asc’ |
-
*1) Обязательно указать один набор параметров — access_token или login+password.
-
*2) Параметр master_password обязателен, если у пользователя включена проверка мастер-пароля, иначе он будет игнорирован.
Результат — табличные данные.
Названия и типы колонок:
id | id записи для скачивания | int |
time | Время записи | datetime |
numfrom | Номер А | string |
numto | Номер Б | string |
filesize | Размер файла | int |
callid | Идентификатор разговора | string(32) |
downloadCallRecord
Скачивание записи по ее идентификатору.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный (*1) |
login | Логин ЛК | string | Необязательный (*1) |
password | Пароль ЛК | string | Необязательный (*1) |
master_password | Мастер-пароль ЛК | string | Необязательный (*2) |
record_id | id записи для скачивания | int | |
call_id | Идентификатор разговора | string(32) |
-
*1) Обязательно указать один набор параметров — access_token или login+password.
-
*2) Параметр master_password обязателен, если у пользователя включена проверка мастер-пароля, иначе он будет игнорирован.
Если recordId задан, то он используется для поиска записи. Иначе — callId.
Результат при успехе:
mp3-файл
Результат при ошибке:
result=0 | Результат |
data | Текст ошибки |
События с платформы
listEventActions
Получить список настроек обработки событий с платформы.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный* |
login | Логин ЛК | string | Необязательный* |
password | Пароль ЛК | string | Необязательный* |
*Обязательно указать один набор параметров — access_token или login+password.
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Ассоциативный массив, если result=1 ИЛИ текст ошибки, если result=0 |
Содержимое data при ‘result’ == 1:
id | Id записи | int |
type | Тип («incoming» — входящий / «outgoing» — исходящий / «missed» — пропущенный / «lost» — упущенный / «sip_ringing» — звонит SIP / «sip_hangup» — SIP положил трубку) | string |
type_param1 | Параметр типа (то, что в колонке «Параметр» в модуле РИТКИ «Настройка фильтра событий) | string |
action | Действие (websocket / http / sms / email) | string |
action_param1 | Параметр действия | string |
flt_phone | Входящий телефон (параметр действия) | int |
flt_wdays | Дни недели, строка из 7 цифр 0/1. Каждый день — день недели. Первый день недели — понедельник | int(7) |
flt_start_time | Время начала действия | HH:MM:SS |
flt_end_time | Время окончания действия | HH:MM:SS |
Параметры действия (action_param1) в зависимости от действия (action):
websocket | «Пусто» |
http | URL, который будет вызван |
sms | Номер телефона, на который будет отправлено SMS |
Адрес эл. почты, на который будет отправлено письмо |
updateEventAction
Создать/отредактировать/удалить настройку обработки события с платформы.
Параметры POST:
rlogin | Логин запрашивающей системы | ||
rsign | Подпись запроса | ||
access_token | Access token | string | Необязательный* |
login | Логин ЛК | string | Необязательный* |
password | Пароль ЛК | string | Необязательный* |
id | Id записи | int | |
operation | Вид операции: create / update / delete | string | |
type | Тип («incoming» — входящий / «outgoing» — исходящий / «missed» — пропущенный / «lost» — упущенный / «sip_ringing» — звонит SIP / «sip_hangup» — SIP положил трубку) | string | Не должен быть обязательным для delete! |
Обязательные для operation=create,update | |||
type_param1 | Параметр типа (то, что в колонке «Параметр» в модуле РИТКИ «Настройка фильтра событий) | string | |
action | Действие (websocket / http / sms / email) | string | |
action_param1 | Параметр действия | string | |
flt_phone | Входящий телефон (параметр действия) | int | |
flt_wdays | Дни недели, строка из 7 цифр 0/1. Каждый день — день недели. Первый день недели — понедельник | int(7) | |
flt_start_time | Время начала действия | time | |
flt_end_time | Время окончания действия | time |
*Обязательно указать один набор параметров — access_token или login+password.
Результат:
result | Результат | 1-успех, 0-ошибка |
data | Пусто при result=1 ИЛИ текст ошибки, если result=0 |