formbasedocs
Gå til appenAppen

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 TriggerForespø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 OutcomeArbeidsflyten 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:

EventKjører nårBærer
Request CompletedMottakeren sender inn skjemaet.Forespørselen, utfallet og hvert svar.
Request ExpiredForespørselen når utløpsdatoen ubesvart.Bare forespørselen.
Request CanceledNoen 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:

En Switch-node kalt Outcome: input viser data › request med outcome approve, externalId approval-8 og mottakeren Grace Hansen; rutingreglene sammenligner {{ $json.data.request.outcome }} med approve og changes, hver med en omdøpt output

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 ferdig kjøring: When clicking Execute workflow, Create request, Wait for the answer og en Switch kalt Outcome, alle grønne, med 1 item som forlater approve-outputen
  • 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/.

Neste