Developer and self-hosted

Nextcloud Talk

Nextcloud Talk est un plugin de canal téléchargeable (@openclaw/nextcloud-talk) qui connecte OpenClaw à une instance Nextcloud auto-hébergée au moyen d’un bot Webhook Talk. Les messages directs, les salons, les réactions et les messages en Markdown sont pris en charge ; les médias sont envoyés sous forme d’URL.

Installation

bash
openclaw plugins install @openclaw/nextcloud-talk

Utilisez la spécification de paquet seule pour suivre l’étiquette de la version officielle actuelle. N’épinglez une version exacte que si vous avez besoin d’une installation reproductible.

Depuis une copie de travail locale (flux de développement) :

bash
openclaw plugins install ./path/to/local/nextcloud-talk-plugin

Redémarrez le Gateway après l’installation. Détails : Plugins

Configuration rapide (débutants)

  1. Installez le plugin (ci-dessus).

  2. Sur votre serveur Nextcloud, créez un bot :

    bash
    ./occ talk:bot:install "OpenClaw" "<shared-secret>" "<webhook-url>" --feature webhook --feature response --feature reaction

    Conservez --feature response : sans cette option, les réponses sortantes échouent avec le code 401. Réparez un bot existant avec ./occ talk:bot:state --feature webhook --feature response --feature reaction <botId> 1.

  3. Activez le bot dans les paramètres du salon cible.

  4. Configurez OpenClaw :

    • Configuration : channels.nextcloud-talk.baseUrl + channels.nextcloud-talk.botSecret
    • Ou variable d’environnement : NEXTCLOUD_TALK_BOT_SECRET (compte par défaut uniquement)

    Configuration par CLI (--url/--token sont des alias des champs explicites ; nc-talk et nc fonctionnent comme alias de canal) :

    bash
    openclaw channels add --channel nextcloud-talk \  --url https://cloud.example.com \  --token "<shared-secret>"

    Champs explicites équivalents :

    bash
    openclaw channels add --channel nextcloud-talk \  --base-url https://cloud.example.com \  --secret "<shared-secret>"

    Secret stocké dans un fichier :

    bash
    openclaw channels add --channel nextcloud-talk \  --base-url https://cloud.example.com \  --secret-file /path/to/nextcloud-talk-secret
  5. Redémarrez le Gateway (ou terminez la configuration).

Configuration minimale :

json5
{  channels: {    "nextcloud-talk": {      enabled: true,      baseUrl: "https://cloud.example.com",      botSecret: "shared-secret",      dmPolicy: "pairing",    },  },}

Remarques

  • Les bots ne peuvent pas initier de messages directs. L’utilisateur doit d’abord envoyer un message au bot.
  • L’URL du Webhook doit être accessible depuis le serveur Nextcloud ; définissez webhookPublicUrl lorsque le Gateway se trouve derrière un proxy. Les requêtes Webhook sont signées avec HMAC-SHA256 à l’aide du secret du bot ; les signatures non valides sont rejetées et soumises à une limitation de débit.
  • L’API du bot ne prend pas en charge l’envoi de médias ; les médias sortants sont ajoutés sous la forme d’une ligne Attachment: <url>.
  • La charge utile du Webhook ne distingue pas les messages directs des salons ; définissez apiUser + apiPassword pour activer la détection du type de salon (mise en cache pendant environ 5 minutes). Sans ces paramètres, chaque conversation est traitée comme un salon.
  • Les requêtes sortantes passent par la protection SSRF. Pour un hôte Nextcloud situé sur un réseau privé/interne de confiance, activez explicitement channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork: true.
  • Lorsque apiUser/apiPassword et webhookPublicUrl sont définis, openclaw channels status sonde le bot et émet un avertissement si la fonctionnalité response est absente.

Contrôle d’accès (messages directs)

  • Valeur par défaut : channels.nextcloud-talk.dmPolicy = "pairing". Les expéditeurs inconnus reçoivent un code d’association.
  • Approuvez-les avec :
    • openclaw pairing list nextcloud-talk
    • openclaw pairing approve nextcloud-talk &lt;CODE&gt;
  • Messages directs publics : channels.nextcloud-talk.dmPolicy="open" avec channels.nextcloud-talk.allowFrom=["*"].
  • allowFrom correspond uniquement aux identifiants utilisateur Nextcloud (en minuscules) ; les noms d’affichage sont ignorés.

Salons (groupes)

  • Valeur par défaut : channels.nextcloud-talk.groupPolicy = "allowlist" (mention requise).
  • Autorisez les salons avec channels.nextcloud-talk.rooms, indexé par jeton de salon ; "*" définit une valeur générique par défaut :
