[asterisk-speech-rec] Grammar Question
Kevin Bednar
kevin at k2kmb.org
Wed Apr 21 18:37:05 CDT 2010
Stephen,
Is there a way to have a grammar stop accepting further input and
return immediately after X number of characters? Like using the digits
grammar and making it return right away after 4 digits instead of
waiting for the timeout value? Thanks.
Kevin
Stephen Keller wrote:
>> The speech engine does not handle DTMF, Asterisk does that. The following code handles yes/no both verbally and DTMF:
>>
>
> Actually, a better way to do this is to just build your grammar such that it returns a number, that way you can handle both cases with the same logic in the dialplan.
>
> So let's say you used the following yes/no grammar:
>
> root $yesno;
> $yesno = ($yes | $no) {out=rules.latest()};
> $yes = (yes [please] | yeah | yup) {out="1"};
> $no = (no [thanks] | nope) {out="2"};
>
> Assuming your prompt says "Say 'yes' or press 1, or say 'no' and press 2" then the dialplan can be:
>
> exten => s,1,Set(SPEECH_DTMF_MAXLEN=1) ; Set max # DTMF digits to accept per transaction
> exten => s,n,SpeechCreate
> exten => s,n,SpeechLoadGrammar(yesno,pathtoyesnogrammar)
> exten => s,n,SpeechActivateGrammar(yesno)
> exten => s,n,SpeechBackground(is-this-john-smith|5) ; Ask your question and wait 5 sec for reply
> exten => s,n,SpeechDeactivateGrammar(yesno)
> exten => s,n,GotoIf($["${SPEECH_TEXT(0)}" = "0"]?oper) ; caller pressed "0" - go to Operator handler (not shown)
> exten => s,n,GotoIf($["${SPEECH_TEXT(0)}" = "1"]?score) ; caller pressed "1" or said "yes"
> exten => s,n,GotoIf($["${SPEECH_TEXT(0)}" = "2"]?score) ; caller pressed "2" or said "no"
> exten => s,n,Goto(invalid) ; unexpected response - go to retry logic (not shown)
> exten => s,n(score),GotoIf($[${SPEECH_SCORE(0)} > 650]?proceed) ; if speech engine was 65+% confident then accept response (not shown)
> exten => s,n,Goto(nocomp) ; confidence too low - go to "didn't understand" logic (not shown)
>
> Obviously both cases will work, but it can be a good idea to always get in the habit of normalizing your speech and DTMF outputs, such that you don't need to know which was used.
>
> Thanks,
>
> Stephen Keller
> Project Manager
> LumenVox
> P: 1-877-977-0707 - just say, "Support"
> P: +1-858-707-7700
> F: +1-858-707-7072
> support at LumenVox.com
> www.LumenVox.com
>
>
>
>
More information about the asterisk-speech-rec
mailing list