Developer and self-hosted
Synology Chat
Synology Chat, OpenClaw'a bir Webhook çifti üzerinden bağlanır: Synology Chat giden Webhook'u, gelen doğrudan mesajları Gateway'e gönderir; yanıtlar ise Synology Chat gelen Webhook'u üzerinden geri iletilir.
Durum: Resmî Plugin, ayrı olarak kurulur. Yalnızca doğrudan mesajlar desteklenir; metin ve URL tabanlı dosya gönderimleri desteklenir.
Kurulum
openclaw plugins install @openclaw/synology-chatYerel çalışma kopyası (bir git deposundan çalıştırırken):
openclaw plugins install ./path/to/local/synology-chat-pluginAyrıntılar: Plugin'ler
Hızlı yapılandırma
- Plugin'i kurun (yukarıda).
- Synology Chat entegrasyonlarında:
- Bir gelen Webhook oluşturun ve URL'sini kopyalayın.
- Gizli token'ınızla bir giden Webhook oluşturun.
- Giden Webhook URL'sini OpenClaw Gateway'inize yönlendirin:
- Varsayılan olarak
https://gateway-host/webhook/synology. - Veya özel
channels.synology-chat.webhookPathdeğeriniz.
- Varsayılan olarak
- OpenClaw'daki yapılandırmayı tamamlayın. Synology Chat, her iki akışta da aynı kanal yapılandırma listesinde görünür:
- Rehberli:
openclaw onboardveyaopenclaw channels add - Doğrudan:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Rehberli:
- Gateway'i yeniden başlatın ve Synology Chat botuna bir doğrudan mesaj gönderin.
Webhook kimlik doğrulama ayrıntıları:
- OpenClaw, giden Webhook token'ını sırasıyla
body.token, ardından?token=..., ardından başlıklardan kabul eder. - Kabul edilen başlık biçimleri:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- Boş veya eksik token'lar güvenli biçimde reddedilir.
- Yükler
application/x-www-form-urlencodedveyaapplication/jsonolabilir;token,user_idvetextzorunludur.
En küçük yapılandırma:
{ channels: { "synology-chat": { enabled: true, token: "synology-outgoing-token", incomingUrl: "https://nas.example.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=...", webhookPath: "/webhook/synology", dmPolicy: "allowlist", allowedUserIds: ["123456"], rateLimitPerMinute: 30, allowInsecureSsl: false, }, },}Ortam değişkenleri
Varsayılan hesap için ortam değişkenlerini kullanabilirsiniz:
SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(virgülle ayrılmış)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
Yapılandırma değerleri ortam değişkenlerini geçersiz kılar.
SYNOLOGY_CHAT_INCOMING_URL ve SYNOLOGY_NAS_HOST, çalışma alanındaki bir .env dosyasından ayarlanamaz; bkz. Çalışma alanı .env dosyaları.
Doğrudan mesaj politikası ve erişim denetimi
- Desteklenen
dmPolicydeğerleri:allowlist(varsayılan),openvedisabled. Synology Chat'te eşleştirme akışı yoktur; göndericileri, sayısal Synology kullanıcı kimlikleriniallowedUserIdsalanına ekleyerek onaylayın. allowedUserIds, Synology kullanıcı kimliklerinin bir listesini (veya virgülle ayrılmış dizesini) kabul eder.allowlistmodunda boş birallowedUserIdslistesi hatalı yapılandırma olarak değerlendirilir ve Webhook rotası başlatılmaz.dmPolicy: "open", yalnızcaallowedUserIdsiçinde"*"bulunduğunda herkese açık doğrudan mesajlara izin verir; kısıtlayıcı girdiler kullanıldığında yalnızca eşleşen kullanıcılar sohbet edebilir. Boş birallowedUserIdslistesiyle kullanılanopenda rotayı başlatmayı reddeder.dmPolicy: "disabled"doğrudan mesajları engeller.- Yanıt alıcısı bağlama işlemi varsayılan olarak kararlı sayısal
user_idüzerinde kalır.channels.synology-chat.dangerouslyAllowNameMatching: true, yanıt teslimatı için değiştirilebilir kullanıcı adı/takma ad aramasını yeniden etkinleştiren acil durum uyumluluk modudur.
Giden teslimat
Hedef olarak sayısal Synology Chat kullanıcı kimliklerini kullanın. synology-chat:, synology_chat: ve synology: önekleri kabul edilir.
Örnekler:
openclaw message send --channel synology-chat --target 123456 --message "Hello from OpenClaw"openclaw message send --channel synology-chat --target synology-chat:123456 --message "Hello again"openclaw message send --channel synology-chat --target synology:123456 --message "Short prefix"Giden metin 2000 karakterlik parçalara bölünür. Medya gönderimleri, URL tabanlı dosya teslimatıyla desteklenir: NAS dosyayı indirip ekler (en fazla 32 MB). Giden dosya URL'leri http veya https kullanmalıdır; özel veya başka bir nedenle engellenmiş ağ hedefleri, OpenClaw URL'yi NAS Webhook'una iletmeden önce reddedilir.
Çoklu hesap
channels.synology-chat.accounts altında birden fazla Synology Chat hesabı desteklenir.
Her hesap token'ı, gelen URL'yi, Webhook yolunu, doğrudan mesaj politikasını ve sınırları geçersiz kılabilir.
Doğrudan mesaj oturumları hesap ve kullanıcı başına yalıtılır; dolayısıyla iki farklı Synology hesabındaki aynı sayısal user_id,
konuşma dökümü durumunu paylaşmaz.
Etkinleştirilen her hesaba farklı bir webhookPath verin. OpenClaw, tam olarak aynı olan yinelenen yolları reddeder
ve çoklu hesap yapılandırmalarında yalnızca paylaşılan bir Webhook yolunu devralan adlandırılmış hesapları başlatmayı reddeder.
Adlandırılmış bir hesap için eski devralma davranışına özellikle ihtiyacınız varsa o hesapta veya
channels.synology-chat altında dangerouslyAllowInheritedWebhookPath: true ayarını kullanın;
ancak tam olarak aynı olan yinelenen yollar yine güvenli biçimde reddedilir. Hesap başına açıkça belirtilmiş yolları tercih edin.
{ channels: { "synology-chat": { enabled: true, accounts: { default: { token: "token-a", incomingUrl: "https://nas-a.example.com/...token=...", }, alerts: { token: "token-b", incomingUrl: "https://nas-b.example.com/...token=...", webhookPath: "/webhook/synology-alerts", dmPolicy: "allowlist", allowedUserIds: ["987654"], }, }, }, },}Güvenlik notları
tokendeğerini gizli tutun ve sızarsa değiştirin.- Kendinden imzalı yerel bir NAS sertifikasına açıkça güvenmediğiniz sürece
allowInsecureSsl: falseolarak bırakın. - Gelen Webhook isteklerinin token'ı doğrulanır ve gönderici başına hız sınırı uygulanır (
rateLimitPerMinute, varsayılan 30). - Geçersiz token denetimleri sabit süreli gizli değer karşılaştırması kullanır ve güvenli biçimde reddedilir; tekrarlanan geçersiz token denemeleri kaynak IP'yi geçici olarak kilitler.
- Gelen mesaj metni, bilinen istem enjeksiyonu kalıplarına karşı temizlenir ve 4000 karakterde kesilir.
- Üretim ortamı için
dmPolicy: "allowlist"tercih edin. - Eski kullanıcı adı tabanlı yanıt teslimatına açıkça ihtiyacınız yoksa
dangerouslyAllowNameMatchingayarını kapalı tutun. - Çoklu hesap yapılandırmasında paylaşılan yol yönlendirme riskini açıkça kabul etmediğiniz sürece
dangerouslyAllowInheritedWebhookPathayarını kapalı tutun.
Sorun giderme
Missing required fields (token, user_id, text):- giden Webhook yükünde zorunlu alanlardan biri eksiktir
- Synology token'ı başlıklarda gönderiyorsa Gateway'in/proxy'nin bu başlıkları koruduğundan emin olun
Invalid token:- giden Webhook gizli değeri
channels.synology-chat.tokenile eşleşmiyordur - istek yanlış hesaba/Webhook yoluna ulaşıyordur
- ters proxy, istek OpenClaw'a ulaşmadan önce token başlığını kaldırmıştır
- giden Webhook gizli değeri
Rate limit exceeded:- aynı kaynaktan gelen çok sayıda geçersiz token denemesi, bu kaynağı geçici olarak kilitleyebilir
- kimliği doğrulanmış göndericiler için ayrıca kullanıcı başına mesaj hız sınırı vardır
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"etkindir ancak hiçbir kullanıcı yapılandırılmamıştır
User not authorized:- göndericinin sayısal
user_iddeğeriallowedUserIdsiçinde değildir
- göndericinin sayısal
İlgili konular
- Kanallara genel bakış — desteklenen tüm kanallar
- Gruplar — grup sohbeti davranışı ve bahsetme denetimi
- Kanal yönlendirme — mesajlar için oturum yönlendirmesi
- Güvenlik — erişim modeli ve sağlamlaştırma