VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Вклинивание в разговор при автоматическом оповещении

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
alex_nevsky
Сообщения: 1
Зарегистрирован: 25 июл 2012, 17:20

Вклинивание в разговор при автоматическом оповещении

Сообщение alex_nevsky »

Asterisk 1.8.11.0+LinkSys SPA-2102

Стояла задача: обеспечить возможность вклиниться в разговор абонентов "A" и "B", абоненту "С". Вклинивание в разговор должно обеспечить возможность общения абонента "С" с абонетом "А", даже при условии, что абонент "В" повесил трубку.
Дополнительным требованием также являлась организация приоритетов: допустим после абонента "С" звонит абонент "D" (у которого в свою очередь более высокий приоритет) и он тогда должен вклиниться в разговор абонентов "С" и "А" по аналогии с предыдущим.

Поскольку опыта написания и подключения скриптов нет, задачу я реализовывал засчет стандартных приложений.
"А" - абонент с №100
"С" - абонент с №911

exten => 100,1,Answer()
exten => 100,n,Dial(SIP/${EXTEN},30)
exten => 100,n,GotoIF($[${GROUP_COUNT(${EXTEN}@busy_in)} > 0 ]?number_is_busy)
exten => 100,n,GotoIF($[${GROUP_COUNT(${EXTEN}@busy_out)} > 0 ]?number_is_busy)
exten => 100,n(number_is_busy),Goto(Context_1,100,11)
exten => 100,11,GotoIf($[${CALLERID(num)} =911]?22:33)
exten => 100,22,Bridge(SIP/100)
exten => 100,33,Hangup()

По такому сценарию (без приоритетов) задача выполнялась.
Но потребовалось, чтобы схема также отрабатывала и при проведении автоматического оповещения абонентов. Например, если абонент с кем-нибудь общается, но было запущено автоматичсекое оповещение, то он в любом случае должен быть оповещен, чего не происходит.

Оповещаю посредством *.call файлов следующим образом:

[Notification] ;сценарий на запуск оповещения
exten = 555,1,GotoIf($[${CALLERID(num)} = 911]?10:20)
exten => 555,10,Goto(Notification1,s,1)
exten => 555,20,Hungup()

[Notification1] ;Исполнительный сценарий для осуществления оповещения
exten => s,1,Answer
exten => s,n,System(cp /etc/asterisk/warning/*.call /tmp/)
exten => s,n,System(mv /tmp/*.call /var/spool/asterisk/outgoing/)
exten => s,n,Hangup()

*.call файл, лежащий в папке "warning"

Channel: SIP/100
Callerid:922
MaxRetries: 3
RetryTime: 30
WaitTime:30
Context: Opoveshenie
Extension: 10
Priority: 1

[Opoveshenie] ; контекст в соответствии, с которым проводилось оповещение
exten => 10,1,Answer(30)
exten => 10,n,Wait(1)
exten => 10,n,Playback(/var/lib/asterisk/sounds/ru/vsem_na_palubu)
exten => 10,n,Hangup()

Так как контекст “Opoveshenie” будет запускаться только в случае успешного соединения с абонетом 100, я для реализации задачи "оповещения в любом случае" немного видоизменил контекст к следующему виду:

exten => 100,1,Answer()
exten => 100,n,Dial(SIP/${EXTEN},30)
exten => 100,n,GotoIF($[${GROUP_COUNT(${EXTEN}@busy_in)} > 0 ]?number_is_busy)
exten => 100,n,GotoIF($[${GROUP_COUNT(${EXTEN}@busy_out)} > 0 ]?number_is_busy)
exten => 100,n(number_is_busy),Goto(Context_1,100,11)
exten => 100,11,GotoIf($[${CALLERID(num)} =911]?33:21)
exten => 100,21,GotoIf($[${CALLERID(num)} =922]?33:44)
exten => 100,33,Bridge(SIP/100)
exten => 100,44,Hangup()

Но, асткриск все равно дает отбой и произвести оповещение при занятом канале не получается.
Подскажите, плиз, возможные пути к решению данной проблемы.
ys1797
Сообщения: 240
Зарегистрирован: 28 июн 2011, 17:59

Re: Вклинивание в разговор при автоматическом оповещении

Сообщение ys1797 »

Покурить chanSpy и/или https://wiki.asterisk.org/wiki/display/ ... ion_Bridge

А это что:
exten => 100,33,Bridge(SIP/100)
?
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH