【问题标题】:How to use Dialog.ElicitSlot for Python as Runtime environment如何使用 Python 的 Dialog.ElicitSlot 作为运行时环境
【发布时间】:2018-04-27 17:58:34
【问题描述】:

我想填写slot 不是在意图调用的开始,而是在意图请求的后面部分。我想为用户提供一些选项,我希望他们从中选择一个。为此,我正在尝试使用Dialog.ElicitSlot,但不知何故我得到了一个错误:

“对技能端点的请求导致错误。”

当我需要用户从我的列表中选择一个选项时,我会返回它。

return {
    "version": "1.0",
    "sessionAttributes": {},
    "response": {
    "outputSpeech": {
        "type": "PlainText",
        "text": "These are the multiplex" + ("es" if len(multi_list) > 1 else "") + " " + outputSpeech + ". Please select one out of these."
        # outputSpeech contains the list of options I want the user to select from
    },
    "shouldEndSession": False,
    "directives": [
        {
            "type": "Dialog.ElicitSlot",
            "slotToElicit": "MULTIPLEX",
            "updatedIntent": {
                "name": "GetMovieDetails",
                "confirmationStatus": "NONE",
                "slots": {
                    "CITY" : {
                        "name" : "CITY",
                        "confirmationStatus" : "NONE",
                        "value" : city # this is already filled, it is just anti-capitalised 
                    },
                    "NAME" : {
                        "name" : "NAME",
                        "confirmationStatus" : "NONE",
                        "value" : movie_name # this is already filled, it is just anti-capitalised 
                    },
                    "MULTIPLEX" : {
                        "name" : "MULTIPLEX",
                        "confirmationStatus" : "NONE",
                    }
                }
            }
        }
    ]
}

我正在使用python-lambda-local 测试我的技能,它在我的本地机器上运行良好(我只需手动将dialogState 更改为"COMPLETED",就像here 一样)。它返回上面写的所有内容。但是在 Skill Tester 上测试它时会出错。 Here 是技能测试器中返回的输出。 PS:我没有选中 Build Section 中的 Slot Filling 复选框。 (因为我需要稍后填充插槽),并且here 是完整的代码以防万一。

【问题讨论】:

  • 如果有人愿意,我可以将我的赏金奖励给他们。不然就浪费了。

标签: alexa alexa-skill alexa-slot


【解决方案1】:

尝试省略整个"updatedIntent" 部分,因为ElicitSlot 不需要此信息。

但更重要的是:您必须确保您的脚本以 JSON 格式返回实际文本!

看看http://flask.pocoo.org/docs/1.0/api/#flask.json.jsonifyhttps://docs.python.org/2/library/json.html

【讨论】:

  • 我仍然遇到同样的错误。我想知道,是否有可能在稍后而不是在开始时获得槽值?当用户有一些选项可供选择时。
【解决方案2】:

天哪,我不想承认这一点。

Dialog.ElicitSlot 工作正常,而且我期望它这样做。 我的代码的错误是,没有错误。我认为我的技能是花一些时间从远程站点获取数据并对其进行一些计算。所以我增加了超时时间,bam,它奏效了。

在本地测试您的技能总是更好,但最好在 aws lambda 控制台上测试一次。我不知道我为什么不早点这样做。

总之,我只需要增加我的技能超时时间

【讨论】:

    猜你喜欢
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    相关资源
    最近更新 更多