Developer and self-hosted
Nextcloud Talk
Nextcloud Talk は、Talk Webhook ボットを通じて OpenClaw をセルフホスト型 Nextcloud インスタンスに接続する、ダウンロード可能なチャンネル Plugin (@openclaw/nextcloud-talk) です。ダイレクトメッセージ、ルーム、リアクション、Markdown メッセージに対応しています。メディアは URL として送信されます。
インストール
openclaw plugins install @openclaw/nextcloud-talk現在の公式リリースタグに追従するには、バージョンを付けないパッケージ指定を使用します。再現可能なインストールが必要な場合にのみ、正確なバージョンを固定してください。
ローカルチェックアウトからインストールする場合(開発ワークフロー):
openclaw plugins install ./path/to/local/nextcloud-talk-pluginインストール後に Gateway を再起動します。詳細: Plugin
クイックセットアップ(初心者向け)
-
Plugin をインストールします(上記を参照)。
-
Nextcloud サーバーでボットを作成します:
bash ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reaction--feature responseは維持してください。これがない場合、送信する返信は 401 で失敗します。既存のボットは./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1で修復します。 -
対象ルームの設定でボットを有効にします。
-
OpenClaw を設定します:
- 設定:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - または環境変数:
NEXTCLOUD_TALK_BOT_SECRET(デフォルトアカウントのみ)
CLI セットアップ(
--url/--tokenは明示的なフィールドのエイリアスです。nc-talkとncはチャンネルのエイリアスとして使用できます):bash openclaw channels add --channel nextcloud-talk \ --url https://cloud.example.com \ --token "<shared-secret>"同等の明示的なフィールド:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret "<shared-secret>"ファイルに保存されたシークレット:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret-file /path/to/nextcloud-talk-secret - 設定:
-
Gateway を再起動します(またはセットアップを完了します)。
最小構成:
{ channels: { "nextcloud-talk": { enabled: true, baseUrl: "https://cloud.example.com", botSecret: "shared-secret", dmPolicy: "pairing", }, },}注意事項
- ボットから DM を開始することはできません。ユーザーが最初にボットへメッセージを送信する必要があります。
- Webhook URL は Nextcloud サーバーから到達可能である必要があります。Gateway がプロキシの背後にある場合は
webhookPublicUrlを設定してください。Webhook リクエストはボットのシークレットを使用して HMAC-SHA256 で署名されます。無効な署名は拒否され、レート制限の対象になります。 - ボット API はメディアのアップロードに対応していません。送信メディアは
Attachment: <url>行として追加されます。 - Webhook ペイロードでは DM とルームを区別できません。ルーム種別の検索を有効にするには、
apiUser+apiPasswordを設定してください(約 5 分間キャッシュされます)。これらを設定しない場合、すべての会話がルームとして扱われます。 - 送信リクエストは SSRF ガードを通過します。信頼できるプライベート/内部ネットワーク上の Nextcloud ホストについては、
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: trueで明示的に許可してください。 apiUser/apiPasswordとwebhookPublicUrlを設定すると、openclaw channels statusがボットを検査し、response機能がない場合に警告します。
アクセス制御(DM)
- デフォルト:
channels.nextcloud-talk.dmPolicy = "pairing"。不明な送信者にはペアリングコードが発行されます。 - 次の方法で承認します:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- 公開 DM:
channels.nextcloud-talk.dmPolicy="open"とchannels.nextcloud-talk.allowFrom=["*"]。 allowFromは Nextcloud のユーザー ID のみに一致します(小文字化されます)。表示名は無視されます。
ルーム(グループ)
- デフォルト:
channels.nextcloud-talk.groupPolicy = "allowlist"(メンション必須)。 - ルームトークンをキーとする
channels.nextcloud-talk.roomsでルームを許可リストに登録します。"*"はワイルドカードのデフォルトを設定します:
{ channels: { "nextcloud-talk": { rooms: { "room-token": { requireMention: true }, }, }, },}- ルームごとのキー:
requireMention(デフォルトは true)、enabled(false にするとルームを無効化)、allowFrom(ルームごとの送信者許可リスト)、tools(ツールの許可/拒否のオーバーライド)、skills(読み込む Skills を制限)、systemPrompt。 - すべてのルームを許可しない場合は、許可リストを空のままにするか、
channels.nextcloud-talk.groupPolicy="disabled"を設定します。
機能
| 機能 | 対応状況 |
|---|---|
| ダイレクトメッセージ | 対応 |
| ルーム | 対応 |
| スレッド | 非対応 |
| メディア | URL のみ |
| リアクション | 対応 |
| ネイティブコマンド | 非対応 |
設定リファレンス(Nextcloud Talk)
すべての設定: 設定
プロバイダーオプション:
channels.nextcloud-talk.enabled: チャンネルの起動を有効化/無効化します。channels.nextcloud-talk.baseUrl: Nextcloud インスタンスの URL。channels.nextcloud-talk.botSecret: ボットの共有シークレット(文字列またはシークレット参照)。channels.nextcloud-talk.botSecretFile: 通常ファイルのシークレットパス。シンボリックリンクは拒否されます。channels.nextcloud-talk.apiUser: ルーム検索(DM の検出)およびステータス検査に使用する API ユーザー。channels.nextcloud-talk.apiPassword: ルーム検索用の API/アプリパスワード。channels.nextcloud-talk.apiPasswordFile: API パスワードファイルのパス。channels.nextcloud-talk.webhookPort: Webhook リスナーポート(デフォルト: 8788)。channels.nextcloud-talk.webhookHost: Webhook ホスト(デフォルト: 0.0.0.0)。channels.nextcloud-talk.webhookPath: Webhook パス(デフォルト: /nextcloud-talk-webhook)。channels.nextcloud-talk.webhookPublicUrl: 外部から到達可能な Webhook URL。channels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled(デフォルト: pairing)。openにはallowFrom=["*"]が必要です。channels.nextcloud-talk.allowFrom: DM 許可リスト(ユーザー ID)。channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(デフォルト: allowlist)。channels.nextcloud-talk.groupAllowFrom: ルーム送信者の許可リスト(ユーザー ID)。未設定の場合はallowFromにフォールバックします。channels.nextcloud-talk.rooms: ルームごとの設定と許可リスト(上記を参照)。- 静的な送信者アクセスグループは、
accessGroup:<name>を使用してallowFromおよびgroupAllowFromから参照できます。 channels.nextcloud-talk.historyLimit: グループ履歴の上限(0 で無効)。channels.nextcloud-talk.dmHistoryLimit: DM 履歴の上限(0 で無効)。channels.nextcloud-talk.dms: ユーザー ID をキーとする DM ごとのオーバーライド(historyLimit)。channels.nextcloud-talk.textChunkLimit: 送信テキストのチャンクサイズ(文字数、デフォルト: 4000)。channels.nextcloud-talk.streaming.chunkMode: 長さによるチャンク分割の前に空行(段落の境界)で分割するには、length(デフォルト)またはnewline。channels.nextcloud-talk.streaming.block.enabled: このチャンネルのブロックストリーミングを有効化または無効化します。channels.nextcloud-talk.streaming.block.coalesce: ブロックストリーミングの結合調整。channels.nextcloud-talk.responsePrefix: 送信返信のプレフィックス。channels.nextcloud-talk.markdown.tables: Markdown テーブルのレンダリングモード(off | bullets | code | block)。channels.nextcloud-talk.mediaMaxMb: 受信メディアの上限(MB)。channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: プライベート/内部 Nextcloud ホストが SSRF ガードを通過することを許可します。channels.nextcloud-talk.accounts.<id>: アカウントごとのオーバーライド(同じキー)。defaultAccountがデフォルトを選択します。環境変数NEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDはデフォルトアカウントのみに適用されます。
関連項目
- チャンネルの概要 — 対応しているすべてのチャンネル
- ペアリング — DM の認証とペアリングの流れ
- グループ — グループチャットの動作とメンション制御
- チャンネルルーティング — メッセージのセッションルーティング
- セキュリティ — アクセスモデルと堅牢化