[Freeswitch-users] Lua playAndGetDigits

Michael Collins msc at freeswitch.org
Tue Mar 16 14:00:12 PDT 2010


On Tue, Mar 16, 2010 at 1:21 PM, Michael De Lorenzo <
delorenzodesign at gmail.com> wrote:

> I'm having some trouble getting consistent results with playAndGetDigits,
> sometimes the digits are record and other times they're not.  It seemed to
> have something to do with how quickly the digits were pressed, but now that
> no longer seems to be the case.
>
> I'm trying to have users press a confirmation code, in this case "1111"
> although I'd like to make it accept "1" or "11" or "111" or "1111" if
> possible.
>
> Can anyone point me in the right direction?
>
>
>     session = freeswitch.Session("{ignore_early_media=true}sofia/gateway/"
> .. provider .. "/1" .. number_to_call);
>
>     while(session:ready()) do
>        session:answer();
>        session:setInputCallback("onInput","true");
>
>        --playbackMessage(check_message);
>        digits = session:playAndGetDigits(4, 4, 1, 5000, "",
> get_digits_message, "", "[1]");
>

You are specifying a minimum of four and a maximum of four digits. Also,
your regex will match any string that has a digit 1 in it, which may or may
not be what you are looking for. Lastly, you haven't specified a terminator
key (like "#") but you are giving the user only one try and waiting 5000ms
for the entry. Try something like this:

digits = session:playAndGetDigits(1, 4, 1, 5000, "#", get_digits_message,
"", "\\d+");

Let us know if that works. Oh, one other thing: you might want to add an
invalid message because playAndGetDigits will handle invalid input for you.
-MC

P.S. - This topic is covered in greater detail in Chapter 7 of the upcoming
FreeSWITCH book. ;)



>        freeswitch.consoleLog("info", digits .. "\n");
>        freeswitch.consoleLog("info", "Did this check out? " ..
> (check_message == true and "yes" or "no" .. "\n"));
>
>        -- we got what we're looking for, so we can end this
>        if(check_success) then
>           freeswitch.consoleLog("info", "A positive response was received
> from this check.\n");
>           break;
>        else
>           -- not a positive response
>           -- if we reached our max attempts, we're finished move on
>           if(attempts == max_attempts) then
>             freeswitch.consoleLog("info", "We've reached our maximum
> attempts for this number.\n");
>             break;
>           end
>        end
>     end
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20100316/06aaa35a/attachment-0002.html 


More information about the FreeSWITCH-users mailing list