githubEdit

Примеры использования REST API

Инструкция с примерами по созданию и использованию API-ключей

Работа с REST API построена по стандарту OpenAPI. Для получения актуального списка эндпоинтов используйте раздел «Документация» внутри АТС. Ниже приведены примеры работы с основными возможностями REST интерфейса MikoPBX.

circle-info

Если у вас отсутствует доверенный сертификат — добавьте verify=False в каждый запрос и отключите предупреждения:

import urllib3
urllib3.disable_warnings()

Настоятельно рекомендуется выпустить доверенный сертификат. Самый простой способ сделать это — с помощью модуля Let's Encrypt.

Подключение

Для выполнения всех примеров из этой инструкции создайте API-ключ и настройте следующие права доступа (подробнее в общей статье):

Ресурс
Уровень доступа
Для каких примеров

Employees Management

Чтение и запись

Создание и редактирование сотрудников

Providers

Чтение и запись

Создание и редактирование провайдеров

SIP

Чтение

Статусы регистрации сотрудников и транков

Call Records

Чтение

История звонков (CDR)

PBX Status

Чтение

Активные звонки в реальном времени

Пример настройки прав доступа (разрешение Call Records)

В этой статье, мы будем работать с Python, поэтому необходимо установить необходимые зависимости:

Ниже приведён шаблон подключения к станции через API-ключ. Используйте его перед всеми скриптами из этой инструкции. API-ключ передаётся напрямую в заголовке запроса — никакой дополнительной аутентификации не требуется:

circle-info

В шаблоне замените следующие параметры:

  • your-mikopbx.com — на IP-адрес или URL вашей станции.

  • ваш-api-ключ — на ранее созданный API-ключ с необходимыми правами.

Работа с сотрудниками

Эндпоинт: POST /pbxcore/api/v3/employees

Ниже приведена таблица с параметрами для такого запроса.

Поле
Обяз.
Тип / ограничения
Описание

number

string, 2–8 цифр

Добавочный номер

user_username

string, 1–100 символов

ФИО сотрудника

sip_secret

string, 5–100 символов

Пароль SIP-аккаунта

user_email

string email, ≤255

Email для уведомлений

mobile_number

string E.164, ≤50

Мобильный (+7...) для переадресации

mobile_dialstring

string, ≤255

Строка набора мобильного

sip_transport

udp / tcp / tls / udp,tcp

Транспорт SIP (по умолч.: udp)

sip_dtmfmode

auto / rfc4733 / inband / info

Режим DTMF (по умолч.: auto)

sip_enableRecording

boolean

Запись разговоров (по умолч.: true)

sip_networkfilterid

number | "none"

ID сетевого фильтра

sip_manualattributes

string, ≤1024

Дополнительные SIP-параметры

fwd_ringlength

integer, ≤180

Время дозвона до переадресации (сек, по умолч.: 45)

fwd_forwarding

number | hangup | busy

Безусловная переадресация

fwd_forwardingonbusy

number | hangup | busy

Переадресация при занятости

fwd_forwardingonunavailable

number | hangup | busy

Переадресация при недоступности

Создание одного сотрудника

Пример ответа API (HTTP 201):

Возможные коды ответов:

Код
Описание

201

Сотрудник успешно создан

400

Ошибка валидации (слабый пароль <5 символов, неверный формат номера)

401

Неверный или отсутствующий API-ключ

403

Нет прав на запись для ресурса /employees

409

Конфликт — номер уже занят

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

На станции будут созданы сотрудники 243 и 244.

Созданные сотрудники с помощью REST API

Вывод списка сотрудников

В случае успешного выполнения запроса Вы увидите следующий вывод в консоль:

Массовое создание сотрудников

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

На станции будут создано 3 сотрудника.

Созданные сотрудники с помощью REST API

Работа с SIP-провайдерами

Эндпоинт: POST /pbxcore/api/v3/sip-providers

Поле
Обяз.
Тип
Описание

description

string

Название провайдера

host

string

Адрес SIP-сервера провайдера

username

string

Логин на сервере провайдера

secret

string

Пароль

registration_type

string

inbound / outbound / none

qualify

boolean

Мониторинг доступности (по умолч.: true)

transport

string

udp / tcp / tls / udp,tcp (по умолч.: udp,tcp)

dtmfmode

string

auto / rfc4733 / inband / info (по умолч.: auto)

port

integer

Порт подключения (по умолч.: 5060)

disabled

boolean

Отключить провайдера (по умолч.: false)

Создание провайдера

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

На станции будет создан провайдер:

Созданный провайдер с помощью REST API

Вывод списка всех провайдеров

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

Вывод истории звонков (CDR)

Эндпоинт: GET /pbxcore/api/v3/cdr — только чтение.

Параметр
Тип
Описание

offset

integer

Смещение для пагинации (по умолч.: 0)

limit

integer

Кол-во записей, макс. 100

dateFrom

string

Начало периода: %Y-%m-%dT%H:%M:%S

dateTo

string

Конец периода: %Y-%m-%dT%H:%M:%S

src_num

string

Фильтр по номеру звонящего

dst_num

string

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

disposition

string

ANSWERED / NO ANSWER / BUSY / FAILED

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

Статистика за период

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

circle-info

Звонки со статусом CHANUNAVAIL не учитываются в статистике «Отвечено», «Пропущено», «Средняя длит.».

Поля CDR-записи

Поле
Тип
Описание

linkedid

string

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

start

datetime

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

src_num

string

Номер звонящего

src_name

string

Имя звонящего

dst_num

string

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

dst_name

string

Имя вызываемого

disposition

string

ANSWERED / NO ANSWER / NOANSWER / BUSY / CHANUNAVAIL / FAILED

totalBillsec

integer

Длительность разговора (секунды)

totalDuration

integer

Полная длительность (включая дозвон)

records

array

Детальные записи по каждому плечу звонка

records[].recordingfile

string

Путь к файлу записи

records[].playback_url

string

URL для воспроизведения записи

records[].download_url

string

URL для скачивания записи

records[].dtmf_digits

string

DTMF цифры, нажатые в IVR

Мониторинг: статусы SIP и активные звонки

Статусы регистрации сотрудников и SIP-провайдеров

Эндпоинты: GET /pbxcore/api/v3/sip , GET /pbxcore/api/v3/sip-providers

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

Статусы сотрудников (поле status)

Значение
Описание

Available

Зарегистрирован и доступен

Unavailable

Не зарегистрирован (оффлайн)

Статусы провайдеров (поле state)

Значение
Описание

registered

Зарегистрирован на сервере провайдера

rejected

Регистрация отклонена сервером

unregistered

Не зарегистрирован

Активные звонки в реальном времени

Эндпоинт: GET /pbxcore/api/v3/pbx-status

В случае успешного выполнения запроса вы увидите следующий вывод в консоль:

Полный список эндпоинтов и интерактивная документация — в разделе Интерактивная документация и список эндпоинтов.

Last updated

Was this helpful?