set the console log level to 7. Then you can see the DTMF values in console log , while you are pressing the keys.

Lloyd

On Tue, Mar 16, 2010 at 8:23 PM, Michael De Lorenzo <delorenzodesign@gmail.com> wrote:
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@freeswitch.org> wrote:


On Tue, Mar 16, 2010 at 1:21 PM, Michael De Lorenzo <delorenzodesign@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@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