Aller au contenu principal
Guides & Stratégie• 6 min de lecture

Déployer un chatbot WhatsApp en production : checklist et bonnes pratiques

Guide de déploiement production d'un chatbot WhatsApp. Monitoring, alertes, backup agent humain, analyse des logs et amélioration continue. Checklist complète pour go-live réussi.

Le déploiement d'un chatbot WhatsApp en production est un moment clé. Même avec des tests parfaits, les premières 48h en production sont critiques : volume de messages réel, cas imprévus, charge sur les APIs, comportements d'utilisateurs non anticipés. Un déploiement bien préparé passe cette période sans turbulences.

Ce guide couvre tout ce qui se passe après le dernier test et avant (et après) que votre premier client réel envoie un message.

La stratégie de déploiement progressif

Ne passez jamais de 0 à 100% de trafic d'un coup. Le déploiement progressif vous permet de détecter les problèmes avant qu'ils n'affectent tous vos clients.

Phase 1 : Déploiement équipe interne (Jour 1)

Activez le bot uniquement pour les numéros de votre équipe (5-10 personnes). Testez en conditions réelles avec de vrais messages, pas des scénarios de test. Objectif : 24h sans bug critique.

Phase 2 : Déploiement bêta clients (Jours 2-7)

Activez pour 10-20% de vos contacts les plus engagés ou les plus indulgents (clients fidèles, early adopters). Collectez les feedbacks actifs. Surveillez les métriques de près.

Phase 3 : Déploiement complet (Semaine 2)

Si les métriques de la phase bêta sont bonnes (taux de résolution >60%, satisfaction >70%), ouvrez à l'ensemble de la base client.

Infrastructure de production recommandée

Architecture serveur

# docker-compose.production.yml
version: '3.8'

services:
  bot-api:
    image: votre-image:latest
    replicas: 2  # Au moins 2 instances pour la haute disponibilité
    environment:
      - NODE_ENV=production
      - LOG_LEVEL=info
    deploy:
      restart_policy:
        condition: on-failure
        max_attempts: 3
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      
  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data
    command: redis-server --appendonly yes --maxmemory 512mb
    
  nginx:
    image: nginx:alpine
    ports:
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - /etc/letsencrypt:/etc/letsencrypt

Endpoint de santé obligatoire

// health-check endpoint - surveille l'état de toutes les dépendances
app.get('/health', async (req, res) => {
  const health = {
    status: 'healthy',
    timestamp: new Date().toISOString(),
    services: {}
  };
  
  // Vérifier Redis
  try {
    await redis.ping();
    health.services.redis = 'up';
  } catch (e) {
    health.services.redis = 'down';
    health.status = 'degraded';
  }
  
  // Vérifier la base de données
  try {
    await db.query('SELECT 1');
    health.services.database = 'up';
  } catch (e) {
    health.services.database = 'down';
    health.status = 'unhealthy';
  }
  
  // Vérifier l'API Whakup
  try {
    await whakupClient.ping();
    health.services.whakup_api = 'up';
  } catch (e) {
    health.services.whakup_api = 'degraded';
    health.status = 'degraded';
  }
  
  const statusCode = health.status === 'healthy' ? 200 : 
                     health.status === 'degraded' ? 200 : 503;
  res.status(statusCode).json(health);
});

Système de monitoring et alertes

Métriques à monitorer en temps réel

// Collecte métriques production (compatible Prometheus/Grafana)
const metrics = {
  messages_received_total: 0,
  messages_processed_total: 0,
  messages_failed_total: 0,
  escalations_total: 0,
  average_response_time_ms: [],
  
  track: function(event, data = {}) {
    switch(event) {
      case 'message_received':
        this.messages_received_total++;
        break;
      case 'message_processed':
        this.messages_processed_total++;
        this.average_response_time_ms.push(data.duration);
        break;
      case 'message_failed':
        this.messages_failed_total++;
        // Alerte immédiate si >5 échecs en 5 minutes
        if (this.getFailureRateLastMinutes(5) > 0.1) {
          alertSlack('CRITICAL: Taux d\'échec >10% sur 5 minutes');
        }
        break;
      case 'escalation':
        this.escalations_total++;
        break;
    }
  }
};

Configuration des alertes critiques

Configurez des alertes pour ces seuils :

Métrique Seuil Warning Seuil Critical
Taux d'erreur >5% sur 5 min >15% sur 2 min
Temps de réponse P95 >5 secondes >10 secondes
Queue de messages >50 messages en attente >200 messages
Mémoire serveur >80% >95%
API externe (OpenAI) Latence >3s Échec >5 requêtes

Alertes vers votre équipe

async function sendAlert(level, message, data) {
  const alertMessage = {
    level, // 'warning' | 'critical'
    message,
    data,
    timestamp: new Date().toISOString(),
    environment: process.env.NODE_ENV
  };
  
  // Slack pour toute l'équipe technique
  await sendSlackAlert(alertMessage);
  
  // SMS pour les alertes critiques (même la nuit)
  if (level === 'critical') {
    await sendSMSAlert(process.env.ONCALL_PHONE, 
      `CRITIQUE: ${message}`);
  }
}

Analyse des logs pour amélioration continue

Les logs de production sont la source d'information la plus précieuse pour améliorer votre bot. Structurez vos logs pour les analyser facilement :

// Format de log structuré (JSON) pour analyse facile
const logger = {
  logConversation: (event) => {
    console.log(JSON.stringify({
      type: 'conversation_event',
      timestamp: new Date().toISOString(),
      phone_hash: hashPhone(event.phone), // Anonymisé pour conformité RGPD
      event_type: event.type,
      intent: event.intent,
      intent_confidence: event.confidence,
      flow_id: event.flow_id,
      step_id: event.step_id,
      response_time_ms: event.duration,
      escalated: event.escalated,
      fallback: event.fallback,
      message_length: event.messageLength,
      language: event.language
    }));
  }
};

Analyse hebdomadaire automatisée

Chaque semaine, générez un rapport automatique qui analyse :

  • Top 10 des messages qui déclenchent le fallback (intents non reconnus)
  • Top 5 des étapes avec le plus d'abandons
  • Distribution des escalades humaines par type de demande
  • Temps de réponse par flow et par heure de la journée

Ces données guident les priorités d'amélioration du bot semaine après semaine.

Procédures opérationnelles standards (SOP)

Documentez les procédures pour les situations courantes :

SOP-1 : Bot qui ne répond plus

  1. Vérifier le health check endpoint
  2. Vérifier les logs d'erreur des 10 dernières minutes
  3. Vérifier le statut de l'API Whakup
  4. Redémarrer le service si nécessaire
  5. Activer le mode "agent uniquement" si le problème persiste >5 minutes

SOP-2 : Bot qui répond des données incorrectes

  1. Identifier le flow en cause (depuis les logs)
  2. Désactiver ce flow spécifiquement (mode dégradé)
  3. Escalader vers agent pour les conversations en cours
  4. Corriger et re-tester avant réactivation

Pour approfondir, consultez notre guide sur la maintenance du chatbot WhatsApp et notre article sur l'API WhatsApp Business Guide.

FAQ

Q: Quel niveau de disponibilité (SLA uptime) devrait avoir un chatbot WhatsApp en production ?

A: Visez 99,5% de disponibilité minimum pour un service client actif (correspond à environ 3h30 d'indisponibilité par mois). Pour les services critiques (banques, santé), 99,9% est recommandé. Cela implique une infrastructure redondante avec au moins 2 serveurs derrière un load balancer.

Q: Faut-il prévenir les clients du lancement du bot ?

A: Communiquer le lancement est une bonne pratique. Un message proactif ("Nous avons amélioré notre service WhatsApp avec un assistant automatique 24h/24") réduit la surprise et augmente l'adoption. Soyez transparent sur ce que le bot peut et ne peut pas faire.

Q: Comment gérer les messages reçus pendant une maintenance programmée ?

A: Configurez un message automatique d'absence ("Maintenance en cours jusqu'à HH:MM. Vos messages sont enregistrés et traités à la reprise."). Si la maintenance est planifiée longtemps à l'avance, prévenez vos clients actifs 24h avant via un broadcast.

Q: À quelle fréquence doit-on mettre à jour le chatbot en production ?

A: Idéalement une mise à jour "content" (textes des réponses, FAQ) sans risque toutes les 2 semaines. Une mise à jour "code/flow" majeure une fois par mois avec cycle de test complet. Les corrections de bugs urgentes doivent pouvoir être déployées en moins d'une heure sans interruption de service (zero-downtime deployment).


Un déploiement production bien préparé est le socle d'un chatbot WhatsApp qui performe dans la durée. Les 2 premières semaines en production sont déterminantes pour établir les bonnes pratiques opérationnelles.

Démarrez avec Whakup et bénéficiez de notre infrastructure de production dédiée, déjà configurée pour la haute disponibilité sur les marchés africains.

#whatsapp-business-api-guide#automatisation-whatsapp-flows#chatbot-whatsapp-guide
Pablo Lenormand
Pablo LenormandCo-fondateur & CPO

Co-fondateur et Chief Product Officer de Whakup, Pablo conçoit les fonctionnalités qui permettent aux marques africaines de maximiser leur impact sur WhatsApp.

🚀

Prêt à passer à l'action ?

Essayez Whakup gratuitement pendant 15 jours. Aucune carte bancaire requise.

Démarrer l'essai gratuit