Javascript I';我正在尝试使用Microsoft bot框架构建聊天机器人
我在这里定义了一本字典Javascript I';我正在尝试使用Microsoft bot框架构建聊天机器人,javascript,node.js,botframework,botbuilder,Javascript,Node.js,Botframework,Botbuilder,我在这里定义了一本字典 var dict = {'English 101?': 'Room 205', 'English 102?': 'Room 309', 'Math 301': 'Room 705', 'Math 302': 'Room 704'}; 当用户询问“英语101在哪里”时,我希望机器人回答“在205房间” 我用以下方式硬编码: var builder = require('botbuilder'); var helloBot = new builder.TextBot()
var dict = {'English 101?': 'Room 205', 'English 102?': 'Room 309',
'Math 301': 'Room 705', 'Math 302': 'Room 704'};
当用户询问“英语101在哪里”时,我希望机器人回答“在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()函数的第一个参数,并将其用作键,Bot应该能够从字典中获取值并发送回用户
我尝试了以下方法,但无效:
var str = ""
dialog.matches(str = ? , builder.DialogAction.send(dict[str.slice(9)]))
如何才能将标准输入传递到“str”并从字典中获取值?根据文档,您只需在
匹配方法中使用Javascript正则表达式格式。您想要使用意图或触发动作匹配
对于意图,首先,初始化您的意图:
var intents = new builder.IntentDialog();
然后将“意图”对话框传递给您的机器人:
bot.dialog('/', intents);
然后可以使用正则表达式构造匹配:
intents.matches(/English 101/i, (session) => {
//
});
bot.dialog("/English", (sess, args, next) => {
//Handle English 101
}).triggerAction({
matches: /English 101/i
});
您还需要确保能够处理没有匹配项的消息:
intents.onDefault([
(session, args, next) => {
//Do something by default
}]);
另一种方法是在对话框(也使用正则表达式)上使用triggerAction
:
使用这两种方法,您都可以使用标准JavaScript正则表达式捕获用户数据,并提供适当的对话框
您还可以只查找/where is/i
,然后使用session.message.text
从会话中获取消息,然后解析该消息以获取目标
理想情况下,您的机器人非常适合使用LUIS。可以为类位置创建单个意图,为类创建单个实体。然后你可以用各种短语训练你的LUIS应用程序,同时用实体标记替换确切的类名。然后,当LUIS符合您的意图时,实体将可用,您可以使用它访问字典并获取位置。如果你感兴趣的话,我最近也在讨论这个问题
(注意:这是用TypeScript写的,但你知道要点。)请更改你的文章标题,以反映你实际需要的帮助。