Доступ к ARI (IN DEV)

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

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

По умолчанию отключён — включите при необходимости в разделе «Система» → «Asterisk REST Interface (ARI)».

circle-info

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

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

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

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

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

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

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

  • Голосовые боты и ассистенты — интеграция с внешними AI-сервисами

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

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

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

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

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

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

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

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

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

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

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

(пусто)

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

http://localhost:3000

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

https://app.mycompany.com

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

*

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

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

Раздел "Система" -> "Доступ к ARI" в MikoPBX
  1. Нажмите «Добавить пользователя».

Кнопка "Добавить пользователя" в разделе "Доступ к ARI"
  1. Заполните следующие параметры:

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

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

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

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

circle-info

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

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

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

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

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

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

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

Параметры создаваемого ARI-пользователя

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

WebSocket

Тип
URL

Обычный

ws://your-mikopbx.com:8088/ari/events?app=[application]&subscribe=all

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

wss://your-mikopbx.com:8089/ari/events?app=[application]&subscribe=all

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

REST API

Тип
URL

HTTP

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

HTTPS

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

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

circle-info

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

Пример: Hello World

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

Пример взят из официальной документации Asterisk: Getting Started with ARIarrow-up-right

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

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

Чтобы звонки попадали в ARI приложение, добавьте в диалплан Asterisk вызов Stasis() с именем вашего приложения:

circle-info

В MikoPBX это делается через раздел «Маршрутизация» → «Приложения диалплана» — создайте приложение с кодом Stasis(hello-world) и назначьте его на нужный входящий маршрут.

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

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

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

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

WebSocket последовательно пришлёт два события:

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

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

Пример: автосекретарь с DTMF меню

Более практичный пример — автосекретарь на Python, который принимает звонок, воспроизводит приветствие и переводит на нужный номер по нажатию клавиши.

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

circle-info

Имя приложения APP_NAME должно совпадать с полем «Приложения» в настройках ARI пользователя и с именем в вызове Stasis(auto-receptionist) в диалплане.


Полная документация по ARI — на сайте Asterisk: docs.asterisk.orgarrow-up-right

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

Last updated

Was this helpful?