[Freeswitch-users] how to set different action for different cause code

Michael Collins msc at freeswitch.org
Wed Aug 19 09:36:01 PDT 2009


On Tue, Aug 18, 2009 at 9:23 AM, Woody Dickson <woodydickson at gmail.com>wrote:

> Hi,
>
> I have my dialplan to do some simple routing. What I need to do is when
> certain hangup code is received, route advance to the next or the route
> after next based on the hangup code received.
>
> So, I have:
>
> <condition>
>    <action application="set" data="hangup_after_bridge=true"/>
>    <action application="set" data="continue_on_fail="false"/>
>    <action application="bridge" data="sofia/internal/aaa at 123.3.3./>
>    <action application="bridge" data="sofia/internal/bbb at 123.3.3./>
>    <action application="bridge" data="sofia/internal/ccc at 123.3.3./>
>    <action application="bridge" data="sofia/internal/ddd at 123.3.3./>
>
> </condition>
>
> What I want to do is that based on the error code received from ( bridge to
> aaa), it can route to either bbb or ccc depends on the hangup code received
> from aaa.
>
> So there anyway to do it in the dialplan without any scripting?


Yes, you can use the result of the previous bridge to execute a transfer.
You'd need to use the hangup cause as the transfer destination, or part of
the destination. For example, you could try something like this:

   <action application="set" data="hangup_after_bridge=true"/>
   <action application="set" data="continue_on_fail="false"/>
   <action application="bridge" data="sofia/internal/aaa at 123.3.3./>
   <action application="transfer" data="${hangup_cause}_AAA XML default"/>
...

And then have an extension for each of the various hangup_causes
<extension name="normal clearing">
  <condition field="destination_number"
expression="^(normal_clearing_AAA)$">
    <!-- Do whatever you want for "normal clearing" bridged calls -->
  </condition>
</extension>

<extension name="user busy">
  <condition field="destination_number" expression="^(user_busy_AAA)$">
    <!-- Do whatever you want for "user busy" bridged calls -->
  </condition>
</extension>

<extension name="no answer">
  <condition field="destination_number" expression="^(no_answer_AAA)$">
    <!-- Do whatever you want for "no answer" bridged calls -->
  </condition>
</extension>

Etc., etc.

I don't claim it's pretty, but it would let you avoid the use of scripting
languages. However, I would caution you to examine just why you want/need to
avoid scripting langs. The dp-only method may indeed be best for you, or
perhaps using mod_xml_curl would be better. It does depend on your specific
needs and your environment.

-MC


>
> thannks,
> woody
>
>
>
>
>
> On Mon, Aug 17, 2009 at 11:59 PM, Michael Collins <msc at freeswitch.org>wrote:
>
>>
>>
>> On Sun, Aug 16, 2009 at 4:24 AM, Woody Dickson <woodydickson at gmail.com>wrote:
>>
>>> Hello,
>>>
>>> I find hangup_hook, but I would like to define different actions for
>>> different hangup codes.  Is there anyway to do that?
>>>
>>>
>>
>> I can think of at least two ways you could do this: one that uses only the
>> dialplan and one that uses a script. If you don't mind using a scripting
>> language then you can make it very clean:
>>
>> <action application="set" data="api_hangup_hook=luarun chancleanup.lua
>> ${hangup_cause}"/>
>>
>> Then have your Lua script handle all the if-then-else or case stuff.
>>
>> Question: are you trying to transfer the a-leg to some other destination
>> if the b-leg hangup is a specific cause, or are you just doing some external
>> cleanup stuff? Just curious...
>>
>> -MC
>>
>>
>>> Woody
>>>
>>> _______________________________________________
>>> FreeSWITCH-users mailing list
>>> FreeSWITCH-users at 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 at 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 at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20090819/b00252af/attachment-0001.html 


More information about the FreeSWITCH-users mailing list