# n8n'de bir isteğin sonucuna göre hareket edin

Bir istek tamamlandığında, süresi dolduğunda veya iptal edildiğinde bir workflow başlatın, ya da onu gönderen workflow’u alıcı yanıtlayana kadar duraklatın ve hükme göre dallanın.

## n8n'de bir isteğin sonucuna göre hareket edin

n8n bir isteğin sonucunu iki şekilde duyabilir: forma gelen her istek için çalışan bir Formstep Trigger, ya da isteği oluşturan workflow’u duraklatan bir Wait düğümü. İkisi de approve, decline veya changes üzerinde bir Switch ile biter.

<p>
  <a href="/tr/guides/n8n/connect">n8n'de bir Formstep bağlantı bilgisine</a> ihtiyacınız var, ve n8n'inizin internetten HTTPS üzerinden
  erişilebilir olması gerekir; bkz. <a href="/tr/guides/n8n/install-the-node">Formstep düğümünü n8n'e kurun</a>. Bir hükme göre dallanmak
  için formun bir <a href="/tr/requests/decisions-and-approvals">Karar sorusuna</a> ihtiyacı vardır. Bu kılavuz, birine sahip bir Approval
  formu kullanır.
</p>

<h2 id="trigger">Tetikleyiciden bir workflow başlatın</h2>

<h3 id="pick-the-event">1. Olayı seçin</h3>

<p>
  Bir <strong>Formstep Trigger</strong> ekleyin, bağlantı bilgisini ve formu seçin, ve <strong>Event</strong> altındaki istek olaylarından
  birini seçin:
</p>

<h3 id="test-the-trigger">2. Gerçek bir istekle test edin</h3>

<p>
  Bir test isteği asla bir istek tetikleyicisini başlatmaz, bu yüzden{' '}
  <a href="/tr/guides/n8n/send-a-request">Bir n8n workflow’undan istek gönderin</a>'deki gibi Delivery None'a ayarlı gerçek bir istek
  gönderin ve bağlantısını kendiniz açın. Ardından <strong>Execute step</strong>'e tıklayın ve formu iki dakika içinde gönderin.
</p>

<p>
  Olay, yanıtların yanında bir <strong>data.request</strong> nesnesi taşır. <code>outcome</code>'u <code>approve</code>,{' '}
  <code>decline</code> veya <code>changes</code>'tir, ve <code>externalId</code>'si sizin ayarladığınız kimliktir, böylece isteğin neyle
  ilgili olduğunu bulabilirsiniz. Her alan <a href="/tr/requests/callbacks#payload">geri çağırma yükündedir</a>.
</p>

<p>
  Süresi dolmuş ve iptal edilmiş olayları <strong>Execute step</strong> ile yakalamak zordur. Bunun yerine workflow’u yayınlayın ve{' '}
  <strong>Executions</strong>'ı kontrol edin.
</p>

<h3 id="branch-on-the-outcome">3. Sonuca göre dallanın</h3>

<p>
  Her hüküm için bir yönlendirme kuralı olan bir <strong>Switch</strong> düğümü ekleyin. Her kural{' '}
  <code>{'{{ $json.data.request.outcome }}'}</code>'ı bir değerle karşılaştırır; dalı ona göre adlandırmak için{' '}
  <strong>Rename Output</strong>'u açın:
</p>

<p>
  <code>data.answers.decision</code> yerine <code>data.request.outcome</code>'a göre dallanın: istek süresi dolduğunda veya iptal
  edildiğinde, başka bir değer değil, eksik olan odur. Değerlerle karşılaştırın, <code>data.display</code> içindeki etiketlerle asla: bir
  etiket, seçeneği yeniden adlandırdığınızda veya alıcı başka bir dilde yanıtladığında değişir.
</p>

<p>
  Her dala bir düğüm bağlayın, ardından workflow’u <strong>Publish</strong> edin. O andan sonra forma tamamlanan her istek onu çalıştırır.
</p>

<h2 id="wait-for-the-outcome">Aynı workflow’da sonucu bekleyin</h2>

<p>
  Burada, isteği gönderen workflow alıcı yanıtlayana kadar duraklar, ardından devam eder.{' '}
  <a href="/tr/guides/n8n/send-a-request">Bir n8n workflow’undan istek gönderin</a>'deki workflow’da üç değişiklik gerekir:
</p>

<h3 id="turn-on-wait">1. Wait for the Outcome'u açın</h3>

