[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