[Freeswitch-users] Lua playAndGetDigits

Michael De Lorenzo delorenzodesign at gmail.com
Tue Mar 16 17:23:27 PDT 2010


So I tried Michael's suggestion of:

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

but it still didn't detect that I had pressed any keys.  What would cause
this?  Is there someplace I can check to see if anything at all is being
detected?


On Tue, Mar 16, 2010 at 5:00 PM, Michael Collins <msc at freeswitch.org> wrote:

>
>
> 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
>>
>>
>
> _______________________________________________
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20100316/1f7053c4/attachment-0002.html 


More information about the FreeSWITCH-users mailing list