1

ここに辞書を定義しました

var dict = {'English 101?': 'Room 205', 'English 102?': 'Room 309',
  'Math 301': 'Room 705', 'Math 302': 'Room 704'};

ユーザーが「English 101はどこですか」と尋ねたときに、ボットに「in Room 205」と応答させたい。

次の方法でハードコーディングしました。

var builder = require('botbuilder');
var helloBot = new builder.TextBot();
var dialog = new builder.CommandDialog();


dialog.matches('^Where is English 101?', builder.DialogAction.send('In     Room 205'));
dialog.matches('^Where is English 102?', builder.DialogAction.send('In     Room 309'));
dialog.matches('^Where is Math 301?', builder.DialogAction.send('In    Room 705'));
dialog.matches('^Where is Math 302?', builder.DialogAction.send('In     Room 704'));

dialog.onDefault(builder.DialogAction.send("I'm sorry. I didn't    understand."));

helloBot.listenStdin();

各質問をハードコーディングする代わりに、dialog.matches() 関数の最初のパラメーターに正規表現を渡し、それをキーとして使用して、ボットが辞書から値を取得してユーザーに送り返すことができるようにする必要があります。

次のことを試しましたが、うまくいきませんでした。

var str = ""
dialog.matches(str = ? , builder.DialogAction.send(dict[str.slice(9)]))

標準入力を「str」に渡し、辞書から値を取得するにはどうすればよいですか?

4

2 に答える 2