OpenClaw Nextcloud Talk チャンネル
OpenClawをNextcloud Talkに接続します。Nextcloud Talkは、Nextcloudエコシステムに組み込まれたプライバシー重視のエンタープライズコミュニケーションプラットフォームです。この統合はWebhookベースのBotアーキテクチャを使用しており、Nextcloud TalkがWebhook経由でメッセージイベントをGatewayに送信し、BotがTalk REST APIを通じて応答します。これにより、AIアシスタントがセルフホスト型のNextcloud環境内で、ダイレクトメッセージ、ルームでの会話、絵文字によるメッセージへのリアクションに参加できるようになります。
Nextcloud Talk 対応機能
テキストメッセージ
対応
メディア・ファイル
対応
リアクション
対応
スレッド
非対応
音声メッセージ
非対応
グループチャット
対応
Nextcloud Talk 前提条件
- 管理者アクセス権を持ち、TalkアプリがインストールされたNextcloudサーバー(v27.1以降)
- Webhook署名検証用の共有シークレット(40〜128文字)
- NextcloudサーバーからアクセスできるGatewayのWebhookエンドポイント(パブリックURLまたは内部ネットワーク)
- OpenClaw Gatewayがインストールされ、稼働していること
- 'openclaw plugins install @openclaw/nextcloud-talk' でインストールされたNextcloud Talkプラグイン
Nextcloud Talk クイックセットアップ
Nextcloud Talkプラグインをインストールする
'openclaw plugins install @openclaw/nextcloud-talk' を実行して、GatewayにNextcloud Talkサポートを追加します。
NextcloudサーバーにBotを登録する
NextcloudサーバーにSSHで接続し、OCCコマンドを実行します: ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature reaction。<shared-secret> を40文字以上の強力なシークレットに、<webhook-url> をGatewayの外部アクセス可能なWebhookエンドポイント(例: https://gateway.example.com:8788/webhook)に置き換えてください。
Botを有効化して設定する
Nextcloud Talkのルーム設定でOpenClaw Botを有効にします。次に、~/.openclaw/openclaw.json にbaseUrlとbotSecretを含むチャネル設定を追加します。'openclaw start' でGatewayを起動し、ルームでメッセージを送信して接続を確認してください。
Nextcloud Talk 設定例
{
"channels": {
"nextcloud-talk": {
"enabled": true,
"baseUrl": "https://nextcloud.example.com",
"botSecret": "your-shared-secret-min-40-chars",
"dmPolicy": "pairing"
}
}
}Nextcloud Talk 詳細ドキュメント
アーキテクチャ概要
OCCによるBot登録
./occ talk:bot:install "OpenClaw" "a]72@Bz&V!LKMO*xhQib7p^E%yzGMG(8a7Bp*x6o" "https://gateway.example.com:8788/webhook" --feature reactionDMポリシー
{
"channels": {
"nextcloud-talk": {
"dmPolicy": "pairing",
"allowFrom": ["user-id-1", "user-id-2"]
}
}
}ルーム設定
{
"channels": {
"nextcloud-talk": {
"groupPolicy": "allowlist",
"rooms": {
"abc123token": {
"requireMention": true
},
"def456token": {
"requireMention": false
}
}
}
}
}ルーム検出用のAPI認証情報
{
"channels": {
"nextcloud-talk": {
"apiUser": "bot-service-account",
"apiPassword": "service-account-password",
"apiPasswordFile": "/run/secrets/nc-api-password"
}
}
}Webhook設定
{
"channels": {
"nextcloud-talk": {
"webhookPort": 8788,
"webhookHost": "0.0.0.0",
"webhookPath": "/webhook",
"webhookPublicUrl": "https://gateway.example.com:8788/webhook"
}
}
}メッセージ処理とストリーミング
{
"channels": {
"nextcloud-talk": {
"textChunkLimit": 4000,
"chunkMode": "newline",
"blockStreaming": true,
"blockStreamingCoalesce": true,
"mediaMaxMb": 10
}
}
}会話履歴
{
"channels": {
"nextcloud-talk": {
"historyLimit": 20,
"dmHistoryLimit": 50
}
}
}リアクション対応
セキュリティとWebhook署名
Nextcloud Talk 設定リファレンス
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Nextcloud Talkチャネルの有効化または無効化 |
| baseUrl | string | "" | NextcloudサーバーのフルURL(例: https://nextcloud.example.com) |
| botSecret | string | "" | Webhook署名検証に使用する共有シークレット(OCCインストール時のシークレットと一致する必要あり) |
| botSecretFile | string | "" | 共有シークレットを含むファイルのパス(インラインのbotSecretの代替) |
| apiUser | string | "" | APIコール用のNextcloudユーザー名(ルームタイプの検出に使用) |
| apiPassword | string | "" | APIユーザーアカウントのパスワード |
| apiPasswordFile | string | "" | APIパスワードを含むファイルのパス(インラインのapiPasswordの代替) |
| dmPolicy | string | "pairing" | DMアクセスポリシー: 'pairing'(検証コード)、'open'(全ユーザー)、または 'disabled'(DM無効) |
| allowFrom | string[] | [] | BotへのDMが許可されるNextcloudユーザーID(オープンアクセスには["*"]を使用) |
| groupPolicy | string | "allowlist" | ルームアクセスポリシー: 'allowlist'(モデレーターが有効にしたルームのみ) |
| webhookPort | number | 8788 | 組み込みWebhook HTTPサーバーのポート |
| webhookHost | string | "0.0.0.0" | Webhookサーバーをバインドするインターフェース |
| webhookPath | string | "/webhook" | WebhookエンドポイントのURLパス |
| webhookPublicUrl | string | "" | WebhookエンドポイントのフルパブリックURL(リバースプロキシの背後で必要) |
| historyLimit | number | 20 | ルーム会話のコンテキストとして含める過去のメッセージの最大数 |
| dmHistoryLimit | number | 50 | DM会話のコンテキストとして含める過去のメッセージの最大数 |
| textChunkLimit | number | 4000 | メッセージチャンクあたりの最大文字数 |
| chunkMode | string | "length" | テキスト分割モード: 'length'(文字数制限)または 'newline'(段落境界) |
| blockStreaming | boolean | false | AIの完全な応答を待ってから送信(ストリーミングなし) |
| blockStreamingCoalesce | boolean | false | ストリーミングチャンクを単一の最終メッセージにまとめる |
| mediaMaxMb | number | 10 | メディアURL参照の最大ファイルサイズ(MB単位) |
Nextcloud Talkチャネルの有効化または無効化
NextcloudサーバーのフルURL(例: https://nextcloud.example.com)
Webhook署名検証に使用する共有シークレット(OCCインストール時のシークレットと一致する必要あり)
共有シークレットを含むファイルのパス(インラインのbotSecretの代替)
APIコール用のNextcloudユーザー名(ルームタイプの検出に使用)
APIユーザーアカウントのパスワード
APIパスワードを含むファイルのパス(インラインのapiPasswordの代替)
DMアクセスポリシー: 'pairing'(検証コード)、'open'(全ユーザー)、または 'disabled'(DM無効)
BotへのDMが許可されるNextcloudユーザーID(オープンアクセスには["*"]を使用)
ルームアクセスポリシー: 'allowlist'(モデレーターが有効にしたルームのみ)
組み込みWebhook HTTPサーバーのポート
Webhookサーバーをバインドするインターフェース
WebhookエンドポイントのURLパス
WebhookエンドポイントのフルパブリックURL(リバースプロキシの背後で必要)
ルーム会話のコンテキストとして含める過去のメッセージの最大数
DM会話のコンテキストとして含める過去のメッセージの最大数
メッセージチャンクあたりの最大文字数
テキスト分割モード: 'length'(文字数制限)または 'newline'(段落境界)
AIの完全な応答を待ってから送信(ストリーミングなし)
ストリーミングチャンクを単一の最終メッセージにまとめる
メディアURL参照の最大ファイルサイズ(MB単位)
Nextcloud Talk よくある質問
Nextcloud Talk トラブルシューティング
Webhook URLに到達できない、ルームでBotが有効になっていない、または共有シークレットが一致しない。
openclaw.jsonの共有シークレットがBotインストール時に使用されたものと一致しない。
対象ルームでモデレーターによりBotが有効になっていない、またはrequireMentionがtrueでBotが@メンションされていない。
API認証情報(apiUser、apiPassword)が設定されていない。
設定されたWebhookポートが既に使用されているか、ホストバインディングが無効。