Synology Chat
ステータス: Synology Chat webhookを使用するバンドル済みプラグインのダイレクトメッセージチャンネルです。 このプラグインは、Synology Chatの送信webhookから受信メッセージを受け取り、 Synology Chatの受信webhookを通じて返信を送信します。バンドル済みプラグイン
Synology Chatは現在のOpenClawリリースにバンドル済みプラグインとして含まれているため、通常の パッケージ済みビルドでは別途インストールは不要です。 古いビルドまたはSynology Chatを含まないカスタムインストールを使用している場合は、 手動でインストールしてください。 ローカルチェックアウトからインストールするには:クイックセットアップ
- Synology Chatプラグインが利用可能であることを確認します。
- 現在のパッケージ版OpenClawリリースには、すでにバンドルされています。
- 古い/カスタムインストールでは、上記コマンドでソースチェックアウトから手動追加できます。
openclaw onboardでは、openclaw channels addと同じチャンネルセットアップ一覧にSynology Chatが表示されるようになりました。- 非対話型セットアップ:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Synology Chatの統合設定で以下を行います。
- 受信webhookを作成し、そのURLをコピーします。
- 送信webhookを作成し、そのシークレットトークンを設定します。
- 送信webhookのURLをOpenClaw Gatewayに向けます。
- デフォルトでは
https://gateway-host/webhook/synology - またはカスタムの
channels.synology-chat.webhookPath
- デフォルトでは
- OpenClawでセットアップを完了します。
- ガイド付き:
openclaw onboard - 直接指定:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- ガイド付き:
- Gatewayを再起動し、Synology ChatボットにDMを送信します。
- OpenClawは、まず
body.token、次に?token=...、最後にヘッダーから送信webhookトークンを受け付けます。 - 受け付けるヘッダー形式:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- 空または欠落したトークンはfail-closedになります。
環境変数
デフォルトアカウントでは、以下の環境変数を使用できます。SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(カンマ区切り)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
DMポリシーとアクセス制御
dmPolicy: "allowlist"が推奨されるデフォルトです。allowedUserIdsは、SynologyユーザーIDのリスト(またはカンマ区切り文字列)を受け付けます。allowlistモードでは、allowedUserIdsリストが空だと設定ミスとして扱われ、webhookルートは起動しません(全員許可にするにはdmPolicy: "open"を使用してください)。dmPolicy: "open"は任意の送信者を許可します。dmPolicy: "disabled"はDMをブロックします。- 返信先バインディングは、デフォルトで安定した数値の
user_idに基づきます。channels.synology-chat.dangerouslyAllowNameMatching: trueは、返信配信で可変なusername/nickname参照を再有効化する非常用の互換モードです。 - ペアリング承認は次で行えます。
openclaw pairing list synology-chatopenclaw pairing approve synology-chat <CODE>
送信配信
送信先には数値のSynology ChatユーザーIDを使用します。 例:複数アカウント
複数のSynology Chatアカウントはchannels.synology-chat.accounts配下でサポートされています。
各アカウントは、token、incoming URL、webhook path、DMポリシー、制限を上書きできます。
ダイレクトメッセージのセッションはアカウントごと・ユーザーごとに分離されるため、異なる2つのSynologyアカウントで同じ数値のuser_idを使ってもトランスクリプト状態は共有されません。
有効な各アカウントには、異なるwebhookPathを設定してください。OpenClawは現在、完全一致する重複パスを拒否し、複数アカウント構成で共有されたwebhook pathだけを継承する名前付きアカウントの起動を拒否します。
意図的に名前付きアカウントでレガシー継承が必要な場合は、
そのアカウントまたはchannels.synology-chatにdangerouslyAllowInheritedWebhookPath: trueを設定してください。
ただし、完全一致する重複パスは引き続きfail-closedで拒否されます。明示的なアカウントごとのパスを推奨します。
セキュリティに関する注意
tokenは秘密に保ち、漏えいした場合はローテーションしてください。- 自己署名のローカルNAS証明書を明示的に信頼している場合を除き、
allowInsecureSsl: falseを維持してください。 - 受信webhookリクエストはトークン検証され、送信者ごとにレート制限されます。
- 無効なトークンチェックでは定数時間のシークレット比較を使用し、fail-closedになります。
- 本番環境では
dmPolicy: "allowlist"を推奨します。 - レガシーのusernameベース返信配信が明示的に必要な場合を除き、
dangerouslyAllowNameMatchingは無効のままにしてください。 - 複数アカウント構成で共有パスのルーティングリスクを明示的に受け入れる場合を除き、
dangerouslyAllowInheritedWebhookPathは無効のままにしてください。
トラブルシューティング
Missing required fields (token, user_id, text):- 送信webhookペイロードに必要フィールドのいずれかが欠けています
- Synologyがトークンをヘッダーで送信している場合、Gateway/プロキシがそのヘッダーを保持していることを確認してください
Invalid token:- 送信webhookのシークレットが
channels.synology-chat.tokenと一致していません - リクエストが誤ったアカウント/webhook pathに到達しています
- リバースプロキシが、リクエストがOpenClawに届く前にトークンヘッダーを削除しました
- 送信webhookのシークレットが
Rate limit exceeded:- 同じ送信元からの無効トークン試行が多すぎると、その送信元が一時的にロックアウトされることがあります
- 認証済み送信者にも、別途ユーザーごとのメッセージレート制限があります
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open.:dmPolicy="allowlist"が有効ですが、ユーザーが設定されていません
User not authorized:- 送信者の数値
user_idがallowedUserIdsに含まれていません
- 送信者の数値
関連
- Channels Overview — サポートされているすべてのチャンネル
- Pairing — DM認証とペアリングフロー
- Groups — グループチャットの挙動とメンション制御
- Channel Routing — メッセージのセッションルーティング
- Security — アクセスモデルとハードニング