arrow-left

All pages
gitbookPowered by GitBook
1 of 16

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Дата и время

В данном разделе происходит настройка часов и календаря

Раздел «Дата и время» в MikoPBX — это интерфейс для настройки системных параметров даты и времени. Здесь администраторы могут установить текущую дату и время, выбрать часовой пояс и настроить синхронизацию с серверами точного времени (NTP). Корректная настройка даты и времени важна для точной регистрации событий, журналов вызовов и работы функций, зависящих от расписания, обеспечивая синхронизацию системы с другими сетевыми устройствами и сервисами.

Настройка производится в разделе «Система» - «Дата и время»:

Раздел "Дата и время" в MikoPBX

Существует возможность установить время «вручную», без использования NTP сервера. По возможности, рекомендуем использовать автоматическое определение времени.

Для настройки времени вручную переключите тумблер "Корректировать время вручную"

Элемент для корректировки времени вручную

API ключи

Описание работы в MikoPBX

REST API MikoPBX позволяет автоматизировать управление станцией и интегрировать её с внешними системами — CRM, helpdesk, корпоративными порталами и собственными сервисами. Для доступа к API используются API ключи.

hashtag
Авторизация

Все запросы к REST API авторизуются через заголовок Authorization: Bearer <token>. MikoPBX поддерживает два типа токенов:

Тип
Когда использовать?

Для внешних интеграций всегда используйте API ключ — он создаётся вручную, имеет настраиваемые права доступа и может быть отозван в любой момент.

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

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

  1. Нажмите «Добавить API ключ».

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

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

Важно: сохраните ключ сразу после создания. После закрытия страницы восстановить его невозможно — придётся создавать новый.

hashtag
Настройка прав доступа

Придерживайтесь принципа минимальных привилегий — каждый ключ должен иметь доступ только к тем ресурсам, которые реально нужны.

При создании ключа доступны два варианта:

  • Полные права доступа — ключ получает доступ ко всем ресурсам API на чтение и запись. Используйте только если это действительно необходимо.

  • Ручная настройка — для каждого ресурса API отдельно указывается уровень доступа: только чтение, чтение и запись, или нет доступа.

circle-info
  • "Чтение" позволяет получать данные (GET)

  • "Чтение и запись" позволяет создавать, изменять и удалять данные (POST, PUT, DELETE).

Сетевой фильтр: выберите один из двух вариантов:

  • Только локальные подключения — ключ будет работать только из локальной сети. Рекомендуется если интеграция работает внутри инфраструктуры.

  • Разрешены подключения с любых адресов — ключ доступен без ограничений по IP. Используйте только если клиент находится за пределами локальной сети.

hashtag
Безопасность

Соблюдение следующих требований защищает API от перехвата токенов и несанкционированного доступа:

  1. Валидный SSL сертификат:

Используйте доверенный SSL сертификат на стороне сервера MikoPBX. Самый простой способ — выпустить бесплатный сертификат через модуль Let's Encrypt (инструкция по работе с модулем находится ).

Работа без валидного сертификата допустима только в изолированной тестовой среде без доступа из интернета.

  1. Доверие к сертификату на стороне клиента:

Клиент обязан проверять сертификат сервера при каждом запросе. Отключение проверки (verify=False в Python, -k в curl) недопустимо в production: без неё возможна атака типа «человек посередине» (MITM), при которой злоумышленник перехватывает Bearer-токен в открытом виде.

  1. Ограничение прав (scope) ключа:

Каждый ключ должен иметь доступ только к тем ресурсам, которые реально используются интеграцией. Не используйте «Полные права доступа» без необходимости — компрометация такого ключа даёт атакующему полный контроль над API.

  1. Ограничение сетевого доступа:

Если интеграция работает внутри локальной сети — выбирайте «Только локальные подключения». Это исключает возможность использования скомпрометированного ключа из внешней сети.

Вариант «Разрешены подключения с любых адресов» используйте только когда клиент физически находится за пределами локальной сети, и убедитесь что остальные меры безопасности соблюдены — валидный SSL сертификат и минимальные права ключа.

hashtag
Примеры и подробная документация

Нажмите на карточку для перехода:

JWT токен

Внутренние компоненты системы, модули, встроенные инструменты

API ключ

Внешние интеграции: CRM, скрипты, сторонние сервисы

здесь
Раздел "Система" -> "API ключи"
Базовые настройки API ключа
Cover

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

Cover

Интерактивная документация и список эндпоинтов

Общие настройки

Описание настроек основных параметров системы

В этом разделе настраиваются основные параметры системы. Рекомендуется выполнить эти настройки сразу после установки АТС.

Раздел "Система" -> "Общие настройки" в веб-интерфейсе MikoPBX

hashtag
Основные

  • Название PBX системы — отображается на главной странице MikoPBX.

  • Дополнительное описание — видно только администраторам системы.

  • Язык звуковых сообщений системы — язык голосовых оповещений.

  • Максимальная длина внутренних номеров — максимальная длина внутреннего номера сотрудника.

  • Разрешить входящие звонки с любых серверов - разрешает принимать SIP звонки от неавторизованных устройств и серверов без регистрации.

circle-exclamation

Включение этой опции может создать угрозу безопасности. Убедитесь, что ваша сеть надежно защищена и используются правила фильтрации!

  • Перезапуск PBX каждую ночь — автоматический рестарт Asterisk в ночное время (в 01:00 ночи по системному времени).

  • Отправлять разработчикам информацию о сбоях — при возникновении ошибки её описание отправляется разработчикам (требуется доступ в интернет).

Нажмите "Сохранить".

hashtag
Запись разговоров

  • Запись разговоров — включить или отключить запись всех разговоров.

  • Запись внутренних разговоров — включить или отключить запись звонков между сотрудниками.

Ниже можно выбрать звуковые файлы, которые будут использоваться в качестве предупреждения о записи разговора (для входящих и исходящих звонков могут быть выбраны разные звуковые файлы).

Телефонные звонки сохраняются в формате WebM с кодеком Opus. Размер файла зависит от качества звонка: если хотя бы один из участников разговора использует качественный кодек (например, G.722 или Opus), запись сохраняется с повышенным битрейтом — это занимает больше места на диске, но улучшает качество распознавания речи.

circle-info

Ориентировочно 1 час разговора занимает 14–28 МБ места на диске в зависимости от качества записи.

hashtag
Переводы вызовов

hashtag
Парковка (удержание)

Парковка — способ временно поставить клиента на удержание, пока вы уточняете информацию. Во время ожидания клиенту воспроизводится мелодия.

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

  1. Введите *2 во время разговора — вызов будет поставлен на удержание, а вам сообщат номер парковочного слота. Любой сотрудник может забрать вызов, набрав этот номер.

  2. В настройках задайте номер для парковки — при переадресации вызова на этот номер MikoPBX поставит звонок на удержание и сообщит номер слота. Вызов также может забрать любой сотрудник.

Диапазон парковочных слотов и номер для парковки настраиваются в этом же разделе:

  • Номер для парковки вызова — номер, на который нужно перевести вызов для постановки на удержание, по умолчанию 800.

  • Диапазон слотов для парковки — диапазон номеров парковочных слотов, по умолчанию 801–820.

hashtag
Переводы вызовов

MikoPBX поддерживает два вида переводов:

  • Консультативный (условный) перевод — вы можете предварительно поговорить с коллегой, прежде чем переключить на него вызов. Клиент в это время находится на удержании. Перевод завершается после того, как вы кладёте трубку.

  • Безусловный (слепой) перевод — вызов переводится сразу, без предварительного разговора с коллегой. Удобно, когда поступает второй звонок, а вы уже заняты — вызов можно мгновенно перевести на свободного сотрудника.

Комбинации клавиш для переводов можно изменить в этом же разделе:

  • Комбинация для консультативного перевода — по умолчанию ##.

  • Комбинация для безусловного перевода — по умолчанию **.

circle-info

Комбинации вводятся с телефона во время активного разговора, после чего набирается внутренний номер сотрудника, на которого выполняется перевод.

hashtag
Таймауты

  • Время возврата вызова — если после консультативного перевода никто не ответил, вызов вернётся обратно. Задаётся в секундах, по умолчанию 45 сек.

  • Максимальный таймаут между цифрами при вводе добавочного номера — время ожидания следующей цифры при наборе номера. Задаётся в миллисекундах, по умолчанию 2500 мс.

hashtag
Перехват вызова (Pickup)

Если звонит телефон коллеги, вы можете перехватить вызов, не вставая с места:

  • *8<НомерКоллеги> — перехватить вызов конкретного сотрудника.

  • *8 — перехватить любой входящий вызов, если номер коллеги неизвестен.

Комбинацию для перехвата можно изменить в поле «Комбинация для перехвата входящих вызовов», по умолчанию *8.

hashtag
SIP

Session Initiation Protocol (SIP) — сигнальный протокол, используемый большинством VoIP-телефонов. Вы можете изменить SIP-порт (по умолчанию 5060) для повышения безопасности.

hashtag
Настройки портов для SIP сигнализации и диапазона RTP

RTP (Real-time Transport Protocol) определяет стандартный формат передачи аудио и видео по IP-сетям. По умолчанию используется диапазон портов 10000–10800. Для некоторых маршрутизаторов и брандмауэров может потребоваться дополнительная настройка диапазона. Ещё одна причина для его расширения — большое количество параллельных звонков: каждый активный вызов использует два RTP-порта, то есть при 200 портах возможно не более 100 одновременных звонков. Если нагрузка выше — расширьте диапазон.

  • Порт SIP — порт для регистрации телефонов на станции, по умолчанию 5060. Изменение порта может повысить безопасность системы.

  • Порт SIP TLS — порт для шифрованных звонков, по умолчанию 5061.

  • Диапазон RTP портов — диапазон портов для передачи аудио, по умолчанию 10000–10800.

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

  • Адрес STUN сервера — помогает при работе АТС за NAT, в том числе при использовании WebRTC.

  • Префикс Auth Username — по умолчанию имя пользователя (username) для авторизации на SIP-аккаунте соответствует внутреннему номеру сотрудника (пример — 101). При заполнении этой настройки к имени авторизации будет добавляться указанный префикс: username останется 101, а AuthUsername станет 101MIKO. Такой подход значительно усложняет подбор пароля для SIP-аккаунта.

hashtag
Настройки продолжительности действия регистрации

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

  • Стандартное время Keep-alive — интервал отправки keep-alive пакетов в секундах, по умолчанию 120 секунд.

  • Минимальное время регистрации (SIPMiniExpiry) — по умолчанию 60 секунд.

  • Максимальное время регистрации (SIPMaxExpiry) — по умолчанию 3600 секунд.

hashtag
Аудио/видео кодеки

В этом разделе настраиваются разрешённые аудио и видео кодеки для всей АТС.

hashtag
AMI&ARI

Asterisk Manager Interface (AMI) — мощный и удобный программный интерфейс (API) Asterisk для управления системой из внешних программ. Благодаря AMI внешние программы могут осуществлять соединения с Asterisk посредством TCP-протокола, инициировать выполнение команд, считывать результат их выполнения, а также получать уведомления о происходящих событиях в реальном времени. AMI часто используют для интеграции с бизнес-процессами и системами, программным обеспечением CRM (Customer Relationship Management — управление взаимоотношениями с клиентами).

Asynchronous Javascript Asterisk Manager (AJAM) — технология, которая позволяет веб-браузерам или другим приложениям с поддержкой HTTP напрямую обращаться к интерфейсу Asterisk Manager (AMI) через HTTP/HTTPS.

Asterisk REST Interface (ARI) — RESTful API с поддержкой WebSocket, который даёт полный контроль над каналами, мостами и медиапотоками Asterisk в реальном времени. Предназначен для разработки собственных телефонных приложений.

hashtag
Настройки AMI

  • Использовать AMI интерфейс — включить или отключить AMI.

  • Порт AMI — порт для подключения внешних программ к AMI, по умолчанию 5038. Клиентская программа подключается к AMI через этот порт и аутентифицируется, после чего Asterisk отвечает на запросы и отправляет извещения об изменениях состояния заданных подсистем.

hashtag
Настройки HTTP сервера

  • HTTP порт (AJAM и ARI) — порт для подключения по HTTP, по умолчанию 8088.

  • HTTPS порт (AJAM и ARI) — порт для подключения по HTTPS, по умолчанию 8089.

hashtag
Настройки AJAM

  • Использовать AJAM интерфейс — включить или отключить AJAM.

hashtag
Настройки ARI

  • Использовать ARI интерфейс — включить или отключить ARI. По умолчанию отключён.

  • Разрешённые источники CORS — домены, с которых разрешены запросы к ARI. CORS — механизм безопасности браузера, ограничивающий кросс-доменные запросы к API.

circle-exclamation

Никогда не используйте * в продакшне. Указывайте только доверенные домены по HTTPS.

hashtag
SSH

SSH (Secure Shell) — зашифрованный протокол, который часто используется для взаимодействия и удалённого управления серверами. SSH-сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный — аутентификация по паролю. Он достаточно прост, но не очень безопасен: пароли передаются по безопасному каналу, однако недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делает перебор очень простым.

Существует более безопасный способ аутентификации — SSH-ключи. Каждая пара состоит из открытого и закрытого ключа: закрытый хранится у клиента, открытый загружается на сервер в файл ~/.ssh/authorized_keys. При подключении сервер отправляет сообщение, зашифрованное открытым ключом — если клиент расшифровывает его закрытым и возвращает правильный ответ, аутентификация считается пройденной.

