Добрый день. Прошу помочь в следующей проблеме. Есть очередь:
[callcenter]
strategy = ringall
member => SIP/4005
member => SIP/4008
Необходимо чтобы после поднятие трубки любым оператором из очереди, проигрывалось приветствие, например оператор Иван Иванов. При данном способе описания очереди правила для номеров из extensions.conf не работают. Пробовал сделать следующее описание очереди:
[callcenter]
strategy = ringall
member => local/4008@from-callcenter,1
member => local/4005@from-callcenter,1
В данном случае используется контекст from-callcenter из конфига extensions.conf:
[from-callcenter]
exten => 4005,1,Answer()
exten => 4005,n,Wait(1)
exten => 4005,n,Set(LIMIT_PLAYAUDIO_CALLER=yes)
exten => 4005,n,Set(LIMIT_PLAYAUDIO_CALLEE=no)
exten => 4005,n,Set(LIMIT_CONNECT_FILE=/var/lib/asterisk/sounds/test1)
exten => 4005,n,Dial(SIP/${EXTEN},8,TtL(10000000000000)))
exten => 4005,n,Hangup()
exten => 4008,1,Answer()
exten => 4008,n,Wait(1)
exten => 4008,n,Set(LIMIT_PLAYAUDIO_CALLER=yes)
exten => 4008,n,Set(LIMIT_PLAYAUDIO_CALLEE=no)
exten => 4008,n,Set(LIMIT_CONNECT_FILE=/var/lib/asterisk/sounds/test2)
exten => 4008,n,Dial(SIP/${EXTEN},8,TtL(10000000000000)))
exten => 4008,n,Hangup()
При такой записи приветствие используется на номере 4005, 4008 сразу завершается. Т.е. вызов идет на один номер. Прошу подсказать, как реализовать сабж.
Answer уберите. Переменных LIMITPLAYAUDIOCALLER=yes и LIMITPLAYAUDIOCALLEE=no и так имеют данные значения по умолчанию. Зачем повторно их присваивать?
Анонс звонящему играется простым проигрыванием через Playback.
Анонс оператору играется через определение announceoverride в
Queue(queuename[,options[,URL][,announceoverride][,timeout][,AGI][,macro][,gosub][,rule])
Я так понял, тому кто звонит. Если во FreePBX - то в экстеншене оператора нажимаете Add Follow Me, а там задаёте звуковой файл приветствия. Тогда когда на этот экстеншн поступает вызов - сначала вызывающему играется приветствие, а потом идёт вызов у оператора
Может проще обязать операторов представляться в начале разговора? Это в принципе нормальная практика и хороший тон.
Но если уж все равно нужна техническая реализация, то Playback перед Dial вам не поможет. Даже с опцией noanswer. Т.к. сообщение будет проигрываться при каждом вызове оператора из очереди.
Нужно из контекста from-callcenter вызывать Dial с опцией:
G([[context^]exten^]priority): If the call is answered, transfer
the calling party to the specified <priority> and the called party to
the specified <priority> plus one.
NOTE: You cannot use any additional action post answer options in
conjunction with this option.
И далее их объединять через MeetMe() или Bridge()...
Хм, пожалуй через опцию L тоже можно и так будет проще. Облажался мой кунгфу :)
asteriskguru (Mar 24 '12)editесли вы решили делать через L(что возиожно в приницпе), то делать надо так
ставить
LIMIT_WARNING_FILE - File to play as warning if 'y' is defined. If LIMIT_WARNING_FILE is not defined, then the default behaviour is to announce ("You have [XX minutes] YY seconds").
и вот так
L(36000000:25999000)
тоесть ограничение 10 часов. за 9 часов 59 минут 59 секунда до конца предупредить(тоесть через секунду после старта).
да,так работает. почему так? я не понял в коде) багов вроде нету.
Задан: Mar 23 '12
Просмотрен: 2,563 раз
Обновлен: Mar 24 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Кому приветствие нужно играть?
zzuz (Mar 23 '12)edit