<p>
  <strong>Create request</strong> düğümünde <strong>Wait for the Outcome</strong>'u açın. Düğüm, bu çalıştırmanın devam URL'sini isteğin
  geri çağırması olarak Formstep'e gönderir. <strong>Callback URL</strong>'yi boş bırakın; düğüm ikisini birden reddeder.
</p>

<p>
  Her çalıştırmanın kendi devam URL'si vardır, bu yüzden önceki bir çalıştırmadan yeniden kullanılan bir External ID başarısız olur. Onun
  içine <code>{'{{ $execution.id }}'}</code>'i ekleyin, ya da boş bırakın.
</p>

<h3 id="add-a-wait-node">2. Bir Wait düğümü ekleyin</h3>

<p>
  Hemen ardından, <strong>Resume</strong> <strong>On Webhook Call</strong>'a ayarlı ve HTTP yöntemi <code>POST</code>'ta bırakılmış bir{' '}
  <strong>Wait</strong> düğümü ekleyin.
</p>

<h3 id="branch-on-the-event">3. Olaya göre dallanın</h3>

<p>
  Wait düğümünden sonra bir <strong>Switch</strong> ekleyin. Wait düğümü olayı <code>body</code> altına koyar, bu yüzden{' '}
  <code>{'{{ $json.body.data.request.outcome }}'}</code>'ı karşılaştırın. Tamamlanmış bir isteği süresi dolmuş veya iptal edilmiş birinden
  ayırt etmek için <code>{'{{ $json.body.type }}'}</code>'ı <code>request.completed</code>, <code>request.expired</code> veya{' '}
  <code>request.canceled</code> ile karşılaştırın.
</p>

<p>Workflow’u çalıştırın. Çalıştırma, alıcı gönderene kadar Wait düğümünde durur, ardından eşleşen dalda devam eder:</p>

<ul>
  <li>
    Düzenleyiciden bir çalıştırma da gerçek bir yanıt bekler. Test Mode burada çalışır: bir test isteğinin geri çağırması yine de workflow’u
    devam ettirir.
  </li>
  <li>
    Bir istek, <strong>Expires At</strong> ayarlamadığınız sürece 30 gün sonra süresi dolar, ve süre dolumu çalıştırmayı{' '}
    <code>request.expired</code> ile devam ettirir. Bekleyişi daha erken bitirmek için <strong>Expires At</strong>'i ayarlayın.
  </li>
  <li>
    Wait düğümü <code>X-Formstep-Signature</code> başlığını kontrol etmez; devam URL'sinin tahmin edilmesi zor olmasına dayanır. Bu yeterli
    değilse, her olayı kontrol eden Formstep Trigger'ı kullanın.
  </li>
</ul>

<h2 id="troubleshooting">Hiçbir şey çalışmıyorsa</h2>

<ul>
  <li>
    <strong>Bu bir test isteğiydi.</strong> Test Mode açıkken ya da <strong>Kendin dene</strong> ile oluşturulan bir istek asla bir istek
    tetikleyicisi başlatmaz. Yalnızca onun <a href="/tr/requests/callbacks">geri çağırması</a> tetiklenir.
  </li>
  <li>
    <strong>İstek başka bir form içindi.</strong> Tetikleyici, içinde seçtiğiniz formu dinler.
  </li>
  <li>
    <strong>Workflow yayınlanmadı, ya da bağlantı bilgisi başka bir çalışma alanına ulaşıyor.</strong> Bkz.{' '}
    <a href="/tr/guides/n8n/public-link-submissions#troubleshooting">genel bağlantı kılavuzundaki</a> kontroller.
  </li>
  <li>
    <strong>
      Create request, <em>callbackUrl is not allowed</em> hatasıyla başarısız olur.
    </strong>{' '}
    n8n'iniz bir <code>http://</code> veya özel bir devam URL'si veriyor. Bkz.{' '}
    <a href="/tr/guides/n8n/install-the-node#public-address">n8n'e herkese açık adresini bildirin</a>.
  </li>
  <li>
    <strong>Wait düğümü asla devam etmiyor.</strong> Formstep devam URL'sine ulaşamıyor, örneğin tünel kapalıysa veya proxy{' '}
    <code>/webhook-waiting/</code>'i engelliyorsa.
  </li>
</ul>

<h2 id="next">Sırada</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2 mb-8">
  - [n8n'de istekleri arayın, hatırlatın ve iptal edin](/tr/guides/n8n/manage-requests) — Bir isteği External ID ile bulun, alıcıyı dürtün veya geri çekin.
  - [Kararlar ve onaylar](/tr/requests/decisions-and-approvals) — Karar sorusu ve üç değeri.
</div>
