Канал статистики
Содержит описание канала статистики для Ролевого приложения Аксател
Концепция решения
Ролевое приложение или внешний сервис (далее Визуальный Интерфейс) делает запрос по http методом POST на получение данных для хронологических отчетов и оперативных дашбордов. Все запросы обрабатываются служебным сценарием и возвращаются данные. Задачи отображения данных лежат на визуальном интерфейсе.
Протокол взаимодействия
Все запросы инициируются только Визуальным Интерфейсом. На каждый запрос возвращается один и только один ответ, содержащий запрашиваемую информацию или отчет об ошибке.
Запрос
Все запросы делаются на адрес
• для Ролевого Приложения описано в администрировании
• для Внешнего сервиса через token интеграционного канала
Метод запроса POST Content-type application/json; charset=utf-8 Body содержит сам запрос в формате json в виде
Поле | Описание | |
entity | определяет раздел запроса. | |
action | определяет действие внутри entity. | |
options | содержит дополнительные параметры запроса в зависимости от entity и action и детально описан в разделе по каждому запросу. |
Ответ
Ответ в формате json.
Поле | Описание |
success | возвращает признак корректности выполнения запроса • true = запрос выполнен без ошибок, результат в поле data • false = запрос выполнен с ошибкой. Текст ошибки в поле error |
error | Поле содержит описание ошибки (если success == false) или констрантно равно null (если success == true) |
data | Поле содержит запрашиваемые данные (если success == true) или констрантно равно null (если success == false). При корректном выполнении запроса формат зависит от запроса и детально описан в разделе по каждому запросу. |
Запросы хронологиской статистики
Запрос данных для отображения
Выполняет команду Select для получения блока данных из таблиц (подробно в Структура хронологических таблиц) Может содержать любые агрегации выборки в формате языка postgre sql.
Body запроса
Поле options.psql должно начинаться с Select. Иначе будет возвращена ошибка выполнения.
Успешный ответ
В поле data будет возвращен массив запрашиваемых данных
Пример
Запрос
Ответ
Запрос количества данных
Для получения количество строк удовлетворяющих Select необходимо выполнить запрос получения количества строк.
Body запроса
Поле options.psql должно начинаться с select count. Иначе будет возвращена ошибка выполнения
Успешный ответ
В поле data будет возвращено количество найденных строк в int
Пример
Запрос
Ответ
Для получения количества строк можно использовать action=data. В этом случае в поле data ответа будет [{"count":835}]
Запрос файла записи разговора
Запись разговора запрашивается напрямую из системы без сценария-обработчика.
Инфо по записи разговора
method = HEAD url = [fqdn]/rest/v1/journal/calls/<id>/attachment1 <id> = inviteid звонка
Успешный ответ
SIP Code = 200
В заголовках ответа содержится информация
content-type: audio/mpeg content-length: 50 kilobytes
Неуспешный ответ
SIP Code | Причина |
404 | Файл не найден |
403 | Доступ запрещен |
Получение записи разговора
method = GET url = [fqdn]/rest/v1/journal/calls/<id>/attachment1?attachment=true/false <id> = inviteid звонка attachment=true ответ выдается с заголовком Content-Disposition: attachment; filename*=UTF-8''FILENAME.EXT , где FILENAME.EXT – имя и расширение файла в UrlEncoding, сделано для скачивания браузером attachment=false выдается с Content-Type, соответствующим mime-type расширения файла. сделано для проигрывания средствами браузера
Если запрос без ?attachment, то поведение аналогичное ?attachment=false
Успешный ответ
Для `attachment=false'
SIP Code = 200
В заголовках ответа содержится информация
content-type: audio/mpeg content-length: 50 kilobytes
В body возвращается файл записи
Для `attachment=true'
SIP Code = 200
В заголовках ответа содержится информация
content-length: 50 kilobytes content-type: audio/mpeg content-disposition: attachment; filename=mg1_1711382410-1589448421120.mp3
В body возвращается файл записи
Неуспешный ответ
SIP Code | Причина |
404 | Файл не найден |
403 | Доступ запрещен |
Структура хронологических таблиц
Для составления хронологических отчетов доступны следующие схемы
Схема | Описание |
alertcallevents | События по системе обзвона и оповещения |
calls | События по звонкам |
ivrhuntq | События по обработке звонков в очередях |
ivrhuntqevents | События по состоянию объектов очередей |
products | Дополнительные продуктовые данные |
providerevents | События по состояниям внешних линий связи (SIP |
scriptevents | События по сценариям |
selectorevents | События по селекторным совещаниям |
sipuserevents | События по сотояниям sip абонентов |
sipusers | События по активностям sip абонентов |
userevents | События по активностям пользователей |
Схема alertcallevents
Позволяет получить все события по системе оповещения и массового автоматизированного обзвона.
Состоит из таблиц
Таблица | Описание |
callinited | |
callpreanswered | |
callapproved | |
statechanged | |
prepared | |
callrejected | |
callstarted | |
callanswered | |
callfailed | |
callfinished |
Схема calls
Позволяет получить статистические данные по звонкам. Состоит из таблиц
Таблица | Описание |
success | Записи по успешным звонкам (был разговор) |
cancelled | Записи по звонкам, у которых разговор не состоялся (пропущенные, не дозвонился и прочее) |
failed | Записи у которых не было вызова стороны В |
holds | Информация по постановке и снятию с удержания |
routes | Информация по сработавшим правилам таблицы маршрутизации |
forks | Информация по вызовам стороны В (дозвоны) |
Основными идентифкатора связи между таблицами является пара полей inviteid и invitedt. Связать цепочку коммутаций можно при инициализации звонка с внешней линии по полю esgdlg. На каждый вызов может быть несколько записей в таблице forks (количество одновременно зарегистрированных устройств абонента В) и в таблице routes (количество успешно сработавших правил маршрутизации).
Таблица success
Содержит агрегирующую информацию по всем успешным звонкам. Успешным считается звонок, у которого сторона В поднял трубку (т.е. состоялась коммутация).
Поле | Тип | Описание |
inviteid | uuid | Основной идентификатор по звонку |
invitedt | timestamp without time zone | Время инициации первичного звонка в UTC |
acallid | character | CallId стороны А |
bcallid | character | CallId стороны B |
anumber | character | Номер А |
ausername | character | Имя пользователя стороны А |
adomain | character | Домер стороны А |
adisplayname | character | Имя отображения стороны А |
anetworkaddr | character | IP адрес стороны А |
acallednum | character | Номер, который пришел от А при инициации |
arepresentative | character | Номер представления стороны А (при кроссдоменных звонках) |
aouter | boolean | Битовый признак что сторона А является внешней линией |
aprovidercode | character | Код провайдера стороны А |
bnumber | character | Номер B |
busername | character | Имя пользователя стороны B |
bdomain | character | Домен стороны B |
bdisplayname | character | Имя отображения стороны B |
bnetworkaddr | character | IP адрес стороны B |
bouter | boolean | Битовый признак что сторона B является внешней линией |
bprovidercode | character | Код провайдера стороны B |
dial_dt | timestamp without time zone | Время инициации вызова в UTC |
start_dt | timestamp without time zone | Время начала разговора в UTC |
stop_dt | timestamp without time zone | Время окончания разговора в UTC |
dial_duration | integer | Продолжительность вызова в сек (кол-во секунд между dial_dt и start_dt) |
duration | integer | Продолжительность разговора в сек (кол-во секунд между start_dt и stop_dt) |
stopreason | character | Текстовая причина завершения звонка |
isrec | boolean | Битовый признак, что разговор был записан |
callrecpath | character | Относительный путь записи разговора |
callstoragecode | character | Имя хранилища записи разговора |
callrecsize | bigint | Размер файла в байтах |
callrecdel_dt | timestamp without time zone | Время (UTC) когда запись разговора была удалена по правилам хранения записей |
recordruleid | uuid | идентификатор правила записи разговоров |
storageruleid | uuid | идентификатор правила хранения записей разговоров |
recdomain | character | Домен, в котором велась запись звонка |
recexpirets | timestamp withouttime zone | Время в UTC когда запись разговора будет удалена |
recexpirets | timestamp withouttime zone | Время в UTC когда запись разговора будет удалена |
sys_recdelts | bigint | системное поле |
dlgbinding | character | Текстовое поле всех меток звонка |
esgdlg | character | CallID внешнего абонента. Может служить единым признаком цепочки коммутаций при инициации звонка с внешней линии |
isreplacing | boolean | признак что текущий звонок был переведен от другого |
Таблица cancelled
Содержит агрегирующую информацию по всем звонкам без ответа (звонок у которых найдена сторона В, на сторону В отправлен вызов, но диалог / разговор не был начат). Примеры звонков - В не взял трубку или отменил вызов или занят и т.д.
Поле | Тип | Описание |
inviteid | uuid | Основной идентификатор по звонку |
invitedt | timestamp without time zone | Время инициации первичного звонка в UTC |
dial_dt | timestamp without time zone | Время инициации вызова в UTC |
stop_dt | timestamp without time zone | Время окончания дозвона в UTC |
fromnumber | character | Номер А |
fromusername | character | Имя пользователя стороны А |
fromdomain | character | Домер стороны А |
fromouter | boolean | Битовый признак что сторона А является внешней линией |
fromprovidercod | character | Код провайдера стороны А |
callednum | character | Номер, который пришел от А при инициации звонка |
networkaddr | character | IP адрес стороны А |
stoptype | character | SIP код ответа завершения звонка |
stopreason | character | Текстовая причина завершения звонка |
Таблица failed
Содержит агрегирующую информацию по всем неуспешным попыткам вызова. Неуспешная попытка - сторона В не найдена. Примеры ситуации - В не зарегистрирован, недоступна внешняя линия, набор запрещен по таблице маршрутизации и т.д.
Поле | Тип | Описание |
inviteid | uuid | Основной идентификатор по звонку |
invitedt | timestamp without time zone | Время инициации первичного звонка в UTC |
fromnumber | character | Номер А |
fromusername | character | Имя пользователя стороны А |
fromdomain | character | Домер стороны А |
fromouter | boolean | Битовый признак что сторона А является внешней линией |
fromprovidercod | character | Код провайдера стороны А |
callednum | character | Номер, который пришел от А при инициации звонка |
networkaddr | character | IP адрес стороны А |
sipcode | character | SIP код причины |
reason | character | Текстовая причина неуспешного звонка |
Таблица holds
Содержит информацию по постановке/снятию с удержания звонка.
Поле | Тип | Описание |
inviteid | uuid | Основной идентификатор по звонку |
invitedt | timestamp without time zone | Время инициации первичного звонка в UTC |
side | character | Сторона кто поставил на удержание. Может быть a или b |
hold_dt | timestamp without time zone | Время (UTC) постановки на удержание |
unhold_dt | timestamp without time zone | Время (UTC) снятия с удержания |
eventid | uuid | уникальный идентификатор события |
Таблица routes
Содержит информацию по сработавшим маршрутам таблицы маршрутизации для каждого звонка в таблицах success, cancelled, failed.
Окончательно сработавшее правило всегда последнее в списке. Если несколько правил на один вызов, то значит все, кроме последнего, не смогли быть применены.
Поле | Тип | Описание |
inviteid | uuid | Основной идентификатор по звонку |
invitedt | timestamp without time zone | Время инициации первичного звонка в UTC |
event_dt | timestamp without time zone | Время срабатывания правила в UTC |
eventid | uuid | уникальный идентификатор события |
vectorcode | character | Код вектора |
ruleid | uuid | идентификатор правила |
routeaction | character | Событие правила |
routedomain | character | Домен правила |
providercode | character | Код провайдера (если событие правила = outer) |
featurecodeid | uuid | Идентификатор правила featurecode (если событие правила = featurecode) |
featurecodetype | character | Тип кода абонентских функций (если событие правила = featurecode) |
featurenumber | character | номер после обработки правилами featurecode (если событие правила = featurecode) |
Таблица forks
Содержит Информацию по вызовы сторон В для всех звонков в таблицах success, cancelled.
Если на один вызов несколько записей форков, то значит сторона В имеет несколько одновременно зарегистрированных аппаратов.
Поле | Тип | Описание |
inviteid | uuid | Основной идентификатор по звонку |
invitedt | timestamp without time zone | Время инициации первичного звонка в UTC |
busername | character | Имя пользователя стороны B |
bdomain | character | Домер стороны B |
bnetworkaddr | character | IP адрес стороны B |
bouter | boolean | Битовый признак что сторона B является внешней линией |
bprovidercode | character | Код провайдера стороны B |
ispreanswered | boolean | Битовый признак был ли предварительный ответ SIP 18x от этого форка |
isanswered | boolean | Битовый признак был ли окончательный ответ SIP 200 от этого форка. У каждого вызова таблицы success существует одна и только одна запись где данное поле == true |
forkstart_dt | timestamp withouttime zone | Время инициации вызова на этот форк в UTC |
forkpreansw_dt | timestamp without time zone | Время предварительного ответа в UTC |
forkansw_dt | timestamp without time zone | Время окончательного ответа в UTC |
sipcode | integer | Конечный результат вызова форка (SIP Code окончательного ответа) |
reason | character | Конечный результат вызова форка (текстовое поле) |
eventid | uuid | Уникальный идентифкатор данного форка |
Схема ivrhuntq
Схема ivrhuntqevents
Схема products
Схема providerevents
Схема scriptevents
Схема selectorevents
Схема sipuserevents
Схема sipusers
Схема userevents
Last updated