Notifications Slack
Configuration des notifications Slack pour les contributions d'offres d'énergie.
Créer un webhook Slack
- Accédez à https://api.slack.com/apps
- Cliquez sur "Create New App"
- Sélectionnez "From scratch"
- Donnez un nom à votre app :
MyElectricalData Contributions - Choisissez votre workspace Slack
- Cliquez sur "Create App"
Activer les Incoming Webhooks
- Dans le menu de gauche, cliquez sur "Incoming Webhooks"
- Activez "Activate Incoming Webhooks" (toggle en haut)
- Cliquez sur "Add New Webhook to Workspace"
- Sélectionnez le canal où les notifications seront envoyées (ex:
#contributions) - Cliquez sur "Allow"
Copier l'URL du webhook
- L'URL du webhook apparaît sous "Webhook URL"
- Elle ressemble à :
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXX - Copiez cette URL (bouton "Copy")
Configurer les variables d'environnement
Dans le fichier apps/api/.env.docker :
# Slack Notifications
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/VOTRE/WEBHOOK/URL
SLACK_NOTIFICATIONS_ENABLED=true
Important : Ne commitez JAMAIS ce fichier avec l'URL réelle du webhook.
Redémarrer l'application
# Redémarrer le backend pour charger les nouvelles variables
docker compose restart backend
# Ou redémarrer tous les services
docker compose restart
Tester
Option 1 : Via le script de test
cd apps/api
uv run python scripts/test_slack_notification.py
Option 2 : Soumettre une vraie contribution
- Connectez-vous à l'application
- Allez sur la page Contribute
- Soumettez une contribution de test
- Vérifiez que la notification apparaît dans votre canal Slack
Vérification
Vérifier la configuration
docker exec myelectricaldata_new-backend-1 python -c "from src.services.slack import slack_service; print(f'Enabled: {slack_service.enabled}'); print(f'Webhook configured: {bool(slack_service.webhook_url)}')"
Résultat attendu :
Enabled: True
Webhook configured: True
Vérifier les logs
docker compose logs backend | grep SLACK
Logs attendus :
[SLACK] Notification sent successfully(succès)[SLACK] HTTP error 400: ...(erreur)[SLACK] Webhook URL not configured(non configuré)
Désactivation
Pour désactiver temporairement les notifications :
# Dans .env.docker
SLACK_NOTIFICATIONS_ENABLED=false
Puis redémarrer le backend.
Dépannage
"Webhook URL not configured"
- Vérifiez que
SLACK_WEBHOOK_URLest bien défini dans.env.docker - Vérifiez que le fichier
.env.dockerest bien monté dans le container Docker
"HTTP error 404: channel_not_found"
- Le canal Slack a été supprimé ou renommé
- Re-créez un webhook pour un nouveau canal
"HTTP error 410: invalid_webhook_token"
- Le webhook a été révoqué
- Re-créez un nouveau webhook
Les notifications ne partent pas
-
Vérifier la configuration :
docker exec myelectricaldata_new-backend-1 env | grep SLACK -
Vérifier les logs :
docker compose logs backend | tail -100 | grep -i slack -
Tester manuellement :
cd apps/api
uv run python scripts/test_slack_notification.py
Sécurité
- Ne partagez jamais l'URL du webhook publiquement
- Ne commitez jamais le webhook dans Git
- Utilisez les variables d'environnement uniquement
- Créez un webhook spécifique pour MyElectricalData (ne réutilisez pas un webhook existant)
- Limitez les permissions aux messages uniquement (pas d'accès aux fichiers, etc.)
Personnalisation du canal
Pour changer le canal de destination :
- Retournez sur https://api.slack.com/apps
- Sélectionnez votre app
- Allez dans "Incoming Webhooks"
- Supprimez l'ancien webhook
- Créez un nouveau webhook pour le nouveau canal
Exemple de notification
Après configuration, une contribution génère un message comme :
🆕 Nouvelle contribution - EDF Tempo 2025
Type: Fournisseur:
Nouvelle offre EDF
Offre: Type d'offre:
EDF Tempo 2025 TEMPO
Puissance: Contributeur:
6 kVA user@example.com
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Tarification:
Abonnement: *12.50 €/mois*
Blue HC: 0.12340 €/kWh
Blue HP: 0.23450 €/kWh
White HC: 0.34560 €/kWh
White HP: 0.45670 €/kWh
Fiche des prix:
<https://edf.fr/tarifs.pdf|Voir la fiche>
[Gérer cette contribution] (bouton bleu)