如何为 Slack 传入 webhook 消息的一部分着色?

问题描述 投票:0回答:3

我想编写一个 python 脚本,将颜色格式的消息发送到配置的松弛通道。我设法将纯文本句子发送到松弛通道,但我不知道如何赋予我想要的部分句子颜色。

我在Python中使用了slackweb库,如下所示

import slackweb
slack = slackweb.Slack(url = url_of_the_configured_channel)
string_to_send = "test TEST"
payload = {'text' : string_to_send}
slack.notify(text=string_to_send)

我该如何格式化 string_to_sendpayload 以便单词“test”在松弛通道中显示为蓝色而“TEST”显示为红色?

提前致谢。

python slack-api slack
3个回答
29
投票

不幸的是,目前无法使用 API 对 Slack 消息的文本进行着色。您可以使用不同的样式,例如粗体和斜体,但不是颜色。 (有关如何使用样式的信息,请参阅 Slack 文档中的消息格式。)

您可以为附件使用颜色。然而,这将导致整个附件出现垂直颜色条标记,但不是彩色文本。 (有关如何为附件着色的信息,请参阅 Slack 文档中的附件参数。)

以下是如何对 Slack 附件使用颜色的示例(取自 Slack 文档):

{
    "attachments": [
        {
            "fallback": "New ticket from Andrea Lee - Ticket #1943: Can't rest my password - https://groove.hq/path/to/ticket/1943",
            "pretext": "New ticket from Andrea Lee",
            "title": "Ticket #1943: Can't reset my password",
            "title_link": "https://groove.hq/path/to/ticket/1943",
            "text": "Help! I tried to reset my password but nothing happened!",
            "color": "#7CD197"
        }
    ]
}

7
投票

你可以做的(作为一个公认的笨拙的解决方法,直到/除非 Slack 支持的不仅仅是原始格式)是:

  • 在服务器上将消息创建为小图形图像
  • 使用 webhook 将图像的网址上传到 slack 通道
  • 消息现在显示在频道中

您可以使用ImageMagick来实现此目的。

.png
图像允许透明度,因此您不必太担心背景匹配。

当然,这是一种非常低效的方法,但它具有做你想做的事情的令人愉快的特点。


0
投票

要添加颜色,您需要添加附件块来发送消息。

def slack_message(data):
        payload  = json.dumps(data)
        headers = { 'Content-type': 'application/json'}
        response = requests.request(url=slack_endpoint, method="post", headers=headers, data=payload)

您可以按照以下格式将请求发送到 slack_message:

slack_message(
{
   "attachments": [
      {
          "color": "#46567f",
          "blocks": [
           {
               "type": "section",
               "text": {
               "type": "mrkdwn",
               "text": f"Message"
               }
           }
         ]
       }
    ]
  }   
)

您可以使用此函数为为通道生成的 slack webhook 发送带有颜色的 slack 消息。

© www.soinside.com 2019 - 2024. All rights reserved.