通过松弛Webhook将消息发送到其他频道失败

时间:2018-07-22 16:43:48

标签: webhooks slack slack-api

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

我的问题:我只能为特定用户创建Webhooks,所以我最终为每个用户/频道拥有唯一的URL? 如果我使用我所使用的库中的“ channel”参数或什至“ setReceipent”方法之类的东西,它没有任何作用,只有创建了Webhook的频道/用户会收到消息。

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

2 个答案:

答案 0 :(得分:4)

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

但是,还有另一种创建Webhook的方法,该方法允许您通过在消息中添加通道覆盖属性('channel'),将消息发送到具有相同Webhook的每个通道。它是过去传入的Webhooks如何工作以及旧式自定义集成的一部分。

要创建这样的Webhook,您需要从Slack App Directory(该应用程序由Slack团队制作)中安装一个名为“ Incoming webhooks”的应用程序。

语法:

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

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

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

完整文档见here

答案 1 :(得分:1)

挂钩仅允许您发送到挂钩中定义的频道。 如果您想发送到任何频道,则需要

  1. 添加API应用程序完成后,创建bot用户(或创建和删除webhook)
  2. 创建漫游器用户或创建并删除Webhook(将为您创建漫游器用户)
  3. 向API应用的 OAuth和权限中添加chat:write,并可能向chat:write.public添加
  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提供了一些详细信息