formbasedocs
Uygulamaya gitUygulama

Kılavuzlar · n8n (kendi sunucunuzda)

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.

Last checked


n8n’de bir formbase bağlantı bilgisine ihtiyacınız var, ve n8n’inizin internetten HTTPS üzerinden erişilebilir olması gerekir; bkz. formbase düğümünü n8n’e kurun. Bir hükme göre dallanmak için formun bir Karar sorusuna ihtiyacı vardır. Bu kılavuz, birine sahip bir Approval formu kullanır.

Şunu kullanın
formbase TriggerForma istekler her yerden gönderilir: panodan, API'den, bir ajandan veya başka bir iş akışından. Tek bir yayınlanmış iş akışı hepsini ele alır.
Wait for the Outcomeİsteği oluşturan iş akışı, daha önce bildiği her şeyi — üzerinde çalıştığı kaydı — elinde tutarak yanıtla devam etmelidir.

Tetikleyiciden bir iş akışı başlatın

1. Olayı seçin

Bir formbase Trigger ekleyin, bağlantı bilgisini ve formu seçin, ve Event altındaki istek olaylarından birini seçin:

OlayNe zaman tetiklenirTaşıdığı
Request CompletedAlıcı formu gönderir.İsteği, sonucu ve her yanıtı.
Request Expiredİstek yanıtlanmadan süre dolumuna ulaşır.Yalnızca isteği.
Request CanceledBirisi isteği iptal eder — panodan, API'den ya da bir Cancel request düğümünden, ya da form çöp kutusuna taşındığı için formbase iptal eder.İsteği ve iptal nedenini.

2. Gerçek bir istekle test edin

Bir test isteği asla bir istek tetikleyicisini başlatmaz, bu yüzden Bir n8n iş akışından istek gönderin’deki gibi Delivery None’a ayarlı gerçek bir istek gönderin ve bağlantısını kendiniz açın. Ardından Execute step’e tıklayın ve formu iki dakika içinde gönderin.

Olay, yanıtların yanında bir data.request nesnesi taşır. outcome’u approve, decline veya changes’tir, ve externalId’si sizin ayarladığınız kimliktir, böylece isteğin neyle ilgili olduğunu bulabilirsiniz. Her alan geri çağırma yükündedir.

Süresi dolmuş ve iptal edilmiş olayları Execute step ile yakalamak zordur. Bunun yerine iş akışını yayınlayın ve Executions’ı kontrol edin.

3. Sonuca göre dallanın

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

Outcome adlı bir Switch düğümü: girdi, outcome approve, externalId approval-8 ve alıcı Grace Hansen ile data › request'i gösteriyor; yönlendirme kuralları {{ $json.data.request.outcome }}'ı approve ve changes ile karşılaştırıyor, her biri yeniden adlandırılmış bir çıktıyla

data.answers.decision yerine data.request.outcome’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, data.display 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.

Her dala bir düğüm bağlayın, ardından iş akışını Publish edin. O andan sonra forma tamamlanan her istek onu çalıştırır.

Aynı iş akışında sonucu bekleyin

Burada, isteği gönderen iş akışı alıcı yanıtlayana kadar duraklar, ardından devam eder. Bir n8n iş akışından istek gönderin’deki iş akışında üç değişiklik gerekir:

1. Wait for the Outcome’u açın

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

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 {{ $execution.id }}’i ekleyin, ya da boş bırakın.

2. Bir Wait düğümü ekleyin

Hemen ardından, Resume On Webhook Call’a ayarlı ve HTTP yöntemi POST’ta bırakılmış bir Wait düğümü ekleyin.

3. Olaya göre dallanın

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

İş 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:

Tamamlanmış bir çalıştırma: When clicking Execute workflow, Create request, Wait for the answer ve Outcome adlı bir Switch, hepsi yeşil, approve çıktısından ayrılan 1 öğeyle
  • 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.

  • Bir istek, Expires At ayarlamadığınız sürece 30 gün sonra süresi dolar, ve süre dolumu çalıştırmayı request.expired ile devam ettirir. Bekleyişi daha erken bitirmek için Expires At’i ayarlayın.

  • Wait düğümü X-formbase-Signature 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.

Hiçbir şey çalışmıyorsa

  • Bu bir test isteğiydi. Test Mode açıkken ya da Kendin dene ile oluşturulan bir istek asla bir istek tetikleyicisi başlatmaz. Yalnızca onun geri çağırması tetiklenir.

  • İstek başka bir form içindi. Tetikleyici, içinde seçtiğiniz formu dinler.

  • İş akışı yayınlanmadı, ya da bağlantı bilgisi başka bir çalışma alanına ulaşıyor. Bkz. genel bağlantı kılavuzundaki kontroller.

  • Create request, callbackUrl is not allowed hatasıyla başarısız olur.

    n8n’iniz bir http:// veya özel bir devam URL’si veriyor. Bkz. n8n’e herkese açık adresini bildirin.

  • Wait düğümü asla devam etmiyor. formbase devam URL’sine ulaşamıyor, örneğin tünel kapalıysa veya proxy /webhook-waiting/’i engelliyorsa.

Sırada