Прервать bridge

100 views
Skip to first unread message

alexeyme...@gmail.com

unread,
Jul 20, 2015, 7:07:46 AM7/20/15
to freesw...@googlegroups.com
     <action application="set"                    data="hangup_after_bridge=false"           />
     
<action application="set"                    data="continue_on_fail=true"               />
     
<action application="bind_digit_action"      data="ext,*1,????????"                     />
     
<action application="digit_action_set_realm" data="ext"                                 />
     
<action application="bridge"                 data="user/101@$${domain}|user/102@$${domain}"/>


Вопрос в том каким образом возможно остановить выполнение приложения bridge независимо от того было ли соединение или нет.
Пока использую uuid_kill и перед bridge устанавливаю origination_uuid но это не работает если в bridge более одного таргета.
FusionPBX устанавливает переадресации через dialstring для пользователя поэтому даже user/101@$${domain} может содержать несколько адресов.

ros tel

unread,
Jul 20, 2015, 7:11:14 AM7/20/15
to freesw...@googlegroups.com, alexeyme...@gmail.com
хотите сказать что uuid_kill по uuid A-leg не работает?

понедельник, 20 июля 2015 г., 16:07:46 UTC+5 пользователь alexeyme...@gmail.com написал:

alexeyme...@gmail.com

unread,
Jul 20, 2015, 7:20:14 AM7/20/15
to freesw...@googlegroups.com, alexeyme...@gmail.com
Мне нужно оставить A-Leg. Мне нужно прекратить bridge (закрыть все B-Leg) и продолжить выполнение dialplan.


понедельник, 20 июля 2015 г., 15:11:14 UTC+4 пользователь ros tel написал:

ros tel

unread,
Jul 20, 2015, 7:23:01 AM7/20/15
to freesw...@googlegroups.com, alexeyme...@gmail.com
зачем оставлять возможность выставить переадресацию, если её нужно прерывать?
таймаут на соединение не подходит?

понедельник, 20 июля 2015 г., 16:20:14 UTC+5 пользователь alexeyme...@gmail.com написал:

alexeyme...@gmail.com

unread,
Jul 20, 2015, 7:35:04 AM7/20/15
to freesw...@googlegroups.com, alexeyme...@gmail.com
Я пытаюсь реализовать что то вроде перевода звонка и мне нужно реализовать поведение как при `origination_cancel_key`.
Т.е. два абонента разговаривают. Оди из них набирает `*4` и переходит в режим набора номера. далее набирает номер и идет bridge.
Если абонент передумал разговаривать с этим номером и хочет набрать другой номер он должен просто набрать `*#` и вернутся в режим набора номера.
Если это происходит после CallStart то можно использовать uuid_kill с ${signal_bond}, а вот что делать если это происходит до?


понедельник, 20 июля 2015 г., 15:23:01 UTC+4 пользователь ros tel написал:

ros tel

unread,
Jul 20, 2015, 7:50:30 AM7/20/15
to freesw...@googlegroups.com, alexeyme...@gmail.com
ничего кроме генерации параметров bridge скриптом с выставление origination_uuid на каждое плечо чeрез [] в голову не приходит
origination_uuid конкатенируются и сохраняются в переменную А-leg, по *4 дергаются оттуда другим скриптом разбираются и прибиваются в цикле с помощью uuid_kill

понедельник, 20 июля 2015 г., 16:35:04 UTC+5 пользователь alexeyme...@gmail.com написал:

alexeyme...@gmail.com

unread,
Jul 20, 2015, 7:56:15 AM7/20/15
to freesw...@googlegroups.com, alexeyme...@gmail.com

Для этого нужно еще парсить dialstring.
А если просто сделать transfer A-Leg?
Сейчас попробую.

понедельник, 20 июля 2015 г., 15:50:30 UTC+4 пользователь ros tel написал:

alexeyme...@gmail.com

unread,
Jul 20, 2015, 8:30:10 AM7/20/15
to freesw...@googlegroups.com
transfer вроде подходитб но возникла проблема. Не работает `exec` в `bind_digit_action`
т.е.
`transfer,*4,api:uuid_transfer,${uuid} xfer_enter_number XML ${domain_name}` - работает
`transfer,*4,exec:transfer,page_enter_number XML ${domain_name}` - не работает

Для другого DTMF я должен выполнить что-то типа `*0,api:uuid_transfer,${signal_bond} xfer_enter_to XML ${context}`
Но это не работает т.к. ${signal_bond} не подставляется (подставляется на этапе ROUTING а в этот момент он еще не определен).
Выход как я понял делать `*0,api:lua,do_xfer.lua xfer_enter_to XML ${context}`?




понедельник, 20 июля 2015 г., 15:56:15 UTC+4 пользователь alexeyme...@gmail.com написал:

alexeyme...@gmail.com

unread,
Jul 20, 2015, 9:48:05 AM7/20/15
to freesw...@googlegroups.com
Может кому интересно будет. сделал сброс через Lua

local sql = ("select uuid from channels where call_uuid='%s' and uuid<>'%s'"):format(uuid, uuid)
dbh
:query(sql, function(row)
 
local res = api:executeString("uuid_kill " .. row.uuid)
end)



понедельник, 20 июля 2015 г., 16:30:10 UTC+4 пользователь alexeyme...@gmail.com написал:

alexeyme...@gmail.com

unread,
Jul 27, 2015, 7:08:40 AM7/27/15
to freeswitch-ru, alexeyme...@gmail.com
Продолжаю.

Проблема с этим решением в том что оно работает только если bridge уже создал все каналы. 
Но если есть канал с `dalay_start` то он создается не сразу, а с задержкой.
Точно работает только `transfer` но я не могу его использовать, т.к. канал находится в конференции с флагом `end_conference=true`, а transfer
выкидывает канал из конференции и закрывает ее.
На буржуйском маил-листе так же полная тишина на май вопрос.

понедельник, 20 июля 2015 г., 17:48:05 UTC+4 пользователь alexeyme...@gmail.com написал:
Reply all
Reply to author
Forward
0 new messages