Журнал успешных звонков авторизованного пользователя (calls_by_participation)

Обзор

Возвращает информацию из журнала успешно состоявшихся звонков, одним из участников которых являлась учетная запись, относящаяся к пользователю (sipuser.iduser). По умолчанию открыто для роли доступа "user". Не содержит информацию о неуспешных звонках, не завершившихся ответом вызываемого абонента и последующим соединением.

Журнал содержит предагрегированную информацию из потоковой БД cdr, где сохранены все события, происходящие в процессе обслуживания звонка.

Каждая запись журнала – это отдельный состоявшийся диалог. Вызов, поставленный на удержание – это тот же самый диалог. Любой переведенный вызов – это отдельный диалог.

При необходимости получения более детальной информации, отсутствующей в журнале, следует настраивать более сложную систему доступа к потоковой БД для формирования альтернативной предагрегации и выдачи ее внешним системам.

Доступно только в рабочих доменах.

Запросы

HTTP verb Endpoint Описание

GET

/rest/v1/journal/calls_by_participation

Получение списка звонков

POST

/rest/v1/journal/calls_by_participation

Получение списка звонков


Получение списка звонков

Производит выдачу данных из таблицы успешных звонков БД journal текущего домена с фильтром по участнику. По умолчанию возвращает 20 записей. При указании limit более 1000, ограничивает выдачу в 1000 записей.

Запрос

Параметры GET запроса определяют SQL-запрос к таблице журнала звонков. К коллекции этого типа не применяется стандартный декоратор REST.

Table 1. Параметры запроса
Имя Тип Описание

filter

object

Фильтр по значениям полей.

В качестве ключей содержит значения полей выдаваемых объектов. Все опции, перечисленные в объекте применяются одновременно (операция AND).

Например:

  • filter={"id":"29"}

  • filter={"id":{"=":"29"}}

  • filter={"id":{">":"29"},"anumber":{"=":"12"}}

  • filter={"bdomain":{"like":"%.kuku.ru"}}

При необходимости сформировать более сложное условие, включающее операции OR и/или AND с перечилением условий для одного и того же поля, можно применять польскую нотацию . Например так:

  • filter={"OR":{"anumber":"11","bnumber":"11"}}

  • filter={"OR":[{"id":57},{"id":58},{"id":59}]}

  • filter={"AND":[{"id":{">=":57}},{"id":{"⇐":60}}]}

  • filter={"OR":[{"AND":[{"id":{">=":57}},{"id":{"⇐":77}}]},{"OR":[{"anumber":"11"},{"bnumber":"11"}]}]}

  • filter={"OR":[{"id":"57","inviteid":"25e342df-0646-5aba-e6f0-f900000003ee"},{"id":"280"}]}

order

array<object|str>

Порядок сортировки ресурсов в списке.

Например:

  • order=["id"]

  • order=[{"id":"desc"}]

  • order=["anumber",{"ausername":"asc"},{"id":"desc"}]

offset

int

Смещение в списке ресурсов, подлежащих выдаче.

limit

int

Ограничение на максимальное количество ресурсов в возвращаемом списке.

mask

str

Список полей для вывода. Перечисляется через запятую. Вне зависимости от указания поля site, оно всегда присутствует в выдаче.

Пример запроса
GET /rest/v1/journal/calls?order=[{"invitedt":"desc"}]&mask=invitedt,start_dt&limit=5 HTTP/1.1

Ответ

Возвращает список обнаруженных звонков, где одним из абонентов являлась учетная запись sipuser, относящаяся к авторизованному пользователю. Каждый объект списка – представление состявшегося диалога.

Содержит информацию о звонке и об абонентах. Вызывающая сторона – a, вызываемая сторона – b. При перехвате вызова перехватившая сторона – b.

Все значения представлены в строковом виде, либо null, если значение не задано.

Table 2. Поля объекта звонка
Поле Описание

id

Порядковый идентификатор звонка в таблице.

inviteid

Уникальный идентификатор звонка.

invitedt

Дата и время поступления звонка в систему (на функциональную роль b2b).

dial_dt

Дата и время начала вызова после завершения маршрутизации.

dial_duration

Длительность вызова до окончательного ответа вызываемого абонента, в секундах.

start_dt

Дата и время начала диалога после ответа вызываемого абонента.

stop_dt

Дата и время завершения диалога.

duration

Длительность диалога, в секундах.

isreplacing

Признак подменяющего вызова (SIP-запрос INVITE с заголовком Replaces). Значение типа bool: "f" или "t".

site

Сайт, на котором обслуживался диалог.

dlgbinding

