# Handle ut fra en forespørsels utfall i n8n

Start en arbeidsflyt når en forespørsel fullføres, utløper eller kanselleres, eller pause arbeidsflyten som sendte den til mottakeren svarer, og forgren på utfallet.

## 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.

<p>
  Du trenger en <a href="/no/guides/n8n/connect">formbase-kobling i n8n</a>, og n8n-en din må være tilgjengelig fra internett over HTTPS; se{' '}
  <a href="/no/guides/n8n/install-the-node">Installer formbase-noden i n8n</a>. For å forgrene på et utfall, trenger skjemaet et{' '}
  <a href="/no/requests/decisions-and-approvals">beslutningsspørsmål</a>. Denne guiden bruker et Approval-skjema med ett.
</p>

<h2 id="trigger">Start en arbeidsflyt fra triggeren</h2>

<h3 id="pick-the-event">1. Velg hendelsen</h3>

<p>
  Legg til en <strong>formbase Trigger</strong>, velg koblingen og skjemaet, og velg én av forespørsel-hendelsene under{' '}
  <strong>Event</strong>:
</p>

<h3 id="test-the-trigger">2. Test den med en ekte forespørsel</h3>

<p>
  En testforespørsel starter aldri en forespørselstrigger, så send en ekte en med Delivery satt til None, som i{' '}
  <a href="/no/guides/n8n/send-a-request">Send en forespørsel fra en n8n-arbeidsflyt</a>, og åpne lenken dens selv. Klikk deretter{' '}
  <strong>Execute step</strong> og send inn skjemaet innen to minutter.
</p>

<p>
  Hendelsen bærer et <strong>data.request</strong>-objekt ved siden av svarene. <code>outcome</code> er <code>approve</code>,{' '}
  <code>decline</code> eller <code>changes</code>, og <code>externalId</code> er IDen du satte, slik at du kan finne posten forespørselen
  handlet om. Hvert felt er i <a href="/no/requests/callbacks#payload">callback-nyttelasten</a>.
</p>

<p>
  Utløpte og kansellerte hendelser er vanskelige å fange med <strong>Execute step</strong>. Publiser arbeidsflyten og sjekk{' '}
  <strong>Executions</strong> i stedet.
</p>

<h3 id="branch-on-the-outcome">3. Forgren på utfallet</h3>

<p>
  Legg til en <strong>Switch</strong>-node med én rutingregel per utfall. Hver regel sammenligner{' '}
  <code>{'{{ $json.data.request.outcome }}'}</code> med en verdi; slå på <strong>Rename Output</strong> for å navngi grenen etter den:
</p>

<p>
  Forgren på <code>data.request.outcome</code> heller enn <code>data.answers.decision</code>: den mangler, ikke en annen verdi, når
  forespørselen utløp eller ble kansellert. Sammenlign med verdier, aldri med etikettene i <code>data.display</code>: en etikett endres når
  du gir alternativet nytt navn eller mottakeren svarer på et annet språk.
</p>

<p>
  Koble en node til hver gren, og <strong>Publish</strong> arbeidsflyten deretter. Fra da av kjører hver fullførte forespørsel til skjemaet
  den.
</p>

<h2 id="wait-for-the-outcome">Vent på utfallet i den samme arbeidsflyten</h2>

<p>
  Her pauser arbeidsflyten som sender forespørselen til mottakeren svarer, og fortsetter deretter. Det tar tre endringer i arbeidsflyten fra{' '}
  <a href="/no/guides/n8n/send-a-request">Send en forespørsel fra en n8n-arbeidsflyt</a>.
</p>

<h3 id="turn-on-wait">1. Slå på Wait for the Outcome</h3>

<p>
  I <strong>Create request</strong>-noden, slå på <strong>Wait for the Outcome</strong>. Noden sender formbase denne kjøringens
  gjenopptakelses-URL som forespørselens callback. La <strong>Callback URL</strong> stå tom; noden avviser begge samtidig.
</p>

