On Wed, Apr 22, 2009 at 12:19 PM, Chris Fowler <chris@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