Маттермост (командный чат) - как публиковать на канале через 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'
Другие вопросы по тегам