Виртуальная атс. часть 2: решаем проблемы безопасности с asterisk и настраиваем звонки

Что нужно сделать после установки 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 это счастье отключается по разному, но искать нужно в меню «настройках астериск для сип» примерно следущую строку:

srvlookup=yes,

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

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

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

Значение Описание Пример
Звонки приходят на мобильный
https://sm.megafon.ru/sm/client/routing/set?login=ТЕЛЕФОН@multifon.ru&password=ПАРОЛЬ&routing=0
Звонки приходят только на SIP
https://sm.megafon.ru/sm/client/routing/set?login=ТЕЛЕФОН@multifon.ru&password=ПАРОЛЬ&routing=1
Звонки приходят на 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:[email protected]: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:[email protected]:5060;user=phone>;tag=A-1-8b320006-ead54c5966
To: <sip:[email protected]>
CSeq: 7745748 INVITE
Expires: 130000
Supported: replaces,100rel
Contact: <sip:ASS@[email protected]: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.

Очереди вызовов в сервере Asterisk

  • Поступающие вызовы помещаются в очередь.
  • Участники, обрабатывающие очередь, отвечают на вызовы поступающие в очередь (в их качестве могут быть либо екстеншены либо пользователи, зарегистрировавшиеся в системе в качестве агентов).
  • Порядок распределения поступающих вызовов между участниками, обрабатывающими очередь, зависит от определенной для нее стратегии распределения вызовов.
  • Пока вызывающий абонент ожидает ответа в очереди, ему может проигрываться музыка.
  • Есть возможность включения периодических анонсов, для ожидающих в очереди абонентов, и для участников, обрабатывающих очередь.

queues.confRealTime

  • Агенты (Agents) — это люди (персоны), которые отвечают на входящие вызовы, которые помещаются в определенную очередь вызовов. Агенты должны зарегистрироваться (войти) в систему, для индикации того, что они готовы обрабатывать вызовы. Сервер Asterisk перенаправляет входящий вызов в очередь, откуда он уже перенаправляется доступным для данной очереди агентам по заданной стратегии распределения вызовов между агентами.
  • Участники обработки очереди (Members) — это каналы связи, через которые происходит работа с вызовами, помещенными в очередь (через которые отвечают на эти вызовы). В этом качестве могут выступать агенты или обычные каналы связи, например: «sip/snom23».

Стратегии обработки вызовов.

  • ringall: вызываются все доступные участники до тех пор, пока кто-то из них не ответит на вызов (по умолчанию).
  • roundrobin: циклически вызывается каждый из доступных участников. (Устарело в версии 1.4, используйте: rrmemory)
  • leastrecent: Вызывается первый свободный участник, который меньше всего вызывался из этой очереди.
  • fewestcalls: Вызывается первый свободный участник, который обработал наименьшее количество вызовов из данной очереди.
  • random: случайным образом вызывается не занятый участник, обрабатывающий очередь.
  • rrmemory: циклическое распределение с памятью, запоминается последний участник, ответивший на вызов.

Функции

  • Queue: Помещение вызова в очередь, используется в плане набора: extensions.conf
  • AddQueueMember: Динамическое добавление агента для обработки очереди.
  • RemoveQueueMember: Динамическое удаление агента из участников обработки очереди.
  • AgentLogin: Авторизация агента.
  • AgentCallbackLogin: Авторизация агента с обратным вызовом.
  • AGENT: Получить информацию об агенте.
  • QUEUEAGENTCOUNT: Получить число агентов обрабатывающих очередь вызовов в данный момент.
  • QUEUE_MEMBER_COUNT: Возвращает число участников, которые заняты обработкой вызова из очереди.
  • QUEUE_MEMBER_LIST: Возвращает список интерфейсов, принимающих вызовы из очереди.

Команды CLI консоли

  • show agents: Показывает агентов.
  • show queues: Выводит список очередей вызовов.
  • show queue : Показывает данные указанной очереди вызовов.

Конфигурация

  • файл agents.conf: Конфигурация агентов для обработки очередей вызовов.
  • файл queues.conf: Конфигурация очередей вызовов.

Ссылки по теме:

  • Asterisk call parking
  • Asterisk Realtime Queue
  • Asterisk agents: Дополнительная информация об агентах, обрабатывающих очередь.
  • Asterisk Queue Callback — Let your callers hangup while waiting for an agent without losing their place in line
  • OrderlyQ — Extension to Asterisk Queues that lets callers hang up, then call back without losing their place.
  • Statistics that would be useful to add to this application: http://lists.digium.com/pipermail/asterisk-users/2003-July/014965.html
  • Список команд плана набора
  • Asterisk
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: