Mattermost(团队聊天)- 如何通过 curl post 到频道?

Mattermost (team chat) - how to post to a channel via curl?

我们正在使用 mattermost 作为 slack 的内部托管替代方案。

如何写入 mattermost 中的频道,例如通过脚本,使用 curl?

我需要知道:

slack 一起使用的脚本示例:

SLACK_URL='https://hooks.slack.com/services/my-long-integration-key'
message='Project XYZ was released successfully.'

curl -X POST -H "Content-Type: application/json" \
    --data "{ \"channel\": \"#releases\", \"username\": \"$me\", \"text\": \"$MESSAGE\" }" \
    $SLACK_URL &> /dev/null

确实有一个 Mattermost API(相当于 slack-api),但我正在努力寻找一个很好的例子来说明我想做什么。

谢谢

这是格式,使用 curl 和 json 有效负载:

curl -i -X POST -d 'payload={"text": "Hello, world!", "username":"xxx", "channel":"yyy"}' \
https://mattermost.intern.mycompany.com/hooks/abcdefg1234567

对于其他人,我建议除了使用 curl 之外还使用 jq 程序(您的发行版可能在标准回购协议中有一个程序包)。它会将任何文本输入转换为有效的 JSON 数据。

例如名为 matmo.sh:

的脚本
#!/bin/bash
mattermost_hook_url='https://mattermost.example.com/hooks/long-random-hook-id'
jq --slurp --raw-input --compact-output --arg channel "" --arg username "" '{$channel, $username, text:.}' \
    | curl -H 'Content-Type: application/json' --data @- "$mattermost_hook_url" &> /dev/null

然后像这样通过管道传递给它:

command-that-produces-output | ./matmo.sh '#releases' releasebot