我正在尝试开发使用Alexa语音服务的android应用程序,此刻,我能够获得AVS的访问令牌,还可以创建用于记录音频的媒体播放器,并将其转换为字节数组。问题是当将请求发送到Alexa时,我得到204代码。如何克服这一点。先感谢您。
public void sendAudio() { final MultipartBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("metadata","metadata", RequestBody.create(MEDIA_JSON, generateSpeechMetadata())) .addFormDataPart("audio", "audiorecordtest.pcm", RequestBody.create(MEDIA_TYPE_AUDIO, streamToSend)) .build();
Request request = new Request.Builder()
.addHeader("Authorization","Bearer "+accestoken)
.post(requestBody)
.url("https://alexa.na.gateway.devices.a2z.com/v20160207/events")
.build();
System.out.println("REQUEST BODY :"+ request.body().toString());
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
call.cancel();
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
final String myResponse = response.body().string();
System.out.println("STATUS CODE"+ response.code());
if (response.code() == HttpURLConnection.HTTP_NO_CONTENT){
System.out.println("Successfull! No Content");
}
else{
System.out.println("Successfull! have Content" +response.body().toString());
}
}
});
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您的场景中,您收到HTTP 204响应代码,这表示服务器已成功处理请求,但不需要返回任何实体内容。对于Alexa Voice Service (AVS)而言,这意味着您的音频数据可能已经被正确接收和处理,但是没有特定的响应内容需要返回给您。
要解决或理解这个问题,请考虑以下几个方面:
检查音频格式和编码:确保您的音频数据是按照AVS的要求进行录制和编码的。AVS通常要求音频为16kHz采样率、16位精度的单声道PCM编码。请确认streamToSend
变量中的音频数据符合这些标准。
元数据验证:您发送的元数据是否完全符合AVS的期望?generateSpeechMetadata()
方法生成的元数据应包含正确的会话信息、用户ID以及其他AVS要求的字段。请仔细检查这部分内容是否正确无误。
日志和调试信息:虽然HTTP 204表明请求被接受,但为了深入了解为何没有更多响应内容,查看Alexa开发者控制台上的日志记录和诊断信息非常关键。这可以帮助您识别是否有其他错误或警告与您的请求相关联。
权限和令牌有效性:尽管您已经添加了访问令牌,但请确保该令牌是有效的,并且具有向AVS发送音频请求所需的全部权限。偶尔刷新令牌并重新测试也是一个好习惯。
网络问题:虽然不太可能直接导致204响应,但检查网络连接的稳定性和安全性也是排除问题的一个步骤。确保没有防火墙或代理设置阻止了完整的通信流程。
官方文档和示例:再次回顾Alexa Voice Service的官方开发文档和提供的示例代码,确认您的实现细节与推荐的最佳实践保持一致。有时候,小的差异也可能导致不同的结果。
如果以上所有检查都未能解决问题,建议直接咨询Alexa开发者支持或者在Alexa开发者论坛上发帖寻求帮助,那里可能会有遇到过类似问题的开发者能提供更具体的指导。