【问题标题】:Using the Slack API, how can I direct message all users at the same time?使用 Slack API,如何同时向所有用户发送消息?
【发布时间】:2017-12-21 03:57:59
【问题描述】:

在 Slack 上,我知道使用 chat.postMessage 可以让我单独向每个用户发送消息,但我将如何一次直接向整个团队(400 名成员)发送消息?

【问题讨论】:

  • 使用users.list获取所有团队成员的列表,然后使用循环和chat.postMessage向每个成员发送消息...或者更好的是,使用channels.invite邀请所有成员加入频道然后将消息发送到频道。
  • 好吧,我需要单独向用户发送消息,而不是向频道发送消息。我需要chat.postMessage 400 次吗?
  • 是的,当然。两次,400 次,代码量是一样的。

标签: python slack slack-api


【解决方案1】:

chat.postMessage 没有“批量”变体。因此,您基本上需要构建自己的批量消息发送器,您可以通过遍历用户列表并向每个用户发送消息来轻松完成。

您可以使用users.list 获取所有用户的列表。然后,您有两个发送直接消息的选项:

  1. Slackbot 频道:使用每个用户的 ID 作为频道,向他们每个人发送带有 chat.postMessage 的消息。
  2. 应用频道:获取每个用户的im.open的IM频道ID 然后将其用作chat.postMessage 的频道。这仅在您有机器人用户并从机器人用户发送消息时才有效。

但请记住,请求限制为每秒 1 条消息。

对于 Slack 和您的应用之间的许多请求,还有 3 秒的请求超时。 (例如,用于直接响应斜杠命令)。因此,如果您的机器人需要发送许多消息,您希望使用一种允许您异步发送它们的方法。

对我来说非常有效的一个解决方案是使用消息队列来处理从我的机器人发送的所有 Slack 消息。

【讨论】:

  • 当您说“遍历用户列表”时,您是指使用im.open 还是im.list
  • @thenewcoder 我们可以在聊天室聊天chat.stackoverflow.com/rooms/161833/slack-api
  • 不幸的是,我需要 20 声望才能说话。
  • 对不起,我不知道这条规则。那我们就在这里聊吧。
  • @ErikKalkoken,它没有为用户获取频道 ID,我将用户 ID 放在频道中,但在用户名下仍然看不到任何消息,但仅在应用下。无法向用户发送直接消息。 ChatPostMessageResponse response = Slack.getInstance().methods().chatPostMessage(r -> r .token("xoxb-283445553073-2837743222451-e3Y8y4cahtzeLAKIbjUHMMuC") .channel("A02BMMHFTSP") .text("Testing it!!") );
【解决方案2】:

您好,您需要一个包含全部 400 个频道的频道,因为目前您无法发送给 400 个个人用户。要向频道发送消息,您只需要在 postMessage 方法中添加频道参数即可。

检查这个 :: https://api.slack.com/methods/chat.postMessage

【讨论】:

  • 目前,他们在普通频道,但我想单独向用户发送消息,而不是发布到普通频道。那么从那里开始,我该怎么办?
  • 如果您使用 Java,只需像 ArrayList 一样将所有用户添加到列表中,然后编写一个 for 循环来读取一个并发送并重复。
  • 我实际上也是 Python 的新手。那么我应该从那个网站复制我看到的代码还是我必须替换一些?
  • 我可以给你发电子邮件来帮助我把这件事整理好吗?
猜你喜欢
  • 2021-08-08
  • 2022-11-11
  • 2019-07-06
  • 2022-12-07
  • 2022-07-25
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多