Привязанная к диалогу метка. Устанавливается компонентом сценариев Операция. По умолчанию null.

esgdlg

Идентификатор диалога функциональной роли esg. Сквозной сессионный идентификатор, не изменяющийся при переводах внешнего абонента. Устанавливается только для звонков с участием внешних абонентов. Для внутренних звонков значение null.

acallid

Call-Id плеча стороны a.

adomain

Внутренний домен абонента на стороне a.

ausername

Username плеча стороны a. Значение из URI заголовка From входящего SIP-запроса INVITE.

anumber

Номер плеча стороны a. Для учетных записей SIP-пользователя это его поле phonenumber, для остальных значение идентично полю ausername.

adisplayname

Отображаемое имя абонента на стороне a. Значение displayname из URI заголовка From входящего SIP-запроса INVITE.

acallednum

Набранный номер стороной a. Значение username из URI заголовка To.

arepresentative

Представление номера плеча стороны a для абонента на стороне b.

anetworkaddr

IP-адрес контакта плеча стороны a. Значение домена из заголовка Contact входящего запроса INVITE.

aouter

Признак внешнего абонента на стороне a. Значение типа bool: "f" или "t".

aprovidercode

Код провайдера плеча стороны a. Указывается для звонков, поступивших извне через учетную запись провайдера.

bcallid

Call-Id плеча вызывающего абонента.

bdomain

Внутренний домен абонента на стороне b.

busername

Username плеча стороны b. Значение из URI заголовка To полученного SIP-ответа на отправленный SIP-запрос INVITE, либо из URI заголовка From входящего SIP-запроса INVITE в случае, если вызов перехвачен.

bnumber

Номер плеча стороны b. Для учетных записей SIP-пользователя это его поле phonenumber, для остальных значение идентично полю busername.

bdisplayname

Отображаемое имя абонента на стороне b. Для учетных записей SIP-пользователя это его поле name. Для остальных это значение displayname из URI заголовка Remote-Party-Id полученного SIP-ответа на отправленный SIP-запрос INVITE, либо из URI заголовка From входящего SIP-запроса INVITE в случае, если вызов перехвачен.

bnetworkaddr

IP-адрес контакта плеча стороны b. Значение домена из заголовка Contact полученного SIP-ответа на отправленный SIP-запрос INVITE, либо входящего SIP-запроса INVITE в случае, если вызов перехвачен.

bouter

Признак внешнего абонента на стороне b. Значение типа bool: "f" или "t".

bprovidercode

Код провайдера плеча стороны b. Указывается для звонков, стороной b которых является внешний абонент через учетную запись провайдера.

isrec

Признак наличия записи разговора. Значение типа bool: "f" или "t".

recdomain

Домен хранения записи. Совпадает с доменом, в котором производится выполнение API-запроса.

recordruleid

Идентификатор применного в домене правила записи.

storageruleid

Идентификатор применного в домене правила хранения.

callstoragecode

Код примененного в домене правила хранения.

callrecpath

Путь к файлу записи разговора относительно корневого места расположения записей текущего домена.

callrecsize

Размер файла записи разговора, в байтах.

recexpirets

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

callrecdel_dt

Дата и время произведенного автоматического удаления записи разговора.

sys_recdelts

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

stopreason

Текстовое представление причины прекращения диалога.

Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
  {
    "site": "SITE1",
    "inviteid": "2668afb4-0623-cc8c-b5d7-b70000000002",
    "start_dt": "2019-10-23 13:37:17"
  },
  {
    "site": "SITE1",
    "inviteid": "812c3e6e-0623-cbc4-1d12-360000000002",
    "start_dt": "2019-10-23 12:43:45"
  },
  {
    "site": "SITE1",
    "inviteid": "b733c32b-0623-cbbf-3132-db0000000002",
    "start_dt": "2019-10-23 12:42:27"
  },
  {
    "site": "SITE1",
    "inviteid": "64ef209e-0623-cb9f-e249-d10000000002",
    "start_dt": "2019-10-23 12:34:06"
  },
  {
    "site": "SITE1",
    "inviteid": "1d34b9c5-0623-cb9f-c76b-a90000000002",
    "start_dt": "2019-10-23 12:34:04"
  }
]

Получение списка звонков

Метод аналогичен Получение списка звонков с той разницей, что передает параметры в теле запроса в виде JSON-объекта. Content-Type: application/json. Введен для передачи больших объемов данных в фильтре.

Пример тела запроса
{"filter":{"id":{">":"29"},"anumber":"12"},"limit":40}

Содержание (дочерние ресурсы)

См. также