Книга: ELASTIX – общайтесь свободно
Назад: Отключение зависших соединений
Дальше: Использование PoE, VLAN, QOS

Автоматическое восстановление подключений к внешним линиям

Система Elastix позволяет изменять настройки коммуникаций на лету, даже без разрыва текущих соединений. Это очень удобно, но иногда приводит к блокировке входящей связи, если после применения обновленных настроек Asterisk не удается установить заново соединения с Внешними линиями (Trunks). Чтобы быть уверенным, что станция компании осталась на связи с внешним миром, желательно после применения изменений переходить в меню PBX \ Tools и проверять состояние Внешних линий (Trunks) командой:
sip show registry

 

 

Корректное состояние внешних линий – «Registered»:
Если же Asterisk не удалось восстановить внешние подключения, состояние всех или части линий будет «Unregistered»:

 

 

Для повторения попытки установить соединения следует выполнить команду, которая не прерывая текущих разговоров, применит изменения повторно:
sip reload
В случае, если это не помогло, придется перезапустить ядро Asterisk, что на пару минут прервет связь (как текущие соединения, так и все новые попытки входящих и исходящих звонков):
core restart now
По этой причине, желательно применять внесенные в настройки изменения во внерабочие часы компании, чтобы не оставлять клиентов и сотрудников без связи.

Автоматическое восстановление внешних подключений

В динамичной компании порой приходится вносить изменения в Elastix в течение дня, даже по нескольку раз. Временами, ответственные за изменения сотрудники, забывают проверить восстановление внешних подключений. Но можно эту работу автоматизировать, поручив серверу Elastix проверять состояние соединений самостоятельно. Для этого достаточно подключиться к Elastix под пользователем «root», создать небольшой скрипт:
mkdir /root/tasks
nano /root/tasks/check-unreg.sh
следующего содержания:
#!/bin/bash
CountReg=$(asterisk – rx "sip show registry" | grep – c 'Registered')
CountUnreg=$(asterisk – rx "sip show registry" | grep – c 'Unregistered')
if [$CountReg – le 1]; then
asterisk – rx "module reload chan_sip"
if (test "$1" = "second"); then
service asterisk restart
fi
fi
затем назначить исполнение созданного скрипта:
crontab – e
добавлением к списку задач время выполнения перезагрузки без разрыва связи (с параметром «first») и время перезагрузки с разрывом связи (с параметром «second»), на случай, если иначе восстановить связь не получилось, например, в 05:15 и 06:15 соответственно:
15 5 * * * /bin/bash /root/tasks/check-unreg.sh first
15 6 * * * /bin/bash /root/tasks/check-unreg.sh second
Подсказка: для перехода в режим редактирования используйте «i». Для сохранения изменений нажмите «ESC», затем «:wq».
Назад: Отключение зависших соединений
Дальше: Использование PoE, VLAN, QOS