[Freeswitch-users] Using Variables in Dialplans

Michael Collins msc at freeswitch.org
Wed Apr 22 13:09:53 PDT 2009


On Wed, Apr 22, 2009 at 12:19 PM, Chris Fowler <chris at fowler.cc> wrote:

> I have the following defined:
>
>    <!-- Billing Open? -->
>    <extension name="billing_open" continue="true">
>      <!-- man strftime - M-F, 9AM to 5PM -->
>      <condition field="${strftime(%w)}" expression="^([1-5])$"/>
>      <condition field="${strftime(%H%M)}"
> expression="^((09|1[0-6])[0-5][0-9]|1700)$">
>        <action application="set" data="billingopen=true"/>
>      </condition>
>    </extension>
>
>
>    <!-- billing line -->
>    <extension name="billing">
>      <condition field="destination_number" expression="^billing$|^2001$"/>
>      <condition field="billingopen" expression="^true$">
>      <...>
>
>
> But despite the "Billing Open" ext firing correctly:
>        Action set(billingopen=true)
>
> The Billing extenstion fails to get the data:
>        Regex (FAIL) [billing] billingopen() =~ /^true$/ break=on-false
>
> Please could someone point me in the right direction for using variables
> correctly in a dialplan?  I must be missing something simple...
>
> Thanks, Chris.
>

This is a classic case of "dialplan is parsed all at once." The reason that
it is failing is because ${billingopen} is not defined when the extension
named "billing" is parsed. You need another pass through the dialplan, for
example by adding a transfer app to your "billing_open" extension:

<!-- Billing Open? -->
  <extension name="billing_open" continue="true">
  <!-- man strftime - M-F, 9AM to 5PM -->
     <condition field="${strftime(%w)}" expression="^([1-5])$"/>
     <condition field="${strftime(%H%M)}" expression="^((09|1[0-6])[0-5]
       <action application="set" data="billingopen=true"/>
*       <action application="transfer" data="billing"/>
*     </condition>
   </extension>

This will send the call back through the dialplan and into the "billing"
extension, this time with the value of ${billing_open} == "true" so you can
now work with it. The originally dialed number is now available in the
${rdnis} channel variable in case you need it.

Have fun and let us know how it goes.
-MC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20090422/263e7037/attachment-0002.html 


More information about the FreeSWITCH-users mailing list