Webhook’lar
Gateway, harici tetikleyiciler için küçük bir HTTP webhook uç noktası sunabilir.Etkinleştirme
hooks.token,hooks.enabled=trueolduğunda gereklidir.hooks.pathvarsayılan olarak/hooksdeğerini alır.
Kimlik doğrulama
Her isteğin hook belirtecini içermesi gerekir. Tercihen başlıkları kullanın:Authorization: Bearer <token>(önerilir)x-openclaw-token: <token>- Sorgu dizesi belirteçleri reddedilir (
?token=...400döndürür).
Uç Noktalar
POST /hooks/wake
Yük (payload):
textgerekli (string): Olayın açıklaması (örn. “Yeni e-posta alındı”).modeisteğe bağlı (now|next-heartbeat): Anında bir heartbeat tetiklenip tetiklenmeyeceği (varsayılannow) ya da bir sonraki periyodik kontrolün beklenmesi.
- Ana oturum için bir sistem olayı kuyruğa alınır
mode=nowise, anında bir heartbeat tetiklenir
POST /hooks/agent
Yük (payload):
messagegerekli (string): Ajanın işlemesi için istem veya mesaj.nameisteğe bağlı (string): Hook için insan tarafından okunabilir ad (örn. “GitHub”); oturum özetlerinde önek olarak kullanılır.agentIdisteğe bağlıdır (string): Bu hook’u belirli bir agente yönlendirir. Bilinmeyen kimlikler varsayılan agente geri döner. Ayarlandığında, hook çözümlenen agent’in workspace’i ve yapılandırması kullanılarak çalışır.sessionKeyisteğe bağlı (string): Ajanın oturumunu tanımlamak için kullanılan anahtar. Varsayılan olarak bu alan,hooks.allowRequestSessionKey=trueolmadıkça reddedilir.wakeModeisteğe bağlı (now|next-heartbeat): Anında bir heartbeat tetiklenip tetiklenmeyeceği (varsayılannow) ya da bir sonraki periyodik kontrolün beklenmesi.deliveristeğe bağlı (boolean):trueise, ajanın yanıtı mesajlaşma kanalına gönderilir. Varsayılantrue. Yalnızca heartbeat onayları olan yanıtlar otomatik olarak atlanır.channelisteğe bağlı (string): Teslimat için mesajlaşma kanalı. Şunlardan biri:last,whatsapp,telegram,discord,slack,mattermost(eklenti),signal,imessage,msteams. Varsayılanlast.toisteğe bağlı (string): Kanal için alıcı tanımlayıcısı (örn. WhatsApp/Signal için telefon numarası, Telegram için sohbet kimliği, Discord/Slack/Mattermost (eklenti) için kanal kimliği, MS Teams için konuşma kimliği). Varsayılan olarak ana oturumdaki son alıcı.modelisteğe bağlı (string): Model geçersiz kılma (örn.anthropic/claude-3-5-sonnetveya bir takma ad). Kısıtlıysa izin verilen model listesinde olmalıdır.thinkingisteğe bağlı (string): Düşünme düzeyi geçersiz kılma (örn.low,medium,high).timeoutSecondsisteğe bağlı (number): Ajan çalıştırması için saniye cinsinden azami süre.
- İzole bir ajan turu çalıştırır (kendi oturum anahtarı)
- Her zaman ana oturuma bir özet gönderir
wakeMode=nowise, anında bir heartbeat tetiklenir
Oturum anahtarı politikası (geriye dönük uyumsuz değişiklik)
/hooks/agent yükündeki sessionKey geçersiz kılmaları varsayılan olarak devre dışıdır.
- Önerilen: sabit bir
hooks.defaultSessionKeyayarlayın ve istek bazlı geçersiz kılmaları kapalı tutun. - İsteğe bağlı: yalnızca gerektiğinde istek geçersiz kılmalarına izin verin ve önekleri kısıtlayın.
POST /hooks/<name> (eşlenmiş)
Özel hook adları hooks.mappings üzerinden çözülür (yapılandırmaya bakın). Bir eşleme,
isteğe bağlı şablonlar veya kod dönüştürmeleriyle keyfi yükleri wake ya da agent eylemlerine dönüştürebilir.
Eşleme seçenekleri (özet):
hooks.presets: ["gmail"]yerleşik Gmail eşlemesini etkinleştirir.hooks.mappings, yapılandırmadamatch,actionve şablonları tanımlamanıza olanak tanır.hooks.transformsDir+transform.module, özel mantık için bir JS/TS modülü yükler.hooks.transformsDir(ayarlanmışsa) OpenClaw yapılandırma dizininiz altındaki transforms kök dizini içinde kalmalıdır (genellikle~/.openclaw/hooks/transforms).transform.module, etkin transforms dizini içinde çözümlenmelidir (dizin geçişi/kaçış yolları reddedilir).
- Genel bir ingest uç noktasını (yük güdümlü yönlendirme) korumak için
match.sourcekullanın. - TS dönüşümleri, çalışma zamanında bir TS yükleyici (örn.
bunveyatsx) ya da önceden derlenmiş.jsgerektirir. - Yanıtları bir sohbet yüzeyine yönlendirmek için eşlemelerde
deliver: true+channel/toayarlayın (channelvarsayılan olaraklast’dir ve WhatsApp’a geri düşer). agentId, hook’u belirli bir agente yönlendirir; bilinmeyen kimlikler varsayılan agente geri döner.hooks.allowedAgentIds, açıkagentIdyönlendirmesini kısıtlar. Herhangi bir agente izin vermek için bunu boş bırakın (veya*ekleyin). AçıkagentIdyönlendirmesini reddetmek için[]ayarlayın.hooks.defaultSessionKey, açık bir anahtar sağlanmadığında hook agent çalıştırmaları için varsayılan oturumu belirler.hooks.allowRequestSessionKey,/hooks/agentyüklerininsessionKeyayarlayıp ayarlayamayacağını kontrol eder (varsayılan:false).hooks.allowedSessionKeyPrefixes, istek yüklerinden ve eşlemelerden gelen açıksessionKeydeğerlerini isteğe bağlı olarak kısıtlar.allowUnsafeExternalContent: true, bu hook için harici içerik güvenliği sarmalayıcısını devre dışı bırakır (tehlikelidir; yalnızca güvenilir dahili kaynaklar için).openclaw webhooks gmail setup,openclaw webhooks gmail runiçinhooks.gmailyapılandırmasını yazar. Tam Gmail izleme akışı için Gmail Pub/Sub bölümüne bakın.
Yanıtlar
/hooks/wakeiçin200/hooks/agentiçin202(eşzamansız çalıştırma başlatıldı)- Kimlik doğrulama hatasında
401 - Aynı istemciden tekrarlanan kimlik doğrulama hatalarından sonra
429(bkz.Retry-After) - Geçersiz yükte
400 - Aşırı büyük yüklerde
413
Örnekler
Farklı bir model kullanma
Bu çalıştırma için modeli geçersiz kılmak üzere ajan yüküne (veya eşlemeye)model ekleyin:
agents.defaults.models uyguluyorsanız, geçersiz kılınan modelin oraya dahil edildiğinden emin olun.
Güvenlik
- Hook uç noktalarını local loopback, tailnet veya güvenilir bir ters proxy arkasında tutun.
- Ayrı bir hook belirteci kullanın; gateway kimlik doğrulama belirteçlerini yeniden kullanmayın.
- Tekrarlanan kimlik doğrulama hataları, kaba kuvvet denemelerini yavaşlatmak için istemci adresi başına hız sınırlamasına tabi tutulur.
- Çoklu agent yönlendirmesi kullanıyorsanız, açık
agentIdseçimini sınırlamak içinhooks.allowedAgentIdsayarlayın. - Çağıran tarafından seçilen oturumlara ihtiyaç duymadığınız sürece
hooks.allowRequestSessionKey=falseolarak bırakın. - İstek
sessionKeyözelliğini etkinleştirirseniz,hooks.allowedSessionKeyPrefixesdeğerini kısıtlayın (örneğin,["hook:"]). - Webhook günlüklerine hassas ham yükleri dahil etmekten kaçının.
- Hook yükleri varsayılan olarak güvenilmeyen kabul edilir ve güvenlik sınırlarıyla sarılır.
Belirli bir hook için bunu devre dışı bırakmanız gerekiyorsa, o hook’un eşlemesinde
allowUnsafeExternalContent: trueayarlayın (tehlikelidir).