我正在努力将当前的 Twilio Java SDK 客户端从版本 6.x 升级到版本 7.x 。 我遇到的问题之一是检索录音的输入流。 下面是我拥有的代码的 6.x 版本示例,但无法找到一种方法来检索 7.x 版本中记录的 InputStream 。 (当前为 7.0.0-rc10) 您能否指导我做错了什么?
代码片段版本=“6.x”
public InputStream retrieveRecording(String recordingSid) {
Recording recordingToRetrieve = new Recording(twilioRestClient, recordingSid);
recordingToRetrieve.setRequestAccountSid("xxxxxxxxx");
return recordingToRetrieve.getMedia(".mp3");
}
代码片段版本=“7.x”
public InputStream retrieveRecording(String recordingSid) {
Recording recordingToRetrieve = Recording.fetch("xxxxxxxxx", recordingSid).execute();
//How do I get the mp3 media as an Input stream ?
}
最佳答案
不幸的是,目前 Twilio SDK V7 7.0.0-rc-10 中没有简单的方法来检索用于录制的输入流,理想情况下应该将其内置到 SDK 中,但与此同时,以下是我解决此问题的方法检索下载的问题
private InputStream retrieveRecording(String accountSid, String authToken, String recordingSid) {
Twilio.init(accountSid, authToken);
Recording recordingToRetrieve = Recording.fetch(accountSid, recordingSid).execute();
String uri = recordingToRetrieve.getUri();
String mp3Uri = uri.replace(".json", ".mp3");
Request request = new Request(
HttpMethod.GET,
TwilioRestClient.Domains.API,
mp3Uri,
accountSid);
Response mp3response = Twilio.getRestClient().request(request);
if (mp3response == null) {
throw new ApiConnectionException("Recording media fetch failed: Unable to connect to server");
} else if (!TwilioRestClient.SUCCESS.apply(mp3response.getStatusCode())) {
RestException restException = RestException.fromJson(mp3response.getStream(), Twilio.getRestClient().getObjectMapper());
if (restException == null) {
throw new ApiException("Server Error, no content");
}
throw new ApiException(
restException.getMessage(),
restException.getCode(),
restException.getMoreInfo(),
restException.getStatus(),
null);
}
return mp3response.getStream();
}
关于java - 使用 Twilio Java Sdk v7.x 将 Twilio Recording 下载为输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44038512/