我正在使用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?
感谢您的帮助。
答案 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"
}
}