gpt4 book ai didi

java - twilio:无法获得转录

转载 作者:行者123 更新时间:2023-12-02 05:54:49 25 4
gpt4 key购买 nike

我正在使用 twilio 创建一项服务,用户可以在其中调用电话并留言。然后服务读取该消息的转录以执行一些不相关的处理。

我遇到的问题是我无法从任何地方成功检索该转录。我几乎可以肯定这是因为我不明白如何使用 setTranscribeCallback() 方法,但我找不到如何使用它的明确示例。

这是我的类,它开始通话录音,然后在用户完成后,将其传递给另一个类进行处理。 (我的服务器的IP地址已删除)

public class TwilioVoice extends HttpServlet {

private static final long serialVersionUID = 1L;

public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException {

TwiMLResponse twiml = new TwiMLResponse();

Record record = new Record();


record.setMaxLength(20);
record.setTranscribe(true);
record.setTranscribeCallback("http://ip/handle-recording");
record.setAction("http://ip/handle-recording");


try {
twiml.append(new Say("Please state your address"));
twiml.append(record);
} catch (TwiMLException e) {
e.printStackTrace();
}

response.setContentType("application/xml");
response.getWriter().print(twiml.toXML());
}

这是实际处理转录的类。目前,我只是将用户所说的内容重复给他们。

public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException {


String text = request.getParameter("TranscriptionText");
TwiMLResponse twiml = new TwiMLResponse();


try {
twiml.append(new Say(text));
twiml.append(new Say("Goodbye"));

} catch (TwiMLException e) {
e.printStackTrace();
}

response.setContentType("application/xml");
response.getWriter().print(twiml.toXML());
}

我还尝试使用其 sid 获取转录,但每当我尝试此方法时,都会收到错误,因为我使用的 TranscriptionSid 为空。

public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException {

String transcriptionSid = request.getParameter("TranscriptionSid");
TwiMLResponse twiml = new TwiMLResponse();
Transcription transcript = null;
String text;

try {
transcript = getTranscript(transcriptionSid );
} catch (TwilioRestException e1) {
e1.printStackTrace();
}

if (transcript != null) {
text = transcript.getTranscriptionText();
} else {
text = "NO GO!";
}

try {
twiml.append(new Say(text));
twiml.append(new Say("Goodbye"));

} catch (TwiMLException e) {
e.printStackTrace();
}

response.setContentType("application/xml");
response.getWriter().print(twiml.toXML());
}

private Transcription getTranscript(String sid) throws TwilioRestException {
TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

return client.getAccount().getTranscription(sid);

}

我知道我的 web.xml 文件设置正确,因为我可以成功播放录音。如果有人可以提供任何帮助,我将非常感激。谢谢!

最佳答案

I don't understand how to use the setTranscribeCallback() method.

来自TwiML <Record> docs (强调我的):

The 'transcribeCallback' attribute…allows you to specify a URL to which Twilio will make an asynchronous POST request when the transcription is complete. This…request will contain…'TranscriptionSid'.

这与 action 不同当录制完成时完成的参数,因为转录是由 Twilio 基础设施内的不同进程处理的。

来自您的record.setTranscribeCallback("http://ip/handle-recording");线,看起来大部分位都已正确连接。如果POST请求 /handle-recording被路由到您的实际处理转录的类(您的第二个片段),我不知道为什么转录将为空。

<小时/>

[T]here are no clear examples of how to use it that I could find.

official Java tutorial对于自动调查,使用 <Record>动词的setTranscribeCallback()方法(source)

关于java - twilio:无法获得转录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com