- Asterisk — проблемы и решения
- Что нужно сделать после установки asterisk для нормальной работы:
- Проблема с отжиранием памяти:
- Проблема с недоступностью DNS
- Настройки Астериск для «Мультифона»
- Включение и отключение транка multifon
- Пара слов о кодеках и совместимости
- Нет входящих звонков
- Asterisk+FreePBX не соединяет внутренних абонентов?
- Отладка неполадок вызовов
- Введение
- Проблемы с исходящими вызовами
- не верный контекст
- Не совпадение с правилами набора
- Ошибки кастомного диалплана
- Проблемы с входящими вызовами
- Вызов не поступает на АТС
- Не указан DID номер
Asterisk — проблемы и решения
Но, как любое бесплатное решение астериск требует соответствующей подготовки и опыта, даже с установленным GUI (графическим интерфейсом) иногда приходится сталкиваться с неожиданными проблемами. Данная статья написана скорее для себя, как напоминалка и впоследствии будет дополняться новыми ошибками и решениями проблем.
Что нужно сделать после установки asterisk для нормальной работы:
Проблема с отжиранием памяти:
В разных релизах астера, начиная с древних периодически появлялся баг с памятью, неприятно когда телефония начинает лагать и заикаться. Причин может быть несколько, кодеки, перекодировка, падающие транки и др. Для себя эту ошибку решил периодической перезагрузкой ядра астериска в ночное время.
Для чего добавил пару заданий в кронтаб:
Проблема с недоступностью DNS
Неприятная проблема с внешними dns. Суть ошибки в том, что при пропадании интернета отваливаются внутренние пиры и долго обрабатываются соединения с GSM шлюзов и SIP транков, валятся ошибки chan_sip, даже если они находятся в локальной сети.
Часто астериск настраивается для работы только с локальными адресами, например с gsm шлюзом или оператор предоставляет транк с фиксированным ip адресом и переменная srvlookup не нужна. В таком случае, правильно будет запретить обращение к внешнему DNS серверу, которое может подвешать астериск, для этого в файле sip.conf в секции general прописать:
в FreePBX это счастье отключается по разному, но искать нужно в меню «настройках астериск для сип» примерно следущую строку:
Если же Ваш сип провайдер (например задарма или мультифон от мегафона) требует указать в файле sip.conf srvlookup=yes, Вы можете указать в настройках для конкретного транка эту переменную.
Настройки Астериск для «Мультифона»
Включение и отключение транка multifon
Включить SIP транк мультифона можно с мобильного телефона командой *137#
После чего активируем услугу Emotion (мультифон). Кроме этого можно переключить режим использования услуги с помощью http запроса, указав номер телефона (в формате 79xxxxxxxxx ) и пароль (получить или восстановить пароль мультифона можно по ссылке )
| Значение | Описание | Пример |
|---|---|---|
| 0 | Звонки приходят на мобильный | |
| 1 | Звонки приходят только на SIP | |
| 2 | Звонки приходят на SIP и мобильный | |
| Проверка текущего статуса | ||
Пара слов о кодеках и совместимости
Исторически сложилось так, что используются для связи в основном три-четыре кодека, даже если вы поставите качественный кодек, оператор предоставит Вам стандартные A-Law, U-Law ну еще может быть G722, GSM. Посмотрите строку регистрации, что предлагает оператор и отключите неиспользуемые кодеки. Даже не очень нагруженный астериск начинает лагать и терять голос, если ему приходится перекодировать в одном транке 2-3 кодека, а при значительной нагрузке проблемы гарантированы. Как пример, телефон Грандстрим настроен на G722, который астериск понимает, но отдает сип-оператору ULAW .
Нет входящих звонков
Если не приходят звонки, а исходящая связь есть, первое что нужно проверить проходит ли соединение, для чего зайти в консоль астера
Если Вы не видите чего то подобного при поступлении звонка, значит дело в сетевых настройках или настройках фаервола. Посмотрите в той же cli консоли на каком порту астериск ждет входящий:
у вас должно быть что то вроде:
что значит, астериск слушает на портах TCP и UDP 5060.
Источник
Asterisk+FreePBX не соединяет внутренних абонентов?
Вы надеюсь понимаете, что мне файл, состоящий на 100% из закомментированных строк — не интересен.
Он где-то тут:
#include extensions_override_freepbx.conf
#include extensions_additional.conf
#include extensions_custom.conf
То, что мне нужно вы должны понять исходя из сообщений в вашем логе.
Талян,
;———————————————————————————;
; Do NOT edit this file as it is auto-generated by FreePBX. ;
;———————————————————————————;
; For information on adding additional paramaters to this file, please visit the ;
; FreePBX.org wiki page, or ask on IRC. This file was created by the new FreePBX ;
; BMO — Big Module Object. Any similarity in naming with BMO from Adventure Time ;
; is totally deliberate. ;
;———————————————————————————;
[globals]
MIXMON_BEEP =
MONITOR_REC_OPTION = b
QUEDEVSTATE = TRUE
OPERATOR_XTN =
VM_DDTYPE = u
VM_GAIN =
VM_OPTS =
VMX_LOOPS = 1
VMX_OPTS_DOVM =
VMX_OPTS_LOOP =
VMX_REPEAT = 1
VMX_TIMEOUT = 2
DYNAMIC_FEATURES = apprecord
INTERCOMCODE = nointercom
ASTETCDIR = /etc/asterisk
ASTMODDIR = /usr/lib/asterisk/modules
ASTVARLIBDIR = /var/lib/asterisk
ASTAGIDIR = /var/lib/asterisk/agi-bin
ASTSPOOLDIR = /var/spool/asterisk
ASTRUNDIR = /var/run/asterisk
ASTLOGDIR = /var/log/asterisk
CWINUSEBUSY = 1
AMPMGRUSER = admin
AMPMGRPASS = 51c1bc252266f80428c815213cb9e93d
ASTMANAGERHOST = localhost
AMPDBENGINE = mysql
AMPDBHOST = localhost
AMPDBNAME = asterisk
AMPDBUSER = freepbxuser
AMPDBPASS = 27efc86277e14115483d6f13cce7e13f
AMPBIN = /var/lib/asterisk/bin
VMX_CONTEXT = from-internal
VMX_PRI = 1
VMX_TIMEDEST_CONTEXT =
VMX_TIMEDEST_EXT = dovm
VMX_TIMEDEST_PRI = 1
VMX_LOOPDEST_CONTEXT =
VMX_LOOPDEST_EXT = dovm
VMX_LOOPDEST_PRI = 1
MIXMON_DIR =
MIXMON_POST =
DIAL_OPTIONS = HhTtr
TRUNK_OPTIONS = T
TRUNK_RING_TIMER = 300
MIXMON_FORMAT = wav
REC_POLICY = caller
RINGTIMER_DEFAULT = 15
TRANSFER_CONTEXT = from-internal-xfer
ASTVERSION = 16.17.0
ASTCHANDAHDI = 0
NULL = «»
SIPLANG = ru
ALLOW_SIP_ANON = no
#include globals_custom.conf
[sub-record-cancel]
include => sub-record-cancel-custom
exten => s,1,Return()
Источник
Отладка неполадок вызовов
Введение Проблемы с исходящими вызовами. Проблемы с входящими вызовами. Введение В работе с астериском, зачастую системные администраторы сталкиваются с вопросами: «Не могу дозвониться на номер 4951112233» или «У меня вызовы не работают» или «Почему мне не приходят вызовы, у меня телефон зарегистрирован». Для этого надо подключаться к консоли и смотреть лог звонка. Это может затрагивать […]
Введение
В работе с астериском, зачастую системные администраторы сталкиваются с вопросами: «Не могу дозвониться на номер 4951112233» или «У меня вызовы не работают» или «Почему мне не приходят вызовы, у меня телефон зарегистрирован». Для этого надо подключаться к консоли и смотреть лог звонка. Это может затрагивать как исходящие правила набора, так и входящие. В этой статье рассмотрим основные неполадки диалплана, также захватим моменты, если вызов все таки уходит к оператору связи.
Проблемы с исходящими вызовами
В данном блоке будем рассматривать возможные неполадки при исходящих вызовах. Здесь можно выделить следующие проблемы:
- Не верный контекст вызова
- Не совпадение с правилами набора
- Ошибки кастомного диалплана
не верный контекст
Теперь разберем каждый из разделов по порядку. Первым в списке стоит не верный контекст. Под этим подразумевается, контекст, в который включен внутренний номер. При попытке вызова вы услышите короткие гудки. Первоначально надо зайти в консоль астериска командой asterisk -rvvv и попытаться еще раз набрать с проблемного аппарата. У вас должно получиться что-то подобное, как на изображении ниже.
Отладка: из изображения видим, что астериск «ругается» на то, что не находит правила набора на номер 737 в контексте internal. Для начала в консоли астериска введем команду dialplan show 737@internal. Из полученного ответа будем исходить, как поступать дальше.
Астериск выдал нам следующее: There is no existence of ‘internal’ context. Это означает что такого контекста в диалплане не существует, поэтому необходимо изменить значение параметра context для внутреннего номера, с которого набираем. Это можно посмотреть в sip.conf в значении context.
Не совпадение с правилами набора
Если вы указали уже существующий контекст, но при попытке набора также слышите короткие гудки, тогда снова заходим в консоль астериска и производим набор с проблемного устройства.
Отладка: в данном примере при попытке вызвать номер 4951112233 произошла ошибка и вызов сбросился. Смотрите изображение ниже.
В консоли видим похожее сообщение, как в примере выше. Не спешите делать те же самые действия, выполним похожую операцию.
Нам выдаст похожую картину, как на скриншоте ниже.
Из вывода следует, что в контексте local разрешены вызовы только на номера в формате XXX. Исправить это можно, перенеся extension в контекст, где разрешено совершать вызовы наружу или добавить правило набора на городские/мобильные номера.
Ошибки кастомного диалплана
Также, бывает что контекст верный, и правила набора совпадают, но вызов не проходит. Снова необходимо зайти в консоль астериска и делать вызов. Совершив вызов проверяем появившийся лог звонка.
Отладка: на изображении выше мы находим оповещение об ошибке WARNING[30855]. Оно гласит, что нет команды Got для экстеншена. (No application ‘Got’ for extension). Она появилась сразу после выполнения команды NoOp. Значит, ошибка, где в написании диалплана. И в тексте ошибки указывается где именно ошибка (from-internal, 84951112233, 2)
на втором приоритете. Посмотрим выполнение диалплана ранее известной нам командой.
Из ответа видим, что в приоритете указано правило в контексте from-internal-custom. И вторым пунктом выполнения диалплана стоит приложение Got(outrt-2,,1). Видимо ранее. Когда писали правило опечатались и имелось ввиду Goto, изменим на Goto в файле extensions_custom.conf
После правок, применим изменения командой dialplan reload и проверим вызов.
Проблемы с входящими вызовами
В данном разделе разберем неполадки, при входящих вызовах. Условно ошибки можно разделить на несколько критериев:
- Вызов не поступает на АТС
- Не указан DID номер
- Ошибки в диалплане
Вызов не поступает на АТС
При попытке набрать внешний номер вызов отбивается и вы в консоли лога звонка не видите. Из этого следует, что пакет INVITE, которые приходит от оператора связи на астериск не доходит, это может вызывать несколько причин:
- Пакет вообще не приходит на АТС
- Или не проходит настроенный на АТС firewall
Проверить приходят ли пакеты на АТС, можно с помощью утилиты tcpdump. Если в дампе звонка вы не видите входящие пакеты от оператора связи, то тут возможны несколько вариантов:
- Какие-то неполадки у оператора связи и вам придется звонить в ТП оператора
- Если транк с регистрацией, то возможно потерялась регистрация и надо заново послать оператору пакет REGISTER. Проверить можно командой sip show register.
Избавиться от этого можно с помощью консольной команды астериска sip reload
В случае, когда перезагрузка SIP не помогла, необходимо разбирать дамп и смотреть посылаемые пакеты REGISTER. Посмотреть как это исправить, можно в нашей статье(https://voxlink.ru/kb/asterisk-configuration/operativnaya-diagnostika-sip-v-konsoli-asterisk-kanaly-pjsip-i-chan_sip/)
- Если транк без регистрации и в выводе команды sip show peers транк в статусе Unreacheble или UNKNOWN, возможно есть проблемы на сетевом оборудовании и по умолчанию порт UDP 5060 не проброшен в сторону АТС.
Не указан DID номер
В случае, когда вы заводите транк с оператором связи, и необходимо вводить строку регистрации, не указывается DID номер, на который будет поступать вызов. По умолчанию вызов приходит в контекст на extension s. Для которого у вас нет маршрута. Вследствие чего звонок сбрасывается вашей АТС.
Отладка: необходимо указать в строке регистрации DID номер, на который будет приходить вызов. Также, такой DID указать в правилах входящего маршрута.
Источник