<p>
  Hver kjøring har sin egen gjenopptakelses-URL, så en External ID gjenbrukt fra en tidligere kjøring feiler. Ta med{' '}
  <code>{'{{ $execution.id }}'}</code> i den, eller la den stå tom.
</p>

<h3 id="add-a-wait-node">2. Legg til en Wait-node</h3>

<p>
  Legg til en <strong>Wait</strong>-node rett etter den, med <strong>Resume</strong> satt til <strong>On Webhook Call</strong> og
  HTTP-metoden stående på <code>POST</code>.
</p>

<h3 id="branch-on-the-event">3. Forgren på hendelsen</h3>

<p>
  Legg til en <strong>Switch</strong> etter Wait-noden. Wait-noden legger hendelsen under <code>body</code>, så sammenlign{' '}
  <code>{'{{ $json.body.data.request.outcome }}'}</code>. For å skille en fullført forespørsel fra en utløpt eller kansellert, sammenlign{' '}
  <code>{'{{ $json.body.type }}'}</code> med <code>request.completed</code>, <code>request.expired</code> eller{' '}
  <code>request.canceled</code>.
</p>

<p>Kjør arbeidsflyten. Kjøringen stopper ved Wait-noden til mottakeren sender inn, og gjenopptas deretter nedover den matchende grenen:</p>

<ul>
  <li>
    En kjøring fra editoren venter på et ekte svar også. Test Mode fungerer her: callbacken til en testforespørsel gjenopptar likevel
    arbeidsflyten.
  </li>
  <li>
    En forespørsel utløper etter 30 dager med mindre du setter <strong>Expires At</strong>, og utløp gjenopptar kjøringen med{' '}
    <code>request.expired</code>. Sett <strong>Expires At</strong> for å avslutte ventingen tidligere.
  </li>
  <li>
    Wait-noden sjekker ikke <code>X-formbase-Signature</code>-headeren; den stoler på at gjenopptakelses-URL-en er vanskelig å gjette. Hvis
    det ikke er nok, bruk formbase Trigger, som sjekker hver hendelse.
  </li>
</ul>

<h2 id="troubleshooting">Hvis ingenting kjører</h2>

<ul>
  <li>
    <strong>Det var en testforespørsel.</strong> En forespørsel opprettet med Test Mode på, eller med <strong>Prøv det selv</strong>,
    starter aldri en forespørselstrigger. Bare <a href="/no/requests/callbacks">callbacken</a> dens utløses.
  </li>
  <li>
    <strong>Forespørselen var for et annet skjema.</strong> Triggeren lytter til skjemaet du valgte i den.
  </li>
  <li>
    <strong>Arbeidsflyten er ikke publisert, eller koblingen dens når et annet arbeidsområde.</strong> Se sjekkene i{' '}
    <a href="/no/guides/n8n/public-link-submissions#troubleshooting">guiden for offentlig lenke</a>.
  </li>
  <li>
    <strong>
      Create request feiler med <em>callbackUrl is not allowed</em>.
    </strong>{' '}
    n8n-en din gir ut en <code>http://</code>- eller privat gjenopptakelses-URL. Se{' '}
    <a href="/no/guides/n8n/install-the-node#public-address">Fortell n8n den offentlige adressen sin</a>.
  </li>
  <li>
    <strong>Wait-noden gjenopptas aldri.</strong> formbase kan ikke nå gjenopptakelses-URL-en, for eksempel fordi tunnelen er nede eller
    proxyen blokkerer <code>/webhook-waiting/</code>.
  </li>
</ul>

<h2 id="next">Neste</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2 mb-8">
  - [Slå opp, purr på og kanseller forespørsler i n8n](/no/guides/n8n/manage-requests) — Finn en forespørsel med External ID, purr på mottakeren, eller trekk den tilbake.
  - [Beslutninger og godkjenninger](/no/requests/decisions-and-approvals) — Beslutningsspørsmålet og de tre verdiene dets.
</div>
