Комментарии 8
Оч интересно, по больше таких реализаций. Спасибо за статью не могу голосовать пока нет кармы ))
Еще один трюк покажу, может знаете, но все же:
Здеся, когда кого-то набираем, указиваем опцию: «M(callanswered)», это макро которое тригернеться српазу перед тем когда делаеться бридж:
Здесь, мы делаем ориджинейт, одна нога пойдет в bargein, который врежеться в звонок, вторая нога, проиграет файл:
Здесь просто врезаемся в звонок:
Таким образом сразу после соединения, оба услышат одно и тоже сообщение. Это на половину псевдокод, так что нуждаеться в правках для вашей ситуации.
Здеся, когда кого-то набираем, указиваем опцию: «M(callanswered)», это макро которое тригернеться српазу перед тем когда делаеться бридж:
[from-inside]
exten => _X.,1,Noop(DIALING OUT)
same => n,Set(__CALLEE=${MACRO_EXTEN})
same => n,Dial(SIP/${MACRO_EXTEN}@TrunkOut,50,M(callanswered))
Здесь, мы делаем ориджинейт, одна нога пойдет в bargein, который врежеться в звонок, вторая нога, проиграет файл:
[macro-callanswered]
exten => s,1,Noop(${CALLEE} answered the call)
same => n,Originate(Local/${CALLEE}@bargein,app,Playback,/var/lib/asterisk/sounds/AllCallsRec)
Здесь просто врезаемся в звонок:
[bargein]
exten => _X.,1,Noop(PLAY MUSIC THROUGH CHANSPY)
same => n,Answer()
same => n,ChanSpy(SIP/${EXTEN},BEq)
same => n,Hangup()
Таким образом сразу после соединения, оба услышат одно и тоже сообщение. Это на половину псевдокод, так что нуждаеться в правках для вашей ситуации.
Однако, действительно не знал такого трюка. Да и выглядит он чуть более громоздко, но позже постараюсь проверить его работу.
У меня выход из Dial не происходит, а переход в макрос в собственно, команде Dial() приводил к отбою вызывающего абонента. Плюс, информация по собственно, переброске вызова в макрос несколько противоречива — каналы фактически хоть и соединены, но канал вызывающего попадает в контекст с приоритетом N, а канал вызываемого — N+1. Но у меня воспроизвести не удалось, или мешали другие звонки.
Позже постараюсь проверить и дополнить статью. Спасибо =)
У меня выход из Dial не происходит, а переход в макрос в собственно, команде Dial() приводил к отбою вызывающего абонента. Плюс, информация по собственно, переброске вызова в макрос несколько противоречива — каналы фактически хоть и соединены, но канал вызывающего попадает в контекст с приоритетом N, а канал вызываемого — N+1. Но у меня воспроизвести не удалось, или мешали другие звонки.
Позже постараюсь проверить и дополнить статью. Спасибо =)
Вот бы еще такой скрипт, который уведомляет абонента, звонящего в call-центр, что оператор соизволил оторваться от вконтакта и ответить на звонок. :-\ Обычно это происходит минут через 20-30.
И чтобы он работал без наличия Asterisk, просто на смартфоне.
И чтобы он работал без наличия Asterisk, просто на смартфоне.
Это называется en.wikipedia.org/wiki/Virtual_queue, теоретически удобная штука, хотя почему-то ни разу не встречал на практике
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Asterisk: Автоинформирование вызываемого абонента перед соединением с оператором