Een Slack-kanaal koppelen via de API¶
Deze pagina is voor beheerders die meldingen over hun organisatie in een Slack-kanaal willen zien. Ze laat zien hoe je een kanaal koppelt, wat er in een bericht staat, hoe je test en wat je doet als Slack niets meer ontvangt. Hoe je een verzoek aan OS doet (adres, aanmelden, pagina's, fouten), staat in De access-API.
Voordat je begint¶
- Slack moet in deze omgeving aan staan. Staat het uit, dan antwoordt OS
409op koppelen, wijzigen en testen. - Je hebt
writenodig opnotification_channel(Soorten en acties). De beheerdersrol heeft dat, en het zit in de dienst van elke organisatie, welke pakketten ze ook heeft. - Maak in Slack een incoming webhook voor het kanaal (in Slack: een app met Incoming Webhooks,
dan Add New Webhook to Workspace en het kanaal kiezen). Slack geeft je een adres dat begint met
https://hooks.slack.com/services/.
Wie het adres heeft, kan in dat kanaal schrijven. OS bewaart het versleuteld en toont het nooit meer, ook niet aan jou. Zet het nergens anders neer.
Koppelen¶
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": "#beheer",
"kinds": ["service.plan_lapsed"], "locale": "nl"}'
{"id": "swh_...", "label": "#beheer", "kinds": ["service.plan_lapsed"], "locale": "nl",
"state": "active", "consecutive_failures": 0, "last_delivered_at": null,
"allowed_actions": ["see", "write", "delete"]}
kindsnoemt de soorten meldingen die in het kanaal komen. Alleen soorten over de organisatie zelf kunnen naar een kanaal: een abonnement dat is afgelopen (service.plan_lapsed), een webhook die faalt of is uitgeschakeld (events.webhook_failing,events.webhook_disabled) en een Slack-kanaal dat niets meer ontvangt (notifications.slack_failing). Over mensen gaat er nooit iets naar Slack.localeisnl,en,de,frofes; zonder is het Nederlands.- Een organisatie koppelt standaard ten hoogste vijf kanalen.
| Antwoord | Betekenis |
|---|---|
201 |
Gekoppeld; Location wijst naar de koppeling. |
409 |
Slack staat niet aan in deze omgeving, of je organisatie heeft al vijf kanalen. |
422 |
Het adres is geen incoming webhook van Slack, of een soort kan niet naar een kanaal. OS herhaalt het adres niet in het antwoord. |
Wat er in een bericht staat¶
Iedereen in het Slack-kanaal leest mee, ook wie geen lid van je organisatie in OS is. Daarom staat er in een bericht alleen: de soort melding zoals het meldingencentrum die noemt (zoals "Een abonnement is afgelopen"), in de taal van de koppeling, de naam van de organisatie, hoogstens één datum of aantal (bij een afgelopen abonnement: de datum waarop het afliep) en een link naar OS. Nooit de naam of het adres van een persoon, een bedrag, de naam van een abonnement, de naam van een webhook of iets wat iemand schreef.
Welke kanalen een melding krijgt: alleen die van je eigen organisatie, en alleen voor meldingen over je organisatie zelf. Het kanaal van een partner krijgt nooit een melding over een van zijn klanten; de beheerders van de partner lezen die in OS en per mail. Een klant zonder eigen kanaal krijgt niets in Slack.
Zolang de regels van je organisatie een forbid op notification_channel
bevatten, plaatst OS niets in haar Slack-kanalen, ook niet wat al klaarstond.
Testen, wijzigen, ontkoppelen¶
| Verzoek | Wat het doet |
|---|---|
GET .../slack-webhooks |
de koppelingen, zonder adres |
GET .../slack-webhooks/{id} |
één koppeling, met ETag |
PATCH .../slack-webhooks/{id} |
naam, soorten, taal of een nieuw adres, met If-Match |
POST .../slack-webhooks/{id}/test |
zet één testbericht klaar; 202 |
DELETE .../slack-webhooks/{id} |
ontkoppelt; 204, ook als Slack uit staat |
Een test komt binnen enkele seconden in het kanaal. Of hij aankwam, zie je aan last_delivered_at.
Zolang de regels van je organisatie notification_channel verbieden, antwoordt een test nog steeds
202 en komt er niets aan.
Als Slack niets meer ontvangt¶
revoked: Slack zei dat de webhook niet meer bestaat, of het kanaal is gearchiveerd. Maak in Slack een nieuwe webhook en zet die metPATCHop de koppeling; ze is dan meteen weeractive.failing: berichten bleven mislukken (standaard vijf keer achter elkaar). OS plaatst niets meer tot je een nieuw adres zet of een test stuurt die aankomt.
In beide gevallen krijgen de beheerders van je organisatie een melding in OS en per mail, hoogstens één keer per week per koppeling. Elke wijziging staat in het auditlog, zonder het adres.
Waar de berichten heen gaan¶
Slack is een dienst van Slack Technologies in de Verenigde Staten. OS stuurt alleen de inhoud
hierboven, en alleen naar de kanalen die je koppelt. Een organisatie die niets naar de Verenigde
Staten mag sturen, verbiedt notification_channel in haar regels.