我正在使用NodeJS的Micrososft Botframework开发一个聊天机器人 - LUIS.ai并使用对话框将其集成到Slack中。现在机器人在DM窗口上正常工作,但是当添加到松弛通道时,即使没有提到,机器人也会回复所有消息。
我知道机器人应该能够收听所有消息,但是我怎样才能定义programmaticaly只在提到时才在松弛通道中进行交互?
有没有办法确定对话是来自频道还是来自直接留言?
这是Dialogs的代码片段
bot.dialog('intentName', [
function (session, args, next) {
var intent = args.intent;
session.dialogData.item = {};
var item= builder.EntityRecognizer.findEntity(intent.entities, 'myEntity');
session.dialogData.itemNumber = item.entity;
// Prompt for title
if (!session.dialogData.item) {
builder.Prompts.text(session, 'What are you looking for?');
} else {
next();
}
},
function (session, results, next) {
if (results.response) {
session.dialogData.itemNumber = results.response;
}
//restify call
//session.send(response)
session.endDialog();
});
}
]).triggerAction({
matches: 'intentName'
});
***********更新***********
我能够使用这段代码在频道对话和DM之间进行识别
if(session.message.address.channelId=="slack"){
//Channel conversation
if(session.message.address.conversation.isGroup){
if(session.message.text.includes("@botname")){
//your code
}
session.endDialog();
//bot not mentioned, hence do nothing
}
else{
//your bot reply to a DM
}
}