API ключи
Инструкция с примерами по созданию и использованию API-ключей
В этой статье описана работа с REST API MikoPBX на примере базовых практических задач: создание сотрудников и SIP-провайдеров, получение истории звонков, мониторинг состояния станции в реальном времени.
Если у вас отсутствует доверенный сертификат — добавьте verify=False в каждый запрос и отключите предупреждения:
import urllib3
urllib3.disable_warnings()Настоятельно рекомендуется выпустить доверенный сертификат. Самый простой способ селать это - с помощью модуля Let's encrypt.
Подготовка: API-ключ и окружение
Создание API-ключа
Перейдите в раздел: "Система" → "API ключи".

Нажмите "Добавить API ключ".
Заполните поле Описание (например:
CRM Integration)Скопируйте сгенерированный API-ключ — он отображается только один раз
Сетевой фильтр: ограничьте доступ по IP или выберите «Разрешены с любых адресов»
В зависимости от задачи переключите тумблер «Полные права доступа» или настройте права вручную для каждого ресурса. Придерживайтесь принципа минимальных привилегий (Least Privilege) — каждый ключ должен иметь доступ только к тем ресурсам, которые реально нужны.

В этой инструкции будут рассмотрены следующие задачи:
Создать сотрудника — разрешите доступ к ресурсу "Employees Management" на уровне "Чтение и запись"
Создать SIP-провайдера — разрешите доступ к ресурсу "Providers" на уровне "Чтение и запись"
Получить статусы регистрации сотрудников и провайдеров — разрешите доступ к ресурсу "SIP" на уровне "Чтение"
Получить историю звонков — разрешите доступ к ресурсу "Call Records" на уровне "Чтение"
Активные звонки в реальном времени — разрешите доступ к ресурсу "PBX Status" на уровне "Чтение"

В этой статье, мы будем работать с Python, поэтому необходимо установить все необходимые зависимости:
Подключение
Ниже приведен скрипт для подключения к станции через API-ключ. Этот шаблон необходимо использовать перед всеми скриптами, описанными в этой инструкции.
API-ключ и URL для 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
Начало периода: YYYY-MM-DD HH:MM:SS
dateTo
string
Конец периода: YYYY-MM-DD HH:MM:SS
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 , POST /pbxcore/api/v3/sip-providers
В случае успешного выполнения запроса Вы увидите следующий вывод в консоль:
Статусы сотрудников (поле status)
Available
Зарегистрирован и доступен
Unavailable
Не зарегистрирован (оффлайн)
Статусы провайдеров (поле state)
registered
Зарегистрирован на сервере провайдера
rejected
Регистрация отклонена сервером
unregistered
Не зарегистрирован
Активные звонки в реальном времени
Эндпоинт: GET /pbxcore/api/v3/pbx-status
В случае успешного выполнения запроса Вы увидите следующий вывод в консоль:
Справочник эндпоинтов
Всю информацию по эндпоинтам, параметрам запроса и полям, Вы можете найти в API-справочнике у Вас в АТС. Для этого в разделе "API ключи", нажмите на "Документация API".

Таблицу с эндпоинтами Вы так же можете найти в подстатье текущей документации:
Справочник эндпоинтовLast updated
Was this helpful?

