【问题标题】:Sending message to different channel via slack webhook fails通过 slack webhook 将消息发送到不同的通道失败
【发布时间】:2018-12-30 05:20:04
【问题描述】:

我不确定我是否完全正确地理解如何使用 webhook,但是: 我想通过不同的渠道或向不同的用户(不是一次)发送消息,而不参与该对话。

我的问题:我只能为特定用户创建 webhook,所以我最终为每个用户/频道都有一个唯一的 URL? 如果我使用诸如“通道”参数之类的东西,甚至是我使用的库中的“setReceipent”方法,它没有任何效果,只有创建 webhook 的通道/用户接收消息。

我需要使用 API 访问权限还是可以使用 webhook 来满足我的需求?

【问题讨论】:

  • 我发现这个应用程序是由 slack 为您的 webhook 调用“传入 WebHooks”制作的,它对我有很大帮助!希望对你也有帮助

标签: webhooks slack slack-api


【解决方案1】:

一般incoming webhooks 固定在配置的通道上。因此,如果您想向用户和/或多个渠道发送消息,您需要创建多个 webhook 或通过 API(例如 chat.PostMessage)发送消息。

但是,还有另一种创建 webhook 的方法,通过在消息中添加通道覆盖属性(“通道”),您可以将消息发送到具有相同 webhook 的每个通道。它是过去传入的 webhook 的工作方式以及遗留自定义集成的一部分。

要创建这样的 webhook,您需要从 Slack 应用目录安装一个名为“Incoming webhook”的应用(应用由 Slack 团队制作)。

语法:

POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Content-type: application/json
{
    "text": "Hello, world.",
    "channel": "U12345678"
}

U12345678 是您要直接向其发送消息的用户的 Slack ID。

注意channel属性是可选的,如果省略,消息将被发送到默认频道。

查看完整文档前的here

【讨论】:

  • 我已经试了又试了。 { "text":"Hello, World!", "channel": "CHANNEL_ID" }我也用过#CHANNEL_NAME、#CHANNEL_ID、CHANNEL_ID
  • 它原则上是有效的,所以问题一定出在其他地方。例如您的代码或库中的错误不支持这一点。如果您需要更多帮助,请将您的代码添加到问题中
  • 我什至不使用代码,我发送一个简单的请求:curl --request POST \ --url https://hooks.slack.com/services/XXXXXXXX \ --header 'content-type: application/json' \ --data '{ "text":"Hello, World!", "channel": "XXXXXXxX" }'
  • 好的,我想我可能已经找到了你的问题。有两种方法可以创建 webhook,如果您将其中一种创建为 Slack 应用程序的一部分,则通道覆盖无法正常工作。我会更新我的答案
  • @Erik Kalkoken,就是这样。如果默认通道是私有通道,则该 webhook 无法将消息发送到其他通道。谢谢!!
【解决方案2】:

钩子只允许你发送到钩子中定义的通道。 如果您想发送到任何频道,您需要创建一个可以发布到任何频道的机器人用户。要创建机器人用户,您需要执行以下操作:

  1. 添加 API 应用 完成后创建机器人用户(或创建和删除 webhook)
  2. 创建机器人用户或创建和删除 webhook(将为您创建机器人用户)
  3. chat:write 和可能的 chat:write.public 添加到 API 应用的 OAuth & Permissions
  4. 获取 Bot 用户 OAuth 访问令牌,它应该开始 xoxb
  5. 发帖到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

https://api.slack.com/messaging/sending#publishing 提供了一些细节

【讨论】:

  • 我是唯一不明白这个答案的人吗?
  • @EdwinO。也许如果你提供一些关于你不明白的细节,我可以改进答案
  • @EdwinO 这对我来说很有意义。您可以使用 api chat.postMessage,而不是使用 webhook。
  • 我也不懂。
猜你喜欢
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
相关资源
最近更新 更多