Slack Incoming Webhook 作为我的用户发送

Posted

技术标签:

【中文标题】Slack Incoming Webhook 作为我的用户发送【英文标题】:Slack Incoming Webhook sends as my user 【发布时间】:2019-01-23 12:26:55 【问题描述】:

我在我的 Slack 工作区中创建了一个传入 Webhook。我正在使用第三方工具将 JSON 对象发布到挂钩 url。我想向@user_1 发送通知

我的问题是通知发送到我和该用户 @user_1 之间的私人频道,而不是直接发送到 @user_1,例如通过 Slackbot 或只有该用户的频道。

如何确保通知来自 Slackbot 或 @user_1,而不是我自己?

我的设置方式是创建一个带有传入 Webhook 的新应用程序。对于频道,我选择@user_1,并使用第三方提供的 url 发送松弛通知。

【问题讨论】:

我无法重现您的问题,您能否添加更多信息如何设置您的 webhook(通过 Slack 应用程序或自定义集成)以及您发送的具体内容?请将信息添加到问题中(不是评论)。谢谢。 因为如果我通过 webhook 向用户发送消息,它总是会出现在他们的“slackbot”频道中。 感谢 @ErikKalkoken - 我已经添加了创建上述 webhook 的步骤。 【参考方案1】:

这似乎是通过 Slack 应用设置 webhook 时的标准行为。

但还有另一种方法:您还可以将传入的 webhook 设置为自定义集成。然后你就可以向用户的 slackbot 频道发送消息了。

要将 webhook 设置为自定义集成,请转到 Slack App Directory 并添加应用程序“Incoming Webhook”。然后创建一个新的 webhook。您可以在初始配置中直接使用目标用户的 ID 作为频道,也可以通过在消息中包含频道属性来使用频道覆盖功能。

例子:

 
   "text": "This is a line of text in a channel.",
   "channel": "U12345678"

【讨论】:

我尝试了以下方法,并创建了一个传入 Webhook,但它仍然将它添加到我想要使用该 Webhook 直接发送消息的@user 之间的通道中。【参考方案2】:

对于基于 webhook 的直接消息,请在有效负载中为 Slack 用户 ID 加上“@”前缀:

 
   "text": "This is a line of text in a channel.",
   "channel": "@U1A2B3C4D"

请注意,此类消息似乎是由 Slackbot 发布的。另请注意,您实际上可以使用任何活动的网络钩子进行直接消息传递,而不管网络钩子是为哪个频道定义的。

【讨论】:

以上是关于Slack Incoming Webhook 作为我的用户发送的主要内容,如果未能解决你的问题,请参考以下文章

使用Slack Incoming webhooks发送消息

python 使用Python调用Rocketchat Incoming Webhook

使用 Webhook 到 Slack 的 Azure 警报不起作用

如何让机器人响应/响应 slack 中传入的 webhook 消息?

通过 webhook 中的 slack 提及用户

java Slack webhook在java中