为插槽设置默认值以循环结尾

时间:2018-07-21 19:05:45

标签: alexa-skill slot

我正在使用alexa技能,并且在对话模型期间设置插槽的默认值时遇到一些问题。

我有4个插槽的意图,我想在开始时以默认值提供2个插槽。这是我尝试的代码:

我创建了一个意图对象并设置值。

    updatedIntent = {
        "name": "Training",
        "confirmationStatus": "NONE",
        "slots": {
            "slot1": {
                "name": "slot1",
                "value": "",  /// HERE I ADDED "" BECAUSE THIS VALUE SHOULD BE FILLED BY THE USER
                "resolutions": {
                    "resolutionsPerAuthority": [
                        {
                            "authority": "",
                            "status": {
                                "code": "ER_SUCCESS_MATCH"
                            },
                            "values": [
                                {
                                    "value": {
                                        "name": "Pferde",
                                        "id": "e036baff329d97ae8387f195b27fe9af"
                                    }
                                }
                            ]
                        }
                    ]
                },
                "confirmationStatus": "NONE"
            },
            "slot2": {
                "name": "slot2",
                "value": "test", //HERE FOR SLOT2 I ADDED MY DEFAULT VALUE "TEST"
                "resolutions": {
                    "resolutionsPerAuthority": [
                        {
                            "authority": "",
                            "status": {
                                "code": "ER_SUCCESS_MATCH"
                            },
                            "values": [
                                {
                                    "value": {
                                        "name": "Fische",
                                        "id": "4adf750f60e18ab47f596aeb5b838733"
                                    }
                                }
                            ]
                        }
                    ]
                },

之后,我通过:delegate返回了updateIntent。

    this.emit( this.emit(':delegate', updatedIntent));

Soo2 slo2现在已满,Alexa并没有要求我这样做。但是slot1没有填充(仅用“”填充),因此alexa问我“请给我slot1的值吗?”我给答案“测试”。现在,输入意图用slot1 = test填充。但是它不会覆盖输出Intent中的“”。因此,Alexa再次问我“给我slot1的值吗?”。而且,无论我说什么,它都不会填满slot1。它以循环结尾。

我怎么了?也许语法错误?还是我必须将输入意图指定为updateIntent?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不明白为什么将slot1的值设置为空字符串。如果您打算将slot1的默认值设置为none,则您无需执行任何操作,这就是默认情况下得到的。如果未设置插槽值,则插槽中将不存在“值”属性。仅当存在(非空)值时才存在:

                       "slots": {
                            "marca": {
                                "name": "marca",
                                "confirmationStatus": "NONE"
                            },
                            "precio": {
                                "name": "precio",
                                "confirmationStatus": "NONE"
                            },
                            "color": {
                                "name": "color",
                                "value": "roja",
                                "confirmationStatus": "NONE"
                            },
                            "talla": {
                                "name": "talla",
                                "value": "grande",
                                "confirmationStatus": "NONE"
                            }
                        }