circle-info

В MikoPBX аутентификация по паролю по умолчанию отключена — для подключения необходимо использовать SSH-ключи. Добавить его необходимо в данном разделе или при создании виртуальной машины в облаке (он автоматически будет подставлен при установке MikoPBX).

Подробнее про подключение по SSH к MikoPBX Вы можете узнать .

hashtag
Параметры раздела

  • SSH порт — порт для подключения по SSH, по умолчанию 22.

  • Логин для SSH консоли — имя пользователя для подключения.

  • Отключить авторизацию по паролю — по умолчанию включено в MikoPBX (авторизация по паролю отключена).

hashtag
HTTP/HTTPS

Для повышения безопасности можно изменить HTTP-порт (по умолчанию 80) или активировать режим HTTPS. HTTPS шифрует трафик между браузером и АТС с помощью протоколов SSL/TLS. По умолчанию используется TCP-порт 443.

  • HTTP порт — порт для доступа к веб-интерфейсу по HTTP, по умолчанию 80.

  • HTTPS порт — порт для доступа к веб-интерфейсу по HTTPS, по умолчанию 443.

  • Редирект на HTTPS — при открытии веб-интерфейса по HTTP пользователь будет автоматически перенаправлен на HTTPS.

hashtag
Публичный ключ HTTPS (SSL/TLS сертификат)

SSL/TLS сертификат — цифровой документ, подтверждающий подлинность сервера и обеспечивающий шифрование данных между браузером и АТС. В MikoPBX сертификат используется для:

  • HTTPS доступа к веб-интерфейсу

  • WebRTC соединений (обязательно для браузерных звонков)

  • Безопасных AJAM и ARI подключений через HTTPS

  • Защищённого REST API для интеграций

Сертификат должен быть в формате PEM — начинается с -----BEGIN CERTIFICATE----- и заканчивается -----END CERTIFICATE-----. Если у вас есть промежуточные сертификаты (intermediate), добавьте их после основного в том же поле.

Способы получения сертификата:

  • Модуль Let's Encrypt — автоматическое получение и обновление бесплатных сертификатов. Рекомендуемый способ.

  • Покупка у центра сертификации (DigiCert, Comodo, GlobalSign и др.)

  • Самоподписанный сертификат — генерируется автоматически при первом запуске АТС, но вызывает предупреждения в браузерах.

circle-info

Рекомендуем использовать модуль Let's Encrypt для автоматического управления сертификатами. Подробнее .

hashtag
Приватный ключ HTTPS

Секретный ключ для расшифровки SSL/TLS соединений. Должен точно соответствовать публичному сертификату — при несоответствии HTTPS работать не будет.

Ключ должен быть в формате PEM — начинается с -----BEGIN RSA PRIVATE KEY----- или -----BEGIN PRIVATE KEY-----.

triangle-exclamation

Никогда не передавайте приватный ключ третьим лицам. Компрометация ключа позволит злоумышленнику перехватывать зашифрованный трафик. При компрометации - немедленно замените пару ключей.

Рекомендации по безопасности:

  • Храните резервную копию ключа в защищённом месте.

  • Используйте ключи длиной минимум 2048 бит (рекомендуется 4096).

  • Регулярно обновляйте сертификаты и ключи.

hashtag
Пароль WEB интерфейса

В этом разделе можно изменить логин и пароль для входа в веб-интерфейс, а также настроить вход с помощью Passkeys.

circle-info

Авторизация в MikoPBX по умолчанию:

  • Логин: admin

  • Пароль: admin — рекомендуется сразу изменить.

  • Логин — имя пользователя для входа в веб-интерфейс.

  • Пароль — пароль для входа в веб-интерфейс.

hashtag
Passkeys (биометрическая аутентификация)

Passkeys — современный способ входа без пароля с использованием биометрии или аппаратного ключа безопасности: Face ID, Touch ID, Windows Hello или YubiKey. Это быстрее и безопаснее традиционных паролей.

Чтобы добавить Passkey, нажмите кнопку «+ Добавить Passkey» и следуйте инструкциям браузера.

circle-info

Подробнее Вы можете прочитать .

hashtag
Удаление настроек системы

Этот раздел позволяет полностью сбросить систему до заводского состояния. При удалении будут безвозвратно удалены все настройки, история вызовов, файлы записей разговоров и установленные модули расширений.

triangle-exclamation

Это действие необратимо. Перед очисткой системы убедитесь, что у вас есть резервная копия всех важных данных.

