【问题标题】:400 Bad Request error on a LaunchRequest with flask-ask使用烧瓶询问的 LaunchRequest 出现 400 Bad Request 错误
【发布时间】:2018-02-18 12:34:30
【问题描述】:

我正在尝试调试一个使用 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 -

intent 函数的日志消息永远不会显示。

当我使用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 装饰器,所以我不知道如何解决这个问题。有人可以给我一个提示吗?

【问题讨论】:

    标签: flask alexa-skills-kit alexa-skill flask-ask


    【解决方案1】:

    回答自己,因为我已经弄明白了:

    我从包__init__.py 文件中运行应用程序,同时将意图函数保存在同一包中的单独intents.py 中。为此,必须将意图模块导入 init 文件,但必须在创建 APP 对象之后。这意味着mypackage/__init__.py 必须看起来像这样:

    from flask import Flask
    from flask_ask import Ask
    
    APP = Flask(__name__)
    ASK = Ask(APP, '/')
    
    from my_package import intents  # importing my_package/intents.py
    

    更详细的解释可以在 larger applications 的烧瓶文档中找到。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-31
    • 2015-11-16
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多