From 273b187a5f3af75d4402df2865cf55c009c3175e Mon Sep 17 00:00:00 2001 From: Nabil Derouiche Date: Sat, 4 Jul 2026 18:36:39 +0000 Subject: [PATCH] envoi-fichier-telegram: skill sendDocument sur les 3 instances (fix fallback mail) --- common/envoi-fichier-telegram.md | 62 ++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 common/envoi-fichier-telegram.md diff --git a/common/envoi-fichier-telegram.md b/common/envoi-fichier-telegram.md new file mode 100644 index 0000000..94359ca --- /dev/null +++ b/common/envoi-fichier-telegram.md @@ -0,0 +1,62 @@ +# 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) et `TELEGRAM_ALLOWED_USERS` + (= chat_id de Nabil : 2084513684) injectés par le compose racine ; +- `curl` présent (`/usr/bin/curl`) ; +- réseau sortant vers `api.telegram.org` fonctionnel. + +## 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 : + +```bash +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":true` dans 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 : toujours `sendDocument` + (préserve le fichier original). + +## Tests de validation + +- `sendDocument` réel depuis le conteneur hermes-agent-perso → `ok:true`, + fichier reçu dans le chat de Nabil (message_id 3027). +- `getMe` depuis 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 » : +1. Vérifier que `data/skills/envoyer-fichier-telegram.md` existe toujours. +2. `docker exec hermes-agent- sh -c 'curl -s https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getMe'` → doit répondre `ok:true`. +3. Vérifier la taille du fichier (> 50 Mo = limite API Bot, pas une panne). +4. Vérifier que le chemin du fichier est bien accessible depuis LE conteneur + agent (pas un chemin du workspace ou de l'hôte).