nas-runbooks/common/rich-messages-telegram.md

3.1 KiB

RUNBOOK — Telegram rich_messages + restart via Portainer API

Statut : Validé 2026-06-24
Scope : Toutes instances Hermes (tt / nyora / perso / Desktop MacBook)


Symptôme

Instance Hermes envoie des messages Telegram en texte brut : pas de MD tables, pas de gras, pas d'emoji. Une autre instance fonctionne bien.

Cause racine

Flag rich_messages: false dans config.yaml de l'instance.

# /opt/data/config.yaml (vue depuis le container)
# = /mnt/docker/hermes-platform/<instance>/data/config.yaml (vue depuis le NAS)
telegram:
  extra:
    rich_messages: false   # ← coupable

Fix (30 secondes)

# Depuis le NAS ou mcp-nas :
sed -i 's/rich_messages: false/rich_messages: true/' \
  /mnt/docker/hermes-platform/<instance>/data/config.yaml

# Vérifier :
grep rich_messages /mnt/docker/hermes-platform/<instance>/data/config.yaml
# → rich_messages: true

Puis redémarrer l'agent (voir section ci-dessous).

Effet de rich_messages: true

  • Pipe tables MD rendues nativement dans Telegram
  • Gras, italique, emoji fonctionnels
  • Messages texte (pas d'image/screenshot) → légers, sélectionnables, copiables, modifiables
  • Méthode telegram-output skill : pipe MD direct, sans pipeline HTML → Browser → Screenshot

Redémarrer un agent Hermes depuis mcp-nas (sans SSH)

SSH inaccessible depuis mcp-nas. Pas d'endpoint /reload sur l'agent. Solution : Portainer API.

# 1. Authentification
TOKEN=$(curl -s -X POST http://172.17.0.1:9000/api/auth \
  -H "Content-Type: application/json" \
  -d '{"username":"bestof","password":"<PORTAINER_PASSWORD>"}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['jwt'])")

# 2. Trouver l'ID du container
curl -s -H "Authorization: Bearer $TOKEN" \
  "http://172.17.0.1:9000/api/endpoints/2/docker/containers/json?all=true" \
  | python3 -c "
import sys, json
for c in json.load(sys.stdin):
    name = c['Names'][0].lstrip('/')
    if 'hermes' in name:
        print(c['Id'][:12], name, c['State'])
"

# 3. Restart
curl -s -o /dev/null -w "%{http_code}" -X POST \
  -H "Authorization: Bearer $TOKEN" \
  "http://172.17.0.1:9000/api/endpoints/2/docker/containers/<ID>/restart"
# → 204 = succès

# 4. Vérifier santé (attendre ~15s)
sleep 15 && curl -s http://hermes-agent-<instance>:8642/health
# → {"status": "ok", ...}

IDs containers (juin 2026 — peuvent changer après recreate)

Container ID court
hermes-agent-tt eb44e9c8225f
hermes-agent-nyora d5f198348abb
hermes-agent-perso 91f7d7cec688

⚠️ Les IDs changent après docker compose up --force-recreate. Toujours re-lister si le restart renvoie 404/500.

Application MacBook Hermes Desktop

Même mécanique, même config.yaml, même flag. Vérifier rich_messages: true en premier avant tout debug Telegram sur une nouvelle instance.

Les credentials Portainer sont dans /volume1/docker/hermes-platform/.env (NAS) ou l'équivalent local sur le Mac.


Runbook lié : common/portainer-api-container-ops.md (à créer si besoin)
Note NyoraNotes : vault hermes-perso, tags [infra, runbook, telegram]