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

Bir istek tamamlandığında, süresi dolduğunda veya iptal edildiğinde bir iş akışı başlatın, ya da onu gönderen iş akışını 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 formbase Trigger, ya da isteği oluşturan iş akışını 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 formbase 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">formbase 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 iş akışı başlatın</h2>

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

<p>
  Bir <strong>formbase 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 iş akışından 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 iş akışını 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 iş akışını <strong>Publish</strong> edin. O andan sonra forma tamamlanan her istek onu çalıştırır.
</p>

<h2 id="wait-for-the-outcome">Aynı iş akışında sonucu bekleyin</h2>

<p>
  Burada, isteği gönderen iş akışı alıcı yanıtlayana kadar duraklar, ardından devam eder.{' '}
  <a href="/tr/guides/n8n/send-a-request">Bir n8n iş akışından istek gönderin</a>'deki iş akışında üç 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 formbase'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>İş akışını ç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 iş akışını
    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-formbase-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 formbase 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>İş akışı 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> formbase 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>
