2016-12-12 3 views
2

Я новичок в бот-фреймворке и работаю над бот-чатом skype с помощью узла SDK.Skype chat bot framework - node.js

У меня есть массив дерева JSON, который предоставляет мне идентификатор и имена для данных дерева.

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); 

Когда я пытаюсь получить идентификатор он будет работать хорошо, но если я хочу, чтобы получить титул в одном массиве, то я получаю эту ошибку:

/node_modules/promise/lib/done.js:10 
     throw err; 
    ^

TypeError: choice.trim is not a function 

ответ

1

Вы, кажется, не определили переменную «выбор» в любом месте.

treeName.title 

или

treename.children[X].title 

Первый из них будет, в этом случае, обратный 'меню', в то время как вторая возвращает "company_data", или "тест данных Adhoc" и т.д.

Вы не можете использовать .trim() для массивов или объектов.

EDIT: Посмотрите, что я нашел ... https://github.com/Microsoft/BotBuilder/issues/2004