Asterisk — проблемы и решения 2


Asterisk - проблемы и решенияАТС на базе Астериск — очень популярное решение телефонии для офиса или call центра — причин тому несколько, основная — бесплатность и богатый функционал. По приблизительным подсчетам экономия на телефонии может сократить расходы на телефонные разговоры в 10-15 раз! Не слабо?

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

Что нужно сделать после установки asterisk для нормальной работы:

Проблема с отжиранием памяти:

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

03 5 * * 1-6 /usr/sbin/asterisk -rx 'restart when convenient' > /dev/null - каждый день в 5:30 мягкий рестарт, если нет активных звонков
50 6 * * sun /usr/sbin/asterisk -rx 'restart now' > /dev/null - в воскресенье asterisk перегружаем жестко.

Проблема с недоступностью DNS

Неприятная проблема с внешними dns. Суть ошибки в том, что при пропадании интернета отваливаются внутренние пиры и долго обрабатываются соединения с GSM шлюзов и SIP транков, валятся ошибки chan_sip, даже если они находятся в локальной сети.

Часто астериск настраивается для работы только с локальными адресами, например с gsm  шлюзом или оператор предоставляет транк с фиксированным ip адресом и переменная srvlookup не нужна. В таком случае, правильно будет запретить обращение к внешнему DNS серверу, которое может подвешать астериск, для этого в файле sip.conf в секции general прописать:

srvlookup=no

в FreePBX это счастье отключается по разному, но искать нужно в меню «настройках астериск для сип» примерно следущую строку:

долго отрабатываются звонки в фрипбикс
Если же Ваш сип провайдер (например задарма или мультифон от мегафона) требует указать в файле sip.conf  srvlookup=yes, Вы можете указать в настройках для конкретного транка эту переменную.


Настройки Астериск для «Мультифона»

Включение и отключение транка multifon

Включить SIP транк мультифона можно с мобильного телефона командой *137#

После чего активируем услугу Emotion (мультифон). Кроме этого можно переключить режим использования услуги с помощью http запроса, указав номер телефона (в формате 79xxxxxxxxx ) и пароль (получить или восстановить пароль мультифона можно по ссылке )

Компьютер и интернет на Город мастеров 59

Значение Описание Пример
0 Звонки приходят на мобильный
https://sm.megafon.ru/sm/client/routing/set?login=ТЕЛЕФОН@multifon.ru&password=ПАРОЛЬ&routing=0
1 Звонки приходят только на SIP
https://sm.megafon.ru/sm/client/routing/set?login=ТЕЛЕФОН@multifon.ru&password=ПАРОЛЬ&routing=1
2 Звонки приходят на SIP и мобильный
https://sm.megafon.ru/sm/client/routing/set?login=ТЕЛЕФОН@multifon.ru&password=ПАРОЛЬ&routing=2
Проверка текущего статуса
https://sm.megafon.ru/sm/client/routing/?login=ТЕЛЕФОН@multifon.ru&password=ПАРОЛЬ
  • при параллельном  вызове, если в астериске настроено приветствие, он будет первым перехватывать вызов.

Пара слов о кодеках и совместимости

Исторически сложилось так, что используются для связи в основном три-четыре кодека, даже если вы поставите качественный кодек, оператор предоставит Вам стандартные A-Law, U-Law ну еще может быть G722, GSM. Посмотрите строку регистрации, что предлагает оператор и отключите неиспользуемые кодеки. Даже не очень нагруженный астериск начинает лагать и терять голос, если ему приходится перекодировать в одном транке 2-3 кодека, а при значительной нагрузке проблемы гарантированы. Как пример, телефон Грандстрим настроен на G722, который астериск понимает, но отдает сип-оператору ULAW . неправильно настроенными кодекамиКазалось бы проблема незначительная, но перекодировка происходит одновременно в двух направлениях. Излишние телодвижения без всякого выигрыша в качестве звука. Как рекомендация, ориентируйтесь на наиболее качественный кодек оператора, лишние кодеки включайте по необходимости, например если этого требуют СИП-телефоны.  С неправильно настроенными кодеками могут быть связаны проблемы односторонней слышимости.


Нет входящих звонков

Если не приходят звонки, а исходящая связь есть, первое что нужно проверить проходит ли соединение, для чего зайти в консоль астера

asterisk -vvvr
local_aster*CLI> sip set debug peer multifon
SIP Debugging Enabled for IP: xx.xx.xx.xx:5060

<--- SIP read from UDP:xx.xx.xx.xx:5060 --->
INVITE sip:510@yy.yy.yy.yy:5060;user=phone SIP/2.0
Via: SIP/2.0/UDP xx.xx.xx.xx:5060;branch=z654646v520doi1kf4kt400
Max-Forwards: 68
Call-ID: 564654adds@85432131
From: 3951 <sip:510@yy.yy.yy.yy:5060;user=phone>;tag=A-1-8b320006-ead54c5966
To: <sip:3951@MM.MM.MM.MMM>
CSeq: 7745748 INVITE
Expires: 130000
Supported: replaces,100rel
Contact: <sip:ASS@510@xx.xx.xx.xx:5060;transport=udp>
Allow: INVITE,ACK,CANCEL,BYE,INFO,OPTIONS,PRACK,NOTIFY,MESSAGE,REFER,REGISTER,UPDATE
Content-Length: 166
Content-Type: application/sdp

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

kvm*CLI> sip show settings

у вас должно быть что то вроде:

настройка астериска

что значит, астериск слушает на портах TCP и UDP 5060.

Нет исходящих звонков

продолжение следует…


Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

2 мыслей про “Asterisk — проблемы и решения