Developer and self-hosted
Nextcloud Talk
Nextcloud Talk adalah plugin saluran yang dapat diunduh (@openclaw/nextcloud-talk) yang menghubungkan OpenClaw ke instans Nextcloud yang dihosting sendiri melalui bot Webhook Talk. Pesan langsung, ruang, reaksi, dan pesan markdown didukung; media dikirim sebagai URL.
Instalasi
openclaw plugins install @openclaw/nextcloud-talkGunakan spesifikasi paket tanpa versi untuk mengikuti tag rilis resmi saat ini. Sematkan versi persis hanya jika Anda memerlukan instalasi yang dapat direproduksi.
Dari checkout lokal (alur kerja pengembangan):
openclaw plugins install ./path/to/local/nextcloud-talk-pluginMulai ulang Gateway setelah menginstal. Detail: Plugin
Penyiapan cepat (pemula)
-
Instal plugin (di atas).
-
Di server Nextcloud Anda, buat bot:
bash ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reactionPertahankan
--feature response: tanpanya, balasan keluar gagal dengan 401. Perbaiki bot yang sudah ada dengan./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1. -
Aktifkan bot di pengaturan ruang tujuan.
-
Konfigurasikan OpenClaw:
- Konfigurasi:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - Atau variabel lingkungan:
NEXTCLOUD_TALK_BOT_SECRET(khusus akun default)
Penyiapan CLI (
--url/--tokenadalah alias untuk bidang eksplisit;nc-talkdanncberfungsi sebagai alias saluran):bash openclaw channels add --channel nextcloud-talk \ --url https://cloud.example.com \ --token "<shared-secret>"Bidang eksplisit yang setara:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret "<shared-secret>"Rahasia berbasis berkas:
bash openclaw channels add --channel nextcloud-talk \ --base-url https://cloud.example.com \ --secret-file /path/to/nextcloud-talk-secret - Konfigurasi:
-
Mulai ulang Gateway (atau selesaikan penyiapan).
Konfigurasi minimal:
{ channels: { "nextcloud-talk": { enabled: true, baseUrl: "https://cloud.example.com", botSecret: "shared-secret", dmPolicy: "pairing", }, },}Catatan
- Bot tidak dapat memulai DM. Pengguna harus mengirim pesan kepada bot terlebih dahulu.
- URL Webhook harus dapat dijangkau dari server Nextcloud; atur
webhookPublicUrlsaat Gateway berada di belakang proksi. Permintaan Webhook ditandatangani dengan HMAC-SHA256 menggunakan rahasia bot; tanda tangan yang tidak valid ditolak dan dikenai pembatasan laju. - Unggahan media tidak didukung oleh API bot; media keluar ditambahkan sebagai baris
Attachment: <url>. - Payload Webhook tidak membedakan DM dari ruang; atur
apiUser+apiPassworduntuk mengaktifkan pencarian jenis ruang (di-cache sekitar 5 menit). Tanpa keduanya, setiap percakapan diperlakukan sebagai ruang. - Permintaan keluar melewati pengaman SSRF. Untuk host Nextcloud pada jaringan privat/internal tepercaya, ikut sertakan dengan
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true. - Jika
apiUser/apiPassworddanwebhookPublicUrlditetapkan,openclaw channels statusmemeriksa bot dan memperingatkan ketika fiturresponsetidak tersedia.
Kontrol akses (DM)
- Default:
channels.nextcloud-talk.dmPolicy = "pairing". Pengirim yang tidak dikenal menerima kode penyandingan. - Setujui melalui:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- DM publik:
channels.nextcloud-talk.dmPolicy="open"ditambahchannels.nextcloud-talk.allowFrom=["*"]. allowFromhanya mencocokkan ID pengguna Nextcloud (huruf kecil); nama tampilan diabaikan.
Ruang (grup)
- Default:
channels.nextcloud-talk.groupPolicy = "allowlist"(memerlukan penyebutan). - Izinkan ruang dengan
channels.nextcloud-talk.rooms, yang dikunci berdasarkan token ruang;"*"menetapkan default karakter pengganti:
{ channels: { "nextcloud-talk": { rooms: { "room-token": { requireMention: true }, }, }, },}- Kunci per ruang:
requireMention(default true),enabled(false menonaktifkan ruang),allowFrom(daftar pengirim yang diizinkan per ruang),tools(penggantian izin/tolak alat),skills(membatasi Skills yang dimuat),systemPrompt. - Agar tidak mengizinkan ruang apa pun, biarkan daftar izin kosong atau atur
channels.nextcloud-talk.groupPolicy="disabled".
Kemampuan
| Fitur | Status |
|---|---|
| Pesan langsung | Didukung |
| Ruang | Didukung |
| Utas | Tidak didukung |
| Media | Hanya URL |
| Reaksi | Didukung |
| Perintah native | Tidak didukung |
Referensi konfigurasi (Nextcloud Talk)
Konfigurasi lengkap: Konfigurasi
Opsi penyedia:
channels.nextcloud-talk.enabled: aktifkan/nonaktifkan pengaktifan saluran.channels.nextcloud-talk.baseUrl: URL instans Nextcloud.channels.nextcloud-talk.botSecret: rahasia bersama bot (string atau referensi rahasia).channels.nextcloud-talk.botSecretFile: jalur rahasia berkas reguler. Tautan simbolis ditolak.channels.nextcloud-talk.apiUser: pengguna API untuk pencarian ruang (deteksi DM) dan pemeriksaan status.channels.nextcloud-talk.apiPassword: kata sandi API/aplikasi untuk pencarian ruang.channels.nextcloud-talk.apiPasswordFile: jalur berkas kata sandi API.channels.nextcloud-talk.webhookPort: port pendengar Webhook (default: 8788).channels.nextcloud-talk.webhookHost: host Webhook (default: 0.0.0.0).channels.nextcloud-talk.webhookPath: jalur Webhook (default: /nextcloud-talk-webhook).channels.nextcloud-talk.webhookPublicUrl: URL Webhook yang dapat dijangkau secara eksternal.channels.nextcloud-talk.dmPolicy:pairing | allowlist | open | disabled(default: pairing).openmemerlukanallowFrom=["*"].channels.nextcloud-talk.allowFrom: daftar DM yang diizinkan (ID pengguna).channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(default: allowlist).channels.nextcloud-talk.groupAllowFrom: daftar pengirim ruang yang diizinkan (ID pengguna); menggunakanallowFromsebagai cadangan jika tidak ditetapkan.channels.nextcloud-talk.rooms: pengaturan per ruang dan daftar izin (lihat di atas).- Grup akses pengirim statis dapat dirujuk dari
allowFromdangroupAllowFromdenganaccessGroup:<name>. channels.nextcloud-talk.historyLimit: batas riwayat grup (0 menonaktifkan).channels.nextcloud-talk.dmHistoryLimit: batas riwayat DM (0 menonaktifkan).channels.nextcloud-talk.dms: penggantian per DM yang dikunci berdasarkan ID pengguna (historyLimit).channels.nextcloud-talk.textChunkLimit: ukuran potongan teks keluar dalam karakter (default: 4000).channels.nextcloud-talk.streaming.chunkMode:length(default) ataunewlineuntuk memisahkan pada baris kosong (batas paragraf) sebelum pemotongan berdasarkan panjang.channels.nextcloud-talk.streaming.block.enabled: aktifkan atau nonaktifkan streaming blok untuk saluran ini.channels.nextcloud-talk.streaming.block.coalesce: penyetelan penggabungan streaming blok.channels.nextcloud-talk.responsePrefix: prefiks balasan keluar.channels.nextcloud-talk.markdown.tables: mode perenderan tabel markdown (off | bullets | code | block).channels.nextcloud-talk.mediaMaxMb: batas media masuk (MB).channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: izinkan host Nextcloud privat/internal melewati pengaman SSRF.channels.nextcloud-talk.accounts.<id>: penggantian per akun (kunci yang sama);defaultAccountmemilih akun default. Variabel lingkunganNEXTCLOUD_TALK_BOT_SECRET/NEXTCLOUD_TALK_API_PASSWORDhanya berlaku untuk akun default.
Terkait
- Ikhtisar Saluran — semua saluran yang didukung
- Penyandingan — autentikasi DM dan alur penyandingan
- Grup — perilaku obrolan grup dan persyaratan penyebutan
- Perutean Saluran — perutean sesi untuk pesan
- Keamanan — model akses dan penguatan