Aller au contenu

Notifications Mattermost

Aperçu

Pour utiliser ce plugin, vous devez d’abord disposer d’une instance http://mattermost.com. Téléchargez leur logiciel et configurez-le.

Ce plugin prend en charge 2 styles d’intégration distincts :

  1. Webhooks entrants (par défaut), qui publient vers /hooks/<webhook_token>.
  2. Publication robot (API REST) (mode=bot), qui publie vers /api/v4/posts à l’aide d’un jeton d’accès (robot ou utilisateur).

Vous aurez besoin d’un *webhook entrant. Vous pouvez le configurer comme suit :

  1. Cliquez sur l’option Integrations dans le menu déroulant du canal, puis sélectionnez Incoming Webhook :
    Webhook entrant Mattermost
  2. À partir de là, sélectionnez Add Incoming Webhook :
    Ajouter un webhook entrant
  3. Enfin, vous pourrez personnaliser le comportement du webhook, puis cliquer sur Save en bas de la page une fois terminé.
    Generer une URL Apprise a partir de celui-ci

L’URL fournie peut ressembler à ceci :

Fenêtre de terminal
# The URL provided by Mattermost:
http://localhost:8065/hooks/yokkutpah3r3urc5h6i969yima
^ ^ ^
| | |
hostname port webhook token
# From here you can do the following to generate your Apprise URL:
# - http:// becomes mmost://
# - drop /hooks reference
# Which gets you:
mmost://localhost:8065/yokkutpah3r3urc5h6i969yima

Si vous voulez que le message soit attribué à un compte robot (ou à un utilisateur précis), vous devez utiliser la publication via l’API REST Mattermost :

  • POST /api/v4/posts
  • Authorization: Bearer <bot_access_token>
  • charge utile JSON contenant channel_id et message

Les incoming webhooks ne s’authentifient pas comme une session utilisateur ; ils ne peuvent donc pas réellement publier en tant que compte robot. Vous pouvez toujours définir un nom d’affichage en mode webhook, mais cela dépend des réglages du serveur Mattermost autorisant les surcharges.

En mode robot, vous pouvez cibler les canaux de deux manières :

  1. Fournir un channel_id directement (méthode recommandée).
  2. Fournir uniquement #channel_name lorsqu’un nom d’équipe est également fourni, car Apprise doit effectuer une résolution pour traduire #channel_name en channel_id.

Les pièces jointes ne sont prises en charge qu’en mode robot. Apprise envoie d’abord chaque fichier vers /api/v4/files (une requête par fichier et par canal), puis inclut les identifiants de fichiers renvoyés dans la charge utile du post.

La syntaxe valide est la suivante :

  • mmost://{hostname}/{token}
  • mmost://{hostname}:{port}/{token}
  • mmost://{botname}@{hostname}/{token}
  • mmost://{botname}@{hostname}:{port}/{token}
  • mmost://{hostname}/{path}/{token}
  • mmost://{hostname}:{port}/{path}/{token}
  • mmost://{botname}@{hostname}/{path}/{token}
  • mmost://{botname}@{hostname}:{port}/{path}/{token}

Les connexions sécurisées (via https) doivent utiliser mmosts://, tandis que les connexions non sécurisées (via http) doivent utiliser mmost://. Les deux suivent la même structure.

Le mode webhook peut être utilisé avec ou sans canaux :

  • Si des canaux sont fournis, Apprise inclura "channel" dans la charge utile.
  • Si aucun canal n’est fourni, Apprise n’inclura pas "channel", et Mattermost utilisera les paramètres par défaut configurés dans le webhook.

Le mode robot utilise la même syntaxe d’URL de base, avec ces particularités :

  • {token} est un jeton d’accès (jeton robot ou jeton utilisateur) ;
  • vous devez fournir une ou plusieurs cibles via to= ou channels= ;
  • image et icon_url ne s’appliquent pas dans ce mode.

Si aucun nom d’équipe n’est fourni, les cibles de type #channel_name sont ignorées.

