Обзор

Агентика подключается к Плюсофону через Asterisk:
Asterisk регистрирует SIP-аккаунт у Плюсофона и принимает телефонный звонок. Asterisk заводит звонок в Stasis(agentika), после чего Агентика управляет каналом через ARI и обменивается аудио через Media WebSocket. Настройки Агентики не влияют на SIP-регистрацию в Плюсофоне. Сначала разверните Asterisk по инструкции Asterisk ARI в Docker.

Выберите тариф Плюсофона

Тариф «Первый» подходит для одного голосового агента и небольшого количества одновременных звонков. SIP-транк проще со стороны оператора и рассчитан на собственную АТС с большим количеством линий. Актуальные лимиты и цены проверяйте на страницах Облачной АТС и SIP-транка.

Настройте личный кабинет

Для тарифа «Первый»:
  1. Откройте раздел Номера и назначьте номер нужному SIP-аккаунту.
  2. В SIP-аккаунте выберите этот номер как Исходящий номер (АОН).
  3. В сценарии оставьте включённым дозвон на SIP-аккаунт.
  4. Убедитесь, что баланс положительный, а номер имеет статус «Готов к работе».
Для тарифа «SIP-транк» номер должен находиться на том же договоре, что и транк. Облачные сценарии для этого тарифа не используются. В обоих случаях получите в разделе SIP-аккаунты:
  • SIP-логин;
  • SIP-пароль;
  • домен SIP-сервера.
Плюсофон рекомендует TCP/5060, регистрацию на 300 секунд и G.711 A-law. Полный шаблон опубликован в инструкции для Asterisk.

Настройте PJSIP

Замените содержимое /opt/asterisk-docker/config/pjsip.conf. Не храните реальный пароль в документации или репозитории.
Перезапустите контейнер после изменения транспорта:
Рабочий статус регистрации — Registered. При ошибке No response received Asterisk не получил даже ответ для начала SIP-аутентификации. Проверьте активность SIP-аккаунта, баланс, сеть и ограничения публичного IP у Плюсофона.

Настройте dialplan

Входящие звонки

После первого входящего звонка посмотрите ${EXTEN} в журнале Asterisk. Добавьте точно это значение как адрес номера в Агентике и назначьте ему Inbound workflow.

Исходящие на тарифе «Первый»

АОН выбирается в личном кабинете Плюсофона, поэтому дополнительный SIP-заголовок не нужен:

Исходящие на тарифе «SIP-транк»

Для SIP-транка передайте номер с договора в формате, указанном Плюсофоном:
Агентика передаёт выбранный А-номер в наследуемой переменной __AGENTIKA_P_CHARGE_INFO. В dialplan она читается без подчёркиваний как ${AGENTIKA_P_CHARGE_INFO}. Использовать можно только номер текущего договора — см. настройку SIP-транка.

Подключите Агентику

Создайте конфигурацию Asterisk ARI на странице /telephony-configurations: Не публикуйте ARI по обычному HTTP. Используйте HTTPS и ограничьте доступ к нему адресами серверов Агентики или приватной сетью.

Пример текущей установки без секретов

Этот пример фиксирует проверенную конфигурацию одной установки с тарифом «Первый». Пароли намеренно заменены плейсхолдерами.

ari.conf

http.conf

До настройки HTTPS-прокси ARI слушает только loopback-интерфейс:

websocket_client.conf

chan_websocket.conf

pjsip.conf

Используйте полный шаблон из раздела «Настройте PJSIP» со значениями:

rtp.conf

Проверка

На момент фиксации контейнер был healthy, оба WebSocket-модуля имели статус Running, а Плюсофон не отвечал на REGISTER. Это состояние не связано с ARI или настройками Агентики: SIP-регистрация происходит раньше.

Устранение неполадок

Проверьте SIP-логин, пароль и сервер в личном кабинете. Номер должен быть назначен этому SIP-аккаунту, исходящий АОН выбран, баланс положительный. Для No response received передайте поддержке Плюсофона публичный IP Asterisk и точное время попытки.
Проверьте назначение номера SIP-аккаунту в Плюсофоне, контекст from-plusofon, фактический ${EXTEN}, номер в Агентике и назначенный ему Inbound workflow.
Проверьте UDP 10000–20000 между Плюсофоном и Asterisk, работающий chan_websocket, исходящий TCP 443 к Агентике и кодек alaw на SIP endpoint.

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