Sådan forbinder du Slack med Shopify Flow
Slack underskriver alle anmodninger, den sender til din app - slash-kommandoer, interaktive beskeder og leveringer via Events API - med din apps signeringsnøgle. »Workflow Webhooks« omdanner dette opkald til en »Shopify Flow«-udløser, så din butik kan reagere på det: mærke en kunde, tilføje en ordrekommentar, sende en intern e-mail, opdatere et metafelt - alt, hvad »Shopify Flow« kan gøre.
Denne vejledning beskriver hele forløbet - Slack sender, Workflow Webhooks modtager og verificerer, Shopify Flow udfører - hvor Slacks HMAC-signatur kontrolleres ved hver anmodning, så kun Slack kan igangsætte din arbejdsgang.
Hvad du kan bygge
- Lad dit team starte en »Shopify Flow«-arbejdsgang fra Slack ved hjælp af en slash-kommando, uden at give nogen administratorrettigheder.
- Godkend noget i Slack, og lad Shopify Flow tagge den ordre eller kunde, der blev godkendt.
- Gør en Slack-genvej til en butiksfunktion - tilføj et tag, send en e-mail, opdater et metafelt.
Typiske begivenheder, der kan sendes: en slash-kommando som f.eks. /restock, et klik på en knap i en interaktiv besked, en begivenhed fra Events API.
Før du går i gang
- Workflow Webhooks installeret i din Shopify-butik.
- Shopify Flow installeret, som kan hentes gratis fra App Store på Shopify.
- En konto på Slack med tilladelse til at oprette webhooks.
Trin 1 - Opret webhook på Workflow Webhooks
- Åbn Workflow Webhooks -> Webhooks -> Opret webhook, og giv den et navn, du kan genkende i Shopify Flow, f.eks.
Slack events. - Vælg HMAC under »Autentificering«.
- Vælg Slack under »Signature provider«. Appen udfylder selv overskriften, algoritmen, den signerede payload og replay-vinduet for dig - der er ikke andet, du skal konfigurere.
- Lad feltet »Secret« være tomt foreløbig, og klik på »Gem«. Kopier den webhook-URL, der vises på siden.
Se Godkendelse for de øvrige godkendelsesmetoder og Kortlægning af payload og strømningsvariabler for at vælge, hvilke felter der skal sendes til Shopify Flow.
Trin 2 - Tilføj endepunktet i Slack
I konfigurationen af din Slack-app skal du tilføje URL’en som »Request URL« for slash-kommandoen, interaktiviteten eller Events API’et og kopiere »Signing Secret« fra »Grundlæggende oplysninger« → »App-adgangskoder«.
Sådan finder du din Slack-signeringsnøgle
Slack-appens signeringsnøgle (Grundlæggende oplysninger → App-adgangskoder).
Slacks egen dokumentation om webhook-signaturer indeholder den præcise ordlyd og skærmbilleder, der gælder for din konto.
Indsæt den hemmelige nøgle i feltet »Secret« under webhooken på Workflow Webhooks og gem. Fra det øjeblik bliver hver eneste Slack-besked verificeret, før den når frem til Shopify Flow.
Hvad dette kontrollerer
| Hvad | Værdi |
|---|---|
| Signaturhoved | X-Slack-Signature |
| Hvor underskriften er placeret | Værdien i overskriften, efter præfikset v0= |
| Hvad der er underskrevet | v0:{timestamp}:{body} |
| Underskrift | HMAC-SHA256, hex-kodet |
| Tidspunkt | X-Slack-Request-Timestamp-overskriften, udtrykt i Unix-sekunder |
| Beskyttelse mod gentagelse | Anmodninger, hvis signerede tidsstempel ligger mere end 5 minutter fra nu, afvises |
| Hemmeligheden | Bruges som almindelig tekst. Indsæt den nøjagtigt, som afsenderen har angivet den |
I den signerede payload er {body} den ubehandlede anmodningstekst, byte for byte, og {timestamp} er ovenstående tidsstempel.
En anmodning, der ikke opfylder et af disse krav, afvises med fejlmeddelelsen »401«, registreres i »Historik og fejlfinding« og udløser aldrig en arbejdsgang.
Trin 3 - Opret arbejdsgangen »Shopify Flow«
- I »Shopify Flow« skal du oprette en arbejdsgang og vælge udløseren »Workflow Webhooks«.
- Tryk på »Optag begivenheder«, og send derefter en testbegivenhed fra Slack (eller brug »Send test« i »Workflow Webhooks«), så Shopify Flow kan lære dine datas struktur at kende.
- Hver eneste webhook, du ejer, udløser den samme Shopify Flow-trigger, så tilføj en første betingelse baseret på webhook-id’et for at sikre, at denne arbejdsgang kun sendes til Slack. Id’et vises på webhook-siden.
- Tilføj dine handlinger - tag en kunde, tilføj en bemærkning, send en intern e-mail, opdater et metafelt.



