我是bot框架的新手,并使用节点SDK处理skype聊天机器人。
我有JSON树数组,它为树数据提供id和名称。
treeName = tree.parse({
"id": 1,
"title": "menu",
"children": [
{
"id": 11,
"title": "company _ data",
"children": [{"id": 111}]
},
{
"id": 12,
"title": "adhoc data test ",
"children": [{"id": 121}, {"id": 122}]
},
{
"id": 13,
"title": "quit",
"children": [{"id": 131}, {"id": 132}]
}
]
});
从树中获取标题的代码。
var node1 = treeName.first(function (node) {
return node.model.id === 1;
});
数组
var firstChild = [];
for (var i = 0; i < node1.model.children.length; i++) {
firstChild.push(node1.model.children[i].title);
}
builder.Prompts.choice(session, "What scenario would you like to run? ",firstChild );
当我尝试获取id时它会运行良好但是如果我想在一个数组中获得标题,那么我会收到此错误:
/node_modules/promise/lib/done.js:10
throw err;
^
TypeError: choice.trim is not a function
答案 0 :(得分:1)
您似乎没有在任何地方定义变量'choice'。
treeName.title
或
treename.children[X].title
在这种情况下,第一个将返回'menu',而第二个返回“company_data”或“adhoc data test”等。
您不能在数组或对象上使用.trim()。
编辑:看看我找到了什么... https://github.com/Microsoft/BotBuilder/issues/2004