我有一个Twilio Trail帐号。我想知道跟踪帐户是否禁用语音识别功能。
我试图使用收集动词捕获语音。但它行不通。
谢谢!
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>
完成才能开始聆听。
相反,您应该在<Gather>
中嵌套<Say>
,以使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();
让我知道这是否有帮助。
[edit]
我还相信,返回XML时,您需要设置内容类型。我不是春季/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());
}