edtech / docs /embedded_signup_implementation.md
CognxSafeTrack
feat: implement WhatsApp setup route and documentation for Embedded Signup
3078897
|
raw
history blame
2.14 kB

Implémentation Embedded Signup WhatsApp

Ce document décrit le flux technique pour permettre aux organisations B2B de connecter leur propre numéro WhatsApp à la plateforme.

1. Flux Frontend (SDK Meta)

Le Frontend doit charger le SDK Facebook et déclencher la popup de configuration.

Configuration Requise

  • SDK URL : https://connect.facebook.net/en_US/sdk.js
  • App ID : Configuré dans le Dashboard Meta App.
  • Config ID : Identifiant de la configuration d'Embedded Signup créée sur Meta Business Suite.

Exemple d'appel JS

FB.login((response) => {
  if (response.authResponse) {
    const code = response.authResponse.code;
    // Envoyer le code ou le token au Backend
  }
}, {
  config_id: '<YOUR_CONFIG_ID>',
  response_type: 'code',
  override_default_response_type: true
});

2. Point de Terminaison Backend (API)

L'API réceptionne les données après la validation Meta côté client.

Route : POST /v1/organizations/:id/whatsapp-setup

Authentification : Requiert un token JWT valide d'un administrateur d'organisation ou une clé API d'administration.

Corps de la requête (JSON) :

{
  "wabaId": "1234567890",
  "accessToken": "EAAG...",
  "phoneNumberId": "9876543210",
  "phoneNumber": "+33612345678"
}

Traitement Backend :

  1. Validation : Vérification de la présence des champs obligatoires via Zod.
  2. Chiffrement : Le accessToken est chiffré à la volée avec l' ENCRYPTION_SECRET (AES-256-GCM).
  3. Persistance : Mise à jour de la table Organization (champs systemUserToken et wabaId).
  4. Synchronisation : upsert dans la table WhatsAppPhoneNumber pour lier l'ID technique au numéro lisible.
  5. Invalidation Cache : Suppression des clés Redis org:config:* et org:phone:* pour forcer le Worker à charger la nouvelle configuration.

3. Sécurité

  • Données en transit : Toujours sous HTTPS + JWT.
  • Données au repos : Tous les tokens d'accès système sont chiffrés. Seul le code applicatif possédant l' ENCRYPTION_SECRET (non présent en DB) peut les lire.