Мне приходится работать в организации, которая помимо других сфер деятельности, также является и Интернет-провайдером. Как и у любого провайдера у нас бывают проблемы на сети. В таком случае, в саппорт сразу поступает большое количество звонков, и чтобы сообщить абонентам, что их проблема известна, над ее решением уже работают, был использован нехитрый набор действий. Суть в том, что в диалплан скриптом вставляется строчки, которые запускают проигрывание файла сообщающего о проблеме, при устранении проблемы, так же скриптом строчка убирается.
Диалплан:
Контекст сервисного номера:
.................................
[internal]
exten = 7934,1,Goto(Problem_ISP,s,1)
.................................
[Problem_ISP]
exten => s,1,NoOp(- Problem_ISP -)
exten => s,n,Authenticate(8725)
exten => s,n(service),Background(problem_ISP) ;тут голосовое меню - типа если есть проблема нажмите "1", если нет проблемы, и надо вернуть как было прежде нажмите "2"
exten => s,n,WaitExten(5)
exten => 1,1,System(/home/change/change.sh) ;скрипт меняющий диалплан
exten => 2,1,System(/home/change/unchange.sh) ;скрипт убирающий изменения
exten => t,1,Hungup()
.................................
Диалплан:
Контекст сервисного номера:
.................................
[internal]
exten = 7934,1,Goto(Problem_ISP,s,1)
.................................
[Problem_ISP]
exten => s,1,NoOp(- Problem_ISP -)
exten => s,n,Authenticate(8725)
exten => s,n(service),Background(problem_ISP) ;тут голосовое меню - типа если есть проблема нажмите "1", если нет проблемы, и надо вернуть как было прежде нажмите "2"
exten => s,n,WaitExten(5)
exten => 1,1,System(/home/change/change.sh) ;скрипт меняющий диалплан
exten => 2,1,System(/home/change/unchange.sh) ;скрипт убирающий изменения
exten => t,1,Hungup()
.................................
Сами скрипты:
change.sh
#!/bin/bash
sed -i 's/exten => i,1,Playback(please_wait_on_line2)/exten => i,1,Playback(problem)/g' /etc/asterisk/extensions.conf
sed -i 's/exten => t,1,Playback(please_wait_on_line2)/exten => t,1,Playback(problem)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 1,1,Playback(please_wait_on_line2)/exten = 1,1,Playback(problem)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 2,1,Playback(please_wait_on_line2)/exten = 2,1,Playback(problem)/g' /etc/asterisk/extensions.conf
/usr/sbin/asterisk -rx 'dialplan reload'
unchange.sh
#!/bin/bash
sed -i 's/exten => i,1,Playback(problem)/exten => i,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
sed -i 's/exten => t,1,Playback(problem)/exten => t,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 1,1,Playback(problem)/exten = 1,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 2,1,Playback(problem)/exten = 2,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
/usr/sbin/asterisk -rx 'dialplan reload'
ну и выставим права:
cd /home/change
chown asterisk:asterisk change.sh
chown asterisk:asterisk unchange.sh
chmod 755 change.sh
chmod 755 unchange.sh
cd /home/change
chown asterisk:asterisk change.sh
chown asterisk:asterisk unchange.sh
chmod 755 change.sh
chmod 755 unchange.sh
Самое главное, не забыть вернуть все как было после устранения проблемы.
Впрочем, можно добавить задание в крон на определенное время возвращающее диалплан дефолт.
Комментариев нет:
Отправить комментарий