繁体   English   中英

如何使用Microsoft Bot框架使Bot与Slack中的用户在群组中发起1:1对话?

[英]How to make the bot initiate 1:1 conversation in a group with the user in Slack using Microsoft bot-framework?

我正在为Node.js使用Microsoft Bot框架。 我希望我的机器人在与用户的群组内发起私人对话。 目前,我的机器人正在与任何响应的成员进行对话。 例如,

我:嗨@bot

机器人:嗨

我:我需要点披萨

Bot:您要在披萨上吃什么?

SomeTeamMember:蘑菇和洋葱

机器人:订购蘑菇和洋葱比萨。

如您所见,对话被其他成员劫持,这是我面临的问题,我想避免这种情况的发生。 我希望该漫游器一次只与一个成员进行通信,并且当与该用户的对话结束时,它可以与以前的用户以相同的方式与任何人通信。 任何建议都很好!

您在使用松弛吗? 无论如何,当您到达“ Bot:您想在披萨上吃什么?”时,您应该处于一个全新的对话框中,可以在其中使用每个对话成员ID并将其存储到数据包(context.ConversationData)中以获取上下文。

当“ SomeTeamMember”加入对话时,您可以检查他或她的对话成员ID以获取每个成员的状态,并采取相应的措施。

希望这可以帮助 :)

亚历克斯

我认为您可以使用会话对象并访问消息发件人ID,即session.message.user.id 也许过滤掉来自其他用户的消息,而不是说我需要订购披萨的消息

同样从文档中,我认为您可以使用诸如由动作触发的对话框之类的东西,该动作我需要订购披萨后立即激活。 然后,您可以检查用户的ID,然后重新路由到其他用户将被过滤掉的对话框,但发件人的我需要订购比萨饼 ...

如果您尝试类似或复杂化的操作:

bot.dialog('pizzarouting', function (session, args, next) {

})
// Once triggered, will start a new dialog as specified by
// the 'onSelectAction' option.
.triggerAction({
    matches: /^Pizza$/i,
    onSelectAction: (session, args, next) => {
        // Add the help dialog to the top of the dialog stack 
        // (override the default behavior of replacing the stack)
        session.send('What would you like on your pizza?')
        console.log(session.message);
        // Reroute to dialog that filter out the other people id
        // session.beginDialog(args.action, args);
    }
});

仅当用户在聊天中发送“ Pizza”时,此功能才会激活。 您将看到会话对象包含消息对象,您可以使用该对象来标识例如发送我需要订购比萨饼并获取其ID以便进行后续过滤的用户。 希望您或任何解决此问题的人得到有趣的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM