Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Протестировать методы API можно на странице интерактивного обозревателя API и без написания кода
Некоторые ресурсы, описанные на странице, по умолчанию могут быть не доступны из-за типа приложения (см. Создание и авторизация приложений)

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

Table of Contents

Описание структур данных

Expand
titleРазвернуть

Поля ресурса "Запись разговора" совпадают с полями ресурса “Информация о составных частях вызова (/cdr/)”, но, в отличие от CDR, поля record_uuid и record_file_size никогда не принимают значения null.

Имя

Тип

Описание

ani_number 

string

Номер из списка входящих номеров клиента

application 

string

Приложение, характеризующее тип вызова. Может иметь значение callcentercallbackintercept или null

call_uuid

string

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

client_owner_id

long

Идентификатор клиента-владельца записи

dest_domain

string

Домен назначения вызова

dest_number

string

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

did_domain

string

Домен внешнего номера

did_number

string

Внешний номер

duration

long

Длительность вызова

ext_number_reg

string

Зарегистрированный внешний номер

extension_group_owner_id

long

Идентификатор группы внутренних номеров, владеющей записью

extension_id

long

Идентификатор внутреннего номера

extension_name

string

Имя внутреннего номера

extension_type

string

Тип внутреннего номера

flow

string

Направление вызова. Может принимать значение in или out

from_domain

string

Исходный домен вызывающего абонента

from_screen_name

string

Исходное отображаемое имя вызывающего абонента

from_username

string

Исходное имя пользователя вызывающего абонента

hangup_cause

string

Причина окончания вызова

hangup_disposition 

string

Используется для определения инициатора разрыва соединения:
callee_bye: трубку положила принимающая сторона;
caller_bye: трубку положила вызывающая сторона;
caller_cancel: вызывающая сторона отказалась ждать ответа;
callee_refuse: принимающая сторона отказалась отвечать (была занята, отсутствовала регистрация и т.п.);
internal_cancel: вызов завершен сервером (обычно по тайм-ауту вызова или если данный вызовов был принят другим внутренним номером);
'' (пустой вариант): не удалось определить

hangup_time_gmt

string

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

init_time_gmt

string

Время инициализации вызова

record_file_size

long

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

record_uuid

string

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

result

string

Результат вызова

source_domain

string

Домен источника вызова

source_number

string

Номер источника вызова

start_time_gmt

string

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

to_domain

string

Исходный домен назначения

to_username

string

Исходное имя пользователя назначения

file_name

string

Имя файла записи разговора

record_transfer

bool

Признак записи при переадресации. В случае false записывается канал добавочного номера, в случае true- противоположный канал от добавочного.

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

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

При получении списка возможно указать параметр запроса order, который задает направление, в котором результирующий список будет отсортирован по полю init_time_gmt (по возрастанию или по убыванию).

Параметры запроса

Имя

Тип

Обязательный

Значение по умолчанию

start_datetime

YYYY-MM-DD HH:MM:SS

да

end_datetime

YYYY-MM-DD HH:MM:SS

да

order

asc or desc

нет

desc

Получение статистики записей разговора

Параметры запроса

Имя

Тип

Обязательный

Значение по умолчанию

start_datetime

YYYY-MM-DD HH:MM:SS

да

end_datetime

YYYY-MM-DD HH:MM:SS

да

Поля статистики записей разговора

Имя

Тип

Описание

files_size

long

Суммарный размер файлов записей

records_count

long

Количество файлов записей

Получение файлов записей разговора из хранилища

Если в системе присутствует внешнее хранилища записей разговора, то для получения ссылки на запись в хранилище необходимо воспользоваться следующим методом:
GET /client/{client_id}/record/{record_uuid}/storage_url/. В ответ API вернёт URL для получения записи из хранилища. Получение записи из хранилища не требует аутентификации. Ссылка является постоянной.

Info

Получение файлов записей с помощью ссылки на хранилище является наиболее предпочтительным и надёжным способом.

Пример