Trin 4 - Test det fra start til slut
Udløser en reel hændelse i Slack. Under »Workflow Webhooks« → »History« bør du kunne se opkaldet med status »Success«. Hvis signaturen var forkert, får du i stedet en fejlmeddelelse med årsagen, og på Bekræftelse af signerede webhooks finder du en forklaring på signaturtestværktøjet, der viser dig præcis, hvilket trin der mislykkedes.

Underskriften stemmer ikke overens▾
I denne ordre: hemmeligheden (den mest almindelige årsag - et ekstra mellemrum eller en nøgle fra det forkerte miljø), om afsenderen bruger en anden endpoints hemmelighed, og om noget mellem Slack og appen omskriver brødteksten. Signaturerne dækker de rå bytes, så en proxy, der omformaterer JSON, ødelægger dem. Signaturtesteren på webhook-siden viser den nøjagtige tekst, der blev signeret.
Jeg får en 401-fejl ved hver eneste anmodning▾
Kontroller, at webhookens godkendelse er indstillet til HMAC med Slack valgt som udbyder, at den hemmelige nøgle er udfyldt, og at Slack sender til URL’en nøjagtigt som angivet i appen, inklusive koden i slutningen.
Der vises intet under »Historik«▾
Anmodningen blev aldrig modtaget. Tjek URL’en igen i Slack, og se i Slacks egen leveringslog, hvilket svar der blev modtaget. En 404 betyder, at webhooken er forkert eller slettet, mens en 429 betyder, at du har overskredet dit abonnements grænse for antallet af kald - se Planer og anvendelse.
Arbejdsgangen kører for de forkerte begivenheder▾
Hver eneste webhook i din butik udløser den samme Shopify Flow-trigger. Tilføj en betingelse baseret på webhook-id’et som det første trin i arbejdsgangen, eller begræns de begivenheder, du sender fra Slack.
Anmodningerne mislykkes med fejlmeddelelsen »tidsstempel uden for tolerancegrænserne«▾
Slack underskriver en tidsstempel, og appen afviser alt, der er mere end 5 minutter gammelt. Dette skyldes normalt et urproblem hos afsenderen eller en levering, som Slack har forsøgt at sende igen meget senere med den oprindelige tidsstempel. Gentagne forsøg fra den samme oprindelige anmodning kan ikke godkendes; bed Slack om at sende en ny begivenhed.
Relateret
- Bekræftelse af signerede webhooks - alle udbydere, vi verificerer, og hvordan man beskriver en udbyder, som vi ikke verificerer.
- Kortlægning af payload og strømningsvariabler - at udtrække de rigtige felter fra Payloaden og overføre dem til Shopify Flow.
- Beskyttelse mod dobbeltlevering - hvad der sker, når Slack forsøger at sende beskeden igen.
- Historik og fejlfinding - loggen over alle anmodninger, med mulighed for afspilning.

