Versions Compared

Key

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

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

Данный ресурс позволяет получить данные о вызовах клиента за определенный период времени либо по уникальному идентификатору вызова. Представляет собой объединение ресурсов “Вызовы (/calls/)“ и “Информация о составных частях вызова (/cdr/)”:

Table of Contents

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

Expand
titleРесурс call_history

Ресурс call_history

Имя

Тип

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

Описание

bridged_domain

string

нет

Домен пользователя абонента, с которым произошло соединение

bridged_duration

int

нет

Длительность соединения двух абонентов. Может иметь значение null, если соединение со вторым абонентов не произошло

bridged_time_gmt

string

нет

Время по UTC, когда было установлено соединение двух абонентов. Может иметь значение null, если соединение со вторым абонентом не произошло

bridged_username

string

нет

Номер абонента, с которым произошло соединение

call_uuid

string

нет

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

cdr

Array[cdr_response]

нет

Описание составных частей вызова. Поля ресурса cdr_response описаны ниже

client_owner_id

int

нет

Идентификатор клиента, к которому относится вызов

did_domain

string

нет

Домен внешнего номера (DID – Direct Inward Dialing), на который поступил вызов

did_number

string

нет

Внешний номер (DID – Direct Inward Dialing), на который поступил вызов

duration

int

нет

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

ext_number_reg

string

нет

Внешний номер внутреннего номера, к которому относится вызов, если у внутреннего номера есть регистрация внешнего номера. В противном случае поле имеет значение null

extension_group_owner_id

int

нет

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

extension_id

int

нет

Идентификатор внутреннего номера, к которому относится вызов

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

нет

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

init_time_gmt

string

нет

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

result

string

нет

Результат вызова. Т.к. ресурс call_history состоит из /calls/ и /cdr/, то нужно различать соответствующие result данных ресурсов (см. изображение в самом начале статьи).
Например, /calls/ (весь вызов) не может иметь result: answered elsewhere, а /cdr/ (составные части звонка) не имеет result: bridged

start_time_gmt

string

нет

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

to_domain

string

нет

Домен получателя вызова

to_username

string

нет

Номер получателя вызова

call_month

string

нет

Указание месяца звонка. В формате “yyyy-mm” (пример: “2022-05”) . Если указать, то ответ на запрос придет быстрее.

callback

object

нет

Содержит информацию, если был сделан обратный вызов.
dst_num - Номер назначения вызова

src_num - Номер вызывающего абонента

src_id - id добавочного src_num

Пример