Получение ссылки на запись из хранилища:

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"В разделе "},{"type":"text","text":"authentication","marks":[{"type":"strong"}]},{"type":"text","text":" в поля "},{"type":"text","text":"client_id","marks":[{"type":"strong"}]},{"type":"text","text":" и "},{"type":"text","text":"client_secret","marks":[{"type":"strong"}]},{"type":"text","text":"  требуется ввести полученные при регистрации приложения значения "},{"type":"text","text":"Application_ID","marks":[{"type":"strong"}]},{"type":"text","text":" и "},{"type":"text","text":"Application_Secret","marks":[{"type":"strong"}]},{"type":"text","text":", затем нажать на кнопку \""},{"type":"text","text":"Try it out!","marks":[{"type":"strong"}]},{"type":"text","text":"\". Если данные приложения верны, в ответ вернётся токен доступа ("},{"type":"text","text":"access_token","marks":[{"type":"strong"}]},{"type":"text","text":"). Полученный токен доступа следует ввести в поле \""},{"type":"text","text":"Access Token Field","marks":[{"type":"strong"}]},{"type":"text","text":"\" вверху страницы и сохранить его нажатием кнопки \""},{"type":"text","text":"Set Token","marks":[{"type":"strong"}]},{"type":"text","text":"\"."}]},{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"метод","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"ресурс","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"данные","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"GET"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/client/@me/record/30-624835FEEE0E11E6A19D331E4D6A0606/storage_url/"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":" "}]}]}]}]},{"type":"paragraph","content":[]}]},"id":"39ecaf17-9764-4ce7-93ab-1349145463a0","label":"Интерактивный обозреватель API     ","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Для отправки запросов с помощью программы cURL установим значения переменных "},{"type":"text","text":"url ","marks":[{"type":"strong"}]},{"type":"text","text":"и "},{"type":"text","text":"access_token","marks":[{"type":"strong"}]},{"type":"text","text":":"}]},{"type":"paragraph","content":[{"type":"text","text":"export url=\"https://<hostname>/api/ver1.0\"","marks":[{"type":"code"}]},{"type":"text","text":" "},{"type":"hardBreak"},{"type":"text","text":"(где hostname — hostname API-сервера провайдера IP-телефонии),"}]},{"type":"paragraph","content":[{"type":"text","text":"export access_token=\"8SNsrS0jV35vfmKqKeKtRrHfpbg4UX\"","marks":[{"type":"code"}]},{"type":"text","text":" "},{"type":"hardBreak"},{"type":"text","text":"(полученный токен доступа)."}]},{"type":"paragraph","content":[{"type":"text","text":"Отправим запрос:"}]},{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-X GET ${url}/client/@me/record/30-624835FEEE0E11E6A19D331E4D6A0606/storage_url/"}]}]},"id":"8dcf628d-361e-4ec3-8a23-3ea876ccfbb4","label":"Программа cURL     ","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Для отправки запросов на языке Python установим значения переменных URL и ACCESS_TOKEN:"}]},{"type":"paragraph","content":[{"type":"text","text":"URL = \"https://<hostname>/api/ver1.0\"","marks":[{"type":"code"}]},{"type":"hardBreak"},{"type":"text","text":"(где hostname — hostname API-сервера провайдера IP-телефонии),"}]},{"type":"paragraph","content":[{"type":"text","text":"ACCESS_TOKEN = \"8SNsrS0jV35vfmKqKeKtRrHfpbg4UX\"","marks":[{"type":"code"}]},{"type":"hardBreak"},{"type":"text","text":"(полученный токен доступа)."}]},{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\n\nimport requests\n\nurl = f'{URL}/client/@me/record/30-624835FEEE0E11E6A19D331E4D6A0606/storage_url/'\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}'\n}\nresponse = requests.get(url, headers=headers)\nprint(response.text)"}]}]},"id":"fee3a72f-3dce-411b-ab86-ffb4c6358996","label":"На языке Python3    ","type":"tab"}]

Ответ системы:

Code Block
languagejson
{
  "record_url": "https://storage.hostname.ru/bd7zzrXD5395gn7FMgzKtB8zhZnNoYx8BdkX_HgNdeE2lnJjPMLcOR_1hQprGf-dW94wuTCNRAY6MDjMZ0zWIg=="
}

Получение файлов записей разговора из API

Для непосредственного получения файла записи разговора с сервера REST API нужно совершить GET-запрос на соответствующий нужному уровню пользователя ресурс, указав идентификатор записи:
GET /client/{client_id}/record/{record_uuid}
GET /extension_group/{ext_group_id}/record/{record_uuid}
GET /extension/{extension_id}/record/{record_uuid}

Данные файла записи будут возвращены в теле запроса, имя файла содержится в заголовке Content-Disposition.

Пример

