Примеры использования REST API
Инструкция с примерами по созданию и использованию API-ключей
Работа с REST API построена по стандарту OpenAPI. Для получения актуального списка эндпоинтов используйте раздел «Документация» внутри АТС. Ниже приведены примеры работы с основными возможностями REST интерфейса MikoPBX.
Если у вас отсутствует доверенный сертификат — добавьте verify=False в каждый запрос и отключите предупреждения:
import urllib3
urllib3.disable_warnings()Настоятельно рекомендуется выпустить доверенный сертификат. Самый простой способ сделать это — с помощью модуля Let's Encrypt.
Подключение
Для выполнения всех примеров из этой инструкции создайте API-ключ и настройте следующие права доступа (подробнее в общей статье):
Employees Management
Чтение и запись
Создание и редактирование сотрудников
Providers
Чтение и запись
Создание и редактирование провайдеров
SIP
Чтение
Статусы регистрации сотрудников и транков
Call Records
Чтение
История звонков (CDR)
PBX Status
Чтение
Активные звонки в реальном времени

В этой статье, мы будем работать с Python, поэтому необходимо установить необходимые зависимости:
Ниже приведён шаблон подключения к станции через API-ключ. Используйте его перед всеми скриптами из этой инструкции. API-ключ передаётся напрямую в заголовке запроса — никакой дополнительной аутентификации не требуется:
В шаблоне замените следующие параметры:
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.

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

Работа с 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)
Создание провайдера
В случае успешного выполнения запроса вы увидите следующий вывод в консоль:
На станции будет создан провайдер:

Вывод списка всех провайдеров
В случае успешного выполнения запроса вы увидите следующий вывод в консоль:
Вывод истории звонков (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
В случае успешного выполнения запроса вы увидите следующий вывод в консоль:
Статистика за период
В случае успешного выполнения запроса вы увидите следующий вывод в консоль:
Звонки со статусом 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?

