【问题标题】:creating a slack bot using slack-api ruby gem not responding back as a DM使用 slack-api ruby​​ gem 创建一个 slack 机器人没有作为 DM 回复
【发布时间】:2015-06-06 04:10:18
【问题描述】:

我已经使用 slack-api 和实时消息 API 设置了一个 slack 机器人。

以下是简要设置:

client.on :message do |data|
  d {data}
  bot_response = BotResponse.get_bot_response(data['text'], "session_slack")
  Slack.chat_postMessage channel: data['user'], text: "#{bot_response}"
end

client.start

使用此版本的 postMessage,响应来自 Slackbot,而不是我的机器人(名为 kaya)。

目标:我想以 DM 的身份从收到它的 bot 回复。

当我将频道更改为 data['channel'] 时,响应来自我的 bot kaya 的 DM,但进入了无限循环。

如何获得非无限循环的 DM 响应?

注意: 我想我看到了它是如何发生的:通过选择机器人作为“频道”,机器人正在回应它自己对我的回应,就好像它是另一个用户在与“机器人的”频道交谈一样。但我不知道还有什么方法可以让我的机器人而不是 slackbot 做出响应。

【问题讨论】:

    标签: ruby slack-api


    【解决方案1】:

    我认为您需要将username 参数设置为每个api 的机器人名称:https://api.slack.com/methods/chat.postMessage,或者您需要as_user 选项。

    【讨论】:

    • 是的,我添加了它。它仍然把它放在别处,但他的名字是正确的。似乎我的男孩将自己的回答作为输入。因此,来自机器人的 DM 似乎有些不对劲。
    【解决方案2】:

    这混合了 Web 和实时消息传递 API。您从 RealTime Messaging API 收到一条消息,然后您正在使用 Web API 回发。包含as_user: true 的答案是正确的,但您应该改用 RTM API 将消息发回。

    尝试https://github.com/dblock/slack-ruby-client 将两者完全分开。机器人返回消息如下所示:

    client.message channel: data['channel'], text: "Hi <@#{data['user']}>!"

    为避免 DM 循环,请确保您没有响应您发出的命令。还有其他方法,比如忽略机器人消息,但它并不可靠。

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      相关资源
      最近更新 更多