Aller au contenu principal

WhatsApp, notifications et temps réel

Vue d'ensemble

Tranoo utilise trois canaux de communication temps réel :

CanalTechnologieUsage
Push notificationsFirebase Cloud Messaging (FCM)Alertes métier, OTP fallback
WhatsAppMeta Cloud APIOTP reset MDP, rapports vérification PDF
Chat temps réelSocket.ioMessagerie, indicateurs de frappe

Firebase Cloud Messaging (FCM)

Enregistrement token

  • Mobile : token envoyé via POST /api/users/fcm-token après connexion
  • Stocké sur User.fcmToken et collection UserDevice

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

VariableDescription
WHATSAPP_TOKEN / ACCESS_TOKENToken API Meta
PHONE_NUMBER_IDID numéro expéditeur
WHATSAPP_BUSINESS_ACCOUNT_IDCompte business
WHATSAPP_GRAPH_API_VERSIONVersion Graph API
WHATSAPP_WEBHOOK_VERIFY_TOKENVérification webhook
WHATSAPP_OTP_TEMPLATE_NAMETemplate OTP (tranoo_reset_code)
WHATSAPP_VERIFICATION_TEMPLATE_NAMETemplate PDF (tranoo_verification_rapport)
PUBLIC_API_BASE_URLURL publique pour liens PDF

Webhook

RouteDescription
GET /api/whatsapp/webhookVérification Meta (challenge)
POST /api/whatsapp/webhookStatuts 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 :

  1. POST /api/push-otp/request — génère OTP, envoie via WhatsApp
  2. POST /api/push-otp/verify-code — valide le code
  3. POST /api/push-otp/reset-password — met à jour Firebase Auth

Fallback FCM si RESET_FCM_FALLBACK=true.

2. Rapport de vérification PDF

  1. Admin génère un rapport de vérification article
  2. PDF stocké sur Cloudinary + cache local (data/verification-pdf-cache/)
  3. Lien public proxy : GET /api/public/verification-reports/:token
  4. 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 (authenticate event)

Events

Client → serveur

EventDescription
authenticateAuth avec token Firebase
join-roomRejoindre un salon chat
leave-roomQuitter un salon
typing-startDébut de frappe
typing-stopFin de frappe

Serveur → client

EventDescription
authenticatedConfirmation 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èleRôle
Notification.jsNotifications in-app
ChatRoom.jsSalons de discussion
Message.jsMessages
UserDevice.jsAppareils pour FCM
PasswordResetRequest.jsSessions OTP reset

Endpoint de test (à retirer en prod)

POST /api/notifications/testsans 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