2

我想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"手动更改为,就像这里的那个)。它返回上面写的所有内容。但是在 Skill Tester 上测试它时会出错。是技能测试器中返回的输出。PS:我没有选中 Build Section 中的 Slot Filling 复选框。(因为我需要稍后填充插槽),是完整的代码以防万一。

4

2 回答 2

0

尝试省略整个"updatedIntent"部分,因为ElicitSlot.

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

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

于 2018-04-27T18:53:55.613 回答
0

上帝,我不想承认这一点。

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

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

所以总而言之,我只需要增加我的技能的超时时间

于 2018-05-07T18:49:24.983 回答