WhatsApp, notifications et temps réel
Vue d'ensemble
Tranoo utilise trois canaux de communication temps réel :
| Canal | Technologie | Usage |
|---|---|---|
| Push notifications | Firebase Cloud Messaging (FCM) | Alertes métier, OTP fallback |
| Meta Cloud API | OTP reset MDP, rapports vérification PDF | |
| Chat temps réel | Socket.io | Messagerie, indicateurs de frappe |
Firebase Cloud Messaging (FCM)
Enregistrement token
- Mobile : token envoyé via
POST /api/users/fcm-tokenaprès connexion - Stocké sur
User.fcmTokenet collectionUserDevice
Types de notifications
Gérés par notificationController.js :
- Nouvelles commandes / livraisons
- Changements de statut (vérification, transit, paiement)
- Messages admin
- Demandes de recherche
Localisation
Contenu push localisé via src/utils/notificationI18n.js (fr, en, ar).
WhatsApp Cloud API (Meta)
Configuration
Fichier modèle : tranoo-api/whatsapp.env.example
| Variable | Description |
|---|---|
WHATSAPP_TOKEN / ACCESS_TOKEN | Token API Meta |
PHONE_NUMBER_ID | ID numéro expéditeur |
WHATSAPP_BUSINESS_ACCOUNT_ID | Compte business |
WHATSAPP_GRAPH_API_VERSION | Version Graph API |
WHATSAPP_WEBHOOK_VERIFY_TOKEN | Vérification webhook |
WHATSAPP_OTP_TEMPLATE_NAME | Template OTP (tranoo_reset_code) |
WHATSAPP_VERIFICATION_TEMPLATE_NAME | Template PDF (tranoo_verification_rapport) |
PUBLIC_API_BASE_URL | URL publique pour liens PDF |
Webhook
| Route | Description |
|---|---|
GET /api/whatsapp/webhook | Vérification Meta (challenge) |
POST /api/whatsapp/webhook | Statuts de livraison messages |
URL production : https://api.tranoo.store/api/whatsapp/webhook
Cas d'usage
1. OTP reset mot de passe
Flux via pushOtpController.js :
POST /api/push-otp/request— génère OTP, envoie via WhatsAppPOST /api/push-otp/verify-code— valide le codePOST /api/push-otp/reset-password— met à jour Firebase Auth
Fallback FCM si RESET_FCM_FALLBACK=true.
2. Rapport de vérification PDF
- Admin génère un rapport de vérification article
- PDF stocké sur Cloudinary + cache local (
data/verification-pdf-cache/) - Lien public proxy :
GET /api/public/verification-reports/:token - Envoi WhatsApp avec template
tranoo_verification_rapport
Service backend
src/utils/whatsappService.js — envoi OTP et messages template.
Socket.io — Chat temps réel
Configuration (src/app.js)
- CORS ouvert (
*) - Map des connexions utilisateurs en mémoire
- Authentification via token Firebase (
authenticateevent)
Events
Client → serveur
| Event | Description |
|---|---|
authenticate | Auth avec token Firebase |
join-room | Rejoindre un salon chat |
leave-room | Quitter un salon |
typing-start | Début de frappe |
typing-stop | Fin de frappe |
Serveur → client
| Event | Description |
|---|---|
authenticated | Confirmation auth |
typing-indicator | État de frappe |
API REST complémentaire
Préfixe /api/chat :
- Création / liste des salons (
ChatRoom) - Envoi et historique messages (
Message) - Recherche, accusés de lecture
Modèles associés
| Modèle | Rôle |
|---|---|
Notification.js | Notifications in-app |
ChatRoom.js | Salons de discussion |
Message.js | Messages |
UserDevice.js | Appareils pour FCM |
PasswordResetRequest.js | Sessions OTP reset |
Endpoint de test (à retirer en prod)
POST /api/notifications/test — sans authentification. À désactiver en production.
Scripts de diagnostic
node test_whatsapp.js
node test_whatsapp_otp.js
node test_notification.js
node scripts/test_verification_pdf_proxy.js
Voir aussi
- Authentification — flux OTP WhatsApp
- Déploiement — variables WhatsApp
- Architecture Backend — Socket.io