我正在尝试调试一个使用flask-ask框架构建的小型 Alexa 技能。我的问题是我在一个简单的 LaunchRequest 上不断收到 400 错误。相关的意图函数是这样的:
@ASK.launch
def launch():
"""Welcome & ask for users intent."""
APP.logger.debug('LAUNCHING SESSION')
return question(render_template('welcome'))
当我以调试模式(通过 ngrok 隧道)在本地运行服务器并发出一个简单的启动请求(“start my_skills_name”)时,flask 记录了两个请求:
$ python main.py app --run
INFO:werkzeug: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
INFO:werkzeug:127.0.0.1 - - [18/Feb/2018 12:47:43] "POST / HTTP/1.1" 400 -
INFO:werkzeug:127.0.0.1 - - [18/Feb/2018 12:47:44] "POST / HTTP/1.1" 200 -
来自意图函数的日志消息永远不会显示。
当我使用zappa部署技能并执行操作时,zappa tail
我会看到第二个请求 (SessionEndedRequest)。这会返回 200 状态码,但似乎确实会产生一些异常:
"request":{
"type":"SessionEndedRequest",
"requestId":"<1234>",
"timestamp":"2018-02-18T11:54:46Z",
"locale":"de-DE",
"reason":"ERROR",
"error":{
"type":"INVALID_RESPONSE",
"message":"An exception occurred while dispatching the request to the skill."
}
}
这个请求的函数也很简单:
@ASK.session_ended
def session_ended():
APP.logger.debug('ENDING SESSION')
return statement('bye')
未显示日志记录消息,即使我删除了该函数并且根本不处理 SessionEndedRequests,错误仍然保持不变。
我有点不知道这里会发生什么。请求确实到达了我的服务器,表明技能本身配置正确。看起来它们以某种方式没有被路由到正确的意图函数,但是由于我完全依赖ask.intent
装饰器,所以我不知道如何解决这个问题。有人可以给我一个提示吗?