githubEdit

API ключи

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

В этой статье описана работа с REST API MikoPBX на примере базовых практических задач: создание сотрудников и SIP-провайдеров, получение истории звонков, мониторинг состояния станции в реальном времени.

circle-info

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

import urllib3
urllib3.disable_warnings()

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

Подготовка: API-ключ и окружение

Создание API-ключа

  1. Перейдите в раздел: "Система" → "API ключи".

Раздел "Система" -> "API ключи"
  1. Нажмите "Добавить API ключ".

  • Заполните поле Описание (например: CRM Integration)

  • Скопируйте сгенерированный API-ключ — он отображается только один раз

  • Сетевой фильтр: ограничьте доступ по IP или выберите «Разрешены с любых адресов»

В зависимости от задачи переключите тумблер «Полные права доступа» или настройте права вручную для каждого ресурса. Придерживайтесь принципа минимальных привилегий (Least Privilege) — каждый ключ должен иметь доступ только к тем ресурсам, которые реально нужны.

Базовые настройки API ключа

В этой инструкции будут рассмотрены следующие задачи:

  • Создать сотрудника — разрешите доступ к ресурсу "Employees Management" на уровне "Чтение и запись"

  • Создать SIP-провайдера — разрешите доступ к ресурсу "Providers" на уровне "Чтение и запись"

  • Получить статусы регистрации сотрудников и провайдеров — разрешите доступ к ресурсу "SIP" на уровне "Чтение"

  • Получить историю звонков — разрешите доступ к ресурсу "Call Records" на уровне "Чтение"

  • Активные звонки в реальном времени — разрешите доступ к ресурсу "PBX Status" на уровне "Чтение"

Пример настройки прав доступа

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

Подключение

Ниже приведен скрипт для подключения к станции через API-ключ. Этот шаблон необходимо использовать перед всеми скриптами, описанными в этой инструкции.

API-ключ и URL для 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

Начало периода: 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

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

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

Для получения статистики за период добавьте следующую функцию:

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

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 , POST /pbxcore/api/v3/sip-providers

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

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

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

Available

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

Unavailable

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

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

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

registered

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

rejected

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

unregistered

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

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

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

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

Справочник эндпоинтов

Всю информацию по эндпоинтам, параметрам запроса и полям, Вы можете найти в API-справочнике у Вас в АТС. Для этого в разделе "API ключи", нажмите на "Документация API".

Справочник по API

Таблицу с эндпоинтами Вы так же можете найти в подстатье текущей документации:

Справочник эндпоинтовchevron-right

Last updated

Was this helpful?