Developer and self-hosted
Synology Chat
Synology Chat, OpenClaw'a bir Webhook çifti aracılığıyla bağlanır: Synology Chat giden Webhook'u gelen doğrudan mesajları Gateway'e gönderir ve yanıtlar bir Synology Chat gelen Webhook'u üzerinden geri iletilir.
Durum: resmi Plugin, ayrı olarak kurulur. Yalnızca doğrudan mesajlar; 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: Pluginler
Hızlı kurulum
- 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. - Ya da özel
channels.synology-chat.webhookPathdeğeriniz.
- Varsayılan olarak
- Kurulumu OpenClaw'da tamamlayın. Synology Chat, her iki akışta da aynı kanal kurulum listesinde görünür:
- Kılavuzlu:
openclaw onboardveyaopenclaw channels add - Doğrudan:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Kılavuzlu:
- 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ı önce
body.token, ardından?token=..., son olarak üstbilgilerden kabul eder. - Kabul edilen üstbilgi 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.
Gelen verilerin kalıcılığı
Token, gönderen politikası ve hız sınırı denetimleri geçtikten sonra OpenClaw, Webhook token'ını depolanan zarftan kaldırır ve olayı onaylamadan önce kalıcı olarak kuyruğa alır. Rota, yalnızca bu ekleme başarılı olduktan sonra 204 döndürür; kalıcı depolama hatası 503 döndürür, böylece Synology Chat mesajı sessizce kaybetmek yerine yeniden deneyebilir.
Bekleyen veya yeniden denenebilir olaylar Gateway yeniden başlatıldığında korunur. Synology'nin kararlı post_id değeri, ilgili etkin veya saklanan tamamlanma kaydı var olduğu sürece yinelenen kuyruk girdilerini engeller. Kuyruktan aracıya devir boyunca teslimat en az bir kez yapılmaya devam eder; dolayısıyla bu sınırdaki bir çökme, bir etkileşimin yeniden oynatılmasına neden olabilir.
Asgari 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 üzerinden 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önderenleri, 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 varsa yalnızca eşleşen kullanıcılar sohbet edebilir. Boş birallowedUserIdslistesiyleopende rotayı başlatmayı reddeder.dmPolicy: "disabled"doğrudan mesajları engeller.- Yanıt alıcısı bağlaması 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ı indirir ve ekler (en fazla 32 MB). Giden dosya URL'leri http veya https kullanmalıdır; özel ya da başka bir nedenle engellenen 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
transkript durumunu paylaşmaz.
Etkinleştirilen her hesaba farklı bir webhookPath verin. OpenClaw, tamamen aynı yolları reddeder
ve çoklu hesap kurulumlarında yalnızca paylaşılan bir Webhook yolunu devralan adlandırılmış hesapları başlatmayı reddeder.
Adlandırılmış bir hesap için eski davranış devralmasını bilinçli olarak kullanmanız gerekiyorsa söz konusu hesapta veya channels.synology-chat konumunda
dangerouslyAllowInheritedWebhookPath: true ayarlayın;
ancak tamamen aynı 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 yenileyin.- Kendinden imzalı yerel bir NAS sertifikasına açıkça güvenmiyorsanız
allowInsecureSsl: falsedeğerini koruyun. - Gelen Webhook isteklerinin token'ı doğrulanır ve gönderen 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; yinelenen 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 için
dmPolicy: "allowlist"tercih edin. - Eski kullanıcı adı tabanlı yanıt teslimatına açıkça ihtiyacınız yoksa
dangerouslyAllowNameMatchingkapalı kalsın. - Çoklu hesap kurulumunda paylaşılan yol yönlendirme riskini açıkça kabul etmiyorsanız
dangerouslyAllowInheritedWebhookPathkapalı kalsın.
Sorun giderme
Missing required fields (token, user_id, text):- giden Webhook yükünde zorunlu alanlardan biri eksik
- Synology token'ı üstbilgilerde gönderiyorsa Gateway'in/proxy'nin bu üstbilgileri koruduğundan emin olun
Invalid token:- giden Webhook gizli değeri
channels.synology-chat.tokenile eşleşmiyor - istek yanlış hesap/Webhook yoluna ulaşıyor
- ters proxy, istek OpenClaw'a ulaşmadan önce token üstbilgisini kaldırdı
- giden Webhook gizli değeri
Rate limit exceeded:- aynı kaynaktan çok fazla geçersiz token denemesi, söz konusu kaynağı geçici olarak kilitleyebilir
- kimliği doğrulanmış gönderenler için ayrıca kullanıcı başına ayrı bir mesaj hız sınırı vardır
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"etkinleştirilmiş ancak hiçbir kullanıcı yapılandırılmamış
User not authorized:- gönderenin sayısal
user_iddeğeriallowedUserIdsiçinde değil
- gönderenin sayısal
İlgili
- Kanallara Genel Bakış — desteklenen tüm kanallar
- Gruplar — grup sohbeti davranışı ve bahsetme kısıtlaması
- Kanal Yönlendirme — mesajlar için oturum yönlendirme
- Güvenlik — erişim modeli ve güvenliği güçlendirme