Exemples :

  • mmosts://{hostname}/{access_token}?mode=bot&to={channel_id}
  • mmosts://{hostname}/{access_token}?mode=bot&to={id1},{id2}
  • mmosts://{team}@{hostname}/{access_token}?mode=bot&to=#general
  • mmosts://{hostname}/{access_token}?mode=bot&team={team}&to=#general
  • mmosts://{hostname}:{port}/{path}/{access_token}?mode=bot&to={channel_id}
VariableRequisDescription
hostnameOuiLe serveur sur lequel Mattermost écoute.
tokenOuiMode webhook : jeton de webhook entrant. Mode robot : jeton d’accès robot ou utilisateur (jeton Bearer).
portNonLe port sur lequel Mattermost écoute. S’il est omis, Apprise utilise le port par défaut associé au schéma, par exemple 443 pour mmosts://. De nombreuses installations Mattermost utilisent le port 8065, indiquez-le si nécessaire.
pathNonVous pouvez préciser un sous-chemin si besoin. Le dernier élément du chemin doit être le token.
botnameNonMode webhook uniquement. Surcharge le nom d’affichage du message webhook (champ username de la charge utile). Requiert le réglage administrateur Mattermost “Enable integrations to override usernames”. Non applicable en mode robot, où les messages apparaissent sous le nom du robot.
teamNonMode robot uniquement. Nom d’équipe utilisé pour résoudre les cibles #channel_name en identifiants de canaux. Peut aussi être fourni dans la partie utilisateur de l’URL ({team}@{hostname}). Non applicable en mode webhook.
imageNonMode webhook uniquement. Inclut l’image d’état Apprise. Ignoré si icon_url est défini.
icon_urlNonMode webhook uniquement. Surcharge l’icône d’avatar avec une URL personnalisée. Requiert le réglage administrateur Mattermost “Enable integrations to override profile picture icons”.
channelsNonMode webhook : noms de canaux. Mode robot : identifiants de canaux (ou #channel_name si team est fourni). Vous pouvez fournir une liste séparée par des virgules.
channelNonAlias de channels.
toNonAlias de channels. Utile dans une configuration YAML où to: existe déjà.
modeNonwebhook (par défaut) ou bot.
VariableDescription
overflowCe paramètre peut être défini sur split, truncate ou upstream. Il détermine la manière dont Apprise remet le message que vous lui transmettez. Par défaut, il vaut upstream.
👉 upstream : ne fait aucune modification et transmet le message exactement tel qu’il a été reçu au service.
👉 truncate : veille à ce que le message tienne dans la limite amont documentée par le service. Si plus d’informations sont fournies que la limite définie, l’excédent est tronqué.
👉 split : similaire à truncate, sauf que si le message dépasse la limite amont documentée par le service, il est découpé en plusieurs morceaux plus petits puis envoyés séquentiellement.
formatCe paramètre peut être défini sur text, html ou markdown. Certains services prennent en charge plusieurs formats de publication du contenu. La valeur par défaut varie selon le service choisi et peut correspondre à l’un de ces trois formats. Vous pouvez facultativement forcer cette option pour vous écarter du comportement par défaut. Si le service ne prend pas en charge plusieurs formats de transmission, ce champ est ignoré.
verifyLes requêtes externes vers des emplacements sécurisés, par exemple via https, utilisent des certificats. Par défaut, Apprise vérifie la validité de ces certificats ; si ce n’est pas le cas, aucune notification n’est envoyée à la source. Dans certains cas, un utilisateur ne dispose pas d’une autorité de certification pour valider la clé ou fait simplement confiance à la source ; dans ce cas, vous pouvez définir ce drapeau sur no. Par défaut, il vaut yes.
ctoSignifie Socket Connect Timeout. Il s’agit du nombre de secondes pendant lesquelles Requests attend que votre client établisse une connexion avec une machine distante, ce qui correspond à l’appel connect() sur la socket. La valeur par défaut est de 4.0 secondes.
rtoSignifie Socket Read Timeout. Il s’agit du nombre de secondes pendant lesquelles le client attend que le serveur envoie une réponse. La valeur par défaut est de 4.0 secondes.
emojisActive la prise en charge des emojis, par exemple :+1: qui sera traduit en 👍. Par défaut, cette option vaut no.
Remarque : selon la configuration côté serveur, l’administrateur peut désactiver globalement la prise en charge des emojis ; mais par défaut, ce n’est pas le cas.
tzIdentifie le fuseau horaire de la base IANA que vous souhaitez utiliser. Par défaut, celui-ci est détecté à partir de la configuration du serveur qui exécute Apprise. Vous pouvez le définir sur des valeurs comme America/Toronto, ou sur tout autre fuseau correctement formaté correspondant à votre région.

Envoyer une notification Mattermost sécurisée à notre serveur via un webhook :

Fenêtre de terminal
# Assuming our {hostname} is mattermost.server.local
# Assuming our {token} is 3ccdd113474722377935511fc85d3dd4
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
mmosts://mattermost.server.local/3ccdd113474722377935511fc85d3dd4

Envoyer une notification Mattermost sécurisée à notre serveur tournant sur le port TCP 8065 :

Fenêtre de terminal
# Assuming our {hostname} is mattermost.server.local
# Assuming our secure {port} our server is running on is 8065
# Assuming our {token} is 3ccdd113474722377935511fc85d3dd4
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
mmosts://mattermost.server.local:8065/3ccdd113474722377935511fc85d3dd4

Envoyer une notification Mattermost non sécurisée à un serveur en visant des canaux spécifiques :

Fenêtre de terminal
# Assuming our {hostname} is mattermost.server.local
# Assuming our {token} is 3ccdd113474722377935511fc85d3dd4
# Assuming our {channels} is #support and #general
# We don't need to provide the '#' (hashtag) prefix:
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
mmost://mattermost.server.local/3ccdd113474722377935511fc85d3dd4?channels=support,general

Envoyer une notification webhook avec un nom d’affichage personnalisé (botname) :

Fenêtre de terminal
# Assuming our {hostname} is mattermost.server.local
# Assuming our {token} is 3ccdd113474722377935511fc85d3dd4
# Assuming our desired display name is mybot
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
'mmosts://mybot@mattermost.server.local/3ccdd113474722377935511fc85d3dd4'

Publier en tant que bot dans un identifiant de canal spécifique :

Fenêtre de terminal
# Assuming our {access_token} is abcd1234
# Assuming our {channel_id} is f6g7ha13d4e58ib2c9aa
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
'mmosts://mattermost.server.local/abcd1234?mode=bot&to=f6g7ha13d4e58ib2c9aa'

Publier en tant que bot dans plusieurs identifiants de canaux :

Fenêtre de terminal
# Assuming our {access_token} is abcd1234
# Assuming our {channel_ids} are a1b2c3d4e5f6g7h8i9j0 and f6g7ha13d4e58ib2c9aa
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
'mmosts://mattermost.server.local/abcd1234?mode=bot&to=a1b2c3d4e5f6g7h8i9j0,f6g7ha13d4e58ib2c9aa'

Publier en tant que bot en utilisant la résolution #channel_name (équipe requise) :

Fenêtre de terminal
# Assuming our {access_token} is abcd1234
# Assuming our {team} is myteam
# Assuming our {channel_name} is general
# Team provided via URL user portion:
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
'mmosts://myteam@mattermost.server.local/abcd1234?mode=bot&to=#general'
# Team provided via query string:
apprise -vv -t "Titre du Message de Test" -b "Corps du Message de Test" \
'mmosts://mattermost.server.local/abcd1234?mode=bot&team=myteam&to=#general'

Envoyer un message bot avec une pièce jointe :

Fenêtre de terminal
# Assuming our {access_token} is abcd1234
# Assuming our {channel_id} is f6g7ha13d4e58ib2c9aa
# Assuming the file to attach is /path/to/report.pdf
apprise -vv -t "Rapport" -b "Voir ci-joint." \
--attach /path/to/report.pdf \
'mmosts://mattermost.server.local/abcd1234?mode=bot&to=f6g7ha13d4e58ib2c9aa'
Questions ou commentaires ?

Documentation

Vous avez repéré une faute de frappe ou une erreur ? Signalez-la ou proposez une correction .

Problèmes Techniques

Vous rencontrez un problème avec le code ? Ouvrez un ticket sur GitHub :

Conçu avec amour depuis le Canada