Для подтверждения введите в поле ввода фразу удалить всё и нажмите «Сохранить».

  • Использовать WebRTC — будут произведены дополнительные настройки для работы с WebRTC-соединением. Например, для внутреннего номера 201 будет создан дополнительный endpoint, подключиться к которому можно по протоколу WebRTC с использованием URL sip:201-WS@IP_PBX.

  • SSH пароль — пароль для входа (доступен только если авторизация по паролю не отключена).
  • Авторизованные SSH ключи — добавьте сюда публичный SSH-ключ с помощью кнопки «+ Добавить ключ». Если ключей несколько - добавьте каждый отдельно.

  • Публичный SSH ключ системы — публичный SSH-ключ текущей АТС. Его можно скопировать в поле «Авторизованные SSH ключи» на другой станции — это позволит подключаться к удалённому серверу без дополнительной авторизации.

  • здесь
    в этой статье
    здесь
    Вкладка "Основные" в системных настройках
    Вкладка "Запись разговоров" в системных настройках
    Вкладка "Переводы вызовов" в системных настройках
    Вкладка "SIP" в системных настройках
    Раздел "Аудио/Видео кодеки" в системных настройках
    Вкладка "AMI&ARI" в системных настройках
    Вкладка "SSH" в системных настройках
    Вкладка "HTTP/HTTPS" в системных настройках
    Вкладка "Пароль WEB интерфейса" в системных настройках
    Раздел "Удаление настроек системы" в системных настройках

    Настройка Proton (Логин, Пароль)

    Настройка почты для сервиса proton.me

    hashtag
    Генерация SMTP токена

    1. Для начала, перейдите в настройки своего аккаунта Proton (ссылкаarrow-up-right).

    Настройки учетной записи Proton
    1. Далее перейдите в раздел "Proton Mail" -> "IMAP/SMTP".

    1. Далее пролистайте до секции "SMTP submission". Нажмите "Generate token".

    1. Введите произовольное название в поле "Token name" - MikoPBX в нашем случае, так же выберите Email address для которого Вы создаете токен.

    Будет создан токен. Его параметры будут показаны один раз и когда Вы закроете окно, станут недоступны. Сохраните их, мы будем использовать их для дальнейшей настройки.

    hashtag
    Подключение в MikoPBX

    1. Перейдите в раздел "Система" -> "Почта и уведомления".

    1. Перейдите в "Настройки SMTP". Заполните все необходимые параметры:

    • Адрес отправителя - Ваш адрес электронной почты, под которым Вы генерировали токен.

    • Имя отправителя - имя от которого отправляется почта.

    • Тип аутунтификации - "Логин и пароль".

    Нажмите "Сохранить".

    Нажмите "Проверить подключение". Вы увидите следующее окно, подтверждающее правильность введенных данных:

    Настройка Mail.ru (Логин, Пароль)

    Настройка почты для сервиса mail.ru

    hashtag
    Создания пароля для входа

    Необходимо создать специальный пароль для входа в почтовую программу. С обычным паролем от почты войти не получится. Чтобы создать такой пароль, к почте должен быть привязан телефон. Перейдите в и проверьте, привязан ли он. Если нет — привяжите.

    1. Откройте . В левом нижнем углу перейдите в "Настройки"

    SMTP логин - SMTP Username из окна с данными токена.
  • SMTP пароль - SMTP token из окна с данными токена.

  • SMTP хост - smtp.protonmail.ch

  • SMTP порт - 587.

  • Тип шифрования - STARTLS (порт 587).

  • Раздел "IMAP/SMTP"
    Кнопка для создания нового токена "Generate token"
    Создание нового SMTP токена
    Параметры созданного токена
    Раздел "Система" -> "Почта и уведомления".
    Параметры почты в MikoPBX
    Успешное подключение
    → "
    Все настройки"
    → "
    Безопасность
    " → "
    ."
    Раздел "Пароли для внешних приложений" в настройках почты Mail.ru
    1. Нажмите Создать.

    Кнопка "Создать" для создания нового пароля
    1. На следующей странице добавьте название для создаваемого пароля - это поможет для его идентификации в будущем. В нашем примере - "SMTP для MikoPBX".

    Нажмите Продолжить.

    Создание пароля. Добавление названия
    1. Выберите тип протокола - "Только отправка писем в Почте".

    Нажмите Продолжить.

    Создание пароля. Выбор типа протокола
    1. Скопируйте пароль и введите его, когда будете входить с почтой Mail в почтовую программу.

    circle-exclamation

    Пароль будет отображен только один раз! В случае утери необходимо создать новый, повторив все шаги с самого начала.

    Созданный пароль для внешнего приложения

    hashtag
    Подключение в MikoPBX

    1. Перейдите в раздел "Система" -> "Почта и уведомления".

    Раздел "Система" -> "Почта и уведомления".
    1. Перейдите в "Настройки SMTP". Заполните все необходимые параметры:

    • Адрес отправителя - Ваш адрес электронной почты.

    • Имя отправителя - имя от которого отправляется почта.

    • Тип аутунтификации - "Логин и пароль".

    • SMTP логин - Ваш адрес электронной почты.

    • SMTP пароль - созданный пароль для внешнего приложения.

    • SMTP хост - smtp.mail.ru

    • SMTP порт - 465.

    • Тип шифрования - SSL/TLS (порт 465).

    Нажмите "Сохранить".

    Параметры почты для подключения mail.ru SMTP

    Нажмите "Проверить подключение". Вы увидите следующее окно, подтверждающее правильность введенных данных:

    Успешное подключение mail.ru
    Контакты и адресаarrow-up-right
    почтуarrow-up-right
    Пароли для внешних приложенийarrow-up-right

    Настройка Yandex Mail (oAuth2)

    Настройка почты для сервиса Yandex Mail через oAuth2 авторизацию

    hashtag
    Создание приложения в Yandex

    1. Авторизуйтесь в Ваш аккаунт Яндекс и далее перейдите на страницу создания приложенияarrow-up-right. Нажмите "Создать".

    Главная страница приложений Яндекс ID | OAuth
    1. В диалоговом окне выберите опцию "Для атворизации пользователей". Нажмите "Перейти к созданию".

    1. Далее заполните необходимую информацию:

    • Название - произвольное.

    • Иконка сервиса - произвольное изображение.

    • Почта для связи - почта на которую будут приходить уведомления об авторизации.

    Нажмите "Продолжить".

    1. Далее выберите в качестве платформы "Веб-сервисы". В поле "Redirect URl" вставьте следующую ссылку:

    Замените 192.168.100.60 на ip-адрес Вашей станции.

    Нажмите "Продолжить".

    1. Далее на странице "Права доступа к данным пользователей" в разделе "Дополнительные" впишите "smtp" и выберите доступ "Отправка писем через Яндекс.Почту по протоколу SMTP".

    1. На следующей странице нажмите "Всё верно, создать приложение".

    После создания приложения будет выведены ClientID и Client Secret. Далее они понадобятся нам для настройки внутри web-интерфейса MikoPBX.

    hashtag
    Настройки внутри MikoPBX

    1. Перейдите в Web-интерфейс MikoPBX. Далее "Система" -> "Почта и уведомления" -> "Настройки SMTP".

    Заполните все необходимые данные:

    • Адрес отправителя, Имя отправителя - Ваша почта и от какого имени будут отправляться письма.

    • Тип аутентификации - OAuth2.

    • SMTP логин - Ваша почта.

    Все остальные настройки оставьте по умолчанию. Более подробное описание Вы можете найти в главное статье о параметрах почты ().

    После этого нажмите "Сохранить"!

    1. Нажмите "Подключить через OAuth2". Войдите в Ваш аккаунт Яндекс. После авторизации, нажмите "Log in as...".

    1. При успешной авторизации Вы увидите соответствующее окно.

    Настройка Microsoft Outlook (oAuth2)

    Настройка почты для сервиса Outlook (outlook.com; hotmail.com)

    hashtag
    Настройки внутри Microsoft Entra

    hashtag
    Регистрация приложения

    Почта и уведомления

    Настройка почты и уведомлений

    Раздел «Почта и уведомления» в MikoPBX позволяет настроить отправку системных уведомлений через электронную почту. Здесь администраторы указывают параметры SMTP-сервера, определяют события для уведомлений, такие как голосовые сообщения или системные ошибки, и редактируют шаблоны писем. Этот раздел помогает своевременно информировать пользователей и администраторов о важных событиях, обеспечивая эффективный контроль за работой системы.

    circle-info

    С 2026 года многие облачные провайдеры закрывают порты на SMTP по умолчанию (например Selectel, DigitalOcean). В случае ошибок подключений - уточняйте информацию у Вашего облачного провайдера.

    Провайдер OAuth2 - Yandex Mail.
  • Идентификатор приложения (Client ID), Секретный ключ (Client Secret) - данные из Yandex (6 пункт из прошлого раздела в этой инструкции).

  • ссылкаarrow-up-right
    Выбор типа приложения в YandexID | OAuth
    Параметры приложения #1
    Параметры приложения. Refirect URl
    Выдача необходимого разрешения
    Подтверждение создания приложения
    ClientID и Client Secret
    Настройки SMTP в Web-интерфейсе MikoPBX
    Раздел "Service login". Авторизация в приложении.
    Успешная авторизация
    https://192.168.100.60/pbxcore/api/v3/mail-settings/oauth2-callback

    Войдите в центр администрирования Microsoft Entra.arrow-up-right

    Главная страница центра администрирования Microsoft Entra
    1. Перейдите в раздел "Entra ID" -> "App registrations". Далее нажмите "New registration" для регистрации нового приложения.

    Регистрация нового приложения
    1. Выберите следующие параметры для Вашего приложения:

    • Name - укажите название для Вашего приложения.

    • Supported account types - выберите параметр "Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant)".

    Параметры приложения
    1. Укажите Redirect URl:

    • Select a platform - выберите "Web".

    • URl:

    Замените 192.168.100.71 на адрес Вашей MikoPBX.

    Далее нажмите "Register".

    Параметры Redirect URl
    1. Будет созданно приложения. Сохраните client ID, в будущем он понадобится для настройки внутри веб-интерфейса MikoPBX.

    Главная страница созданного приложения

    hashtag
    Выдача разрешений и создание Client secret

    1. Из главной страницы приложения перейдите в "Manage" -> "API permissions".

    Раздел "API permissions"
    1. Нажмите "Add a permission".

    Добавление разрешения
    1. В разделе "Microsoft Graph" выберите "Delegated Permissions". В поиске введите "SMTP". Поставьте галочку напротив "SMTP.Send".

    Выдача разрешения "SMTP.Send"
    1. Так же в поиске введите "offline". Поставьте галочку напротив "offline_access".

    Нажмите "Add permissions".

    Выдача разрешения "offline_access"
    1. Далее перейдите в раздел "Certificates & secrets" -> "Client secrets". Нажмите "New client secret".

    Создание нового Secret ID
    1. Задайте необходимые параметры:

    • Description - произвольное описание.

    • Expires - срок на который Вы выпускаете этот client secret. Он понадобится нам для аутентификации приложения в MikoPBX.

    circle-info

    После истечения срока, созданный client secret перестанет функционировать и необходимо будет повторить процесс создания нового ключа и подключения к MikoPBX.

    triangle-exclamation

    После создания, значение Client Secret будет показано всего один раз. Не забудьте скопировать его в Web-интерфейс MikoPBX.

    Нажмите "Add".

    Параметры для создания нового client secret
    1. Скопируйте "Value" (не SecretID!). Он понадобится для настройки в веб-интерфейсе MikoPBX.

    Копирование Value созданного ранее Client secret

    hashtag
    Выдача разрешений пользователю

    Для корректной работы приложения, Вам необходимо выдать разрешение на использования SMTP протокола для пользователя, чью почту Вы авторизовываете в ходе текущей насройки. Для этого выполните следующие шаги:

    1. Перейдите в центр администрирования организации (ссылкаarrow-up-right).

    Главная страница Microsoft Admin Center
    1. Перейдите в раздел "Users" -> "Active Users". Нажмите на имя пользователя, под учетной записью которого произодится создание приложения.

    Раздел "Active Users" в Microsoft Admin Center
    1. В учетной записи, перейдите в раздел "Mail" и выберите "Manage email apps".

    Раздел "Mail" в учетной записи пользователя
    1. Убедитесь, что "Authenticated SMTP" разрешен. Сохраните изменения, нажав "Save changes".

    Разрешение Authenticated SMTP для выбранного пользователя

    hashtag
    Настройки внутри MikoPBX

    1. Перейдите в Web-интерфейс MikoPBX. Далее "Система" -> "Почта и уведомления" -> "Настройки SMTP".

    Заполните все необходимые данные:

    • Адрес отправителя, Имя отправителя - Ваша почта и от какого имени будут отправляться письма.

    • Тип аутентификации - OAuth2.

    • SMTP логин - Ваша почта.

    • Провайдер OAuth2 - Microsoft/Outlook.

    • Идентификатор приложения (Client ID), Секретный ключ (Client Secret) - данные из Microsoft Entra.

    Все остальные настройки оставьте по умолчанию. Более подробное описание Вы можете найти в главное статье о параметрах почты (ссылкаarrow-up-right).

    После этого нажмите "Сохранить"!

    Настройки SMTP в Web-интерфейсе MikoPBX
    1. Нажмите "Подключить через OAuth2". Войдите в Ваш аккаунт Microsoft. Далее подтвердите выдачу всех запрошенных разрешений.

    Выдача запрошенных разрешений

    При успешной авторизации Вы увидите соответствующее окно.

    Успешная OAuth2 авторизация (Microsoft/Outlook)
    https://192.168.100.71/pbxcore/api/v3/mail-settings/oauth2-callback
    hashtag
    Общие настройки
    Общие настройки почты
    • Использовать оповещения - позволяет включить/отключить все оповещения на email, включая голосовую почту.

    • Отправлять уведомления о пропущенных вызовах - позволяет включить/отключить уведомления о пропущенных вызовах.

    • Единый Email для уведомлений о пропущенных вызовах - общий адрес электронной почты для отправки уведомлений о пропущенных внешних вызовах (если у сотрудника не указан email, используется этот общий адрес).

    • Отправлять уведомления о голосовых сообщениях - позволяет включить/отключить уведомления о голосовых сообщениях.

    • Единый Email для уведомлений о голосовых сообщениях - общий адрес электронной почты для отправки уведомлений о голосовых сообщениях (приоритет: 1. Личный email сотрудника; 2. Указанный email в этом поле)

    • Отправлять уведомления о входах в систему - позволяет включить/отключить уведомления о входах в систему.

    • Отправлять системные уведомления - позволяет включить/отключить отправку системных уведомлений.

    • Email системного администратора - адрес, на который будут отправляться системные уведомления.

    hashtag
    Настройки SMTP

    Настройки SMTP. Часть 1
    • Адрес отправителя, Имя отправителя - от имени этого адреса и имени будут отправляться электронные письма.

    • Тип аутентификации:

      • Логин и пароль - классический тип аутентификации при подключении к SMTP-серверу, при котором используется адрес почтового ящика (логин) и пароль от него. Все параметры (сервер, порт, шифрование, логин и пароль) вводятся и хранятся вручную

      • OAuth2 - способ аутентификации, при котором Вы не храните и не передаёте пароль от почтового ящика. Вместо этого приложение получает временный токен доступа у почтового провайдера (Microsoft 365/Outlook, Google Workspace/Gmail и т.д.) и использует его при отправке писем через SMTP.

    hashtag
    Аунтефикация по логину и паролю

    Настройки SMTP. Часть 2
    • SMTP логин, SMTP пароль - параметры авторизации.

    • SMTP хост - адрес почтового сервера.

    • SMTP порт - порт почтового сервера.

    • Тип шифрования:

      • Без шифрования (порт 25) - классический способ подключения к SMTP без защиты канала.

      • STARTTLS (порт 587) - рекомендованный и наиболее распространённый способ отправки почты. Соединение начинается без шифрования, после чего клиент и сервер согласовывают переход на защищённый канал.

      • SSL/TLC (порт 465) - подключение к SMTP с шифрованием с самого начала соединения. Канал защищён сразу после установки TCP-соединения, без этапа переключения.

    • Проверять сертификат сервера - настройка безопасности, которая определяет, будет ли клиент проверять подлинность SSL/TLS-сертификата SMTP-сервера при установке защищённого соединения (STARTTLS или SSL/TLS).

    hashtag
    Аунтефикация с OAuth2

    Настройки SMTP. Часть 3
    • SMTP логин - параметры авторизации.

    • Провайдер OAuth2 - почтовый сервис, через который выполняется OAuth-аутентификация (например, Microsoft/Outlook, Google/Gmail).

    • Идентификатор приложения (Client ID) - уникальный идентификатор приложения, созданного в панели управления выбранного OAuth-провайдера. Используется для того, чтобы провайдер понимал, какое именно приложение запрашивает доступ к почтовому ящику.

    • Секретный ключ (Client Secret) - конфиденциальный ключ приложения, выданный OAuth-провайдером. Используется вместе с Client ID для подтверждения подлинности приложения при получении и обновлении токенов доступа. Должен храниться в секрете и не передаваться третьим лицам.

    • SMTP хост - адрес почтового сервера.

    • SMTP порт - порт почтового сервера.

    • Тип шифрования:

      • Без шифрования (порт 25) - классический способ подключения к SMTP без защиты канала.

      • STARTTLS (порт 587) - рекомендованный и наиболее распространённый способ отправки почты. Соединение начинается без шифрования, после чего клиент и сервер согласовывают переход на защищённый канал.

    • Проверять сертификат сервера - настройка безопасности, которая определяет, будет ли клиент проверять подлинность SSL/TLS-сертификата SMTP-сервера при установке защищённого соединения (STARTTLS или SSL/TLS).

    hashtag
    Как подключить?

    В нашей документации приведено несколько примеров подключения для каждого из типов аутентификации. Ниже Вы можете найти ссылки на эти инструкции.

    • Аутентификация по логину и паролю:

    • Аутентификация oAuth2:

    Раздел "Почта и уведомления" в MikoPBX
    Настройка Yandex Mail (Логин, Пароль)chevron-right
    Настройка Mail.ru (Логин, Пароль)chevron-right
    Настройка Proton (Логин, Пароль)chevron-right
    Настройка Gmail (oAuth2)chevron-right
    Настройка Yandex Mail (oAuth2)chevron-right
    Настройка Microsoft Outlook (oAuth2)chevron-right

    Доступ к AMI

    Настройка доступа к AMI

    Asterisk Manager Interface (AMI) - мощный и удобный программный интерфейс (API) Asterisk для управления системой из внешних программ. Благодаря AMI внешние программы могут осуществлять соединения с Asterisk посредством TCP протокола, инициировать выполнение команд, считывать результат их выполнения, а так же получать уведомления о происходящих событиях в реальном времени. AMI часто используют для интеграции с бизнес-процессами и системами, программным обеспечением CRM (Customer Relationship Managment — управление взаимодействия с клиентами). Управление Asterisk часто осуществляется из консоли CLI, но при использовании AMI не требуется прямой доступ к серверу, на котором запущен Asterisk. AMI — это наиболее простой инструмент, который в руках разработчика может оказаться очень мощным и гибким средством для интеграции с другими программными продуктами. Он дает возможность разработчикам использовать информацию, генерируемую Asterisk, в реальном масштабе времени.

    Первое что необходимо сделать, это включить AMI и завести пользователя, с помощью которого клиентская программа будет аутентифицироваться. «Система» - «Доступ к AMI»

    Раздел "Доступ к AMI"

    Для добавления новой учетной записи необходимо указать Имя пользователя и Пароль. Кроме того, необходимо задать Сетевой фильтр, т.е. из какой подсети разрешено подключение к пользователю AMI. Вы можете разрешить подключения с любых адресов, либо указать конкретную сеть, настройку который Вы произвели в разделе "Сеть и Firewall" → "".

    hashtag
    Опции и права пользователя AMI

    Права пользователя AMI, устанавливаемые в секции [user] конфигурационного файла /etc/asterisk/manager.conf

    Идентификатор прав
    Чтение
    Запись
    SSL/TLC (порт 465) - подключение к SMTP с шифрованием с самого начала соединения. Канал защищён сразу после установки TCP-соединения, без этапа переключения.

    Log

    Предоставляет пользователю доступ к чтению логов

    Только чтение

    Verbose

    Предоставляет пользователю доступ к чтению подробных логов

    Только чтение

    Agent

    Чтение событий статуса агентов из app_queue и chan_agent модулей

    Позволяет пользователю выполнять действия для управления и получения состояния очередей и агентов

    User

    Доступа к пользовательским событиям, а также событиям Jabber / XMPP пользователей

    Позволяет пользователю выполнять команду UserEvent, для создания пользовательских событий

    Config

    Только для записи

    Позволяет пользователю получать, обновлять и перегружать файлы конфигурации

    Command

    Только для записи

    Позволяет пользователю выполнять команды Asterisk CLI из AMI

    Dtmf

    Позволяет пользователю получать события DTMF

    Только чтение

    Reporting

    Доступ к событиям качества звонка, таким как jitterbuffer или RTCP

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

    Cdr

    Чтение событий записи данных в CDR

    Только чтение

    Dialplan

    Чтение событий установки переменных диалплана, создания "экстенов"

    Только чтение

    Originate

    Только для записи

    Разрешение пользователю выполнять команду Origitate, которая отправляет запрос на создание нового звонка

    System

    Чтение общей информации о системе, например, уведомления о перезагрузке конфигурации

    Позволяет пользователю выполнять Asterisk системы управления такими командами, как Restart, Reload, или Shutdown. Это разрешение также предоставляет пользователям возможность запускать системные команды за пределами Asterisk. Предоставление такого разрешения эквивалентно предоставлению доступа к командной оболочке, с правами пользователя / группы, под которыми запущен процесс Asterisk

    Call

    Чтение события о каналах в системе

    Позволяет пользователю устанавливать информация на каналах

    Сетевой экран
    Параметры нового AMI пользователя

    Кастомизация системных файлов

    Описание возможностей раздела "Кастомизация системных файлов"

    Раздел «Кастомизация системных файлов» в MikoPBX предоставляет администраторам возможность напрямую изменять или дополнять стандартные конфигурационные файлы системы. Здесь вы можете внести индивидуальные настройки, которые не доступны через стандартный веб-интерфейс, и адаптировать поведение системы под специфические требования вашей организации.

    С его помощью можно:

    • Редактировать конфигурационные файлы: вносить изменения в существующие файлы или добавлять новые параметры.

    • Переопределять стандартные настройки

    : изменять значения по умолчанию для определенных функций или модулей.
  • Добавлять собственные скрипты или модули: расширять функциональность системы путем интеграции пользовательских решений.

  • Он находится в Система -> Кастомизация системных файлов:

    Раздел "Кастомизация системных файлов"

    Важно отметить, что неправильное изменение системных файлов может привести к нестабильной работе или сбоям системы. Поэтому рекомендуется создавать резервные копии перед внесением изменений и тщательно проверять корректность настроек.

    Мы рекомендуем использовать возможности данного раздела только опытным администраторам Asterisk. В MikoPBX есть возможность из web-интерфейса изменять следующие конфигурационные файлы:

    Наименование файла

    Описание

    asterisk.conf

    Общие (глобальные) настройки Asterisk. В файле конфигурации asterisk.conf Вы определяете следующее: -Местоположение, права доступа и владельца сокета, которые используется для подключения удаленной консоли управления сервером. Местоположение различных директорий, используемых сервером Asterisk для определения местоположения файлов конфигурации, библиотек, скриптов и место, где будут создаваться лог фалы. Параметры командной строки запуска сервера, используемые по умолчанию.

    cel.conf

    Лог событий канала. В отличии от CDR, сохраняет все события имевшие место в канале.

    extensions.conf

    План набора (dialplan) Asterisk. В нем определяется обработка и маршрутизация входящих и исходящих вызовов. Этот файл управляет поведением всех соединений, проходящих через Вашу АТС.

    Для редактирования конфигурационного файла воспользуйтесь кнопкой:

    Перед Вами будет открыта форма редактирования конфигурационного файла:

    Меню кастомизации системного файла /acl.conf (пример)

    Выберите один из четырех возможных вариантов редактирования:

    • «Не менять» - не позволяет вносить изменения в файл, только чтение файла.

    • «Добавлять в конец файла» - в конец выбранного конфигурационного файла будут добавлены (рекомендуемый).

    • «Заменять полностью» - все Ваши изменения переопределят конфигурационный файл.

    • Режим "Script" - читайте далее.

    hashtag
    Кастомизация системных файлов скриптом

    Существуют сценарии, когда нужно выполнить более сложные модификации системных файлов, чем простое добавление текста в конец конфигурационного файла. Например, нужно выполнить переопределение параметров PJSIP учетных записей, но хочется сохранить возможность настройки системы через веб интерфейс.

    Реализован новый подход к кастомизации. Можно описать bash скрипт, который будет выполняться каждый раз после того, как система сформирует конфигурационный файл. В итоге интегратор сможет делать очень тонкие изменения конфигурационных файлов без разработки дополнительных модулей.

    Например, мы хотим поменять значение max_contacts у всех сотрудников, кроме одного.

    Кастомизация файлов "скриптом"

    hashtag
    sip.conf

    Добавить параметры к существующей секции возможно используя конструкцию (+):

    Описать новую секцию можно в произвольной форме, единственное, не следует допускать повторения имен секций: Пример:

    hashtag
    extensions.conf

    triangle-exclamation

    Дорабатывайте dialplan с осторожностью - есть большая вероятность нарушить работу АТС!

    Существует возможность перехватить выполнения dialplan. Для этого необходимо описать custom контексты. На текущий момент можно перехватить выполнения в следующих контекстах:

    • internal-originate-custom - контекст используется при звонках из панели телефонии для 1С

    • <ID-ПРОВАЙДЕРА>-incoming-custom - контекст предназначен для обработки входящих вызовов через провайдера

    • <ID-ПРОВАЙДЕРА>-outgoing-custom - контекст предназначен для обработки исходящих вызовов через провайдера

    • all_peers-custom - контекст используется при прямом исходящем звонке с телефона

    • outgoing-custom - контекст используется при наборе внешнего номера, ДО выбора исходящего маршрута

    • add-trim-prefix-clid-custom - этот контекст используется при обработке входящих вызовов, лучшим образом подходит для нормализации входящего номера телефона, добавить / отсечь префикс

    • internal-users-custom - в этом контексте обрабатываются вызовы на внутренние номера

    • public-direct-dial-custom - контекст обработки входящих вызовов БЕЗ авторизации

    Пример контекста:

    Обязательно следует в конце вызывать метод «return».

    circle-info

    Некоторые примеры использования custom-контекстов:

    • Звонок через определённого провайдера

    • Настройка исходящего AOH для сотрудника

    [general](+)
    allowtransfer=yes
    [user2_pingtel]
    type=friend
    username=user2_pingtel
    secret=blah
    host=dynamic
    qualify=1000 ; Рассматриваем клиента как неработающего,
    ; если ответ от него идет более 1 сек.
    callgroup=1,3-4 ; Клиент является членом групп вызовов: 1, 3 и 4
    pickupgroup=1,3-4 ; Мы можем совершать "pick-up" вызовов, нажатием *8,
    ; для вызовов из групп 1, 3 и 4
    defaultip=192.168.0.60
    disallow=all
    allow=ulaw
    allow=alaw
    allow=g729
    [outgoing-custom]
    exten => _X!,1,NoOp(--- hangup - ${CHANNEL} ---)
    	same => n,return

    features.conf

    В файле назначаются пользовательские коды и опции абонентских функций Asterisk, такие как: перевод вызова (transfer); перехват вызова (pickup); запись по требованию (record on demand); таймауты набора и переадресации (digit timeout); паркинг (park) и др.

    http.conf

    Встроенный http сервер Asterisk

    iax.conf

    В файле Вы описываете ваши соединения по протоколу IAX.

    indications.conf

    Национализация тональных сигналов

    logger.conf

    Настройка логов Asterisk. В данном файле настраивается логирование событий Asterisk в файлы, консоль и syslog linux. Для применения настроек выполните команду «logger reload» в консоли (CLI) Asterisk.

    manager.conf

    Настройка интерфейса AMI (Asterisk Manager Interface)

    modules.conf

    Параметры загрузки модулей Asterisk.

    musiconhold.conf

    Параметры музыки на удержание в IVR

    queues.conf

    Очередь входящих вызовов Asterisk. Подробное описание стратегии вызовов. Penalty, timeout, member и все доступные параметры.

    rtp.conf

    Глобальные настройки RTP - медиа-портов и протокола

    sip.conf

    Файл отвечает за настройку внутренних и внешних каналов SIP в Asterisk.

    voicemail.conf

    Настройки уведомлений по E-mail

    jail.local

    Настройки Fail2ban

    msmtp.conf

    Настройки SMTP-клиента

    Настройка Gmail (oAuth2)

    Настройка почты для сервиса gmail

    circle-info

    Для настройки OAuth 2.0 в Google требуется использовать URL-адрес станции. Самый простой способ — создать DNS-запись на локальном сервере или добавить соответствие IP-адреса и доменного имени в файл hosts на устройстве, с которого выполняется настройка.

    hashtag
    Настройки аккаунта Google

    1. Перед началом настройки, необходимо поменять некоторые параметры аккаунта Google. Для этого перейдите на страницу управления ().

    1. Перейдите в раздел "Безопасность и вход в аккаунт". Убедитесь, что у Вас настроена двухэтапная аутентификация.

    1. Перейдите в консоль Google Cloud, в раздел "APIs & Services" (). Создайте проект под текущую задачу.

    1. Перейдите в библиотеку APIs (раздел "Library").

    1. Введите в поиске: "gmail api". Перейдите в карточку Gmail API.

    1. Нажмите "Enable" для подключения.

    1. Перейдите на главную страницу APIs & Services. Далее "OAuth consent screen".

    1. Создайте проект (нажмите "Get started"). Заполните произвольное название и Вашу почту. В качестве Audience выберите "Internal". Нажмите "Create" для завершения.

    1. Вернитесь на главную страницу APIs & Services. Далее в раздел "Credentials". Нажмите "Create credentials". Выберите "OAuth client ID" для создания.

    1. В качестве Application type, выберите "Web application". Далее введите произвольное название. Нажмите "Create".

    1. Добавьте новый "Authorized redirect URI".

    circle-info

    Формат:

    https://mikopbx.station.com/pbxcore/api/v3/mail-settings/oauth2-callback

    Замените "mikopbx.station.com" на URl Вашей станции.

    1. Будет создан OAuth client. Сохраните ClientID и Client secret себе в заметки. В будущем эти данные понадобятся для подключения.

    hashtag
    Настройки в MikoPBX

    1. Перейдите в раздел "Система" -> "Почта и уведомления":

    1. Далее, "Настройки SMTP". Заполните следующие параметры:

    • Адрес отправителя, Имя отправителя - Ваша почта и от какого имени будут отправляться письма.

    • Тип аутентификации - OAuth2.

    • SMTP логин - Ваша почта.

    Все остальные настройки оставьте по умолчанию. Более подробное описание Вы можете найти в главное статье о параметрах почты ().

    После этого нажмите "Сохранить"!

    1. Нажмите на синюю кнопку "Подключить через OAuth2". Далее выберите Ваш аккаунт Gmail.

    1. Подтвердите вход: нажмите "Continue".

    1. Подтвердите выдачу необходимых разрешений. (Нажмите "Allow").

    При успешной авторизации, вы увидите следующее окно.

    hashtag
    Решение возможных проблем

    Access blocked: Authorization Error (Error 400: invalid_request)

    Решение: впишите URl адрес станции в Веб-интерфейсе MikoPBX: "Сеть и Firewall" -> "Сетевые интерфейсы". Перейдите в раздел "Топология сети" и впишите имя хоста в поле "Внешнее имя хоста вашего маршрутизатора". (Включите "Эта станция расположена за NAT маршрутизатором")

    Провайдер OAuth2 - Google/Gmail.
  • Идентификатор приложения (Client ID), Секретный ключ (Client Secret) - данные, которые сохранены из Google Cloud (12 пункт из прошлого раздела в этой инструкции).

  • ссылкаarrow-up-right
    ссылкаarrow-up-right
    ссылка
    Страница упрвления аккаунтом Google
    Настройка двухэтапной аутентификации
    Раздел "APIs & Services" в Google Cloud
    Раздел "Library" в APIs & services
    Gmail API в библиотеке Google Cloud
    Подключение API
    Раздел "OAuth consent screen" в APIs & Services
    Параметр "Audience" в создании проекта
    Создание нового OAuth client ID
    Создание нового OAuth client ID
    Добавление нового URl для перевода
    Успешно созданный клиент
    Раздел "Почта и уведомления" в MikoPBX
    Параметры почты для подключения Gmail
    Выбор аккаунта Google
    Продолжения авторизации
    Выдача разрешений
    Успешная авторизация
    Ошибка 400: invalid_request
    Решение проблемы

    Доступ к ARI

    Короткое описание ARI (Asterisk REST Interface)

    ARI — это RESTful API с поддержкой WebSocket, который даёт полный контроль над каналами, мостами и медиапотоками Asterisk в реальном времени. В отличие от REST API MikoPBX, ARI работает напрямую с ядром Asterisk и предназначен для разработки собственных телефонных приложений.

    По умолчанию отключён — включите при необходимости в разделе «Система» → «Общие настройки» → «AMI&ARI».

    circle-info

    Подробная документация по ARI доступна на официальном сайте Asterisk: Asterisk REST Interfacearrow-up-right

    hashtag
    Для чего используется?

    ARI применяется когда стандартных возможностей АТС недостаточно и нужна собственная логика обработки звонков:

    • WebRTC приложения и софтфоны — веб-телефоны и мобильные клиенты с прямым управлением медиапотоками

    • Интерактивные голосовые меню (IVR) — кастомная логика меню, недоступная через стандартный диалплан

    • Конференц-связь — программное управление мостами и участниками

    hashtag
    Как это работает?

    ARI состоит из трёх компонентов:

    1. REST API — управление объектами Asterisk: каналами, мостами, записями

    2. WebSocket (/asterisk/ari/events) — получение асинхронных событий в реальном времени: входящий звонок, завершение звонка, нажатие DTMF и т.д.

    3. Stasis — приложение диалплана, которое передаёт канал под управление вашего ARI приложения

    Типичный сценарий: звонок попадает в диалплан → Stasis() передаёт канал вашему приложению → приложение управляет звонком через REST API и получает события через WebSocket.

    hashtag
    Настройка ARI пользователя

    1. Перед началом, необходимо включить ARI интерфейс (по умолчанию он выключен). Для этого перейдите в раздел "Система" -> "Общие настройки".

    1. Далее во вкладку "AMI&ARI", переключите тумблер "Использовать ARI интерфейс". В поле «Разрешённые источники CORS» укажите домены, с которых будут выполняться запросы к ARI. CORS — механизм безопасности браузера, который ограничивает кросс-доменные запросы к API.

    Значение
    Когда использовать
    circle-exclamation

    Никогда не используйте * в продакшне. Указывайте только доверенные домены по HTTPS.

    1. Перейдите в раздел «Система» → «Доступ к ARI».

    1. Нажмите «Добавить пользователя».

    1. Заполните следующие параметры:

    • Имя пользователя - логин для подключения, например ari_user.

    • Пароль - пароль для подключения.

    • Описание - описание для текущего пользователя, например "WebRTC Demo".

    circle-info

    Распространенные приложения

    • ari-app: Основное приложение для ARI

    • stasis: Базовое Stasis приложение

    Сохраните настройки.

    hashtag
    Параметры подключения

    hashtag
    WebSocket

    Тип
    URL

    Замените [application] на имя вашего Stasis приложения.

    hashtag
    REST API

    Тип
    URL

    Аутентификация: HTTP Basic Auth — логин и пароль ARI пользователя.

    circle-info

    Рекомендуется использовать защищённые подключения (wss:// и https://) с валидным SSL сертификатом. Обычные ws:// и http:// допустимы только в изолированной тестовой среде.

    hashtag
    Пример: Hello World

    Это минимальный пример работы с ARI — канал входит в Stasis приложение, приложение воспроизводит звуковой файл и завершает звонок.

    Пример взят из официальной документации Asterisk:

    hashtag
    Шаг 1 — подключитесь к WebSocket

    hashtag
    Шаг 2 — настройте входящий маршрут

    В MikoPBX перейдите в «Маршрутизация» → «Приложения диалплана», создайте приложение с типом «Диалплан Asterisk» и кодом:

    Назначьте приложение на нужный входящий маршрут.

    hashtag
    Шаг 3 — позвоните на номер

    При входящем звонке WebSocket получит событие StasisStart:

    hashtag
    Шаг 4 — воспроизведите звук через REST API

    Откройте новое окно терминала и выполните следующую команду:

    circle-info

    Используйте id канала из события StasisStart!

    При успешном проигрывании Вы увидите следующий вывод в терминал:

    hashtag
    Шаг 5 — завершите звонок

    После завершения звонка WebSocket пришлёт StasisEnd:

    hashtag
    Пример: монитор присутствия

    Живая таблица статусов сотрудников в терминале — не требует настройки входящих маршрутов и Stasis приложений. Работает через подписку на все события станции.

    Установите зависимости:

    При совершении вызовов, информация в таблице будет обновляться:


    Полная документация по ARI — на сайте Asterisk:

    Запись и обработка звонков — перехват аудио в реальном времени для аналитики или транскрибации
  • Голосовые боты и ассистенты — интеграция с внешними AI-сервисами

  • Продвинутые очереди — собственная логика распределения звонков

  • Все источники — только для тестов

    Приложения - укажите имена Stasis приложений, к которым имеет доступ пользователь. Оставьте поле пустым для доступа ко всем приложениям.

    external-media: Работа с внешними медиа-потоками

  • bridge-app: Управление мостами вызовов

  • channel-spy:Прослушивание каналов

  • (пусто)

    Доступ только с того же домена

    http://localhost:3000

    Локальная разработка

    https://app.mycompany.com

    Продакшн приложение

    Обычный

    ws://your-mikopbx.com:8088/asterisk/ari/events

    Защищённый (TLS)

    wss://your-mikopbx.com:8089/asterisk/ari/events

    HTTP

    http://your-mikopbx.com:8088/asterisk/ari

    HTTPS

    https://your-mikopbx.com:8089/asterisk/ari/

    Getting Started with ARIarrow-up-right
    docs.asterisk.orgarrow-up-right
    Раздел "Система" -> "Общие настройки" в MikoPBX
    Подключение ARI
    Раздел "Система" -> "Доступ к ARI" в MikoPBX
    Кнопка "Добавить пользователя" в разделе "Доступ к ARI"
    Параметры создаваемого ARI-пользователя

    *

    # REST API запрос через curl
    curl -u username:password https://your-mikopbx.com:8089/asterisk/ari/asterisk/info
    wscat -c "wss://username:password@your-mikopbx.com:8089/asterisk/ari/events?app=hello-world"
    1,Answer()
    n,Stasis(hello-world)
    n,Hangup()
    {
      "type": "StasisStart",
      "timestamp": "2026-03-25T07:18:27.423+0300",
      "args": [],
      "channel": {
        "id": "mikopbx-1774412307.28",
        "name": "Local/10003258@internal-incoming-0000000a;2",
        "state": "Up",
        "protocol_id": "",
        "caller": {
          "name": "79257184275",
          "number": "79257184275"
        },
        "connected": {
          "name": "",
          "number": "252"
        },
        "accountcode": "",
        "dialplan": {
          "context": "internal",
          "exten": "10003258",
          "priority": 2,
          "app_name": "Stasis",
          "app_data": "hello-world"
        },
        "creationtime": "2026-03-25T07:18:27.371+0300",
        "language": "en-en"
      },
      "asterisk_id": "82:6a:9e:68:10:11",
      "application": "hello-world"
    }
    curl -u username:password -X POST \
      "https://your-mikopbx.com:8089/asterisk/ari/channels/mikopbx-1774412307.28/play?media=sound:/storage/usbdisk1/mikopbx/media/custom/miko_hello"
    {
      "id": "a0ee0d43-2af5-4250-a303-43825507a06c",
      "media_uri": "sound:/storage/usbdisk1/mikopbx/media/custom/miko_hello",
      "target_uri": "channel:mikopbx-1774412307.28",
      "language": "en-en",
      "state": "playing"
    }
    {
      "type": "StasisEnd",
      "timestamp": "2026-03-25T07:19:44.982+0300",
      "channel": {
        "id": "mikopbx-1774412307.28",
        "name": "Local/10003258@internal-incoming-0000000a;2",
        "state": "Up",
        "protocol_id": "",
        "caller": {
          "name": "79257184275",
          "number": "79257184275"
        },
        "connected": {
          "name": "",
          "number": "252"
        },
        "accountcode": "",
        "dialplan": {
          "context": "internal",
          "exten": "10003258",
          "priority": 2,
          "app_name": "Stasis",
          "app_data": "hello-world"
        },
        "creationtime": "2026-03-25T07:18:27.371+0300",
        "language": "en-en"
      },
      "asterisk_id": "82:6a:9e:68:10:11",
      "application": "hello-world"
    }
    pip install requests websockets
    import asyncio
    import websockets
    import json
    import os
    from datetime import datetime
    
    ARI_HOST = 'your-mikopbx.com'
    ARI_USER = 'ari_user'
    ARI_PASS = 'your-ari-password'
    
    peers = {}
    
    STATES = {
        'NOT_INUSE':   ('🟢', 'Свободен'),
        'BUSY':        ('🔴', 'Занят'),
        'UNAVAILABLE': ('⚫', 'Недоступен'),
    }
    
    def draw():
        print('\033[2J\033[H', end='')
        now = datetime.now().strftime('%H:%M:%S')
        print(f'MikoPBX — монитор присутствия [{now}]')
        print('─' * 50)
        print(f'  {"Номер":<10} {"Имя":<20} {"Статус":<15} {"Обновлён"}')
        print('─' * 50)
        for number, info in sorted(peers.items()):
            icon, label = STATES.get(info['state'], ('❓', info['state']))
            print(f'  {number:<10} {info["name"]:<20} {icon} {label:<12} {info["updated"]}')
        print('─' * 50)
        print(f'  Сотрудников: {len(peers)}')
    
    async def run():
        uri = (
            f"wss://{ARI_USER}:{ARI_PASS}@{ARI_HOST}:8089/asterisk/ari/events"
            f"?app=auto-receptionist&subscribeAll=true"
        )
        async with websockets.connect(uri) as ws:
            draw()
            async for message in ws:
                event = json.loads(message)
                etype = event.get('type')
    
                if etype == 'DeviceStateChanged':
                    ds     = event.get('device_state', {})
                    name   = ds.get('name', '')
                    state  = ds.get('state', '')
    
                    if not name.startswith('PJSIP/'):
                        continue
    
                    number = name.replace('PJSIP/', '')
    
                    if number not in peers:
                        peers[number] = {'name': number, 'state': state, 'updated': '—'}
    
                    peers[number]['state']   = state
                    peers[number]['updated'] = datetime.now().strftime('%H:%M:%S')
                    draw()
    
                elif etype == 'PeerStatusChange':
                    ep     = event.get('endpoint', {})
                    number = ep.get('resource', '')
                    state  = ep.get('state', '')
    
                    if not number:
                        continue
    
                    if number not in peers:
                        peers[number] = {'name': number, 'state': 'unknown', 'updated': '—'}
    
                    if state == 'online':
                        peers[number]['state'] = 'NOT_INUSE'
                    elif state == 'offline':
                        peers[number]['state'] = 'UNAVAILABLE'
    
                    peers[number]['updated'] = datetime.now().strftime('%H:%M:%S')
                    draw()
    
                elif etype == 'ContactStatusChange':
                    ep     = event.get('endpoint', {})
                    number = ep.get('resource', '')
                    ci     = event.get('contact_info', {})
                    status = ci.get('contact_status', '')
    
                    if not number:
                        continue
    
                    if number not in peers:
                        peers[number] = {'name': number, 'state': 'unknown', 'updated': '—'}
    
                    if status == 'Reachable':
                        peers[number]['state'] = 'NOT_INUSE'
                    elif status in ('Unreachable', 'NonQualified'):
                        peers[number]['state'] = 'UNAVAILABLE'
    
                    peers[number]['updated'] = datetime.now().strftime('%H:%M:%S')
                    draw()
    
    asyncio.run(run())
    MikoPBX — монитор присутствия [11:34:43]
    ──────────────────────────────────────────────────
      Номер      Имя                  Статус          Обновлён
    ──────────────────────────────────────────────────
      202        202                  🟢 Свободен     11:34:25
      243        243                  ⚫ Недоступен   11:34:43
      252        252                  🔴 Занят        11:34:41
    ──────────────────────────────────────────────────
      Сотрудников: 3

    Система

    Описание раздела "Система" в MikoPBX

    Раздел «Система» в MikoPBX — это интерфейс для управления общими настройками и параметрами телефонной системы. Здесь администраторы могут настраивать основные системные параметры, управлять обновлениями, датой и другими функциями, обеспечивающими стабильную и безопасную работу MikoPBX. Этот раздел позволяет контролировать и оптимизировать работу системы на уровне всей инфраструктуры.

    Раздел "Система" в MikoPBX

    hashtag
    Общие настройки

    Общие настройкиchevron-right

    В разделе «Общие настройки» в MikoPBX администраторы могут управлять основными параметрами системы, такими как настройки срока хранения записей разговоров, уведомления, параметры журналов, язык звуковых оповещений и многими другими системными опциями. Этот раздел обеспечивает контроль над общими функциями и поведением MikoPBX, позволяя оптимизировать работу системы под потребности организации.


    hashtag
    Дата и время

    Раздел «Дата и время» в MikoPBX — это интерфейс для настройки системных параметров даты и времени. Здесь администраторы могут установить текущую дату и время, выбрать часовой пояс и настроить синхронизацию с серверами точного времени (NTP). Корректная настройка даты и времени важна для точной регистрации событий, журналов вызовов и работы функций, зависящих от расписания, обеспечивая синхронизацию системы с другими сетевыми устройствами и сервисами.


    hashtag
    Почта и уведомления

    Раздел «Почта и уведомления» в MikoPBX позволяет настроить отправку системных уведомлений через электронную почту. Здесь администраторы указывают параметры SMTP-сервера, определяют события для уведомлений, такие как голосовые сообщения или системные ошибки, и редактируют шаблоны писем. Этот раздел помогает своевременно информировать пользователей и администраторов о важных событиях, обеспечивая эффективный контроль за работой системы.


    hashtag
    Доступ к AMI

    Раздел «Доступ к AMI» в MikoPBX — это интерфейс для настройки доступа к Asterisk Manager Interface (AMI). Здесь администраторы могут управлять параметрами подключения к AMI, такими как включение или отключение доступа, указание логинов и паролей для аутентификации. Настройка доступа к AMI позволяет внешним приложениям или скриптам взаимодействовать с системой MikoPBX для мониторинга и управления звонками, расширяя функциональные возможности телефонной системы.


    hashtag
    Кастомизация системных файлов

    Раздел «Кастомизация системных файлов» в MikoPBX предоставляет администраторам возможность напрямую изменять или дополнять стандартные конфигурационные файлы системы. Здесь вы можете внести индивидуальные настройки, которые не доступны через стандартный веб-интерфейс, и адаптировать поведение системы под специфические требования вашей организации.

    Этот раздел предназначен для продвинутых пользователей, которые обладают глубоким пониманием структуры и работы MikoPBX. С его помощью можно:

    • Редактировать конфигурационные файлы: вносить изменения в существующие файлы или добавлять новые параметры.

    • Переопределять стандартные настройки: изменять значения по умолчанию для определенных функций или модулей.

    • Добавлять собственные скрипты или модули: расширять функциональность системы путем интеграции пользовательских решений.

    Важно отметить, что неправильное изменение системных файлов может привести к нестабильной работе или сбоям системы. Поэтому рекомендуется создавать резервные копии перед внесением изменений и тщательно проверять корректность настроек.

    Дата и времяchevron-right
    Доступ к AMIchevron-right
    Кастомизация системных файловchevron-right

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

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

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

    circle-info

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

    import urllib3
    urllib3.disable_warnings()

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

    hashtag
    Подключение

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

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

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

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

    circle-info

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

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

    • ваш-api-ключ

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

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

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

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

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

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

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

    Код
    Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    circle-info

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Чтение

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

    Call Records

    Чтение

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

    PBX Status

    Чтение

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

    SIP Providers

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

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

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

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

    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

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

    409

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

    Адрес 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)

    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

    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

    Employees Management

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

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

    Providers

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

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

    number

    ✅

    string, 2–8 цифр

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

    user_username

    ✅

    201

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

    400

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

    401

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

    403

    description

    ✅

    string

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

    host

    ✅

    offset

    integer

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

    limit

    integer

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

    linkedid

    string

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

    start

    datetime

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

    Available

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

    Unavailable

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

    registered

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

    rejected

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

    unregistered

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

    общей статье
    Интерактивная документация и список эндпоинтов.
    Пример настройки прав доступа (разрешение Call Records)
    Созданные сотрудники с помощью REST API
    Созданные сотрудники с помощью REST API
    Созданный провайдер с помощью REST API

    SIP

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

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

    string

    dateFrom

    src_num

    pip install requests
    import requests
    
    BASE_URL = 'https://your-mikopbx.com/pbxcore/api/v3'
    API_KEY  = 'ваш-api-ключ'
    
    HEADERS = {
        'Authorization': f'Bearer {API_KEY}',
        'Content-Type':  'application/json',
    }
    def create_employee(
        number: str,
        name: str,
        sip_secret: str,
        email: str = '',
        mobile: str = '',
        record_calls: bool = True,
        fwd_ringlength: int = 45,
    ) -> dict:
        payload = {
            'number':              number,
            'user_username':       name,
            'sip_secret':          sip_secret,
            'sip_enableRecording': record_calls,
            'fwd_ringlength':      fwd_ringlength,
        }
        if email:  payload['user_email']    = email
        if mobile: payload['mobile_number'] = mobile
    
        r = requests.post(f'{BASE_URL}/employees', headers=HEADERS, json=payload)
        result = r.json()
        if result.get('result'):
            print(f" Создан: {number} ({name}), id={result['data']['id']}")
        else:
            print(f" Ошибка: {result.get('messages', {}).get('error', [])}")
        return result
    
    
    # Минимальный пример (только обязательные поля)
    create_employee(
        number='243',
        name='Иванов Иван',
        sip_secret='Secure#Pass9201',
    )
    
    # Полный пример
    create_employee(
        number='244',
        name='Петрова Анна',
        sip_secret='Secure#Pass9202',
        email='[email protected]',
        mobile='79001234567',
        record_calls=True,
        fwd_ringlength=30,
    )
    {
      "result": true,
      "data": {
        "number": "201",
        "user_username": "Иванов Иван",
        "sip_secret": "Secure#Pass9201",
        "sip_dtmfmode": "auto",
        "sip_transport": "udp",
        "sip_enableRecording": true,
        "sip_networkfilterid": "none",
        "fwd_ringlength": 45,
        "id": "1",
        "extensions_length": 3
      },
      "messages": {"error": [], "info": [], "warning": []}
    }
     Создан: 243 (Иванов Иван), id=113
     Создан: 244 (Петрова Анна), id=114
    
    Process finished with exit code 0
    def list_employees(search: str = '', limit: int = 100, offset: int = 0) -> list:
        params = {'limit': limit, 'offset': offset}
        if search: params['search'] = search
        r = requests.get(f'{BASE_URL}/employees', headers=HEADERS, params=params)
        return r.json().get('data', {}).get('data', [])
    
    for emp in list_employees():
        print(f"  {emp.get('number'):>6}  {emp.get('user_username', '')}")
         202  Brown Brandon
         203  Collins Melanie
         201  Smith James
         243  Иванов Иван
         244  Петрова Анна
    
    Process finished with exit code 0
    import time
    
    employees = [
        {'number': '251', 'name': 'Иванов Иван',  'secret': 'Pass#9201'},
        {'number': '252', 'name': 'Петрова Анна', 'secret': 'Pass#9202'},
        {'number': '253', 'name': 'Сидоров Пётр', 'secret': 'Pass#9203'},
    ]
    
    created, failed = [], []
    for emp in employees:
        r = requests.post(
            f'{BASE_URL}/employees',
            headers=HEADERS,
            json={
                'number':        emp['number'],
                'user_username': emp['name'],
                'sip_secret':    emp['secret'],
            }
        )
        result = r.json()
        if result.get('result'):
            created.append(emp['number'])
            print(f" {emp['number']} {emp['name']}")
        else:
            failed.append(emp['number'])
            print(f" {emp['number']}: {result.get('messages', {}).get('error', [])}")
        time.sleep(0.2)  # небольшая пауза между запросами
    
    print(f'Создано: {len(created)}, Ошибок: {len(failed)}')
     251 Иванов Иван
     252 Петрова Анна
     253 Сидоров Пётр
    Создано: 3, Ошибок: 0
    
    Process finished with exit code 0
    def create_sip_provider(
        description: str,
        host: str,
        username: str = '',
        password: str = '',
        registration_type: str = 'outbound',
        qualify: bool = True,
    ) -> dict:
        payload = {
            'description': description,
            'host':        host,
        }
        if username:          payload['username']          = username
        if password:          payload['secret']            = password
        if registration_type: payload['registration_type'] = registration_type
        if not qualify:       payload['qualify']           = qualify
    
        r = requests.post(f'{BASE_URL}/sip-providers', headers=HEADERS, json=payload)
        result = r.json()
        if result.get('result'):
            print(f" Провайдер создан: {description}")
        else:
            print(f" Ошибка: {result.get('messages', {}).get('error', [])}")
        return result
    
    
    create_sip_provider(
        description='Zadarma',
        host='sip.zadarma.com',
        username='316811',
        password='mysecretpass',
    )
     Провайдер создан: Zadarma
    
    Process finished with exit code 0
    def list_providers() -> list:
        r = requests.get(f'{BASE_URL}/sip-providers', headers=HEADERS)
        return r.json().get('data', [])
    
    for prov in list_providers():
        print(f"  {prov.get('id'):<20} {prov.get('description', '')}  [{prov.get('type', '')}]")
      SIP-TRUNK-34F7CAFE     [SIP]
      SIP-TRUNK-7B5977ED     [SIP]
    
    Process finished with exit code 0
    from datetime import datetime, timedelta
    
    def get_cdr(
        offset: int = 0,
        limit: int = 20,
        date_from: str = None,
        date_to: str = None,
        src_num: str = None,
        dst_num: str = None,
        disposition: str = None,
    ) -> list:
        params = {'offset': offset, 'limit': min(limit, 100)}
        if date_from:   params['dateFrom'] = date_from
        if date_to:     params['dateTo']   = date_to
        if src_num:     params['src_num']  = src_num
        if dst_num:     params['dst_num']  = dst_num
        if disposition: params['disposition'] = disposition
    
        r = requests.get(f'{BASE_URL}/cdr', headers=HEADERS, params=params)
        return r.json().get('data', {}).get('records', [])
    
    
    now  = datetime.now()
    then = now - timedelta(days=7)
    
    for row in get_cdr(
        date_from=then.strftime('%Y-%m-%dT%H:%M:%S'),
        date_to=now.strftime('%Y-%m-%dT%H:%M:%S'),
    ):
        print(
            str(row.get('start', ''))[:16],
            row.get('src_num', ''), '→', row.get('dst_num', ''),
            row.get('disposition', ''), row.get('totalBillsec', 0), 'с'
        )
    2026-03-17 13:30 252 → 202 ANSWERED 48 с
    2026-03-17 13:30 243 → 252 BUSY 0 с
    2026-03-17 13:30 243 → 89161111111 CHANUNAVAIL 0 с
    2026-03-17 13:29 202 → 243 NOANSWER 0 с
    2026-03-17 13:29 202 → 202 ANSWERED 2 с
    2026-03-17 13:29 202 → 243 NOANSWER 0 с
    2026-03-17 13:29 202 → 10003246 NOANSWER 0 с
    2026-03-17 13:28 202 → 243 NOANSWER 0 с
    
    Process finished with exit code 0
    def cdr_stats(days: int = 1) -> dict:
        now  = datetime.now()
        then = now - timedelta(days=days)
        records = get_cdr(
            date_from=then.strftime('%Y-%m-%dT%H:%M:%S'),
            date_to=now.strftime('%Y-%m-%dT%H:%M:%S'),
            limit=100
        )
        answered  = [r for r in records if r.get('disposition') == 'ANSWERED']
        missed = [r for r in records if r.get('disposition') in ('NO ANSWER', 'NOANSWER')]
        total_dur = sum(r.get('totalBillsec', 0) for r in answered)
        return {
            'total':    len(records),
            'answered': len(answered),
            'missed':   len(missed),
            'avg_sec':  total_dur // len(answered) if answered else 0,
        }
    
    stats = cdr_stats(days=7)
    print(f"Звонков за 7 дней: {stats['total']}")
    print(f"Отвечено:          {stats['answered']}")
    print(f"Пропущено:         {stats['missed']}")
    print(f"Средняя длит.:     {stats['avg_sec']}с")
    Звонков за 7 дней: 13
    Отвечено:          2
    Пропущено:         5
    Средняя длит.:     25с
    
    Process finished with exit code 0
    from datetime import datetime
    
    def show_employees():
        r = requests.get(f'{BASE_URL}/sip:getStatuses', headers=HEADERS)
        peers = r.json().get('data', {})
        for number, info in peers.items():
            icon = '🟢' if info.get('status') == 'Available' else '🔴'
            print(f"  {icon}  {number:>6}  {info.get('callerid', '')}  [{info.get('status', '')}]")
    
    
    def show_providers():
        r = requests.get(f'{BASE_URL}/sip-providers:getStatuses', headers=HEADERS)
        providers = r.json().get('data', {}).get('sip', {})
        for prov_id, info in providers.items():
            icon = '🟢' if info.get('state') == 'registered' else '🔴'
            print(f"  {icon}  {info.get('description', prov_id):>20}  {info.get('username', '')}@{info.get('host', '')}  [{info.get('state', '')}]")
    
    
    if __name__ == '__main__':
        print(f'MikoPBX Monitor [{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}]')
        print('\n── Сотрудники ──────────────────────────────')
        show_employees()
        print('\n── Провайдеры ───────────────────────────────')
        show_providers()
    MikoPBX Monitor [2026-03-17 16:47:35]
    
    ── Сотрудники ──────────────────────────────
      🔴     201  Smith James  [Unavailable]
      🟢     202  Brown Brandon  [Available]
      🔴     203  Collins Melanie  [Unavailable]
      🔴     243  Иванов Иван  [Unavailable]
      🟢     244  Петрова Анна  [Available]
      🔴     251  Иванов Иван  [Unavailable]
      🟢     252  Петрова Анна  [Available]
      🔴     253  Сидоров Пeтр  [Unavailable]
    
    ── Провайдеры ───────────────────────────────
      🔴         Demo provider  [email protected]  [rejected]
      🟢               Zadarma  [email protected]  [registered]
    
    Process finished with exit code 0
    def get_active_calls() -> list:
        r = requests.get(f'{BASE_URL}/pbx-status:getActiveCalls', headers=HEADERS)
        return r.json().get('data', [])
    
    calls = get_active_calls()
    
    print(f'Активных звонков: {len(calls)}')
    for call in calls:
        print(f"  {call.get('src_num', '?')} → {call.get('dst_num', '?')}  [{call.get('src_name', '')} → {call.get('dst_name', '')}]")
    Активных звонков: 1
      243 → 252  [Иванов Иван → Петрова Анна]
    
    Process finished with exit code 0

    Настройка Yandex Mail (Логин, Пароль)

    Настройка почты для сервиса Yandex

    Для получения уведомлений о пропущенных вызовах по электронной почте необходимо настроить SMTP-клиент. Подробная информация об уведомлениях в MikoPBX рассмотрена здесь. В рамках данной инструкции будет рассмотрен пример настройки уведомлений о пропущенных вызовах для почтового сервиса Yandex.

    circle-exclamation

    Документация Yandexarrow-up-right по настройки smtp. Для большей безопасности следует использовать «Пароли приложенийarrow-up-right». Не используйте основной пароль от почтового ящика.

    1. Введем IP адрес АТС MikoPBX в браузере и перейдем в Система → Почта и уведомления.

    Настройки SMTP клиента для сервиса Yandex:

    • SMTP хост - smtp.yandex.ru

    • SMTP Порт - 465 (Порт для обслуживания клиентов)

    • Адрес отправителя и Логин - E-mail с которого будут отправляться сообщения о пропущенных вызовах

    1. Осуществим отправку тестового письма на электронную почту любого сервиса. В случае успешного тестирования на указанный Вами адрес электронной почты придет тестовое письмо.

    О том, как настроить шаблон письма для создания e-mail уведомлений вы можете прочитать .

    Пароль - пароль от электронной почты, необходимый для авторизации

  • Метод шифрования - Использовать TLS

  • здесь
    Раздел "Почта и уведомления"
    Параметры настроек отправки сообщений

    Интерактивная документация и список эндпоинтов

    Описание документации и таблицы эндпоинтов для работы с REST API в MikoPBX

    Работа с REST API MikoPBX построена по стандарту OpenAPI. Интерактивная документация встроена прямо в АТС и всегда содержит актуальный список эндпоинтов, параметров и схем для вашей версии системы.

    hashtag
    Как открыть документацию

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

    1. Нажмите кнопку «Документация API».

    hashtag
    Возможности интерактивной документации

    Документация построена на базе стандарта OpenAPI и предоставляет полное описание всех эндпоинтов REST API MikoPBX.

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

    Для каждого эндпоинта отображается краткое описание, метод запроса (GET, POST, PUT, PATCH, DELETE), endpoint с подставленым адресом АТС. Ниже отображаются все доступные параметры запроса.

    Примеры кода — для каждого эндпоинта доступны готовые примеры запросов на разных языках. Переключатель находится под панелью параметров — по умолчанию показывается Shell / cURL, доступны также и другие языки (нажмите на название языка для его смены - в этой инструкции Python 3).

    Ниже находится пример ответа сервера.

    Выполнение запросов онлайн — документация позволяет отправлять реальные запросы прямо из браузера и получать ответы от вашей АТС. Сервер определяется автоматически по адресу текущей страницы.

    Внизу страницы Вы найдете возможные номера ответов на запрос и краткое пояснение к ним. Так же будут отображены все параметры тела выбранного ответа.

    hashtag
    Список эндпоинтов

    Базовый префикс всех путей: /pbxcore/api/v3

    hashtag
    Телефония и маршрутизация

    hashtag
    Сотрудники

    Метод
    Путь
    Описание

    hashtag
    Внутренние номера

    Метод
    Путь
    Описание

    hashtag
    SIP провайдеры

    Метод
    Путь
    Описание

    hashtag
    IAX провайдеры

    Метод
    Путь
    Описание

    hashtag
    Провайдеры (общий список SIP + IAX)

    Метод
    Путь
    Описание

    hashtag
    Очереди звонков

    Метод
    Путь
    Описание

    hashtag
    IVR меню

    Метод
    Путь
    Описание

    hashtag
    Входящая маршрутизация

    Метод
    Путь
    Описание

    hashtag
    Исходящая маршрутизация

    Метод
    Путь
    Описание

    hashtag
    Нерабочее время

    Метод
    Путь
    Описание

    hashtag
    Конференц-комнаты

    Метод
    Путь
    Описание

    hashtag
    Приложения диалплана

    Метод
    Путь
    Описание

    hashtag
    Звуковые файлы

    Метод
    Путь
    Описание

    hashtag
    Кастомизация системных файлов

    Метод
    Путь
    Описание

    hashtag
    Мониторинг и статистика

    hashtag
    Состояние АТС

    Метод
    Путь
    Описание

    hashtag
    SIP устройства

    Метод
    Путь
    Описание

    hashtag
    SIP провайдеры (мониторинг)

    Метод
    Путь
    Описание

    hashtag
    IAX провайдеры (мониторинг)

    Метод
    Путь
    Описание

    hashtag
    Провайдеры (мониторинг)

    Метод
    Путь
    Описание

    hashtag
    Журнал звонков (CDR)

    Метод
    Путь
    Описание

    hashtag
    Советы и рекомендации

    Метод
    Путь
    Описание

    hashtag
    Аутентификация и доступ

    hashtag
    Аутентификация

    Метод
    Путь
    Описание

    hashtag
    API ключи

    Метод
    Путь
    Описание

    hashtag
    AMI пользователи

    Метод
    Путь
    Описание

    hashtag
    ARI пользователи

    Метод
    Путь
    Описание

    hashtag
    Ключи доступа (Passkeys)

    Метод
    Путь
    Описание

    hashtag
    Пароли

    Метод
    Путь
    Описание

    hashtag
    Пользователи

    Метод
    Путь
    Описание

    hashtag
    Сетевые фильтры

    Метод
    Путь
    Описание

    hashtag
    Системные настройки

    hashtag
    Системные операции

    Метод
    Путь
    Описание

    hashtag
    Общие настройки

    Метод
    Путь
    Описание

    hashtag
    Сетевые интерфейсы и маршрутизация

    Метод
    Путь
    Описание

    hashtag
    Сетевой фильтр (Firewall)

    Метод
    Путь
    Описание

    hashtag
    Защита от взлома (Fail2Ban)

    Метод
    Путь
    Описание

    hashtag
    Настройки времени

    Метод
    Путь
    Описание

    hashtag
    Настройки почты

    Метод
    Путь
    Описание

    hashtag
    Хранилище

    Метод
    Путь
    Описание

    hashtag
    S3 Облачное хранилище

    Метод
    Путь
    Описание

    hashtag
    Дополнительные модули

    Метод
    Путь
    Описание

    hashtag
    Лицензирование

    Метод
    Путь
    Описание

    hashtag
    Операции с файлами

    Метод
    Путь
    Описание

    hashtag
    Диагностика

    hashtag
    Информация о системе

    Метод
    Путь
    Описание

    hashtag
    Системные логи

    Метод
    Путь
    Описание

    hashtag
    Документация OpenAPI

    Метод
    Путь
    Описание

    hashtag
    Поиск

    Метод
    Путь
    Описание

    hashtag
    Ссылки на документацию

    Метод
    Путь
    Описание

    hashtag
    Отслеживание активности пользователей

    Метод
    Путь
    Описание

    /employees/{id}

    Получить сотрудника по ID

    PUT

    /employees/{id}

    Обновить сотрудника

    PATCH

    /employees/{id}

    Частично обновить сотрудника

    DELETE

    /employees/{id}

    Удалить сотрудника

    GET

    /employees:getDefault

    Получить значения по умолчанию

    POST

    /employees:batchCreate

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

    POST

    /employees:batchDelete

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

    POST

    /employees:import

    Импортировать сотрудников (предпросмотр)

    POST

    /employees:confirmImport

    Подтвердить импорт

    POST

    /employees:export

    Экспортировать сотрудников

    POST

    /employees:exportTemplate

    Экспортировать шаблон

    /extensions:available

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

    GET

    /extensions:getForSelect

    Получить добавочные для выпадающего списка

    POST

    /extensions/{id}:getPhoneRepresent

    Получить представление телефона

    POST

    /extensions:getPhonesRepresent

    Получить представление телефонов

    /sip-providers/{id}

    Получить SIP провайдера по ID

    PUT

    /sip-providers/{id}

    Обновить SIP провайдера

    PATCH

    /sip-providers/{id}

    Частично обновить SIP провайдера

    DELETE

    /sip-providers/{id}

    Удалить SIP провайдера

    GET

    /sip-providers/{id}:copy

    Скопировать SIP провайдера

    GET

    /sip-providers:getDefault

    Получить шаблон SIP провайдера

    /iax-providers/{id}

    Получить IAX провайдера по ID

    PUT

    /iax-providers/{id}

    Обновить IAX провайдера

    PATCH

    /iax-providers/{id}

    Частично обновить IAX провайдера

    DELETE

    /iax-providers/{id}

    Удалить IAX провайдера

    GET

    /iax-providers/{id}:copy

    Скопировать IAX провайдера

    GET

    /iax-providers:getDefault

    Получить шаблон IAX провайдера

    /providers:getForSelect

    Получить провайдеров для выпадающего списка

    /call-queues/{id}

    Получить очередь по ID

    PUT

    /call-queues/{id}

    Обновить очередь

    PATCH

    /call-queues/{id}

    Частично обновить очередь

    DELETE

    /call-queues/{id}

    Удалить очередь

    GET

    /call-queues/{id}:copy

    Копировать очередь

    GET

    /call-queues:getDefault

    Получить значения по умолчанию

    /ivr-menu/{id}

    Получить IVR меню по ID

    PUT

    /ivr-menu/{id}

    Обновить IVR меню

    PATCH

    /ivr-menu/{id}

    Частично обновить IVR меню

    DELETE

    /ivr-menu/{id}

    Удалить IVR меню

    GET

    /ivr-menu/{id}:copy

    Копировать IVR меню

    GET

    /ivr-menu:getDefault

    Получить значения по умолчанию

    /incoming-routes/{id}

    Получить входящий маршрут по ID

    PUT

    /incoming-routes/{id}

    Обновить входящий маршрут

    PATCH

    /incoming-routes/{id}

    Частично обновить входящий маршрут

    DELETE

    /incoming-routes/{id}

    Удалить входящий маршрут

    POST

    /incoming-routes/{id}:copy

    Копировать входящий маршрут

    GET

    /incoming-routes:getDefault

    Получить значения по умолчанию

    GET

    /incoming-routes:getDefaultRoute

    Получить маршрут по умолчанию

    POST

    /incoming-routes:changePriority

    Изменить приоритет маршрутов

    /outbound-routes/{id}

    Получить исходящий маршрут по ID

    PUT

    /outbound-routes/{id}

    Обновить исходящий маршрут

    PATCH

    /outbound-routes/{id}

    Частично обновить исходящий маршрут

    DELETE

    /outbound-routes/{id}

    Удалить исходящий маршрут

    GET

    /outbound-routes/{id}:copy

    Копировать исходящий маршрут

    GET

    /outbound-routes:getDefault

    Получить значения по умолчанию

    POST

    /outbound-routes:changePriority

    Изменить приоритет маршрутов

    /off-work-times/{id}

    Получить временное условие по ID

    PUT

    /off-work-times/{id}

    Обновить временное условие

    PATCH

    /off-work-times/{id}

    Частично обновить временное условие

    DELETE

    /off-work-times/{id}

    Удалить временное условие

    GET

    /off-work-times/{id}:copy

    Копировать временное условие

    GET

    /off-work-times:getDefault

    Получить значения по умолчанию

    POST

    /off-work-times:changePriorities

    Изменить приоритеты условий

    /conference-rooms/{id}

    Получить конференц-комнату по ID

    PUT

    /conference-rooms/{id}

    Обновить конференц-комнату

    PATCH

    /conference-rooms/{id}

    Частично обновить конференц-комнату

    DELETE

    /conference-rooms/{id}

    Удалить конференц-комнату

    GET

    /conference-rooms:getDefault

    Получить шаблон конференц-комнаты

    /dialplan-applications/{id}

    Получить dialplan приложение по ID

    PUT

    /dialplan-applications/{id}

    Обновить dialplan приложение

    PATCH

    /dialplan-applications/{id}

    Частично обновить dialplan приложение

    DELETE

    /dialplan-applications/{id}

    Удалить dialplan приложение

    GET

    /dialplan-applications/{id}:copy

    Скопировать dialplan приложение

    GET

    /dialplan-applications:getDefault

    Получить шаблон dialplan приложения

    /sound-files/{id}

    Получить звуковой файл по ID

    PUT

    /sound-files/{id}

    Обновить звуковой файл

    PATCH

    /sound-files/{id}

    Частично обновить звуковой файл

    DELETE

    /sound-files/{id}

    Удалить звуковой файл

    GET

    /sound-files:getDefault

    Получить значения по умолчанию

    GET

    /sound-files:getForSelect

    Получить для выпадающего списка

    GET

    /sound-files:playback

    Воспроизвести звуковой файл

    POST

    /sound-files:uploadFile

    Загрузить звуковой файл

    POST

    /sound-files:convertAudioFile

    Конвертировать аудио файл

    /custom-files/{id}

    Получить пользовательский файл по ID

    PUT

    /custom-files/{id}

    Обновить пользовательский файл

    PATCH

    /custom-files/{id}

    Частично обновить пользовательский файл

    DELETE

    /custom-files/{id}

    Удалить пользовательский файл

    GET

    /custom-files:getDefault

    Получить значения по умолчанию

    /sip:getRegistry

    Получить статус регистрации (legacy)

    POST

    /sip:processAuthFailures

    Обработать ошибки аутентификации

    GET

    /sip/{id}:getStatus

    Получить статус SIP устройства

    GET

    /sip/{id}:getStats

    Получить статистику SIP устройства

    GET

    /sip/{id}:getHistory

    Получить историю подключений

    GET

    /sip/{id}:getSecret

    Получить SIP пароль

    GET

    /sip/{id}:getAuthFailureStats

    Получить статистику ошибок аутентификации

    POST

    /sip/{id}:clearAuthFailureStats

    Очистить статистику ошибок

    POST

    /sip/{id}:forceCheck

    Принудительно проверить статус

    /sip-providers/{id}:getHistory

    Получить историю подключений

    GET

    /sip-providers/{id}:getStats

    Получить статистику SIP провайдера

    POST

    /sip-providers/{id}:forceCheck

    Принудительно проверить регистрацию

    POST

    /sip-providers/{id}:updateStatus

    Обновить статус провайдера

    /iax-providers/{id}:getHistory

    Получить историю подключений

    GET

    /iax-providers/{id}:getStats

    Получить статистику IAX провайдеров

    POST

    /iax-providers/{id}:forceCheck

    Принудительно проверить регистрацию

    POST

    /iax-providers/{id}:updateStatus

    Обновить статус провайдера

    GET

    /iax:getRegistry

    Получить статус регистрации IAX провайдеров

    /providers/{id}:getHistory

    Получить историю провайдера

    GET

    /providers/{id}:getStats

    Получить статистику провайдера

    POST

    /providers/{id}:updateStatus

    Обновить статус провайдера

    /cdr/{id}

    Удалить CDR запись

    GET

    /cdr:getMetadata

    Получить метаданные CDR

    GET

    /cdr:playback

    Воспроизвести запись разговора

    GET

    /cdr:download

    Скачать запись разговора

    /auth:logout

    Выйти из системы

    /api-keys/{id}

    Получить API ключ по ID

    PUT

    /api-keys/{id}

    Обновить API ключ

    PATCH

    /api-keys/{id}

    Частично обновить API ключ

    DELETE

    /api-keys/{id}

    Удалить API ключ

    GET

    /api-keys:getDefault

    Получить значения по умолчанию

    POST

    /api-keys:generateKey

    Сгенерировать новый ключ

    /asterisk-managers/{id}

    Получить AMI пользователя по ID

    PUT

    /asterisk-managers/{id}

    Обновить AMI пользователя

    PATCH

    /asterisk-managers/{id}

    Частично обновить AMI пользователя

    DELETE

    /asterisk-managers/{id}

    Удалить AMI пользователя

    GET

    /asterisk-managers/{id}:copy

    Копировать AMI пользователя

    GET

    /asterisk-managers:getDefault

    Получить значения по умолчанию

    /asterisk-rest-users/{id}

    Получить ARI пользователя по ID

    PUT

    /asterisk-rest-users/{id}

    Обновить ARI пользователя

    PATCH

    /asterisk-rest-users/{id}

    Частично обновить ARI пользователя

    DELETE

    /asterisk-rest-users/{id}

    Удалить ARI пользователя

    GET

    /asterisk-rest-users:getDefault

    Получить значения по умолчанию

    /passkeys/{id}

    Получить passkey по ID

    PATCH

    /passkeys/{id}

    Обновить passkey

    DELETE

    /passkeys/{id}

    Удалить passkey

    GET

    /passkeys:checkAvailability

    Проверить наличие passkeys

    GET

    /passkeys:authenticationStart

    Начать аутентификацию через passkey

    POST

    /passkeys:authenticationFinish

    Завершить аутентификацию через passkey

    POST

    /passkeys:registrationStart

    Начать регистрацию passkey

    POST

    /passkeys:registrationFinish

    Завершить регистрацию passkey

    /passwords:checkDictionary

    Проверить пароль в словаре

    POST

    /passwords:batchValidate

    Пакетная проверка паролей

    POST

    /passwords:batchCheckDictionary

    Пакетная проверка словаря

    /network-filters:getForSelect

    Получить фильтры для выпадающего списка

    /system:datetime

    Получить системное время

    GET

    /system:getAvailableLanguages

    Получить доступные языки

    GET

    /system:checkForUpdates

    Получить детальную информацию об обновлении

    GET

    /system:checkIfNewReleaseAvailable

    Быстрая проверка наличия новой версии

    GET

    /system:getDeleteStatistics

    Получить статистику удаления

    POST

    /system:reboot

    Перезагрузить систему

    POST

    /system:shutdown

    Выключить систему

    POST

    /system:upgrade

    Обновить систему

    POST

    /system:restoreDefault

    Восстановить настройки по умолчанию

    POST

    /system:changeLanguage

    Изменить язык системы

    POST

    /system:convertAudioFile

    Конвертировать аудиофайл

    POST

    /system:executeBashCommand

    Выполнить bash команду

    POST

    /system:executeSqlRequest

    Выполнить SQL запрос

    POST

    /system:updateMailSettings

    Обновить настройки почты

    /general-settings

    Частично обновить общие настройки

    GET

    /general-settings/{id}

    Получить конкретную настройку

    GET

    /general-settings:getDefault

    Получить значения по умолчанию

    POST

    /general-settings:updateCodecs

    Обновить настройки кодеков

    /network/{id}

    Удалить сетевой интерфейс

    GET

    /network:getConfig

    Получить полную конфигурацию сети

    GET

    /network:getNatSettings

    Получить настройки NAT

    POST

    /network:saveConfig

    Сохранить конфигурацию сети

    /firewall/{id}

    Получить правило файервола по ID

    PUT

    /firewall/{id}

    Обновить правило файервола

    PATCH

    /firewall/{id}

    Частично обновить правило файервола

    DELETE

    /firewall/{id}

    Удалить правило файервола

    GET

    /firewall:getDefault

    Получить значения по умолчанию

    GET

    /firewall:getBannedIps

    Получить список заблокированных IP

    POST

    /firewall:unbanIp

    Разблокировать IP адрес

    POST

    /firewall:enable

    Включить файервол

    POST

    /firewall:disable

    Выключить файервол

    /fail2ban

    Частично обновить настройки Fail2Ban

    /mail-settings

    Частично обновить настройки почты

    DELETE

    /mail-settings

    Сбросить настройки почты

    GET

    /mail-settings:getDefault

    Получить значения по умолчанию

    GET

    /mail-settings:getDiagnostics

    Получить диагностику настроек почты

    GET

    /mail-settings:getOAuth2Url

    Получить URL авторизации OAuth2

    POST

    /mail-settings:refreshToken

    Обновить OAuth2 токен

    POST

    /mail-settings:testConnection

    Проверить подключение к SMTP серверу

    POST

    /mail-settings:sendTestEmail

    Отправить тестовое письмо

    /storage:mount

    Смонтировать устройство хранения

    POST

    /storage:umount

    Размонтировать устройство хранения

    POST

    /storage:mkfs

    Форматировать устройство хранения

    POST

    /storage:statusMkfs

    Получить статус форматирования

    /s3-storage

    Частично обновить конфигурацию S3

    GET

    /s3-storage:stats

    Получить статистику синхронизации S3

    GET

    /s3-storage:testConnection

    Тестировать S3 соединение

    /modules/{id}

    Получить модуль по ID

    PUT

    /modules/{id}

    Обновить модуль

    PATCH

    /modules/{id}

    Частично обновить модуль

    DELETE

    /modules/{id}

    Удалить модуль

    GET

    /modules/{id}:getModuleInfo

    Получить информацию о модуле

    GET

    /modules/{id}:getModuleLink

    Получить ссылку на скачивание модуля

    GET

    /modules/{id}:getDownloadStatus

    Получить статус загрузки

    POST

    /modules/{id}:startDownload

    Начать загрузку модуля

    POST

    /modules/{id}:installFromRepo

    Установить модуль из репозитория

    POST

    /modules:installFromPackage

    Установить модуль из пакета

    POST

    /modules:getMetadataFromPackage

    Получить метаданные из пакета

    POST

    /modules/{id}:enable

    Включить модуль

    POST

    /modules/{id}:disable

    Отключить модуль

    POST

    /modules/{id}:uninstall

    Удалить модуль

    POST

    /modules:updateAll

    Обновить все модули

    GET

    /modules:getAvailableModules

    Получить доступные модули

    GET

    /modules:getInstallationStatus

    Получить статус установки

    GET

    /modules:getDefault

    Получить настройки модуля по умолчанию

    /license:resetKey

    Сбросить лицензионный ключ

    GET

    /license:sendPBXMetrics

    Отправить метрики АТС

    POST

    /license:captureFeatureForProductId

    Захватить функцию для продукта

    POST

    /license:processUserRequest

    Обработать запрос пользователя

    /files/{id}

    Удалить файл

    POST

    /files:upload

    Загрузить файл (чанками)

    GET

    /files:uploadStatus

    Проверить статус загрузки

    POST

    /files:downloadFirmware

    Скачать прошивку

    GET

    /files:firmwareStatus

    Проверить статус скачивания прошивки

    /sysinfo:getHypervisorInfo

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

    GET

    /sysinfo:getDMIInfo

    Получить DMI информацию

    /syslog:getLogTimeRange

    Получить временной диапазон лога

    POST

    /syslog:eraseFile

    Очистить лог файл

    POST

    /syslog:startCapture

    Начать захват пакетов

    POST

    /syslog:stopCapture

    Остановить захват пакетов

    POST

    /syslog:prepareArchive

    Подготовить архив логов

    POST

    /syslog:downloadArchive

    Скачать архив логов

    POST

    /syslog:downloadLogFile

    Скачать лог файл

    /openapi:getDetailedPermissions

    Получить детальный список разрешений

    GET

    /openapi:getSimplifiedPermissions

    Получить упрощенный список разрешений

    GET

    /openapi:getValidationSchemas

    Получить схемы валидации

    POST

    /openapi:clearCache

    Очистить кэш OpenAPI

    GET

    /employees

    Получить список сотрудников

    POST

    /employees

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

    GET

    /extensions

    Получить список добавочных номеров

    GET

    /extensions/{id}

    Получить добавочный номер по ID

    GET

    /sip-providers

    Получить список SIP провайдеров

    POST

    /sip-providers

    Создать SIP провайдера

    GET

    /iax-providers

    Получить список IAX провайдеров

    POST

    /iax-providers

    Создать IAX провайдера

    GET

    /providers

    Получить список всех провайдеров

    GET

    /providers/{id}

    Получить провайдера по ID

    GET

    /call-queues

    Получить список очередей

    POST

    /call-queues

    Создать новую очередь

    GET

    /ivr-menu

    Получить список IVR меню

    POST

    /ivr-menu

    Создать новое IVR меню

    GET

    /incoming-routes

    Получить список входящих маршрутов

    POST

    /incoming-routes

    Создать входящий маршрут

    GET

    /outbound-routes

    Получить список исходящих маршрутов

    POST

    /outbound-routes

    Создать исходящий маршрут

    GET

    /off-work-times

    Получить список временных условий

    POST

    /off-work-times

    Создать временное условие

    GET

    /conference-rooms

    Получить список конференц-комнат

    POST

    /conference-rooms

    Создать конференц-комнату

    GET

    /dialplan-applications

    Получить список dialplan приложений

    POST

    /dialplan-applications

    Создать dialplan приложение

    GET

    /sound-files

    Получить список звуковых файлов

    POST

    /sound-files

    Создать звуковой файл

    GET

    /custom-files

    Получить список пользовательских файлов

    POST

    /custom-files

    Создать новый пользовательский файл

    GET

    /pbx-status:getActiveCalls

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

    GET

    /pbx-status:getActiveChannels

    Получить активные каналы

    GET

    /sip:getStatuses

    Получить статусы всех SIP устройств

    GET

    /sip:getPeersStatuses

    Получить статусы SIP peers (legacy)

    GET

    /sip-providers:getStatuses

    Получить статусы всех SIP провайдеров

    GET

    /sip-providers/{id}:getStatus

    Получить статус SIP провайдера

    GET

    /iax-providers:getStatuses

    Получить статусы всех IAX провайдеров

    GET

    /iax-providers/{id}:getStatus

    Получить статус IAX провайдера

    GET

    /providers:getStatuses

    Получить статусы всех провайдеров

    GET

    /providers/{id}:getStatus

    Получить статус провайдера

    GET

    /cdr

    Получить список CDR записей

    GET

    /cdr/{id}

    Получить CDR запись по ID

    GET

    /advice:getList

    Получить список системных уведомлений

    GET

    /advice:refresh

    Обновить кеш уведомлений

    POST

    /auth:login

    Войти в систему (логин/пароль)

    POST

    /auth:refresh

    Обновить токен доступа

    GET

    /api-keys

    Получить список API ключей

    POST

    /api-keys

    Создать новый API ключ

    GET

    /asterisk-managers

    Получить список AMI пользователей

    POST

    /asterisk-managers

    Создать нового AMI пользователя

    GET

    /asterisk-rest-users

    Получить список ARI пользователей

    POST

    /asterisk-rest-users

    Создать нового ARI пользователя

    GET

    /passkeys

    Получить список passkeys

    POST

    /passkeys

    Создать новый passkey

    GET

    /passwords:generate

    Сгенерировать пароль

    POST

    /passwords:validate

    Проверить надежность пароля

    GET

    /users:available

    Проверить доступность email

    GET

    /network-filters

    Получить список сетевых фильтров

    GET

    /network-filters/{id}

    Получить сетевой фильтр по ID

    GET

    /system:ping

    Проверить доступность системы

    GET

    /system:checkAuth

    Проверить аутентификацию

    GET

    /general-settings

    Получить общие настройки

    PUT

    /general-settings

    Обновить общие настройки

    GET

    /network

    Получить список сетевых интерфейсов

    GET

    /network/{id}

    Получить сетевой интерфейс по ID

    GET

    /firewall

    Получить список правил файервола

    POST

    /firewall

    Создать правило файервола

    GET

    /fail2ban

    Получить настройки Fail2Ban

    PUT

    /fail2ban

    Обновить настройки Fail2Ban

    GET

    /time-settings:getAvailableTimezones

    Получить список доступных часовых поясов

    GET

    /mail-settings

    Получить настройки почты

    PUT

    /mail-settings

    Обновить настройки почты

    GET

    /storage:usage

    Получить статистику использования хранилища

    GET

    /storage:list

    Получить список доступных устройств хранения

    GET

    /s3-storage

    Получить конфигурацию S3 хранилища

    PUT

    /s3-storage

    Обновить конфигурацию S3 хранилища

    GET

    /modules

    Получить список модулей

    POST

    /modules

    Создать модуль

    GET

    /license:getLicenseInfo

    Получить информацию о лицензии

    GET

    /license:ping

    Проверить связь с сервером лицензий

    GET

    /files/{id}

    Получить содержимое файла

    PUT

    /files/{id}

    Загрузить/обновить файл

    GET

    /sysinfo:getInfo

    Получить системную информацию

    GET

    /sysinfo:getExternalIpInfo

    Получить внешний IP адрес

    GET

    /syslog:getLogsList

    Получить список лог файлов

    POST

    /syslog:getLogFromFile

    Получить содержимое лога

    GET

    /openapi:getSpecification

    Получить OpenAPI спецификацию

    GET

    /openapi:getAclRules

    Получить ACL правила API

    GET

    /search:getSearchItems

    Глобальный поиск

    GET

    /wiki-links:getLink

    Получить ссылку на документацию

    POST

    /user-page-tracker:pageView

    Зафиксировать просмотр страницы

    POST

    /user-page-tracker:pageLeave

    Зафиксировать уход со страницы

    Раздел "Система" -> "API ключи"
    Кнопка «Документация API» в разделе API ключей
    Меню навигации
    Описание эндпоинта с параметрами запроса и примером тела
    Пример запроса на Python и пример ответа сервера
    Выполнение запросов из документации API
    Коды ответов и структура тела ответа

    GET

    POST

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    GET

    DELETE

    POST

    GET

    GET

    GET

    GET

    POST

    GET

    GET

    PATCH

    DELETE

    GET

    PATCH

    PATCH

    POST

    PATCH

    GET

    GET

    DELETE

    GET

    POST

    GET