Connecter un canal Slack par l'API¶
Cette page s'adresse aux administrateurs qui veulent recevoir dans un canal Slack des notifications sur leur organisation. Elle montre comment connecter un canal, ce que dit un message, comment tester et que faire quand Slack ne reçoit plus rien. Comment faire une requête à OS (adresse, connexion, pages, erreurs) est expliqué dans L'API d'accès.
Avant de commencer¶
- Slack doit être activé dans cet environnement. S'il est désactivé, OS répond
409à la connexion, à la modification et au test. - Il vous faut
writesurnotification_channel(Types et actions). Le rôle d'administrateur l'a, et il fait partie du service de chaque organisation, quelles que soient ses offres. - Dans Slack, créez un incoming webhook pour le canal (dans Slack : une application avec Incoming Webhooks, puis Add New Webhook to Workspace et choisissez le canal). Slack vous donne une adresse qui commence par
https://hooks.slack.com/services/.
Qui a l'adresse peut écrire dans ce canal. OS la garde chiffrée et ne la montre plus jamais, pas même à vous. Ne la conservez nulle part ailleurs.
Connecter¶
curl -s -X POST "$OS/api/v1/organisations/$ORG/slack-webhooks" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"url": "https://hooks.slack.com/services/T.../B.../...", "label": "#ops",
"kinds": ["service.plan_lapsed"], "locale": "en"}'
{"id": "swh_...", "label": "#ops", "kinds": ["service.plan_lapsed"], "locale": "en",
"state": "active", "consecutive_failures": 0, "last_delivered_at": null,
"allowed_actions": ["see", "write", "delete"]}
kindsnomme les sortes de notifications qui vont au canal. Seules les sortes qui concernent l'organisation elle-même peuvent aller à un canal : une offre arrivée à échéance (service.plan_lapsed), un webhook qui échoue ou a été désactivé (events.webhook_failing,events.webhook_disabled) et un canal Slack qui ne reçoit plus rien (notifications.slack_failing). Rien sur des personnes ne va jamais dans Slack.localevautnl,en,de,froues; sans elle, le néerlandais.- Une organisation connecte au plus cinq canaux par défaut.
| Réponse | Sens |
|---|---|
201 |
Connecté ; Location renvoie à la connexion. |
409 |
Slack n'est pas activé dans cet environnement, ou votre organisation a déjà cinq canaux. |
422 |
L'adresse n'est pas un incoming webhook de Slack, ou une sorte ne peut pas aller à un canal. OS ne répète pas l'adresse dans la réponse. |
Ce que dit un message¶
Tout le monde dans le canal Slack lit les messages, y compris des personnes qui ne sont pas membres de votre organisation dans OS. Un message ne contient donc que : la sorte de notification telle que le centre de notifications la nomme (par exemple « Une offre est arrivée à échéance »), dans la langue de la connexion, le nom de l'organisation, au plus une date ou un nombre (pour une offre arrivée à échéance : la date de sa fin) et un lien vers OS. Jamais le nom ou l'adresse d'une personne, un montant, le nom d'une offre, le nom d'un webhook ni rien de ce que quelqu'un a écrit.
Quels canaux une notification atteint : seulement ceux de votre propre organisation, et seulement pour les notifications sur votre organisation elle-même. Le canal d'un partenaire ne reçoit jamais de notification sur l'un de ses clients ; les administrateurs du partenaire les lisent dans OS et par e-mail. Un client sans canal à lui ne reçoit rien dans Slack.
Tant que les règles de votre organisation contiennent un forbid sur notification_channel, OS ne poste rien dans aucun de ses canaux Slack, pas même ce qui attendait déjà d'être posté.
Tester, modifier, déconnecter¶
| Requête | Ce qu'elle fait |
|---|---|
GET .../slack-webhooks |
les connexions, sans leurs adresses |
GET .../slack-webhooks/{id} |
une connexion, avec ETag |
PATCH .../slack-webhooks/{id} |
nom, sortes, langue ou nouvelle adresse, avec If-Match |
POST .../slack-webhooks/{id}/test |
met un message de test en file ; 202 |
DELETE .../slack-webhooks/{id} |
déconnecte ; 204, même quand Slack est désactivé |
Un test atteint le canal en quelques secondes. S'il est arrivé, last_delivered_at le montre. Tant que les règles de votre organisation interdisent notification_channel, un test répond quand même 202 et rien n'arrive.
Quand Slack ne reçoit plus rien¶
revoked: Slack a dit que le webhook n'existe plus, ou que le canal a été archivé. Créez un nouveau webhook dans Slack et mettez-le sur la connexion avecPATCH; elle redevient aussitôtactive.failing: les envois ont échoué à répétition (cinq fois de suite par défaut). OS ne poste plus rien tant que vous n'avez pas mis une nouvelle adresse ou envoyé un test qui arrive.
Dans les deux cas, les administrateurs de votre organisation reçoivent une notification dans OS et par e-mail, au plus une fois par semaine et par connexion. Chaque changement figure dans le journal d'audit, sans l'adresse.
Où vont les messages¶
Slack est un service de Slack Technologies aux États-Unis. OS n'envoie que le contenu décrit plus haut, et seulement aux canaux que vous connectez. Une organisation qui ne peut rien envoyer aux États-Unis interdit notification_channel dans ses règles.