ここに辞書を定義しました
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」に渡し、辞書から値を取得するにはどうすればよいですか?