0

我有一个 twilio trail 帐号。我想知道跟踪帐户是否禁用了语音识别功能。

我尝试使用 Gather 动词来捕捉语音。但它不起作用。

谢谢!

4

1 回答 1

0

Twilio 开发人员布道者在这里。

我认为这里的问题是,<Gather>如果呼叫者在通话期间开始讲话,则无法听到呼叫者的声音<Say>

您共享的代码中的 TwiML 看起来有点像这样:

<Response>
  <Say>Welcome to Twilio, please tell us why you're calling</Say>
  <Gather input="speech" timeout="5" action="https://f2b4fbc1.ngrok.io/asr/test"></Gather>
</Response>

因此,<Gather>只有在<Say>完成后才开始收听。

相反,您应该将嵌套<Say>在 中<Gather>以使 TwiML 像这样:

<Response>
  <Gather input="speech" timeout="5" action="https://f2b4fbc1.ngrok.io/asr/test">
    <Say>Welcome to Twilio, please tell us why you're calling</Say>
  </Gather>
</Response>

此代码应如下所示:

Say say = new Say.Builder("Welcome to Twilio, please tell us why you're calling").build();  
Gather gather = new Gather.Builder().input(Gather.Input.SPEECH).timeout(5).action("https://f2b4fbc1.ngrok.io/asr/test").say(say).build();       
VoiceResponse response = new VoiceResponse.Builder().gather(gather).build();

让我知道这是否有帮助。

[编辑]

我还认为您需要在返回 XML 时设置内容类型。我不是 Spring/Java 开发人员,但我认为您需要更改以下内容

@RequestMapping(method = RequestMethod.POST, value = "/recordTheSpeech", produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<String> recordTheSpeech() throws IOException {
    Say say = new Say.Builder("Welcome to Twilio, please tell us why you're calling").build();
    Gather gather = new Gather.Builder().input(Gather.Input.SPEECH).timeout(5).action("https://f2b4fbc1.ngrok.io/asr/test").say(say).build();
    VoiceResponse response = new VoiceResponse.Builder().gather(gather).build();

    return new ResponseEntity.ok().body(response.toXml());
}
于 2018-04-30T04:15:45.677 回答