【问题标题】:How to build a slack bot to have multiple conversations?如何构建一个 Slack 机器人进行多个对话?
【发布时间】:2016-04-27 18:00:00
【问题描述】:

我正在构建一个 Slack 机器人,使用第三方服务来处理基于输入的响应,而不仅仅是将它们硬编码到机器人中。该服务的 API 需要一个客户端 ID 和一个对话 ID 来获取响应。我发现每次 Slack 机器人收到消息时,它都会创建一个新的消息对象,因此无法将 clientID 和会话 ID 保留在消息对象中并保持松弛状态。

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

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

【问题讨论】:

  • 您可以使用 RTM 旋转将接收传入消息的应用程序。然后在该应用程序中,您将拥有一个数据库,您将在其中保留 conversation_id 和 client_id 并在调用第三方 API 之前查询您的数据库。到目前为止,我是否遵循您的目标?

标签: node.js slack-api slack


【解决方案1】:

您可以存储 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 - 它为您管理机器人与用户的对话。

【讨论】:

  • 抱歉回复晚了,stored_conversations 对象是什么?我正在考虑使用 botkit,但对于我正在构建它的项目,解决它有点棘手。
  • stored_conversations 是一个对象(这里是一个未定义的数组),您必须创建它才能存储当前对话
猜你喜欢
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 2016-03-02
相关资源
最近更新 更多