[Freeswitch-users] Combining AND and ELSE in freeswitch conditions

Michael Collins msc at freeswitch.org
Wed Jul 27 00:37:59 MSD 2011


Hi Alex,

Welcome to FreeSWITCH! We're glad you are here. As to your question, this is
common for new ones. Don't worry - once you get all the pieces together you
will appreciate the power of the XML dialplan.

The key to doing AND logic is to "stack" conditions. However, your situation
is a bit more complex because you are checking 3 different values in
addition to the destination phone number. In this case I would create a
special dialplan extension whose job it is to determine if the bank is open
or closed, and set a channel variable. Then, use that channel variable in a
second extension:

<!-- This extension sets the chan var ${bank_open} to "false" by default -->
<extension name="Determine if bank is open" continue="true">
  <condition>
    <!-- this is an "absolute" condition - it will always be true, so this
action will always take place -->
    <action application="set" data="bank_open=false" inline="true"/>
  </condition>
  <condition field="wday" expression="2-5"/>
  <condition field="${bank_holiday}" expression="false"/>
  <condition field="hour" expression"x-y">
    <!-- this action only gets set if all 3 conditions above evaluate to
true -->
    <action application="set" data="bank_open=true" inline="true"/>
  </condition>
</extension>

Okay, so now you have ${bank_open} that will be true or false. It's just a
matter of routing now:
<extension name="Determine if bank is open" continue="true">
  <condition field="destination_number" expression="^1?\d{10}$"
break="never"/>
  <condition field="${bank_open}" expression="true">
    <action application="transfer" data="ivr_destination"/>
    <anti-action application="transfer" data="vm_destination"/>
  </condition>
</extension>

There is one catch here: At some point you have to define the variable
${bank_holiday} for this to work. :)

I hope this makes sense. Also, this topic is covered in detail in chapters 5
and 8 of the FreeSWITCH book that we wrote, so you may wish to acquire that.
Let us know if you run into any trouble putting this into action.

-MC

On Tue, Jul 26, 2011 at 4:50 AM, Alex Lake <alex at digitalmail.com> wrote:

> Hello all, I'm a Freeswitch newbie struggling to get my head around the
> best way to do some TOD/BH routing.
> I've got a LUA script that will work out whether or not we're in a bank
> holiday, but I wanted to do the combinatorial logic within Freeswitch
> dial plan.
>
> Something like:
>
> if (Weekday AND (NOT BankHoliday) AND InWorkingHours) {
>     Transfer to mainIVR
> } else {
>     Transfer to voicemail
> }
>
> What is the most elegant way to achieve this?
> The Wiki pages don't appear to explain how one can do ANDs with ELSE, as
> the anti-action will only get executed if it's only the last condition
> that fails.
>
> Thanks!
>
>
>
>
> _______________________________________________
> Join us at ClueCon 2011, Aug 9-11, Chicago
> http://www.cluecon.com 877-7-4ACLUE
>
> 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/20110726/b8ad6848/attachment-0001.html 


More information about the FreeSWITCH-users mailing list