Tabs
[{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"html"},"content":[{"type":"text","text":"GET /api/ver1.0/client/@me/record/30-7FD1F974054E11E68FD30968F8BBCB45 HTTP/1.1\nUser-Agent: Wget/1.15 (linux-gnu)\nAccept: */*\nHost: host.domain\nConnection: Keep-Alive\nAuthorization: Bearer token"}]}]},"id":"a3ff8ec3-e1e0-4370-b353-387c043c8d21","label":"HTTP-запрос    ","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"метод","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"ресурс","marks":[{"type":"strong"}]}]}]},{"type":"tableHeader","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"данные","marks":[{"type":"strong"}]}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"GET"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"text","text":"/api/ver1.0/client/@me/record/30-7FD1F974054E11E68FD30968F8BBCB45"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[]}]}]}]},{"type":"paragraph","content":[]}]},"id":"0fd15c91-c783-4027-ae2a-33719743784a","label":"Интерактивный обозреватель API     ","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"shell"},"content":[{"type":"text","text":"curl \\\n-H \"Authorization: Bearer ${access_token}\" \\\n-X GET ${url}/client/@me/record/30-7FD1F974054E11E68FD30968F8BBCB45"}]}]},"id":"a364e374-3ea8-487b-ab42-a759938f2fc7","label":"Программа cURL     ","type":"tab"},{"content":{"version":1,"type":"doc","content":[{"type":"codeBlock","attrs":{"language":"python"},"content":[{"type":"text","text":"#!/usr/bin/python\r\n\r\nimport requests\r\n\r\nurl = f'{URL}/client/@me/record/30-7FD1F974054E11E68FD30968F8BBCB45'\r\nheaders = {\r\n    'Authorization': f'Bearer {ACCESS_TOKEN}'\r\n}\r\nresponse = requests.get(url, headers=headers)\r\nprint(response.text)"}]}]},"id":"bcc2a624-5c63-4652-93c9-8cbb60a7345d","label":"На языке Python3    ","type":"tab"}]

Ответ системы:

Code Block
languagehtml
HTTP/1.0 200 OK
Content-Length: 1008
Content-Disposition: attachment; filename=2016-04-18-13-13-47_outbound_0000000000_300.mp3
Server: nginx/1.8.1
Date: Tue, 19 Apr 2016 11:56:19 GMT
Content-Type: audio/mpeg

Получение файлов через базовую HTTP-аутентификацию

Существует возможность получить доступ к файлам записей разговоров, используя базовую HTTP-аутентификацию, вместо передачи OAuth2-токена. Подробнее этот способ описан на странице “Получение файлов через базовую HTTP-аутентификацию”.

Получение архива файлов записей разговора

Существует возможность получить архив с множеством файлов записей за период времени. Для этого необходимо воспользоваться специальным ресурсом API:
POST /client/{client_id}/record/archive/
передав в него временной диапазон и адрес электронной почты, на которую будет отправлена ссылка для загрузки архива. Размер файлов в архиве и диапазон дат ограничен. В течение часа невозможно запросить новый архив, не загрузив предыдущий. Коды возможных ошибок перечислены в подразделе “Возвращаемые коды и статусы”. Записи разговора по ссылке будут доступны в течение 12 часов.

Параметры JSON

Имя

Тип

Обяза-тельный

Описание

start_datetime

string (YYYY-MM-DD HH:MM:SS)

да

Начало диапазона в формате YYYY-MM-DD HH:MM:SS

end_datetime

string (YYYY-MM-DD HH:MM:SS)

да

Конец диапазона в формате YYYY-MM-DD HH:MM:SS

email

string

да

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

Ресурсы раздела "Клиент"

Expand
titleGET /client/{client_id}/record/

GET /client/{client_id}/record/

Получить список записей разговора клиента в за заданный интервал времени

Параметры URL

Имя

Тип

client_id

string

Параметры запроса

Имя

Тип

start_datetime

string

end_datetime

string

order

string

Поля ответа

Имя

Тип

ani_number 

string

application 

string

call_uuid 

string

client_owner_id

long

dest_domain

string

dest_number

string

did_domain

string

did_number

string

duration

long

ext_number_reg

string

extension_group_owner_id

long

extension_id

long

extension_name

string

extension_type

string

flow

string

from_domain

string

from_screen_name

string

from_username

string

hangup_cause

string

hangup_disposition 

string

hangup_time_gmt

string

init_time_gmt

string

record_file_size

long

record_uuid

string

result

string

source_domain

string

source_number

string

start_time_gmt

string

to_domain

string

to_username

string

Expand
titleDELETE /client/{client_id}/record/

DELETE /client/{client_id}/record/

Удалить записи разговора клиента за заданный интервал времени

