Маттермост (командный чат) - как публиковать на канале через curl?
Мы используем mattermost
как внутренняя альтернатива slack
,
Как я могу написать на канал в самом деле, например, с помощью сценария, используя curl
?
Мне нужно знать:
- как получить "ключ интеграции" от материи
- формат
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
) но я борюсь за хороший пример того, что я хочу сделать.
Спасибо
1 ответ
Решение
Вот формат, используя curl
и полезная нагрузка JSON:
curl -i -X POST -d 'payload={"text": "Hello, world!", "username":"xxx", "channel":"yyy"}' \
https://mattermost.intern.mycompany.com/hooks/abcdefg1234567
Для других я рекомендую использовать jq
программа в дополнение к
curl
(у вашего дистрибутива, вероятно, есть пакет для него в стандартных репозиториях). Он превратит любой вводимый текст в действительные данные JSON.
Например, сценарий называется
matmo.sh
:
#!/bin/bash
MATTERMOST_HOOK_URL=https://mattermost.example.com/hooks/long-random-hook-id
data="$(jq --slurp --raw-input --compact-output --arg channel $1 --arg username $2 '{$channel, $username, text:.}')"
curl -X POST -H 'Content-Type: application/json' -d "$data" "$MATTERMOST_HOOK_URL" &> /dev/null
Тогда используйте это так:
command-that-produces-output | ./matmo.sh '#releases' 'releasebot'