nas-runbooks/common/envoi-fichier-telegram.md

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) 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 :

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-<i> 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).