[asterisk-users] prob with star input agi-bin

Tzafrir Cohen tzafrir.cohen at xorcom.com
Mon Aug 14 07:55:37 MST 2006


On Mon, Aug 14, 2006 at 10:31:30AM -0400, shawn bright wrote:
> lo there,
> i am running a python agi script that gets a DTMF number from the user
> and passes it back to the script. 

Any reason you're not using Read for this?

> It works fine with numbers, but if they
> enter a star (*), it doesn't want to play.

Could you please provide a trace of the run?

> Is there a difference in how this is handled?
> here is the snippit:
> 
> def getNumber (sound, gTimeLimit, digit_count):
>    """
>    the asterisk function GET DATA
>    (filename, timeout, maxdigits)
>    plays audiofile filename,
>    gets DTMF digits
>    up to timeout or max digits
>    """
>    digit_count = int(digit_count)
>    time_limit = int(gTimeLimit)
>    sys.stderr.write("GET DATA %s %d %d\n" % (sound, time_limit,
> digit_count))
>    sys.stderr.flush()
>    sys.stdout.write("GET DATA %s %d %d\n" % (sound, time_limit,
> digit_count))
>    sys.stdout.flush()
>    result = sys.stdin.readline().strip()
>    result = checkResult(result)
>    if result:
>        return result
>    else:
>        sys.stderr.write('dead result from IVR')
>        return 'error'
> 
> def checkResult(params):
>    """
>    reads the result of an asterisk command
>    parses the answer and reports
>    whether or not the command is successful
>    """
>    params = params.rstrip()
>    if re.search('^200',params):

Just a hunch:

How is '*' considered in a regular expression?

>        result = re.search('result=(\d+)', params)
>        if (not result):
>            sys.stderr.write("FAIL ('%s')\n" % params)
>            sys.stderr.flush()
>            return -1
>        else:
>            result = result.group(1)
>            sys.stderr.write('PASS (%s)\n' % result)
>            sys.stderr.flush()
>            return result
>    else:
>        sys.stderr.write("FAIL (unexpected result '%s')\n" % params)
>        sys.stderr.flush()
>        return -2
> 
> menu_result = getNumber('menu', 5000, 1)
> 
> any idea where i may be missing something here ?
> some of the code is from an example app that i found on the internet.
> There is something in this code ( i suppose ) that limits me from getting
> anything but an integer as a response from here
> 
> if you have read this far, thanks for your time.
> 
> shawn

> _______________________________________________
> --Bandwidth and Colocation provided by Easynews.com --
> 
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users


-- 
Tzafrir Cohen         sip:tzafrir at local.xorcom.com
icq#16849755          iax:tzafrir at local.xorcom.com
+972-50-7952406          jabber:tzafrir at jabber.org
tzafrir.cohen at xorcom.com     http://www.xorcom.com



More information about the asterisk-users mailing list