Параметры URL

Имя

Тип

client_id

string

Параметры запроса

Имя

Тип

start_datetime

string

end_datetime

string

Expand
titlePOST /client/{client_id}/record/archive/

POST /client/{client_id}/record/archive/

Запросить архив записей разговора за период

Параметры URL

Имя

Тип

client_id

string

Параметры JSON

Имя

Тип

Обязательный

email

string

да

end_datetime

string

да

extension_id 

string

нет

start_datetime

string

да

Поля ответа

Имя

Тип

archive_uuid

string

email

string

end_datetime

string

extension_id 

long

start_datetime

string

Expand
titleGET /client/{client_id}/record/stats/

GET /client/{client_id}/record/stats/

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

Параметры URL

Имя

Тип

client_id

string

Параметры запроса

Имя

Тип

start_datetime

string

end_datetime

string

Поля ответа

Имя

Тип

files_size

long

records_count

long

Expand
titleGET /client/{client_id}/record/{record_uuid}

GET /client/{client_id}/record/{record_uuid}

Получить файл записи разговора

Параметры URL

Имя

Тип

record_uuid

string

client_id

string

Expand
titleDELETE /client/{client_id}/record/{record_uuid}

DELETE /client/{client_id}/record/{record_uuid}

Удалить запись разговора

Параметры URL

Имя

Тип

record_uuid

string

client_id

string

Ресурсы раздела "Группа внутренних номеров”

Expand
titleGET /extension_group/{ext_group_id}/record/

GET /extension_group/{ext_group_id}/record/

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

Параметры URL

Имя

Тип

ext_group_id

string

Параметры запроса

Имя

Тип

start_datetime

string

end_datetime

string

order

string

Поля ответа

Имя

Тип

ani_number 

string

application 

string

call_uuid 

string

client_owner_id

long

dest_domain

string

dest_number

string

did_domain

string

did_number

string

duration

long

ext_number_reg

string

extension_group_owner_id

long

extension_id

long

extension_name

string

extension_type

string

flow

string

from_domain

string

from_screen_name

string

from_username

string

hangup_cause

string

hangup_disposition 

string

hangup_time_gmt

string

init_time_gmt

string

record_file_size

long

record_uuid

string

result

string

source_domain

string

source_number

string

start_time_gmt

string

to_domain

string

to_username

string

Expand
titleGET /extension_group/{ext_group_id}/record/stats/

GET /extension_group/{ext_group_id}/record/stats/

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

Параметры URL

Имя

Тип

ext_group_id

string

Параметры запроса

Имя

Тип

start_datetime

string

end_datetime

string

Поля ответа

Имя

Тип

files_size

long

records_count

long

Expand
titleGET /extension_group/{ext_group_id}/record/{record_uuid}

GET /extension_group/{ext_group_id}/record/{record_uuid}

Получить файл записи разговора

Параметры URL

Имя

Тип

record_uuid

string

ext_group_id

string

Ресурсы раздела "Внутренний номер”

Expand
titleGET /extension/{extension_id}/record/

GET /extension/{extension_id}/record/

Получить список записей разговора внутреннего номера за заданный интервал времени

Параметры URL

Имя

Тип

extension_id

string

Параметры запроса

Имя

Тип

start_datetime

string

order

string

end_datetime

string

Поля ответа

Имя

Тип

ani_number 

string

application 

string

call_uuid 

string

client_owner_id

long

dest_domain

string

dest_number

string

did_domain

string

did_number

string

duration

long

ext_number_reg

string

extension_group_owner_id

long

extension_id

long

extension_name

string

extension_type

string

flow

string

from_domain

string

from_screen_name

string

from_username

string

hangup_cause

string

hangup_disposition 

string

hangup_time_gmt

string

init_time_gmt

string

record_file_size

long

record_uuid

string

result

string

source_domain

string

source_number

string

start_time_gmt

string

to_domain

string

to_username

string

Expand
titleGET /extension/{extension_id}/record/stats/

GET /extension/{extension_id}/record/stats/

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

Параметры URL

Имя

Тип

extension_id

string

Параметры запроса

Имя

Тип

start_datetime

string

end_datetime

string

Поля ответа

Имя

Тип

files_size

long

records_count

long

Expand
titleGET /extension/{extension_id}/record/{record_uuid}

GET /extension/{extension_id}/record/{record_uuid}

Получить файл записи разговора внутреннего номера

Параметры URL

Имя

Тип

record_uuid

string

extension_id

string