Описание интеграции кол-трекинг со сторонними системами телефонии.



Маршруты и аутентификация


Для обеспечение интеграции со внешними системами телефонии, необходимо настроить отправку webhooks на адрес сервера кол-трекинг. Адрес сервера выдается по запросу технической командой кол-трекинг.


Тип данных
Способ получения
URLВыдается по запросу, технической службой кол-трекинг


Для обеспечения аутентификации используется токен аутентификации и имя провайдера:


ПараметрСпособ получения
PROVIDER_AUTH_TOKENВыдается по запросу, технической службой кол-трекинг
PROVIDER_NAME
Выдается по запросу, технической службой кол-трекинг



Структура запросов


Для загрузки в кол-трекинг данных о звонках используются POST запросы трех типов на выданный URL:

  • call_start - для оповещения о начале вызова;                                
  • call_answer - для оповещения о начале соединения;
  • call_end - для оповещения о завершении соединения.


Данные передаются в формате JSON. Ниже представлено описание основных параметров, которые должны быть включены в запрос:


call_start

POST /webhooks


ПараметрТип данныхОписание
PROVIDER_NAME
string
Имя провайдера
PROVIDER_AUTH_TOKENstringтокен аутентификации провайдера
USER_UIDstringУникальный идентификатор клиента в системе кол-трекинг
callerstringномер вызывающего абонента в международном формате (пример: "+375293771330").
transferstringномер телефона в международном формате, использующийся как рекламный номер кол-трекинг.
receiverstringномер принимающего абонента в международном формате.
timedatetime ISO 8601
pbx_idstringуникальный идентификатор звонка
event_namestringивент состояния, должен принимать значение "call_start"

*Все параметры являются обязательными.



Пример запроса:

{
"PROVIDER_NAME": "Provider",
"PROVIDER_AUTH_TOKEN": "123dflmsdvpm123",
"USER_UID": "sadlem123m593",
"caller": "+375296001122",
"transfer": "+375447708855",
"receiver": "+375293330102",
"time": "2022-09-12T16:56:26.379Z",
"pbx_id": "15642334984212",
"event_name": "call_start",
}



call_answer

POST /webhooks


ПараметрТип данныхОписание
PROVIDER_NAME
string
Имя провайдера
PROVIDER_AUTH_TOKENstringтокен аутентификации провайдера
USER_UIDstringУникальный идентификатор клиента в системе кол-трекинг
callerstringномер вызывающего абонента в международном формате (пример: "+375293771330").
transferstringномер телефона в международном формате, использующийся как рекламный номер кол-трекинг.
receiverstringномер принимающего абонента в международном формате.
timedatetimeISO 8601
pbx_idstringуникальный идентификатор звонка
event_namestringивент состояния, должен принимать значение "call_answer"

*Все параметры являются обязательными.


Пример запроса:

{
"PROVIDER_NAME": "Provider",
"PROVIDER_AUTH_TOKEN": "123dflmsdvpm123",
"USER_UID": "sadlem123m593",
"caller": "+375296001122",
"transfer": "+375447708855",
"receiver": "+375293330102",
"time": "2022-09-12T16:56:26.379Z",
"pbx_id": "15642334984212",
"event_name": "call_answer",
}


call_end

POST /webhooks


ПараметрТип данныхОписание
PROVIDER_NAME
string
Имя провайдера
PROVIDER_AUTH_TOKENstringтокен аутентификации провайдера
USER_UIDstringУникальный идентификатор клиента в системе кол-трекинг
callerstringномер вызывающего абонента в международном формате (пример: "+375293771330").
transferstringномер телефона в международном формате, использующийся как рекламный номер кол-трекинг.
receiverstringномер принимающего абонента в международном формате.
timedatetimeISO 8601
pbx_idstringуникальный идентификатор звонка
event_namestringивент состояния, должен принимать значение "call_end"
duration
int
длительность звонка в секундах
audio_path
string
ссылка на запись разговора для воспроизведения
status
string
статус завершенного звонка. Доступные значения:

answer = отвеченный вызов;

noanswer = пропущенный вызов (принимающий абонент не поднял трубку)

busy = принимающий абонент занят 

cancel_caller = вызывающий абонент отменил вызов

cancel_receiver = принимающий абонент отменил вызов

unavailable = вызываемый абонент недоступен или в не зоны действия сети

*Все параметры являются обязательными.


Пример запроса для вызова, который был отвечен:

