Guider · n8n (selvhostet)
Handle ut fra en forespørsels utfall i n8n
n8n kan få vite om en forespørsels utfall på to måter: en formbase Trigger som kjører for hver forespørsel til et skjema, eller en Wait-node som pauser arbeidsflyten som opprettet forespørselen. Begge ender i en Switch på approve, decline eller changes.
Last checked
Du trenger en formbase-kobling i n8n, og n8n-en din må være tilgjengelig fra internett over HTTPS; se Installer formbase-noden i n8n. For å forgrene på et utfall, trenger skjemaet et beslutningsspørsmål. Denne guiden bruker et Approval-skjema med ett.
| Bruk den når | |
|---|---|
| formbase Trigger | Forespørsler til skjemaet sendes fra hvor som helst: dashbordet, API-et, en agent eller en annen arbeidsflyt. Én publisert arbeidsflyt håndterer dem alle. |
| Wait for the Outcome | Arbeidsflyten som oppretter forespørselen skal fortsette med svaret, og beholde alt den visste fra før, som posten den jobbet med. |
Start en arbeidsflyt fra triggeren
1. Velg hendelsen
Legg til en formbase Trigger, velg koblingen og skjemaet, og velg én av forespørsel-hendelsene under Event:
| Event | Kjører når | Bærer |
|---|---|---|
| Request Completed | Mottakeren sender inn skjemaet. | Forespørselen, utfallet og hvert svar. |
| Request Expired | Forespørselen når utløpsdatoen ubesvart. | Bare forespørselen. |
| Request Canceled | Noen kansellerer forespørselen, fra dashbordet, API-et eller en Cancel request-node, eller formbase kansellerer den fordi skjemaet ble flyttet til papirkurven. | Forespørselen og kanselleringsgrunnen. |
2. Test den med en ekte forespørsel
En testforespørsel starter aldri en forespørselstrigger, så send en ekte en med Delivery satt til None, som i Send en forespørsel fra en n8n-arbeidsflyt, og åpne lenken dens selv. Klikk deretter Execute step og send inn skjemaet innen to minutter.
Hendelsen bærer et data.request-objekt ved siden av svarene. outcome er approve,
decline eller changes, og externalId er IDen du satte, slik at du kan finne posten forespørselen
handlet om. Hvert felt er i callback-nyttelasten.
Utløpte og kansellerte hendelser er vanskelige å fange med Execute step. Publiser arbeidsflyten og sjekk Executions i stedet.
3. Forgren på utfallet
Legg til en Switch-node med én rutingregel per utfall. Hver regel sammenligner
{{ $json.data.request.outcome }} med en verdi; slå på Rename Output for å navngi grenen etter den:

Forgren på data.request.outcome heller enn data.answers.decision: den mangler, ikke en annen verdi, når
forespørselen utløp eller ble kansellert. Sammenlign med verdier, aldri med etikettene i data.display: en etikett endres når
du gir alternativet nytt navn eller mottakeren svarer på et annet språk.
Koble en node til hver gren, og Publish arbeidsflyten deretter. Fra da av kjører hver fullførte forespørsel til skjemaet den.
Vent på utfallet i den samme arbeidsflyten
Her pauser arbeidsflyten som sender forespørselen til mottakeren svarer, og fortsetter deretter. Det tar tre endringer i arbeidsflyten fra Send en forespørsel fra en n8n-arbeidsflyt.
1. Slå på Wait for the Outcome
I Create request-noden, slå på Wait for the Outcome. Noden sender formbase denne kjøringens gjenopptakelses-URL som forespørselens callback. La Callback URL stå tom; noden avviser begge samtidig.
Hver kjøring har sin egen gjenopptakelses-URL, så en External ID gjenbrukt fra en tidligere kjøring feiler. Ta med
{{ $execution.id }} i den, eller la den stå tom.
2. Legg til en Wait-node
Legg til en Wait-node rett etter den, med Resume satt til On Webhook Call og
HTTP-metoden stående på POST.
3. Forgren på hendelsen
Legg til en Switch etter Wait-noden. Wait-noden legger hendelsen under body, så sammenlign
{{ $json.body.data.request.outcome }}. For å skille en fullført forespørsel fra en utløpt eller kansellert, sammenlign
{{ $json.body.type }} med request.completed, request.expired eller
request.canceled.
Kjør arbeidsflyten. Kjøringen stopper ved Wait-noden til mottakeren sender inn, og gjenopptas deretter nedover den matchende grenen:

En kjøring fra editoren venter på et ekte svar også. Test Mode fungerer her: callbacken til en testforespørsel gjenopptar likevel arbeidsflyten.
En forespørsel utløper etter 30 dager med mindre du setter Expires At, og utløp gjenopptar kjøringen med
request.expired. Sett Expires At for å avslutte ventingen tidligere.Wait-noden sjekker ikke
X-formbase-Signature-headeren; den stoler på at gjenopptakelses-URL-en er vanskelig å gjette. Hvis det ikke er nok, bruk formbase Trigger, som sjekker hver hendelse.
Hvis ingenting kjører
Det var en testforespørsel. En forespørsel opprettet med Test Mode på, eller med Prøv det selv, starter aldri en forespørselstrigger. Bare callbacken dens utløses.
Forespørselen var for et annet skjema. Triggeren lytter til skjemaet du valgte i den.
Arbeidsflyten er ikke publisert, eller koblingen dens når et annet arbeidsområde. Se sjekkene i guiden for offentlig lenke.
Create request feiler med callbackUrl is not allowed.
n8n-en din gir ut en
http://- eller privat gjenopptakelses-URL. Se Fortell n8n den offentlige adressen sin.Wait-noden gjenopptas aldri. formbase kan ikke nå gjenopptakelses-URL-en, for eksempel fordi tunnelen er nede eller proxyen blokkerer
/webhook-waiting/.