开发者社区 问答 正文

如何在Android Java中发送请求并获得Alexa语音服务的响应?

我正在尝试开发使用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());

            }


        }
    });
}

展开
收起
被纵养的懒猫 2019-10-08 17:14:19 479 分享 版权
阿里云 AI 助理回答

在您的场景中,您收到HTTP 204响应代码,这表示服务器已成功处理请求,但不需要返回任何实体内容。对于Alexa Voice Service (AVS)而言,这意味着您的音频数据可能已经被正确接收和处理,但是没有特定的响应内容需要返回给您。

要解决或理解这个问题,请考虑以下几个方面:

  1. 检查音频格式和编码:确保您的音频数据是按照AVS的要求进行录制和编码的。AVS通常要求音频为16kHz采样率、16位精度的单声道PCM编码。请确认streamToSend变量中的音频数据符合这些标准。

  2. 元数据验证:您发送的元数据是否完全符合AVS的期望?generateSpeechMetadata()方法生成的元数据应包含正确的会话信息、用户ID以及其他AVS要求的字段。请仔细检查这部分内容是否正确无误。

  3. 日志和调试信息:虽然HTTP 204表明请求被接受,但为了深入了解为何没有更多响应内容,查看Alexa开发者控制台上的日志记录和诊断信息非常关键。这可以帮助您识别是否有其他错误或警告与您的请求相关联。

  4. 权限和令牌有效性:尽管您已经添加了访问令牌,但请确保该令牌是有效的,并且具有向AVS发送音频请求所需的全部权限。偶尔刷新令牌并重新测试也是一个好习惯。

  5. 网络问题:虽然不太可能直接导致204响应,但检查网络连接的稳定性和安全性也是排除问题的一个步骤。确保没有防火墙或代理设置阻止了完整的通信流程。

  6. 官方文档和示例:再次回顾Alexa Voice Service的官方开发文档和提供的示例代码,确认您的实现细节与推荐的最佳实践保持一致。有时候,小的差异也可能导致不同的结果。

如果以上所有检查都未能解决问题,建议直接咨询Alexa开发者支持或者在Alexa开发者论坛上发帖寻求帮助,那里可能会有遇到过类似问题的开发者能提供更具体的指导。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答