Alexa 不会使用 lambda 和 python 播放流中的音频

Alexa will not play audio from a stream using lambda and python

我一辈子都无法理解为什么这不起作用。

这是我的 lambda 函数

def lambda_handler(event, context):
    url = "https://prod-65-19-131-166.wostreaming.net/kindred-wcmifmmp3-128"
    return build_audio_response(url)

def build_audio_response(url):
    return {
        "version": "1.01",
        "response": {
            "directives": [
                {
                "type": "AudioPlayer.Play",
                "playBehavior": "ENQUEUE",
                "audioItem": {
                    "stream": {
                        "token": "sdfsdfsdfsdfsdf3ew234235wtetgdsfgew3534tg",
                        "url": url,
                        "offsetInMilliseconds": 0
                    }
                }
            }
        ],
        "shouldEndSession": True
    }
}

当我 运行 在开发门户中进行测试时。我收到了应有的回复,但它缺少指令。

{
  "version": "1.01",
  "response": {
  "shouldEndSession": true
},
  "sessionAttributes": {}
}

Alexa 只是说 "There was a problem with the requested skills response."

嗯,我认为这是因为指令没有结束。但是我已经测试了流,它有效。是 https。有一个令牌。我错过了什么?

来自 Alexa 的响应意味着该技能返回了 Alexa 无法解析的无效响应。

如果您还没有这样做,您应该检查您的 CloudWatch 日志以了解 Lambda 函数是否出现任何错误:https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#

据我所知,开发人员门户仍然不显示指令,因此您不想在那里进行测试。来自开发者门户 Alexa 技能测试页面:

Note: Service Simulator does not currently support testing audio player directives and customer account linking.

如果在 CloudWatch 中未发现任何错误,您可以进一步调试该页面的 copy/paste 和 Service Request,并将其用作 Lambda 函数的自定义测试。在 Lambda 页面上,单击 Actions 下拉菜单和 select Configure Text Event 并将来自开发人员门户的请求粘贴到其中。这会让您更好地了解返回给 Alexa 的响应。如果您无法解决这个问题,请在此处添加该回复,我们将尝试进一步解决问题。