{
"PROVIDER_NAME": "Provider",
"PROVIDER_AUTH_TOKEN": "123dflmsdvpm123",
"USER_UID": "sadlem123m593",
"caller": "+375296001122",
"transfer": "+375447708855",
"receiver": "+375293330102",
"time": "2022-09-09T18:31:42+03",
"pbx_id": "15642334984212",
"event_name": "call_start",
"duration": 56,
"audio_path": "https://calltracking.freshdesk.com/a/solutions/articles/72000576278/edit",
"status": "answer"
}



Пример запроса для вызова, который не был отвечен:


{
"PROVIDER_NAME": "Provider",
"PROVIDER_AUTH_TOKEN": "123dflmsdvpm123",
"USER_UID": "sadlem123m593",
"caller": "+375296001122",
"transfer": "+375447708855",
"receiver": "+375293330102",
"time": "2022-09-09T18:31:42+03",
"pbx_id": "15642334984212",
"event_name": "call_start",
"duration": 0,
"audio_path": "https://calltracking.freshdesk.com/a/solutions/articles/72000576278/edit",
"status": "noanswer"
}


Пример запроса для вызова, который не был отвечен по причине того, что принимающая линия была занята:


{
"PROVIDER_NAME": "Provider",
"PROVIDER_AUTH_TOKEN": "123dflmsdvpm123",
"USER_UID": "sadlem123m593",
"caller": "+375296001122",
"transfer": "+375447708855",
"receiver": "+375293330102",
"time": "2022-09-09T18:31:42+03",
"pbx_id": "15642334984212",
"event_name": "call_start",
"duration": 0,
"audio_path": "https://calltracking.freshdesk.com/a/solutions/articles/72000576278/edit",
"status": "busy"
}


Пример запроса для вызова, который не был отвечен по причине того, что принимающий абонент отменил вызов:


{
"PROVIDER_NAME": "Provider",
"PROVIDER_AUTH_TOKEN": "123dflmsdvpm123",
"USER_UID": "sadlem123m593",
"caller": "+375296001122",
"transfer": "+375447708855",
"receiver": "+375293330102",
"time": "2022-09-09T18:31:42+03",
"pbx_id": "15642334984212",
"event_name": "call_start",
"duration": 0,
"audio_path": "https://calltracking.freshdesk.com/a/solutions/articles/72000576278/edit",
"status": "cancel_receiver"
}


Пример запроса для вызова, который не был отвечен по причине того, что принимающий абонент недоступен:


call_unavailable_json = {
"PROVIDER_NAME": "Provider",
"PROVIDER_AUTH_TOKEN": "123dflmsdvpm123",
"USER_UID": "sadlem123m593",
"caller": "+375296001122",
"transfer": "+375447708855",
"receiver": "+375293330102",
"time": "2022-09-09T18:31:42+03",
"pbx_id": "15642334984212",
"event_name": "call_start",
"duration": 0,
"audio_path": "https://calltracking.freshdesk.com/a/solutions/articles/72000576278/edit",
"status": "unavailable"
}

Ограничения


В стандартной конфигурации на отправку событий распространяются следующие ограничения:


Период действия ограниченияМаксимальное количество событий
1 секунда100
1 сутки
25000


Стандартные ограничения могут меняться по запросу провайдера при наличии технической возможности.



Возвращаемые значения


Пример ответа в случае успешного запроса: 

{
    "status_code": 200,
    "staus": "Oк",
    "message": "Ок"
}

Пример ответа в случае ошибки: 

{
    "status_code": 403,
    "status": "Fail",
    "errors": "Dublicate pbx_id [15642334984212]"
}


Ответ
КодОписание
{status: ok }200
Событие обработано
{status: fail, errors: "Missing require params [*]"}
400Неверный запрос, отсутствует один из параметров
{status: fail, errors: "Can’t parse params"}
400Неверный тип данных, либо недопустимое значение в передаваемых параметрах
{status: fail, errors: "Invalid uid"}
401Неверный user_uid
{status: fail, errors: "Invalid provider token"}
401Неверный токен провайдера
{status: fail, errors: "Requests limit"}
403Превышен лимит на отправку событий
{status: fail, errors: "Duplicate pbx_id [*]"}
403Звонок с указанным pbx_id уже существует (для одинакового типа события, например: 2 cобытия call_start с одинаковым pbx_id)
{status: fail, errors: "Wrong transfer number for this uid"}
403Указанный номер кол-трекинг не принадлежит данному пользователю


Перечень ответов и ошибок будет дополняться по мере доработки решения.