Pull to refresh

Comments 8

Оч интересно, по больше таких реализаций. Спасибо за статью не могу голосовать пока нет кармы ))
У меня аналогичная ситуация.
На то, чтобы собрать такой материал ушло без малого 2 дня. Не скажу, что постоянно копался на форумах — тогда бы собрал всё быстрее. Приходилось экспериментировать с рабочим сервером, в том числе.
Еще один трюк покажу, может знаете, но все же:

Здеся, когда кого-то набираем, указиваем опцию: «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. Но у меня воспроизвести не удалось, или мешали другие звонки.

Позже постараюсь проверить и дополнить статью. Спасибо =)
Опция: «M(callanswered)», запускает макро отдельно, так сказать в отдельном треде. и не влияет например на продолжение исполнения «дайлплана» в контексте from-inside, но в нем буду доступны «inherited variables», с канала который это тригернул.
Вот бы еще такой скрипт, который уведомляет абонента, звонящего в call-центр, что оператор соизволил оторваться от вконтакта и ответить на звонок. :-\ Обычно это происходит минут через 20-30.

И чтобы он работал без наличия Asterisk, просто на смартфоне.
Мы реализовывали такое для Vicidial и для астериска реализовать можно при отключении пользователя оставив канал в queue и при соединении с оператором подключить к вызову звонившего.
Sign up to leave a comment.

Articles