json5
{  channels: {    "nextcloud-talk": {      rooms: {        "room-token": { requireMention: true },      },    },  },}
  • Clés propres à chaque salon : requireMention (valeur par défaut : true), enabled (false désactive le salon), allowFrom (liste d’autorisation des expéditeurs du salon), tools (remplacements d’autorisation ou d’interdiction des outils), skills (limite les Skills chargés), systemPrompt.
  • Pour n’autoriser aucun salon, laissez la liste d’autorisation vide ou définissez channels.nextcloud-talk.groupPolicy="disabled".

Fonctionnalités

Fonctionnalité État
Messages directs Pris en charge
Salons Pris en charge
Fils de discussion Non pris en charge
Médias URL uniquement
Réactions Prises en charge
Commandes natives Non prises en charge

Référence de configuration (Nextcloud Talk)

Configuration complète : Configuration

Options du fournisseur :

  • channels.nextcloud-talk.enabled : active ou désactive le démarrage du canal.
  • channels.nextcloud-talk.baseUrl : URL de l’instance Nextcloud.
  • channels.nextcloud-talk.botSecret : secret partagé du bot (chaîne ou référence de secret).
  • channels.nextcloud-talk.botSecretFile : chemin du fichier ordinaire contenant le secret. Les liens symboliques sont rejetés.
  • channels.nextcloud-talk.apiUser : utilisateur de l’API pour la détection des salons (détection des messages directs) et la sonde d’état.
  • channels.nextcloud-talk.apiPassword : mot de passe de l’API ou de l’application pour la détection des salons.
  • channels.nextcloud-talk.apiPasswordFile : chemin du fichier contenant le mot de passe de l’API.
  • channels.nextcloud-talk.webhookPort : port d’écoute du Webhook (valeur par défaut : 8788).
  • channels.nextcloud-talk.webhookHost : hôte du Webhook (valeur par défaut : 0.0.0.0).
  • channels.nextcloud-talk.webhookPath : chemin du Webhook (valeur par défaut : /nextcloud-talk-webhook).
  • channels.nextcloud-talk.webhookPublicUrl : URL du Webhook accessible depuis l’extérieur.
  • channels.nextcloud-talk.dmPolicy : pairing | allowlist | open | disabled (valeur par défaut : pairing). open nécessite allowFrom=["*"].
  • channels.nextcloud-talk.allowFrom : liste d’autorisation des messages directs (identifiants utilisateur).
  • channels.nextcloud-talk.groupPolicy : allowlist | open | disabled (valeur par défaut : allowlist).
  • channels.nextcloud-talk.groupAllowFrom : liste d’autorisation des expéditeurs des salons (identifiants utilisateur) ; utilise allowFrom par défaut si cette option n’est pas définie.
  • channels.nextcloud-talk.rooms : paramètres et liste d’autorisation propres à chaque salon (voir ci-dessus).
  • Les groupes statiques d’accès des expéditeurs peuvent être référencés depuis allowFrom et groupAllowFrom avec accessGroup:<name>.
  • channels.nextcloud-talk.historyLimit : limite de l’historique des groupes (0 le désactive).
  • channels.nextcloud-talk.dmHistoryLimit : limite de l’historique des messages directs (0 le désactive).
  • channels.nextcloud-talk.dms : remplacements propres à chaque conversation directe, indexés par identifiant utilisateur (historyLimit).
  • channels.nextcloud-talk.textChunkLimit : taille des fragments de texte sortants en caractères (valeur par défaut : 4000).
  • channels.nextcloud-talk.chunkMode : length (valeur par défaut) ou newline pour découper le texte aux lignes vides (limites de paragraphes) avant le découpage selon la longueur.
  • channels.nextcloud-talk.blockStreaming : désactive la diffusion par blocs pour ce canal.
  • channels.nextcloud-talk.blockStreamingCoalesce : réglage de la fusion de la diffusion par blocs.
  • channels.nextcloud-talk.responsePrefix : préfixe des réponses sortantes.
  • channels.nextcloud-talk.markdown.tables : mode de rendu des tableaux Markdown (off | bullets | code | block).
  • channels.nextcloud-talk.mediaMaxMb : taille maximale des médias entrants (Mo).
  • channels.nextcloud-talk.network.dangerouslyAllowPrivateNetwork : autorise les hôtes Nextcloud privés/internes à contourner la protection SSRF.
  • channels.nextcloud-talk.accounts.<id> : remplacements propres à chaque compte (mêmes clés) ; defaultAccount sélectionne le compte par défaut. Les variables d’environnement NEXTCLOUD_TALK_BOT_SECRET / NEXTCLOUD_TALK_API_PASSWORD s’appliquent uniquement au compte par défaut.

Pages connexes

Was this useful?
On this page

On this page