我不确定我是否正确地理解了如何使用webhooks,但是: 我想通过不同的渠道或不同的用户(而不是一次)发送消息,而不必参与该会话。
我的问题:我只能为特定用户创建Webhooks,所以我最终为每个用户/频道拥有唯一的URL? 如果我使用我所使用的库中的“ channel”参数或什至“ setReceipent”方法之类的东西,它没有任何作用,只有创建了Webhook的频道/用户会收到消息。
我需要使用API访问权限还是可以使用webhooks满足我的需求?
答案 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)
挂钩仅允许您发送到挂钩中定义的频道。 如果您想发送到任何频道,则需要
chat:write
,并可能向chat:write.public
添加xoxb
开头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