Loop XML using call_timeout ..
Hi, Is it possible to loop a bridge until a global call timeout (or other variable) is reached? In the wiki is this example is a fixed number of loops... <extension name="3-way gateway distro"> <condition field="destination_number" expression="^(.*)$"> <action application="set" data="continue_on_fail=true"/> <action application="set" data="hangup_after_bridge=true"/> <action application="bridge" data="sofia/gateway/${distributor(3gw)}/$1" loop="3"/> </condition> </extension> My idea is to call a group sequential, but once it reaches the last member it starts over again. so when calling a group, once the timeout for each user in the group is reach it hangups the call (the normal behavior), it jumps again to the begin of the group until a global timeout is reached. For example: <extension name="group"> <condition field="destination_number" expression="^(.*)$"> <action application="set" data="continue_on_fail=true"/> <action application="set" data="hangup_after_bridge=true"/> <action application="set" data="call_timeout=60"/> <action application="set" data="leg_timeout=10"/> <action application="bridge" data=""${group_call(group1@default+F)}" loop="3"/> </condition> </extension> In my group i have two members only. -- Un cordial saludo / Best regards, _________________________ António Silva E-mail:asilva@wirelessmundi.com
Did you figure this out yet? Not sure exactly what you're trying to do here, but you could use the sched_hangup API and schedule a hangup or sched_transfer to schedule a transfer to a specific dialplan extension that does your cleanup work. <action application="set" data="api_res=${sched_transfer +60 ${uuid} handle_timeout XML handlers}"/> Then something like this for the dp <context name="handlers"> <extension name="handle loop timeouts"> <condition field="destination_number" expression="^handle_timeout$"> <action application="log" data="INFO OB call timed out..."/> <action application="foo" data="bar"/> <!-- do something useful --> <action application="hangup" data="pick_a_hangup_cause_if_you_wish"/> </condition> </extensions> </context> -MC On Thu, Oct 13, 2011 at 10:09 AM, Antonio <asilva@wirelessmundi.com> wrote:
**
Hi,
Is it possible to loop a bridge until a global call timeout (or other variable) is reached?
In the wiki is this example is a fixed number of loops...
<extension name="3-way gateway distro">
<condition field="destination_number" expression="^(.*)$"> <action application="set" data="continue_on_fail=true"/> <action application="set" data="hangup_after_bridge=true"/> <action application="bridge" data="sofia/gateway/${distributor(3gw)}/$1" loop="3"/> </condition> </extension>
My idea is to call a group sequential, but once it reaches the last member it starts over again. so when calling a group, once the timeout for each user in the group is reach it hangups the call (the normal behavior), it jumps again to the begin of the group until a global timeout is reached.
For example:
<extension name="group"> <condition field="destination_number" expression="^(.*)$"> <action application="set" data="continue_on_fail=true"/> <action application="set" data="hangup_after_bridge=true"/> <action application="set" data="call_timeout=60"/> <action application="set" data="leg_timeout=10"/> <action application="bridge" data=""${group_call(group1@default+F)}" loop="3"/> </condition> </extension>
In my group i have two members only.
--
Un cordial saludo / Best regards,
_________________________
António Silva
E-mail:asilva@wirelessmundi.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Yes, a decide to do a lua script for this task. What I'm doing is a group call that loops all the members until a global timeout is reached. Is the code: call_timeout = session:getVariable("call_timeout") or 60 timestamp_a = os.time() -- while the call is not answered while session:answered()==false do -- dial the group session:setVariable("call_timeout", call_timeout) session:execute("bridge","\${group_call(two@default+F)}") -- bridge state if (session:ready() == false) then break end if (session:hangupState()) then break end -- check global time, and remove the used amount of time already used in the call timestamp_b = os.time() sec = timestamp_b - timestamp_a timestamp_a = timestamp_b call_timeout = call_timeout - sec if (call_timeout <= 0) then session:setVariable("originate_disposition", "ALLOTTED_TIMEOUT") debug.info("GROUP: CALL TIMEOUT!") break end end On Mon, 2011-10-17 at 13:12 -0700, Michael Collins wrote:
Did you figure this out yet? Not sure exactly what you're trying to do here, but you could use the sched_hangup API and schedule a hangup or sched_transfer to schedule a transfer to a specific dialplan extension that does your cleanup work.
<action application="set" data="api_res=${sched_transfer +60 ${uuid} handle_timeout XML handlers}"/>
Then something like this for the dp
<context name="handlers"> <extension name="handle loop timeouts">
<condition field="destination_number" expression="^handle_timeout $"> <action application="log" data="INFO OB call timed out..."/> <action application="foo" data="bar"/> <!-- do something useful --> <action application="hangup" data="pick_a_hangup_cause_if_you_wish"/> </condition> </extensions> </context>
-MC
On Thu, Oct 13, 2011 at 10:09 AM, Antonio <asilva@wirelessmundi.com> wrote:
Hi,
Is it possible to loop a bridge until a global call timeout (or other variable) is reached?
In the wiki is this example is a fixed number of loops...
<extension name="3-way gateway distro">
<condition field="destination_number" expression="^(.*)$"> <action application="set" data="continue_on_fail=true"/> <action application="set" data="hangup_after_bridge=true"/> <action application="bridge" data="sofia/gateway/${distributor(3gw)}/$1" loop="3"/> </condition> </extension>
My idea is to call a group sequential, but once it reaches the last member it starts over again. so when calling a group, once the timeout for each user in the group is reach it hangups the call (the normal behavior), it jumps again to the begin of the group until a global timeout is reached.
For example:
<extension name="group"> <condition field="destination_number" expression="^(.*)$"> <action application="set" data="continue_on_fail=true"/> <action application="set" data="hangup_after_bridge=true"/> <action application="set" data="call_timeout=60"/> <action application="set" data="leg_timeout=10"/> <action application="bridge" data=""${group_call(group1@default+F)}" loop="3"/> </condition> </extension>
In my group i have two members only.
--
Un cordial saludo / Best regards,
_________________________
António Silva
E-mail:asilva@wirelessmundi.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
-- Un cordial saludo / Best regards, _________________________ António Silva E-mail:asilva@wirelessmundi.com
participants (2)
-
Antonio
-
Michael Collins