Описание интеграции кол-трекинг со сторонними системами телефонии.
Маршруты и аутентификация
Для обеспечение интеграции со внешними системами телефонии, необходимо настроить отправку 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_TOKEN | string | токен аутентификации провайдера |
| USER_UID | string | Уникальный идентификатор клиента в системе кол-трекинг |
| caller | string | номер вызывающего абонента в международном формате (пример: "+375293771330"). |
| transfer | string | номер телефона в международном формате, использующийся как рекламный номер кол-трекинг. |
| receiver | string | номер принимающего абонента в международном формате. |
| time | datetime | ISO 8601 |
| pbx_id | string | уникальный идентификатор звонка |
| event_name | string | ивент состояния, должен принимать значение "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_TOKEN | string | токен аутентификации провайдера |
| USER_UID | string | Уникальный идентификатор клиента в системе кол-трекинг |
| caller | string | номер вызывающего абонента в международном формате (пример: "+375293771330"). |
| transfer | string | номер телефона в международном формате, использующийся как рекламный номер кол-трекинг. |
| receiver | string | номер принимающего абонента в международном формате. |
| time | datetime | ISO 8601 |
| pbx_id | string | уникальный идентификатор звонка |
| event_name | string | ивент состояния, должен принимать значение "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_TOKEN | string | токен аутентификации провайдера |
| USER_UID | string | Уникальный идентификатор клиента в системе кол-трекинг |
| caller | string | номер вызывающего абонента в международном формате (пример: "+375293771330"). |
| transfer | string | номер телефона в международном формате, использующийся как рекламный номер кол-трекинг. |
| receiver | string | номер принимающего абонента в международном формате. |
| time | datetime | ISO 8601 |
| pbx_id | string | уникальный идентификатор звонка |
| event_name | string | ивент состояния, должен принимать значение "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 | Указанный номер кол-трекинг не принадлежит данному пользователю |
Перечень ответов и ошибок будет дополняться по мере доработки решения.