[Freeswitch-dev] taking a decision upon session:playAndGetDigits returns

Anthony Minessale anthony.minessale at gmail.com
Tue Nov 3 12:40:36 PST 2009


We have such a variable called "read_result"
possible vals: success, timeout, failure

"read_terminator_used" contains the terminator


On Tue, Nov 3, 2009 at 2:20 PM, Peter Volchek <pvolchek at voicemobility.com>wrote:

> Hi,
> I am having some troubles adopting [session:playAndGetDigits] function
> to my application needs.
>
> There are three possible outcomes that the function should report on:
> 1. Success. The required number of of digits was collected and they
> match the mask.
> 2. Fail 1.The entered digits do not match the mask
> 3. Fail2. Timeout failure
>
> Right now, I cannot distinguish between 2 & 3. In both cases, an empty
> string is returned, so I have no idea what was the real failure.
>
> 4. Success upon termination
> That is a tricky one, and I believe, there is a bug in this function.
> This function accept the terminators, which should stop digits collection.
> Consider the following function call:
>
> digits = session:playAndGetDigits(
>    0, 5, 1, 3000, "#",
>    "enter_mailbox_number_or_hit_pound_to_login.wav",
>    "error.wav",
>    "\\d*"
>    );
>
>
> Here, I want to collect up to 5 digits, that represent a mailbox number.
> Note that I set the minimum value to be 0, as I want "#" itself to be
> the sign, that I want to login to my system.
> However, when I execute this code and hit "#" immediately, the system
> play me an error message. Oops! Well, I changed my digits mask to be
> "#", and it did not help either.
> BTW, about the last case. If I my digits mask contains the symbol used
> in the terminators, then it has to be collected and returned. The
> current implementation just uses terminates the collection and does not
> include the terminator to the returned string.
>
> Possible solutions to determine the function's outcome:
> 1. Return multiple values (state, digits). That may break tons of the
> existing code
> 2. Set a channel (or session) variable. Similar to C's errno and define
> some variables defining the outcome. Below is a summary table that
> covers all the cases:
>
> ------------------------------------------------------
> ERRNO       | Description
> ------------------------------------------------------
> RET_OK      | Maximum number of digits was collected or
>            | terminated when in range [min_digits..max_digits-1]
>            | or timeout triggered after collecting enough digits
> [min_digits..max_digits-1].
>            | The collected digits match digits_regex
>            | Returns the collected digits
>
> RET_TERM    | Terminating before collecting enough digits or when
>            | the collected digits do not match digits_regex
>            | Return whatever was collected (for logging)
>
>
> RET_TIMEOUT | Did not collect enough digits for the time specified or when
>            | the collected digits do not match digits_regex
>            | Return whatever was collected (for logging)
>
>
> Does it all make sense?
> Cheers,
> PV
>
>
>
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
>



-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_minessale at hotmail.com <MSN%3Aanthony_minessale at hotmail.com>
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com<PAYPAL%3Aanthony.minessale at gmail.com>
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org <sip%3A888 at conference.freeswitch.org>
iax:guest at conference.freeswitch.org/888
googletalk:conf+888 at conference.freeswitch.org<googletalk%3Aconf%2B888 at conference.freeswitch.org>
pstn:213-799-1400
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20091103/b85ea5b1/attachment.html 


More information about the FreeSWITCH-dev mailing list