В целях оптимизации расходов на телефонию была предпринята попытка перейти на один многоканальный телефон для офиса. Задумка такая - пользователь звонит на номер телефона, там ему говорят на какие отделы можно переключиться, пользователь переключается - звонят все телефоны в отделе разом - кто первый взял - тот и говорит с пользователем.
Задача:
Сделать голосовое меню на номере компании.
Алгоритм меню следующий:
Дано:Главное меню:
1) поднимаю трубку
2) проигрывается сообщение меню
3) жду 7 сек
4) проигрывается еще раз тот же текст
5) жду 7 сек
6) увожу звонок на секретаря
Во всё это время - почти 2 минуты - можно набрать цифру от 0 до 9 и переключиться на меню отдела
или же можно нажать * что бы прослушать заново или нажать # для выхода из всего этого безобразия.
Меню отдела:
1) проигрывается сообщение меню отдела
2) жду 7 секунд
3) увожу звонок на главное голосовое меню
Во всё это время можно нажать * что бы прослушать заново или нажать # для выхода в главное меню
Прямой звонок:
Осуществляется как обычный звонок по общим правилам АТС
Групповой звонок:
Все телефоны группы звонят 600 сек, после чего звонок уходит в главное меню. Во время звонка группы нажатие клавиш игнорируются. Пользователь слышит не гудок, а мелодию.
1) Некий номер 88001112233
2) IP PBX Asterisk 13
Реализация:
Что бы не путаться в конфигах сделаем для меню свой отдельный файлик
Код: Выделить всё
touch menu.conf
Код: Выделить всё
#include "menu.conf"
Код: Выделить всё
[menu8800]
exten => s,1,Answer()
exten => s,n,Background(/usr/local/etc/asterisk/audio/8800/menu);
exten => s,n,WaitExten(7)
exten => s,n,Background(/usr/local/etc/asterisk/audio/8800/menu);
exten => s,n,WaitExten(7)
exten => t,1,Macro(stdexten,1755,SIP/1755)
exten => 1,1,Goto(menu8800td,s,1)
exten => 2,1,Goto(menu8800sb,s,1)
exten => 3,1,Goto(menu8800you,s,1)
exten => 4,1,Goto(menu8800tech,s,1)
exten => 5,1,Goto(menu8800zakup,s,1)
exten => 6,1,Goto(menu8800kfc,s,1)
exten => 7,1,Goto(menu8800priem,s,1)
exten => 8,1,Goto(menu8800ved,s,1)
exten => 9,1,Goto(menu8800audit,s,1)
exten => 0,1,Goto(menu8800ekonom,s,1)
exten => *,1,Goto(,s,2)
exten => #,1,Hangup()
Что происходит при звонке:
1) поднимается трубка
2) начинает фоном проигрываться файл menu в котором нам рассказывают какая цифра в какой отдел переключит.
3) в это время можно нажать цифру и вас перекинут в другое меню - меню отдела.
Меню отдела находится тут же ниже - давайте посмотрим на него
Код: Выделить всё
[menu8800tech]
exten => s,1,Background(/usr/local/etc/asterisk/audio/8800/tech);
exten => s,n,WaitExten(7)
exten => t,1,Goto(menu8800,s,1)
exten => 1,1,Queue(techkap,,,,600)
exten => 2,1,Queue(techen,,,,600)
exten => 3,1,Queue(techek,,,,600)
exten => 4,1,Macro(stdexten,1766,SIP/1766)
exten => *,1,Goto(,s,1)
exten => #,1,Goto(menu8800,s,1)
1) опять же проигрываем файл с меню отдела
2) при нажатии на 1-3 - звонок уходит на группу телефонов отдела
3) при нажатии 4 звонок уходит на один конкретный телефон
4) # - вернет вас в главное меню
5) если ничего не нажать - вас опять же выкинут в главное меню
Теперь надо создать группу телефонов - для этого правим файл queues.conf
Код: Выделить всё
[techek]
strategy = ringall
timeout = 10
retry = 1
member => SIP/1761
member => SIP/1762
member => SIP/1763
ringall - звонят все телефоны группы