Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
technique:adminserv:mattermost:hooks_commands [2021/01/05 16:26] – qduchemi | technique:adminserv:mattermost:hooks_commands [2022/04/25 09:59] (Version actuelle) – qduchemi |
---|
| |
<bootnote> | <bootnote> |
Les **hooks** sont très pratiques pour réagir à un événement extérieur et poster un message suite à cet événements. Voici quelques exemples : | Les **hooks** sont très pratiques pour réagir à un événement extérieur et poster un message suite à cet événement. Voici quelques exemples : |
* Ajout d'une nouvelle tâche sur un kanban : un message est posté sur le canal concerné | * Ajout d'une nouvelle tâche sur un kanban : un message est posté sur le canal concerné |
* Ouverture d'une nouvelle issue sur Gitlab : une mention est envoyée aux membres du dépôt | * Ouverture d'une nouvelle issue sur Gitlab : une mention est envoyée aux membres du dépôt |
</bootnote> | </bootnote> |
| |
Pour résumer, les hooks permettent d'être informés d'un événements, les commandes permettent de déclencher un événement ou de générer des informations dynamiques. | Pour résumer, les hooks permettent d'être informés d'un événement, les commandes permettent de déclencher un événement ou de générer des informations dynamiques. |
| |
## Administration et portée | ## Administration et portée |
https://team.picasoft.net/<equipe>/integrations | https://team.picasoft.net/<equipe>/integrations |
``` | ``` |
| |
Ou depuis le menu (clic sur le burger à côté du nom de compte → Intégrations). | |
| |
{{ :technique:adminserv:mattermost:integ_mattermost.png |}} | {{ :technique:adminserv:mattermost:integ_mattermost.png |}} |
def result(): | def result(): |
return { | return { |
"text": f"## Commande reçue!\nPayload : ${request.form['text']}" | "text": f"## Commande reçue!\nPayload : {request.form['text']}" |
} | } |
``` | ``` |
L'application est accessible à l'URL de votre serveur sur le port 5000. | L'application est accessible à l'URL de votre serveur sur le port 5000. |
| |
<bootnote critical>Attention, ne jamais utiliser ce genre d'exemples en production! Le serveur de développement de Flask n'est à utiliser que pour des tests. De plus, HTTPS n'est pas activé, ce qui rend possible l'interception du jeton utilisé pour valider la réponse.</bootnote> | <bootnote critical>Ne jamais utiliser ce genre d'exemples en production! Le serveur de développement de Flask n'est à utiliser que pour des tests. De plus, HTTPS n'est pas activé, ce qui rend possible l'interception du jeton utilisé pour valider la réponse.</bootnote> |
| |
<bootnote critical>Dans un exemple réel, le serveur doit valider que le jeton reçu en paramètre de la requête (`token`) est le même que le jeton généré après l'ajout de la commande dans Mattermost. Cette vérification permet de valider que la requête vient bien de Mattermost, et pas d'un usurpateur qui pourrait vouloir récupérer des informations sensibles ou déclencher un processus non-souhaité.</bootnote> | <bootnote critical>Dans un exemple réel, le serveur doit valider que le jeton reçu en paramètre de la requête (`token`) est le même que le jeton généré après l'ajout de la commande dans Mattermost. Cette vérification permet de valider que la requête vient bien de Mattermost, et pas d'un usurpateur qui pourrait vouloir récupérer des informations sensibles ou déclencher un processus non-souhaité.</bootnote> |