2.7 KiB
Envoi de fichiers via Telegram depuis les agents Hermes — fix du fallback mail
Date : 2026-07-04 Sphères concernées : hermes-tt, hermes-nyora, hermes-perso (les 3)
Symptôme
Les instances Hermes sont parfois incapables de transférer à Nabil le fichier qu'elles viennent de créer (docx, pdf, xlsx, pptx…) via Telegram, et se rabattent sur un envoi par mail (transfer mail) — friction inutile.
Cause racine
Aucun skill ne documentait l'envoi de fichiers via l'API Bot Telegram.
telegram-output.md ne couvre que le formatage texte (pipe tables MD,
rich_messages). Quand le mécanisme natif de l'agent échoue ou n'est pas
sélectionné, l'agent conclut « impossible d'envoyer un fichier via Telegram »
et bascule sur le mail.
Or tout est déjà en place dans chaque conteneur agent :
TELEGRAM_BOT_TOKEN(env, un bot par instance) etTELEGRAM_ALLOWED_USERS(= chat_id de Nabil : 2084513684) injectés par le compose racine ;curlprésent (/usr/bin/curl) ;- réseau sortant vers
api.telegram.orgfonctionnel.
Fix appliqué (validé 2026-07-04)
Skill envoyer-fichier-telegram.md déployé à la racine data/skills/ des
3 instances (ownership 1026:100), snapshot caches purgés, agents
redémarrés un par un (healthy, UI 3010/3020/3030 = 200).
Commande cœur du skill :
curl -s -F chat_id=$TELEGRAM_ALLOWED_USERS \
-F document=@"/chemin/vers/fichier.docx" \
-F caption="Description courte" \
"https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendDocument"
Règles du skill :
- Ne JAMAIS basculer sur le mail pour livrer un fichier (sauf demande explicite).
- Vérifier
"ok":truedans la réponse avant de confirmer la livraison. - Limite API Bot = 50 Mo → au-delà, lien de téléchargement (Pingvin).
- Images avec aperçu :
sendPhoto; documents : toujourssendDocument(préserve le fichier original).
Tests de validation
sendDocumentréel depuis le conteneur hermes-agent-perso →ok:true, fichier reçu dans le chat de Nabil (message_id 3027).getMedepuis hermes-agent-tt et hermes-agent-nyora →ok:true(HermesTT_botbot, HermesNyora_botbot) : token + réseau valides partout.
Diagnostic futur
Si une instance re-signale « impossible d'envoyer le fichier via Telegram » :
- Vérifier que
data/skills/envoyer-fichier-telegram.mdexiste toujours. docker exec hermes-agent-<i> sh -c 'curl -s https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getMe'→ doit répondreok:true.- Vérifier la taille du fichier (> 50 Mo = limite API Bot, pas une panne).
- Vérifier que le chemin du fichier est bien accessible depuis LE conteneur agent (pas un chemin du workspace ou de l'hôte).