如何向 Slack 收听频道发送消息?

How to send message to Slack listening channels?

我正在开发一个 slack 应用程序(范围包括机器人和传入的 webhooks)。我可以将消息发送到定义的频道,但我不知道如何停止使用“&channel=”参数,而只是将消息发送到监听频道。通过聆听我的意思是,当安装应用程序时,系统会询问用户 post 的位置(必须选择频道或 dm)。

String postUrl = "https://slack.com/api/chat.postMessage?token=" + botAccessToken + "&as_user=false&channel=%23community&text=testing&username=CommunityQ";

任何提示都会有用。

我认为你不能:根据 official Slack API documentation 无法将消息发送到 all/multiple 收听频道:

Incoming webhooks output to a default channel and can only send messages to a single channel at a time. You can override a custom integration's configured channel by specifying the channel field in your JSON payload.

我解释为"there is always exactly one channel your message is sent to"

此外,Slack 限制 Slack 应用程序 的此频道覆盖功能:

You cannot override the default username, icon, or channel for incoming webhooks attached to Slack apps.

正如 Michael 在他的 中提到的,不可能同时 post 到多个频道。您必须浏览它们并执行多个请求。

我觉得这里有点混乱。我不确定 "incoming webhook" 作用域能做什么而 "bot" 作用域不能做什么。这是我的看法

  • 要么您想要一个post在一个频道中的轻量级、低权限的应用程序,并且您将使用传入的 webhook 范围
  • 或者您想要一个可以向用户提问的应用,例如他们希望更新到哪些频道post、处理答案等。然后您将使用机器人范围,并且机器人可以 post 在任何 public 频道

如果您提供更多关于您想要实现的目标的详细信息,我们也许可以更好地帮助您

如果您想要一种更动态的方法来将消息发送到任何频道,我建议用户使用 API 方法 chat.postMessage instead of an incoming webhook

API方法可以post将消息发送到任何频道(包括私人频道,DM),只要您的令牌作为访问权限即可。