通过 slack webhook 将消息发送到不同的频道失败
Sending message to different channel via slack webhook fails
我不确定我是否理解了如何正确使用 webhooks 的方式,但是:
我想通过不同的渠道或向不同的用户发送消息(不是一次),而不参与该对话。
我的问题:我只能为特定用户创建 webhook,所以我最终对每个用户/频道都有一个唯一的 URL?
如果我使用 "channel" 参数甚至我使用的库中的 "setReceipent" 方法,它不会有任何效果,只有为其创建 webhook 的频道/用户才会收到消息。
我需要使用 API 访问权限还是可以使用 webhook 来满足我的需求?
一般来说incoming webhooks都是固定在配置的频道上的。因此,如果您想向用户 and/or 多个渠道发送消息,您需要创建多个 webhook 或通过 API(例如 chat.PostMessage)发送消息。
但是,还有另一种创建 webhook 的方法,通过在消息中添加通道覆盖 属性 ('channel'),您可以使用相同的 webhook 将消息发送到每个通道。它是传入 webhook 过去的工作方式,也是遗留自定义集成的一部分。
要创建这样的 webhook,您需要从 Slack App Directory 安装一个名为“Incoming webhooks”的应用程序(该应用程序由 Slack 团队制作)。
语法:
POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Content-type: application/json
{
"text": "Hello, world.",
"channel": "U12345678"
}
其中 U12345678
是您要向其发送直接消息的用户的 Slack ID。
请注意,channel
属性 是可选的,如果省略,消息将发送到默认频道。
有关完整文档,请参阅 here。
挂钩只允许您发送到挂钩中定义的通道。
如果您想发送到任何频道,您需要创建一个可以 post 到任何频道的机器人用户。要创建机器人用户,您需要执行以下操作:
- 添加一个 API 应用完成后创建一个 bot 用户(或创建和删除一个 webhook)
- 创建 bot 用户或创建和删除 webhook(将为您创建 bot 用户)
- 将
chat:write
并可能 chat:write.public
添加到 API 应用程序的 OAuth 和权限。
- 获取 Bot 用户 OAuth 访问令牌 它应该开始
xoxb
- Post 至
https://slack.com/api/chat.postMessage
例如
curl -X POST \
-H 'Authorization: Bearer xoxb-###-###-***' \
-H 'Content-type: application/json' \
--data '{"channel": "#general","text":"Hello, World!"}' \
https://slack.com/api/chat.postMessage
我不确定我是否理解了如何正确使用 webhooks 的方式,但是: 我想通过不同的渠道或向不同的用户发送消息(不是一次),而不参与该对话。
我的问题:我只能为特定用户创建 webhook,所以我最终对每个用户/频道都有一个唯一的 URL? 如果我使用 "channel" 参数甚至我使用的库中的 "setReceipent" 方法,它不会有任何效果,只有为其创建 webhook 的频道/用户才会收到消息。
我需要使用 API 访问权限还是可以使用 webhook 来满足我的需求?
一般来说incoming webhooks都是固定在配置的频道上的。因此,如果您想向用户 and/or 多个渠道发送消息,您需要创建多个 webhook 或通过 API(例如 chat.PostMessage)发送消息。
但是,还有另一种创建 webhook 的方法,通过在消息中添加通道覆盖 属性 ('channel'),您可以使用相同的 webhook 将消息发送到每个通道。它是传入 webhook 过去的工作方式,也是遗留自定义集成的一部分。
要创建这样的 webhook,您需要从 Slack App Directory 安装一个名为“Incoming webhooks”的应用程序(该应用程序由 Slack 团队制作)。
语法:
POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Content-type: application/json
{
"text": "Hello, world.",
"channel": "U12345678"
}
其中 U12345678
是您要向其发送直接消息的用户的 Slack ID。
请注意,channel
属性 是可选的,如果省略,消息将发送到默认频道。
有关完整文档,请参阅 here。
挂钩只允许您发送到挂钩中定义的通道。 如果您想发送到任何频道,您需要创建一个可以 post 到任何频道的机器人用户。要创建机器人用户,您需要执行以下操作:
- 添加一个 API 应用完成后创建一个 bot 用户(或创建和删除一个 webhook)
- 创建 bot 用户或创建和删除 webhook(将为您创建 bot 用户)
- 将
chat:write
并可能chat:write.public
添加到 API 应用程序的 OAuth 和权限。 - 获取 Bot 用户 OAuth 访问令牌 它应该开始
xoxb
- Post 至
https://slack.com/api/chat.postMessage
例如
curl -X POST \
-H 'Authorization: Bearer xoxb-###-###-***' \
-H 'Content-type: application/json' \
--data '{"channel": "#general","text":"Hello, World!"}' \
https://slack.com/api/chat.postMessage