Сброс звонка в Asterisk: настройка диалплана и No route to destination
Симптомы ошибки маршрутизации вызовов:
- Вы набираете номер коллеги или внешний номер клиента, но вызов мгновенно сбрасывается с быстрыми короткими гудками.
- На дисплее IP-телефона появляется надпись:
No route to destination,Call Failedили404 Not Found. - В консоли Asterisk CLI выводится предупреждение:
Call from '101' rejected because extension '205' in context 'from-internal' was not found. - Сотрудники внутри одного отдела могут звонить друг другу, но не могут перевести звонок в другой отдел.
Шаг 1. Анализ ошибки в живой консоли Asterisk CLI
Откройте терминал сервера и запустите консоль с подробным выводом сообщений:
asterisk -rvvvvvСовершите проблемный звонок с аппарата. Найдите в выводе строку отказа. Если вы видите Sent into invalid extension 'XXX' in context 'YYY' — проблема на 100% заключается в файле extensions.conf.
Шаг 2. Проверяем соответствие контекста (Context)
Каждый внутренний номер привязан к определенной группе прав (контексту):
- Посмотрите, какой контекст назначен звонящему номеру в
pjsip.conf(илиsip.conf). Например:context=office-users. - Откройте файл
/etc/asterisk/extensions.confи найдите блок[office-users]. - Убедитесь, что в этой секции прописано правило для вызываемого номера или включен общий внутренний контекст:
[office-users]
; Включаем правила внутренних звонков:
include => internal-phones
include => outgoing-calls
[internal-phones]
; Звонки на любые трехзначные номера (от 100 до 999):
exten => _XXX,1,NoOp(Звонок на номер ${EXTEN})
same => n,Dial(PJSIP/${EXTEN},30)
same => n,Hangup()Шаг 3. Проверка шаблонов набора номеров (Шаблоны диалплана)
Спецсимволы правил набора в Asterisk всегда начинаются со знака подчеркивания _:
_XXX— любой 3-значный номер (100-999)._XXXX— любой 4-значный номер (1000-9999)._8XXXXXXXXXX— звонки на мобильные РФ через восьмерку (11 цифр)._7XXXXXXXXXX— звонки через семерку.
Шаг 4. Применение нового диалплана
asterisk -rx "dialplan reload" Частые вопросы (FAQ)
Зачем в начале правила диалплана ставится знак подчеркивания '_X'?
Знак подчеркивания указывает интерпретатору Asterisk, что дальше следует шаблон (регулярное выражение), а не точный статический номер.
Как в консоли быстро посмотреть правила для конкретного номера без открытия файла?
Выполните команду: dialplan show 105@from-internal. Консоль покажет все шаги выполнения вызова для этого номера.
Почему вызовы на мобильные номера сбрасываются, а внутри офиса работают?
В диалплане не настроена секция исходящей маршрутизации на SIP-транк провайдера связи, либо контекст учетной записи сотрудника не включает в себя секцию outgoing-calls.
Что означает параметр '30' в команде Dial(PJSIP/105,30)?
Это таймаут дозвона в секундах. Если вызываемый абонент не поднимет трубку в течение 30 секунд, вызов завершится или перейдет на следующий шаг диалплана (например, на голосовую почту).