2017-09-12 1 views
0

Ich benutze Twilio Voice Gather verb zu sammeln user speech Antworten auf einige Fragen. Gibt es eine Möglichkeit, die Wartezeit vor dem Aufruf der Aktions-URL zu verkürzen? Gemäß meinen Tests scheint das Standardverhalten mehr als 6 Sekunden zu warten, nachdem bei jedem Gather-Anruf Stille festgestellt wurde.Verkürzen Sie die Wartezeit nach dem Schweigen mit Twilio Spracherkennung

var gather = new Gather(input: "speech", action: GetActionUrl(), language: Constants.Language, method: "POST", bargeIn: true, speechTimeout: 3, timeout: 3, partialResultCallback: "/RealTimeVoice", partialResultCallbackMethod: "GET"); 
gather.Say(promptMessage, language: Constants.Language, voice: Constants.Voice); 
response.Gather(gather); 
response.Redirect(GetRedirectUrl()); 
return TwiML(response, System.Text.Encoding.UTF8); 
+0

Können Sie Code anzeigen? Verwenden Sie einfaches TWIML oder eine Lib? –

+0

Ich benutze Twilio für asp.net mvc, diese App ist mit einer Twilio-Nummer mit Webhooks verbunden. Dies ist das Code-Snippet: 'var sammeln = new Gather (Eingabe:" Rede ", Aktion: GetActionUrl(), Sprache: Constants.Language, Methode:" POST ", bargeIn: true, SpeechTimeout: 3, Timeout: 3, partialResultCallback: "/ RealTimeVoice", partiallyResultCallbackMethod: "GET"); gather.Say (promptMessage, Sprache: Constants.Language, voice: Constants.Voice); response.Gather (sammeln); Antwort.Redirect (GetRedirectUrl()); zurück TwiML (Antwort, System.Text.Encoding.UTF8); ' –

+0

Ich würde versuchen," SpeechTimeout "vollständig zu entfernen und" Timeout "anpassen, weil es für beide dtmf und Sprache gelten soll. Auch ein anderer Versuch 'SpeechTimeout:" auto "' und sehen, wie das geht. –

Antwort

0

Twilio Entwickler Evangelist hier.

Sobald die Zeitüberschreitung erreicht ist, muss Twilio die Live-Aufzeichnung verwenden, um das Endergebnis zu generieren, das an Ihre action URL gesendet wird. Sie haben derzeit die speechTimeout auf 3 Sekunden festgelegt, so dass es später eine etwas größere Verzögerung geben wird, um das Endergebnis zu erhalten und die Anfrage an Ihre URL zu stellen.

Wie Alex in den Kommentaren vorgeschlagen hat, könnten Sie versuchen, speechTimeout: 'auto', die darauf trainiert ist, Lücken in der Sprache zu erkennen und dann einreichen.

Alternativ stelle ich fest, dass Sie auch partialResultCallback eingestellt haben. Dies kann nützlich sein, um den Anruf zu unterbrechen, sobald Sie das gewünschte Ergebnis haben, ohne auf das Endergebnis zu warten. Wenn Sie das Ergebnis, das Sie suchen, erkennen, können Sie das REST API to redirect the call zu dem nächsten verwenden, was Sie tun müssen, anstatt zu warten.

Lassen Sie mich wissen, ob das überhaupt hilft.

+0

Scheint so, als gäbe es einen SDK-Bug, weil der "speechTimeOut" auf einen int-Typ-Parameter wartet, so dass ich den String 'auto' nicht setzen kann: S. Ich habe versucht, die TimeOut-Attribute zu entfernen, aber dadurch dauert die Wartezeit und ein Wert von weniger als 3 Sekunden geben dem Benutzer nicht genug Zeit, um die Fragen zu beantworten. Das Problem ist nicht die Zeit, die es für eine Antwort ist, das Problem ist die Zeit, die es wartet, nachdem Benutzer eine Antwort gibt. –

+0

Das hört sich nach einem SDK-Fehler an, ich sehe, Sie haben das Problem auf GitHub angesprochen, ich werde versuchen, das so schnell wie möglich durchzusetzen. Wenn Sie beide Zeitüberschreitungsattribute entfernen, werden standardmäßig 5 Sekunden verwendet, weshalb dies länger dauern würde. – philnash

Verwandte Themen