对话流系统.实体位置:位置.管理区域未在联机编辑器中定义



我在对话流代理的意图中使用系统实体@sys.location。在履行部分,我在在线代码编辑器中有此功能:

function testLocation(agent) {
//check object location
console.log(' location is ' +  JSON.stringify(agent.parameters.location));
if(agent.parameters.location.city) {
//do smthing 
}
else if (agent.parameters.location.admin-area){
agent.add(`this is not recognized ` +agent.parameters.location.admin-area); 
}else{
//....
}
}

关键是我在编辑器中收到一个警告标志,上面写着"区域未定义",但我可以从 Firebase 控制台看到其值:

{"country":"","city":"","admin-area":"Piemonte","business-name":"","street-address":"","zip-code":"","shortcut":"","island":"","subadmin-area":""}

有什么线索吗? 提前致谢

你被一个 JavaScript 语法问题绊倒了。

表达式

agent.parameters.location.admin-area

正在评估为

agent.parameters.location.admin - area

也就是说agent.parameters.location.admin减去area,这会导致错误,因为正如错误所说,没有定义"位置"的"区域"属性。

在这里,agent.parameters.location是一个对象,JavaScript提供了两种访问对象属性的方法。

  • 可以使用括号表示法[expression]其中括号内的表达式应计算为对象的属性名称。通常这需要是一个字符串。
  • 在某些情况下,可以使用点表示法.name其中名称是属性的名称。但这假设该名称没有其他 JavaScript 语法使用的字符。

请注意"表达式"和"名称"之间的区别。第一个允许您使用包含字符串的变量,或者您计算的其他内容。第二个需要你对其进行硬编码。

在您的情况下,您可以使用括号表示法来获取所需的值。所以像

agent.parameters.location["admin-area"]

应该工作。

相关内容

  • 没有找到相关文章

最新更新