【问题标题】:How to make the bot initiate 1:1 conversation in a group with the user in Slack using Microsoft bot-framework?如何使机器人使用 Microsoft bot-framework 在 Slack 中与用户发起 1:1 对话?
【发布时间】:2018-06-24 06:22:33
【问题描述】:

我正在为 Nodejs 使用 Microsoft 机器人框架。我希望我的机器人在组内与用户开始私人对话。目前,我的机器人与任何响应的成员进行对话。 例如,

我:嗨@bot

机器人:嗨

我:我需要点披萨

Bot:你想在披萨上放什么?

SomeTeamMember:蘑菇和洋葱

机器人:用蘑菇和洋葱点比萨。

如您所见,对话被其他成员劫持,这是我面临的问题,我想避免这种情况发生。我希望机器人一次只与一个成员交流,当与该用户的对话结束时,它可以像以前的用户一样与任何人交流。任何建议都会很棒!

【问题讨论】:

  • 您使用什么渠道?

标签: node.js botframework


【解决方案1】:

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

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

希望这会有所帮助:)

亚历克斯

【讨论】:

    【解决方案2】:

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

    同样来自documentation,我认为您可以使用对话框triggered by an action 之类的东西,在我需要订购比萨饼之后立即激活。 然后,您可以检查用户的 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);
        }
    });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-30
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      相关资源
      最近更新 更多