validating dtmf digits received
Hi! I simply want to validate the dtmf digits I read from a user. From the wiki, it appears I need to use inline="true" when setting the variable so it can be used directly within the same extension. What have I done wrong below? I have tried many different alternatives, but the second condition field, which is meant to match the dtmf digits received (in this case 0000) is never matched, and the anti-action is called instead. : <some code here> <action application="read" data="1 10 ivr/ivr-please_enter_pin_followed_by_pound.wav res 10000 9"/> <action application="phrase" data="spell,${res}"/> <action inline="true" application="set" data="code=${digits_dialed}"/> <!-- <action inline="true" application="set" data="code=${res}"/> --> </condition> <condition field="digits_dialed" expression="^0000$"> <!-- <condition field="${code}" expression="^0000$"> --> <!-- <condition field="${res}" expression="^0000$"> --> <some code here> <anti-action application="hangup"/> Thanks!
inline is new, it won't work unless your using recent trunk. That being said, read is not being run inline, so the set is actually being run before digits_dialed is set. You will most likely need to use transfer in this situation. Mike On Oct 19, 2009, at 12:53 AM, Mark Campbell-Smith wrote:
Hi!
I simply want to validate the dtmf digits I read from a user. From the wiki, it appears I need to use inline="true" when setting the variable so it can be used directly within the same extension.
What have I done wrong below? I have tried many different alternatives, but the second condition field, which is meant to match the dtmf digits received (in this case 0000) is never matched, and the anti-action is called instead.
: <some code here> <action application="read" data="1 10 ivr/ivr-please_enter_pin_followed_by_pound.wav res 10000 9"/> <action application="phrase" data="spell,${res}"/> <action inline="true" application="set" data="code=$ {digits_dialed}"/> <!-- <action inline="true" application="set" data="code=$ {res}"/> --> </condition> <condition field="digits_dialed" expression="^0000$"> <!-- <condition field="${code}" expression="^0000$"> --> <!-- <condition field="${res}" expression="^0000$"> --> <some code here> <anti-action application="hangup"/>
Thanks!
_______________________________________________ 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
Thanks Mike, I have a lateish trunk and inline seems to work okay. Does the inline statement below set variable ${code} to be used directly or does it require transfer also? ie is digits_dialed available for use right after a read statement (<action application="read" data="1 10 ivr/ivr-please_enter_pin_followed_by_pound.wav res 10000 9"/> in my case) or is it not 'set' until after the transfer? <action inline="true" application="set" data="code=${digits_dialed} Thanks! On Tue, Oct 20, 2009 at 12:32 AM, Michael Jerris <mike@jerris.com> wrote:
inline is new, it won't work unless your using recent trunk. That being said, read is not being run inline, so the set is actually being run before digits_dialed is set. You will most likely need to use transfer in this situation.
Mike
On Oct 19, 2009, at 12:53 AM, Mark Campbell-Smith wrote:
Hi!
I simply want to validate the dtmf digits I read from a user. From the wiki, it appears I need to use inline="true" when setting the variable so it can be used directly within the same extension.
What have I done wrong below? I have tried many different alternatives, but the second condition field, which is meant to match the dtmf digits received (in this case 0000) is never matched, and the anti-action is called instead.
: <some code here> <action application="read" data="1 10 ivr/ivr-please_enter_pin_followed_by_pound.wav res 10000 9"/> <action application="phrase" data="spell,${res}"/> <action inline="true" application="set" data="code=$ {digits_dialed}"/> <!-- <action inline="true" application="set" data="code=$ {res}"/> --> </condition> <condition field="digits_dialed" expression="^0000$"> <!-- <condition field="${code}" expression="^0000$"> --> <!-- <condition field="${res}" expression="^0000$"> --> <some code here> <anti-action application="hangup"/>
Thanks!
_______________________________________________ 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
inline is run when the dialplan in parsed, everything else is run later. So read sets digits dialed after it is finished parsing the dialplan, if you transfer to another extensions after the read you can then condition on that value. Mike On Oct 19, 2009, at 5:40 PM, Mark Campbell-Smith wrote:
Thanks Mike,
I have a lateish trunk and inline seems to work okay.
Does the inline statement below set variable ${code} to be used directly or does it require transfer also? ie is digits_dialed available for use right after a read statement (<action application="read" data="1 10 ivr/ivr-please_enter_pin_followed_by_pound.wav res 10000 9"/> in my case) or is it not 'set' until after the transfer?
<action inline="true" application="set" data="code=$ {digits_dialed}
Thanks!
On Tue, Oct 20, 2009 at 12:32 AM, Michael Jerris <mike@jerris.com> wrote:
inline is new, it won't work unless your using recent trunk. That being said, read is not being run inline, so the set is actually being run before digits_dialed is set. You will most likely need to use transfer in this situation.
Mike
On Oct 19, 2009, at 12:53 AM, Mark Campbell-Smith wrote:
Hi!
I simply want to validate the dtmf digits I read from a user. From the wiki, it appears I need to use inline="true" when setting the variable so it can be used directly within the same extension.
What have I done wrong below? I have tried many different alternatives, but the second condition field, which is meant to match the dtmf digits received (in this case 0000) is never matched, and the anti-action is called instead.
: <some code here> <action application="read" data="1 10 ivr/ivr-please_enter_pin_followed_by_pound.wav res 10000 9"/> <action application="phrase" data="spell,${res}"/> <action inline="true" application="set" data="code=$ {digits_dialed}"/> <!-- <action inline="true" application="set" data="code=$ {res}"/> --> </condition> <condition field="digits_dialed" expression="^0000$"> <!-- <condition field="${code}" expression="^0000$"> --> <!-- <condition field="${res}" expression="^0000$"> --> <some code here> <anti-action application="hangup"/>
Thanks!
_______________________________________________ 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
_______________________________________________ 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
participants (2)
-
Mark Campbell-Smith
-
Michael Jerris