Developer and self-hosted
Nextcloud Talk
Nextcloud Talk adalah Plugin kanal 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 yang tepat 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 target.
-
Konfigurasikan OpenClaw:
- Konfigurasi:
channels.nextcloud-talk.baseUrl+channels.nextcloud-talk.botSecret - Atau variabel lingkungan:
NEXTCLOUD_TALK_BOT_SECRET(hanya akun default)
Penyiapan CLI (
--url/--tokenadalah alias untuk bidang eksplisit;nc-talkdanncberfungsi sebagai alias kanal):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 pesan langsung. Pengguna harus mengirim pesan kepada bot terlebih dahulu.
- URL Webhook harus dapat dijangkau dari server Nextcloud; atur
webhookPublicUrlketika Gateway berada di belakang proksi. Permintaan Webhook ditandatangani dengan HMAC-SHA256 menggunakan rahasia bot; tanda tangan yang tidak valid ditolak dan dibatasi lajunya. - Unggahan media tidak didukung oleh API bot; media keluar ditambahkan sebagai baris
Attachment: <url>. - Muatan Webhook tidak membedakan pesan langsung dari ruang; atur
apiUser+apiPassworduntuk mengaktifkan pencarian jenis ruang (disimpan dalam cache sekitar 5 menit). Tanpanya, setiap percakapan diperlakukan sebagai ruang. - Permintaan keluar melewati pelindung SSRF. Untuk host Nextcloud pada jaringan privat/internal tepercaya, aktifkan dengan
channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true. - Jika
apiUser/apiPassworddanwebhookPublicUrldiatur,openclaw channels statusmemeriksa bot dan memperingatkan ketika fiturresponsetidak tersedia.
Kontrol akses (pesan langsung)
- Default:
channels.nextcloud-talk.dmPolicy = "pairing". Pengirim yang tidak dikenal mendapatkan kode pemasangan. - Setujui melalui:
openclaw pairing list nextcloud-talkopenclaw pairing approve nextcloud-talk <CODE>
- Pesan langsung 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"(dibatasi berdasarkan penyebutan). - Masukkan ruang ke daftar yang diizinkan dengan
channels.nextcloud-talk.rooms, menggunakan token ruang sebagai kunci;"*"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. - Untuk tidak mengizinkan ruang apa pun, biarkan daftar yang diizinkan 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: mengaktifkan/menonaktifkan pengaktifan kanal.channels.nextcloud-talk.baseUrl: URL instans Nextcloud.channels.nextcloud-talk.botSecret: rahasia bersama bot (string atau referensi rahasia).channels.nextcloud-talk.botSecretFile: jalur rahasia berupa berkas biasa. Tautan simbolis ditolak.channels.nextcloud-talk.apiUser: pengguna API untuk pencarian ruang (deteksi pesan langsung) 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: porta 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 pesan langsung yang diizinkan (ID pengguna).channels.nextcloud-talk.groupPolicy:allowlist | open | disabled(default: allowlist).channels.nextcloud-talk.groupAllowFrom: daftar pengirim ruang yang diizinkan (ID pengguna); kembali menggunakanallowFromjika tidak diatur.channels.nextcloud-talk.rooms: pengaturan dan daftar yang diizinkan per ruang (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 pesan langsung (0 menonaktifkan).channels.nextcloud-talk.dms: penggantian per pesan langsung dengan ID pengguna sebagai kunci (historyLimit).channels.nextcloud-talk.textChunkLimit: ukuran potongan teks keluar dalam karakter (default: 4000).channels.nextcloud-talk.chunkMode:length(default) ataunewlineuntuk memisahkan pada baris kosong (batas paragraf) sebelum pemotongan berdasarkan panjang.channels.nextcloud-talk.blockStreaming: menonaktifkan streaming blok untuk kanal ini.channels.nextcloud-talk.blockStreamingCoalesce: penyesuaian 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: mengizinkan host Nextcloud privat/internal melewati pelindung 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 Kanal — semua kanal yang didukung
- Pemasangan — autentikasi pesan langsung dan alur pemasangan
- Grup — perilaku obrolan grup dan pembatasan berdasarkan penyebutan
- Perutean Kanal — perutean sesi untuk pesan
- Keamanan — model akses dan penguatan