懒散的webhook html表

时间:2016-05-06 20:09:16

标签: webhooks slack-api slack

我有一个html表,我试图通过webhook发布。有没有办法发布html表松弛?下面是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>

8 个答案:

答案 0 :(得分:33)

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

官方答案是 Slack消息不支持表格

他们建议生成一个表并将其作为图像发布。

他们还表示他们会将其添加到他们的积压工作中。

答案 1 :(得分:27)

不,我不相信有任何方法可以在Slack消息中绘制表格。

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

答案 2 :(得分:12)

不是专门的html表,但您可以使用像console.table这样的包将表的数据打印到字符串变量中。然后使用triple backticks将您的表添加到松弛消息的文本字段中。例如:

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

然后作为松弛消息附件的一部分:

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

答案 3 :(得分:6)

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

一种粗略的解决方法是在文字文本块中使用box-drawing characters(在文本行之前和后接三个反引号/反逗号,即“'',在单独的行中)。

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

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

它们肯定不是很漂亮,但是与Slack显然推荐的粘贴图像不同,可以搜索其内容,并且至少对于我的一些同事而言,它们在某种程度上与辅助技术一起工作。

答案 4 :(得分:3)

您现在可以使用“字段” layout block轻松地制作简单的两个列表。

您可以创建两列表格:

[
   {
        "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"
            }

        ]
    }
]

给你

enter image description here

或者转到字段样式:

[
    {
        "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"
            }

        ]
    }
]

将产生产量:

enter image description here

答案 5 :(得分:3)

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

但是,问题是Slack不能像代码通常那样给每个字符提供相等的空间。这意味着行将无法正确对齐。因此,我建议使用需要打勾(```)的代码块。

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

let handleChange = (event) => {
  const { value } = event.target;

  setSearchState(searchState => ({
    ...searchState,
    results: searchProducts(value),
    query: value,
  }));
};

输出(作为代码)

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"```"

答案 6 :(得分:0)

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

[
                    {
                        "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"
                            }
                        ]
                    }
                ]

这是结果

enter image description here

答案 7 :(得分:0)

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

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

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