Канал статистики
Содержит описание канала статистики для Ролевого приложения Аксател
Концепция решения
Ролевое приложение или внешний сервис (далее Визуальный Интерфейс) делает запрос по 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
Позволяет получить статистические данные по звонкам. Состоит из таблиц
Таблица
Описание
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