Slack 网络钩子 html table

Slack webhook html table

我有一个 HTML table,我正在尝试通过 webhook post 到 Slack。

有没有办法 post HTML table 到 Slack?

这里是 HTML 代码:

<!DOCTYPE html>
<html>
   <head>
      <title>HTML Tables</title>
   </head>
   <body>
      <table border="1">
         <tr>
            <td>Row 1, Column 1</td>
            <td>Row 1, Column 2</td>
         </tr>
         <tr>
            <td>Row 2, Column 1</td>
            <td>Row 2, Column 2</td>
         </tr>
      </table>
   </body>
</html>

不,我认为没有任何方法可以在 Slack 消息中绘制 table。

以下是用于格式化 Slack 消息的其他可用选项:https://api.slack.com/docs/formatting

我已经打开了 Slack 支持的票证,询问 Slack 的 Incoming Webhook 消息是否支持任何形式的 table(HTML 或 Markdown)。

官方回答是Slack消息不支持tables

他们建议生成 table 和 post 作为图像。

他们还说他们会把它添加到他们的积压工作中。

不是 html table,但您可以使用 console.table 之类的包将 table 的数据打印到字符串变量中。然后使用 triple backticks 在您的 slack 消息的文本字段中添加您的 table。例如:

const cTable = require('console.table');
const table = cTable.getTable([
  {
    name: 'foo',
    age: 10
  }, {
    name: 'bar',
    age: 20
  }
]);

然后作为您的 slack 消息附件的一部分:

const attachmentList = {
        "title": "YOUR TITLE",
        "text": 'HERE IS YOUR TABLE: : \n ```'+table+'```',
    }

您现在可以使用 "fields" layout block 在 slack 中执行简单的两列 tables。

你可以做两列table:

[
   {
        "type": "section",
        "fields": [
            {
                "type": "mrkdwn",
                "text": "*Name*"
            },
            {
                "type": "mrkdwn",
                "text": "*Email*"
            },
            {
                "type": "plain_text",
                "text": "Jeff Henderson",
                "emoji": true
            },
            {
                "type": "mrkdwn",
                "text": "jh@geemail.com"
            },
            {
                "type": "plain_text",
                "text": "Anne Polin",
                "emoji": true
            },
            {
                "type": "mrkdwn",
                "text": "ap@geemail.com"
            }

        ]
    }
]

给你:

或者去现场风格:

[
    {
        "type": "section",
        "fields": [
            {
                "type": "plain_text",
                "text": "Name",
                "emoji": true
            },
            {
                "type": "mrkdwn",
                "text": "*Jeff Henderson*"
            },
            {
                "type": "plain_text",
                "text": "Email",
                "emoji": true
            },
            {
                "type": "mrkdwn",
                "text": "jh@geemail.com"
            },
            {
                "type": "plain_text",
                "text": "Mobile Phone",
                "emoji": true
            },
            {
                "type": "mrkdwn",
                "text": "0451000000"
            },
            {
                "type": "plain_text",
                "text": "Work Phone",
                "emoji": true
            },
            {
                "type": "mrkdwn",
                "text": "94550000"
            }

        ]
    }
]

将产生:

Slack API 将块限制为只有 10 个元素,但您可以做的是添加一个带有中断的长文本,使其看起来像 table。这是一个例子

[
                    {
                        "type": "section",
                        "text": {
                            "text": "Conference Standings:",
                            "type": "mrkdwn"
                        },
                        "fields": [
                            {
                                "type": "mrkdwn",
                                "text": "*Team*"
                            },
                            {
                                "type": "mrkdwn",
                                "text": "*W-L*"
                            },
                            {
                                "type": "plain_text",
                                "text": "Team1\nTeam2\nTeam3\nTeam4\nTeam5\n"
                            },
                            {
                                "type": "plain_text",
                                "text": "1\n2\n3\n4\n5\n"
                            }
                        ]
                    }
                ]

这是结果

我开始在我的 slackbot 中使用旧式控制台应用程序表。

查看示例:https://github.com/Robert-McGinley/TableParser

只需将 ``` 3 个刻度线内的原始文本发送到 SlackAPI

不幸的是,表格似乎是 Slack 目前不支持的 Markdown 标准。

一个粗略的解决方法是在文字文本块中使用 box-drawing characters(在单独的行上前后加上三个 backticks/inverted 逗号,即```)。

我偶尔会使用 tablesgenerator.com 即时生成它们。

╔══════╤══════╤══════════╗
║ Dog  │ Cat  │ Bird     ║
╠══════╪══════╪══════════╣
║ Woof │ Meow │ Tweet    ║
╟──────┼──────┼──────────╢
║ Fur  │ Fur  │ Feathers ║
╚══════╧══════╧══════════╝

它们当然不漂亮,但与 Slack 显然推荐的粘贴图像不同,它们的内容可以搜索,并且至少对于我的一些同事来说,可以在一定程度上使用辅助技术。

这是此处给出的不同答案的混合体。我也只能建议发送格式化字符串,因为它支持多于两列。

然而,问题是 Slack 并没有像代码通常那样给每个字符等量的 space。这意味着行不会正确对齐。因此,我建议使用需要标记 (```) 的代码块。

Python 使用格式化字符串的示例:

monthly_numbers_str = f"```"
monthly_numbers_str += f"{"Month".ljust(7)}{"Users".ljust(7)}\n"

monthly_numbers_str += f"{"Jan".ljust(7)}{"15".ljust(7)}\n"
monthly_numbers_str += f"{"Feb".ljust(7)}{"19".ljust(7)}\n"
monthly_numbers_str += f"{"Mar".ljust(7)}{"30".ljust(7)}\n"
monthly_numbers_str += f"```"

输出(如代码):

Month  Users
Jan    15
Feb    19
Mar    30