eptm_dashboard/docs/06-telegram.md

66 lines
2.1 KiB
Markdown

# Notifications Telegram
L'application peut envoyer des notifications sur les résultats des tâches planifiées et des opérations manuelles importantes.
## Configuration
La configuration vit dans `data/auth.yaml` (section dédiée) ou via variables d'environnement :
```yaml
telegram:
bot_token: "1234567890:AABBCC..."
chat_id: "-4992234358"
```
`bot_token` s'obtient en parlant à [@BotFather](https://t.me/BotFather) sur Telegram :
1. `/newbot`
2. Choisir un nom et un identifiant
3. Récupérer le token
`chat_id` se récupère :
- **Pour un chat 1-1** : envoyer un message au bot puis appeler l'API `https://api.telegram.org/bot<TOKEN>/getUpdates`. L'ID est dans `result[].message.chat.id`.
- **Pour un groupe** : ajouter le bot au groupe, envoyer un message, puis même API. L'ID des groupes commence par `-`.
## Niveaux de notification
### Normal
Message court, une ligne :
```
✅ Sync nocturne — terminée
12 classes, 247 nouvelles absences, 0 erreur
```
### Détaillé
Avec breakdown par classe et détails des orphelines :
```
✅ Sync nocturne — terminée
Absences :
• 1MAB1: 23 nouv / 5 modif / 2 pending / 1 suppr
• 2EM1: 18 nouv / 12 modif / 0 pending / 0 suppr
...
Orphelines supprimées :
• Dupont Marc — 12.03.2026 P3
...
Pendings ignorés (sans force) : 4
```
## Chat ID par tâche
Chaque tâche cron peut surcharger le `chat_id` global avec son propre `notify_chat_id`. Utile pour router certaines notifs vers un canal admin et d'autres vers un canal utilisateurs.
## Ce qui est notifié manuellement
Pas grand-chose pour l'instant — Telegram est principalement réservé aux **résultats des tâches cron**. Les opérations manuelles (sync, push) émettent uniquement des **toasts** dans l'app.
## Diagnostic
- **"Bouton Tester Telegram" répond une erreur 401** : token invalide ou révoqué.
- **"Erreur 400 Bad Request"** : `chat_id` incorrect ou bot pas membre du groupe.
- **Notification jamais reçue** : vérifier que le bot a bien été ajouté au groupe et qu'il y a au moins un message envoyé (sinon Telegram bloque).