Nodes and media
Prise en charge des images et des médias
La chaîne WhatsApp s’exécute via Baileys Web. Ce document décrit les règles actuelles de gestion des médias pour l’envoi, le Gateway et les réponses des agents.
Objectifs
- Envoyer des médias avec des légendes facultatives via
openclaw message send --media. - Autoriser les réponses automatiques depuis la boîte de réception web à inclure des médias avec du texte.
- Garder les limites par type raisonnables et prévisibles.
Surface CLI
openclaw message send --media <path-or-url> [--message <caption>]--mediaest facultatif ; la légende peut être vide pour les envois contenant uniquement un média.--dry-runaffiche la charge utile résolue ;--jsonémet{ channel, to, messageId, mediaUrl, caption }.
Comportement de la chaîne WhatsApp Web
- Entrée : chemin de fichier local ou URL HTTP(S).
- Flux : charger dans un Buffer, détecter le type de média et construire la charge utile appropriée :
- Images : redimensionner et recompresser en JPEG (côté max. 2048 px) en ciblant
channels.whatsapp.mediaMaxMb(par défaut : 50 Mo). - Audio/Voix/Vidéo : transmission directe jusqu’à 16 Mo ; l’audio est envoyé comme note vocale (
ptt: true). - Documents : tout le reste, jusqu’à 100 Mo, avec conservation du nom de fichier lorsqu’il est disponible.
- Images : redimensionner et recompresser en JPEG (côté max. 2048 px) en ciblant
- Lecture de type GIF WhatsApp : envoyer un MP4 avec
gifPlayback: true(CLI :--gif-playback) afin que les clients mobiles le lisent en boucle en ligne. - La détection MIME privilégie les signatures binaires, puis les en-têtes, puis l’extension de fichier.
- La légende provient de
--messageou dereply.text; une légende vide est autorisée. - Journalisation : le mode non verbeux affiche
↩️/✅; le mode verbeux inclut la taille et le chemin/l’URL source.
Pipeline de réponse automatique
getReplyFromConfigrenvoie{ text?, mediaUrl?, mediaUrls? }.- Lorsqu’un média est présent, l’expéditeur web résout les chemins locaux ou les URL avec le même pipeline que
openclaw message send. - Plusieurs entrées média sont envoyées séquentiellement si elles sont fournies.
Médias entrants vers les commandes
- Lorsque les messages web entrants incluent des médias, OpenClaw les télécharge dans un fichier temporaire et expose des variables de modèle :
{{MediaUrl}}pseudo-URL pour le média entrant.{{MediaPath}}chemin temporaire local écrit avant l’exécution de la commande.
- Lorsqu’un bac à sable Docker par session est activé, le média entrant est copié dans l’espace de travail du bac à sable et
MediaPath/MediaUrlsont réécrits vers un chemin relatif commemedia/inbound/<filename>. - La compréhension des médias (si elle est configurée via
tools.media.*outools.media.modelspartagés) s’exécute avant le templating et peut insérer des blocs[Image],[Audio]et[Video]dansBody.- L’audio définit
{{Transcript}}et utilise la transcription pour l’analyse des commandes afin que les commandes slash continuent de fonctionner. - Les descriptions vidéo et image conservent tout texte de légende pour l’analyse des commandes.
- Si le modèle d’image principal actif prend déjà en charge la vision nativement, OpenClaw ignore le bloc de résumé
[Image]et transmet plutôt l’image d’origine au modèle.
- L’audio définit
- Par défaut, seule la première pièce jointe image/audio/vidéo correspondante est traitée ; définissez
tools.media.<cap>.attachmentspour traiter plusieurs pièces jointes.
Limites et erreurs
Plafonds d’envoi sortant (envoi WhatsApp web)
- Images : jusqu’à
channels.whatsapp.mediaMaxMb(par défaut : 50 Mo) après recompression. - Audio/voix/vidéo : plafond de 16 Mo ; documents : plafond de 100 Mo.
- Média surdimensionné ou illisible → erreur claire dans les journaux et la réponse est ignorée.
Plafonds de compréhension des médias (transcription/description)
- Image par défaut : 10 Mo (
tools.media.image.maxBytes). - Audio par défaut : 20 Mo (
tools.media.audio.maxBytes). - Vidéo par défaut : 50 Mo (
tools.media.video.maxBytes). - Les médias surdimensionnés ignorent la compréhension, mais les réponses sont tout de même transmises avec le corps d’origine.
Notes pour les tests
- Couvrir les flux d’envoi et de réponse pour les cas image/audio/document.
- Valider la recompression des images (limite de taille) et l’indicateur de note vocale pour l’audio.
- S’assurer que les réponses multimédias multiples se répartissent en envois séquentiels.
Connexe
Was this useful?