Bu rehberde: İş akışını insanlara ve diğer sistemlere bağlayan kutuları öğrenirsiniz: onay isteme, ekibe bildirim, rapor kaydetme, webhook gönderme ve başka bir iş akışını çalıştırma.
⏱ 10 dakika
Kısaca
Yardımcı kutular iş akışının "iletişim" tarafıdır. Onay size sorar, Bildir haber verir, Rapor sonucu Raporlar sayfasına kaydeder, Webhook gönder başka bir sisteme iletir.

Teknik ayrıntılar
Yardımcı node'lar iş akışını insanlara ve diğer sistemlere bağlar: onay ister, bildirir, rapor kaydeder, webhook gönderir, alt iş akışı çalıştırır.
| Node | Tip | Girdi | Çıktı handle'ları | Entegrasyon | Model |
|---|---|---|---|---|---|
| Request approval | utility.approval | 1 | approved, rejected | – | – |
| Notify team | utility.notify | 1 | main | – (Slack/Telegram kanalı için ilgili entegrasyon) | – |
| Create report | utility.report | 1 | main | – | – |
| Send webhook | utility.webhookOut | 1 | main, error | WEBHOOK | – |
| Run another workflow | utility.runWorkflow | 1 | main | – | – |
| No operation | utility.noop | 1 | main | – | – |
Request approval (utility.approval)
Her gelen item için Onaylar (Approvals) sayfasında bir görev oluşturur; run WAITING olur. Onayda item approved, redde rejected handle'ından devam eder.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
title | Title | expression | Evet | Approve content for {{ $json.platform }} | Liste başlığı |
description | Description | expression | Hayır | {{ $json.body }} | Markdown; item'daki binary/mediaUrls görsel olarak eklenir |
allowEdit | Allow editing before approval | boolean | Hayır | true | Onaylayanın gönderdiği editedPayload item json'unun yerine geçer |
timeoutHours | Auto-reject after (hours) | number | Hayır | 72 | Süre dolunca rejected (rejectionComment: "timeout") |
Çıktı: approved → item (düzenlenmişse güncel) + approval: { id, approvedBy, approvedAt, comment }; rejected → item + rejectionComment. Olaylar: approval.requested, approval.resolved. Yetki: MEMBER ve üstü.
Örnek (şablon): title "Approve {{ $json.platform }} post", description {{ $json.body }}, allowEdit true → approved → agent.socialPublisher; rejected → utility.notify.
Örnek – yalnızca riskli içerik onaya: logic.if ({{ $json.contentType === "promotional" }}) → true → utility.approval; false ve approved → logic.merge (append) → yayın.
Ayrıntı: Onaylar ve insan denetimi.
Notify team (utility.notify)
Proje üyelerine uygulama içi bildirim gönderir; isteğe bağlı e-posta, Slack, Telegram.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
title | Title | expression | Evet | – | |
body | Body | expression | Hayır | – | Markdown |
channels | Channels | multiselect | Hayır | ["inapp"] | inapp, email, slack, telegram. Slack: Slack entegrasyonunda seçilen Bildirim kanalı (Entegrasyonlar → Slack); Telegram: projenin bot entegrasyonu ve Default channel / chat ID. Hesap bağlı değilse veya kanal seçilmemişse o kanal atlanır ve çalıştırma günlüğüne uyarı yazılır; iş akışı durmaz |
link | Link | expression | Hayır | – | Bildirimde "Aç" düğmesi ({{ $json.reportUrl }}, {{ $json.url }}) |
Çıktı: item + notificationId. Alıcılar: projenin üyeleri (organizasyon üyeliği + proje erişimi); e-posta platform SMTP ayarıyla gönderilir. Tek çalıştırmada aynı başlıkla 20'den fazla bildirim birleştirilir ("ve 17 tane daha").
Örnek: trigger.event (lead.qualified, filter {{ $json.score >= 85 }}) → utility.notify (title "Sıcak lead: {{ $json.name }} ({{ $json.company }})", body "Skor {{ $json.score }} – {{ $json.scoreReason }}", channels [inapp, slack], link {{ $json.url }}).
Create report (utility.report)
Raporlar (Reports) sayfasında görünen bir rapor kaydeder; agent.report.created olayı yayınlanır.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
type | Report type | select | Hayır | GENERAL | GENERAL, CONTENT_PLAN, LEAD_LIST, MARKET_RESEARCH, SEO_AUDIT, ANALYTICS_REVIEW, CAMPAIGN_SUMMARY, WEEKLY_DIGEST |
title | Title | expression | Evet | – | |
contentMarkdown | Content (markdown) | text | Evet | – | İfade destekler; tablolar ve listeler render edilir |
metrics | Metrics (JSON) | json | Hayır | – | Kutucuk olarak gösterilir: { "leads": {{ $node["Find leads"].all().length }}, "cost": {{ $run.costUsd ?? 0 }} } |
Gelen tüm item'lar için tek rapor oluşturulur (ilk item bağlam olarak kullanılır); item'lar değişmeden geçer, reportId ve reportUrl eklenir. Ajanların kendi raporları ayrıca kaydedilir; bu node ajan olmayan akışlar veya birden fazla node'un çıktısını derlemek içindir.
Örnek (şablon): type LEAD_LIST, title "Leads – week {{ $today }}", contentMarkdown {{ $node["Müşteri Adayı Puanlayıcı"].json.reportMarkdown }}.
Örnek – GA4 özeti:
contentMarkdown: |
# Haftalık trafik
| Kanal | Oturum | Dönüşüm |
|---|---|---|
{{ $node["Kanal toplamları"].all().map(i => `| ${i.json.channel} | ${i.json.sessions} | ${i.json.conversions} |`).join("\n") }}
metrics: { "sessions": {{ $node["GA4 son 7 gün"].json.totals.sessions }} }
Send webhook (utility.webhookOut)
Item'ları HMAC imzalı JSON olarak dış URL'ye POST eder.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
url | URL (overrides integration) | url | Hayır | – | Boşsa seçili WEBHOOK entegrasyonunun Endpoint URL alanı |
event | Event name | string | Hayır | workflow.output | Zarftaki type ve X-AgentFlow-Event başlığı |
Gönderilen gövde:
{
"id": "evt_01J…",
"type": "workflow.output",
"organizationId": "org_…",
"projectId": "prj_…",
"at": "2026-09-26T09:00:00Z",
"payload": {
"workflowId": "wf_…", "runId": "run_…", "nodeName": "Send webhook",
"items": [ { "json": { … } } ]
}
}
Başlıklar: Content-Type: application/json, X-AgentFlow-Event, X-AgentFlow-Timestamp (Unix saniye), X-AgentFlow-Signature: sha256=<hex> (entegrasyonun Signing secret alanı ile ham gövdenin HMAC-SHA256'sı; secret boşsa gönderilmez) ve entegrasyondaki Extra headers. 10 saniye zaman aşımı; 2xx dışı yanıt retryable hatadır (node retry politikasıyla tekrar). Çıktı: item + webhook: { status, durationMs }; hatada error handle'ı.
Örnek: agent.leadQualifier → utility.webhookOut (event lead.qualified.batch) → CRM'inizde toplu işleme. Doğrulama kodu: Custom Webhook, Giden webhook'lar.
Run another workflow (utility.runWorkflow)
Alt iş akışını gelen item'larla başlatır (triggerType: API).
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
workflowId | Workflow | string | Evet | – | Denetçi panelinde iş akışı seçici; aynı organizasyonda olmalı |
waitForResult | Wait for result | boolean | Hayır | true | true: alt akışın son node çıktısı bu node'un çıktısı olur; false: hemen devam, çıktı { runId } |
Alt iş akışı ACTIVE veya DRAFT olabilir (ARCHIVED reddedilir); tetikleyicisi ne olursa olsun gelen item'lar tetikleyici çıktısı sayılır. Alt akışın maliyeti üst çalıştırmanın budgetUsd toplamına eklenir. Derinlik en fazla 5; kendini çağırma doğrulamada reddedilir.
Örnek – ortak yayın alt akışı:
Ana akış: agent.contentCreator → utility.runWorkflow (workflowId "Yayın standardı", waitForResult true) → utility.report
Alt akış: trigger.manual → data.set (utm ekle) → utility.approval → agent.socialPublisher
Birden fazla ana akış aynı yayın standardını paylaşır; değişiklik tek yerde yapılır.
No operation (utility.noop)
Parametresi yoktur; item'ları değiştirmeden geçirir. Kullanım: logic.switch'in default dalını kapatmak, iki dalı görsel olarak birleştirmek (gerçek birleştirme için logic.merge), ileride doldurulacak yer tutucu, logic.if'in kullanılmayan dalını belirgin bırakmak.
İpuçları ve sınırlar
utility.approvalvelogic.wait (approval)farkı: ilki iki dallı yönlendirme, ikincisi tek dal +approvedalanı.- Bildirim kanallarında
emailplatform SMTP ayarını (SMTP_*) kullanır; tanımlı değilse yalnızca uygulama içi bildirim gider ve logda uyarı görünür. utility.reportgövdesi 200 KB ile sınırlıdır; büyük veriyimetrics/datayerine CRM veya Sheets'e yazın.utility.webhookOuttest modunda dry-run'dır (istek gönderilmez,webhook.dryRun: true).utility.runWorkflowilewaitForResult: truekullanıyorsanız alt akışta onay node'u olmasın; üst run daWAITINGkalır.
Sık sorulan sorular
Onay kutusu ile Bekle (onay) farkı ne? Onay iki dallıdır (onaylandı / reddedildi). Bekle (onay) tek dal döner ve kararı öğeye yazar.
Bildirim e-postası neden gelmedi? E-posta kanalı platform SMTP ayarını kullanır; tanımlı değilse yalnızca uygulama içi bildirim gider.
Onayı kimler verebilir? Üye ve üstü roller. İzleyici yalnızca görür.