如何构建一个 slack 机器人来进行多个对话?

How to build a slack bot to have multiple conversations?

我正在使用第三方服务构建一个 slack 机器人来处理基于输入的响应,而不是将它们硬编码到机器人中。此服务的 API 需要客户端 ID 和对话 ID 才能获得响应。我发现每次 slack 机器人收到一条消息时,它每次都会创建一个新的消息对象,因此没有办法将 clientID 和对话 ID 保留在消息对象中并让 slack 保留它。

rtm.on(RTM_EVENTS.MESSAGE, function(message // <-- new object each time the bot hears a message){
  rtm.sendMessage('hello', message.channel);
});

这么短,有没有人知道一种方法来保持单个用户和机器人之间的对话,同时保留某种类型的变量来保存客户端和对话 ID?

您可以存储 message.user ID 并跟踪与该特定用户相关的对话。您需要自己跟踪所有正在进行的对话。像这样

rtm.on(RTM_EVENTS.MESSAGE, function(message // <-- new object each time the bot hears a message){
  if(stored_conversations.indexOf(message.user) > -1){
    //customize message depending on history
    rtm.sendMessage('I remember you', message.channel);
  }
});

或者,您可以使用 Botkit - 它会为您管理机器人用户对话。