Получим историю вызовов за март и апрель 2020 года:

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":"/"},{"type":"text","text":"client/@me/call_history/?start_datetime=2020-03-01%2000%3A00%3A00&order=desc&end_datetime=2020-04-30%2000%3A00%3A00&per_page=100000&page=1"}]}]},{"type":"tableCell","attrs":{},"content":[{"type":"paragraph","content":[{"type":"hardBreak"},{"type":"text","text":" "}]},{"type":"paragraph","content":[]}]}]}]},{"type":"paragraph","content":[]}]},"id":"9de55939-4dc1-4959-a4ac-54df3341773f","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 \\\r\n-H \"Authorization: Bearer ${access_token}\" \\\r\n-X GET \"${url}/client/@me/call_history/?start_datetime=2020-03-01%2000:00:00&end_datetime=2020-04-30%2000:00:00&order=desc&per_page=100000&page=1\""}]}]},"id":"0206ac4d-1d38-40ff-b49f-4c1b42a217ac","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/call_history/?start_datetime=2020-03-01%2000%3A00%3A00&end_datetime=2020-04-30%2000%3A00%3A00&order=desc&per_page=100000&page=1'\nheaders = {\n    'Authorization': f'Bearer {ACCESS_TOKEN}'\n}\nresponse = requests.get(url, headers=headers)\nprint(response.text)"}]}]},"id":"6d775a6e-a971-4f40-8e3f-4972b79f65b4","label":"На языке Python3    ","type":"tab"}]
Expand
titleОтвет системы:
Code Block
languagejson
{
  "page": 1,
  "per_page": 100000,
  "order": "desc",
  "call_history": [
    {
      "flow": "in",
      "init_time_gmt": "2020-03-17 14:46:43",
      "start_time_gmt": "2020-03-17 14:46:43",
      "bridged_time_gmt": null,
      "hangup_time_gmt": "2020-03-17 14:46:48",
      "duration": 5,
      "bridged_duration": 0,
      "extension_id": 372802,
      "extension_name": "0005*101@sip.ringme.ru",
      "extension_type": "phone",
      "extension_group_owner_id": null,
      "client_owner_id": 32362,
      "result": "answered",
      "from_username": "00010037",
      "from_domain": "sip.ringme.ru",
      "bridged_username": null,
      "bridged_domain": null,
      "did_number": null,
      "did_domain": null,
      "to_username": "0005*101",
      "to_domain": "sip.ringme.ru",
      "from_screen_name": "Иванов И.И.",
      "hangup_cause": "NORMAL_CLEARING",
      "ext_number_reg": null,
      "call_uuid": "CAE26E8A4A7041D684F7CF5C480D1047",
      "hangup_disposition": "callee_refuse",
      "cdr": [
        {
          "flow": "in",
          "init_time_gmt": "2020-03-17 14:46:43.31",
          "start_time_gmt": "2020-03-17 14:46:48",
          "hangup_time_gmt": "2020-03-17 14:46:48",
          "duration": 0,
          "extension_id": 372802,
          "extension_name": "0005*101@sip.ringme.ru",
          "extension_type": "phone",
          "extension_group_owner_id": null,
          "client_owner_id": 32362,
          "result": "answered",
          "from_username": "0005*101",
          "from_domain": "sip.ringme.ru",
          "source_number": "0005*101",
          "source_domain": "sip.ringme.ru",
          "to_username": "0005*101",
          "to_domain": "sip.ringme.ru",
          "dest_number": null,
          "dest_domain": null,
          "did_number": null,
          "did_domain": null,
          "from_screen_name": "Иванов И.И.",
          "hangup_cause": "NORMAL_CLEARING",
          "ext_number_reg": null,
          "application": null,
          "hangup_disposition": "callee_bye",
          "ani_number": null,
          "record_uuid": null,
          "record_file_size": null,
          "bundle_info": null,
          "transfer_reason": null,
        },
...
      ]
    }
  ]
}
Expand
titleGET /client/{client_id}/call_history/

_id}/call_history/

Получить историю вызовов клиента

Параметры URL

Имя

Тип

client_id

string

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

Имя

Тип

start_datetime

string

from_username

array [string]

start_bridged_duration

integer

flow

array [string]

bridged_username

array [string]

end_bridged_duration

integer

order

string

end_datetime

string

did_number

array [string]

per_page

integer

end_duration

integer

extension_id

array [integer]

to_username

array [string]

start_duration

integer

page

integer

Поля ответа

Имя

Тип

call_history

Array[call_history]

order

string

page

long

per_page

long

Ресурс call_history

Имя

Тип

bridged_domain

string

bridged_duration

long

bridged_time_gmt

string

bridged_username

string

call_uuid

string

cdr

Array[cdr_response]

client_owner_id

long

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

result

string

start_time_gmt

string

to_domain

string

to_username

string

Ресурс cdr_response

Имя

Тип

ani_number

string

application

string

call_uuid

string

calls_hangup_disposition 

string

calls_result

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

transfer_reason

string

Expand
titleGET /client/{client_id}/call_history/{call_uuid}

GET /client/{client_id}/call_history/{call_uuid}

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

Параметры URL

Имя

Тип

client_id

string

call_uuid

string

call_month

string

Поля ответа

Имя

Тип

bridged_domain

string

bridged_duration

long

bridged_time_gmt

string

bridged_username

string

call_uuid

string

cdr

Array[cdr_response]

client_owner_id

long

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

result

string

start_time_gmt

string

to_domain

string

to_username

string

Ресурс cdr_response

Имя

Тип

ani_number

string

application

string

call_uuid

string

calls_hangup_disposition 

string

calls_result 

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

bundle_info

string

transfer_reason

string