Intelligence Artificielle

Chatbot WhatsApp piloté par Claude pour PME

12 دقائق للقراءة

📚 À lire en parallèle : notre panorama IA et LLM pour PME francophones 2026 qui rassemble le choix des modèles, le prompt engineering, le RAG, les agents et le self-hosting Ollama.

WhatsApp, le canal roi en Afrique francophone

WhatsApp est utilisé quotidiennement par une très large majorité des utilisateurs internet actifs au Sénégal, en Côte d’Ivoire, au Cameroun. Pour une PME, c’est le canal de service client dominant. Un chatbot Claude sur WhatsApp permet de répondre automatiquement 24/7 aux questions courantes et d’escalader intelligemment vers un humain.

Architecture technique

WhatsApp Business API ou solution cloud comme Twilio, 360dialog, MessageBird ou un BSP local. Webhook vers serveur Node.js ou Python qui reçoit les messages entrants. Claude API pour générer la réponse. Renvoi de la réponse via l’API WhatsApp.

Vue d’ensemble 1 : compte WhatsApp Business API

Créer un compte Meta Business. Demande d’accès à la WhatsApp Business Platform. Choix d’un BSP (Business Solution Provider) pour faciliter l’onboarding. Numéro vérifié, nom affiché validé. Étapes administratives pouvant prendre quelques jours à quelques semaines.

Vue d’ensemble 2 : templates de messages

WhatsApp impose des templates pré-approuvés pour les messages initiés par le business hors fenêtre 24h. Soumission de templates pour relances, confirmations, notifications. Les conversations déclenchées par l’utilisateur restent libres.

Vue d’ensemble 3 : backend

Framework Express.js ou Fastify pour Node, FastAPI pour Python. Endpoint /webhook qui valide la signature Meta, extrait le message, route vers le handler de conversation.

Vue d’ensemble 4 : gestion de l’état conversationnel

Base de données (PostgreSQL, MongoDB, Redis) qui stocke pour chaque numéro de téléphone historique des messages, contexte métier (client identifié, commande en cours, langue préférée). Reconstruction de l’historique à chaque nouveau message pour fournir à Claude le contexte complet.

Vue d’ensemble 5 : system prompt adapté

Tu es assistant virtuel de la boutique XYZ, spécialisée en produits pour PME africaines. Ton chaleureux, professionnel, tutoiement. Réponses courtes adaptées à WhatsApp 2 à 4 phrases maximum. Si la question nécessite un humain (devis complexe, réclamation grave, question hors sujet), propose transfert vers humain.

Vue d’ensemble 6 : outils disponibles

Tool check_stock vérifie la disponibilité d’un produit. Tool get_order_status statut d’une commande. Tool calculate_shipping calcule les frais selon ville. Tool transfer_to_human crée un ticket et notifie l’équipe humaine.

Vue d’ensemble 7 : détection de transfert humain

Claude décide selon la conversation quand transférer. Signaux frustration client, question technique pointue, demande de négociation tarifaire, question légale. Mot-clé universel AGENT écrit par l’utilisateur déclenche transfert immédiat.

Vue d’ensemble 8 : équipe humaine

Interface simple où les agents humains voient les conversations transférées. Peuvent reprendre la discussion via le même numéro WhatsApp Business. Outils comme Wati, Kommo, Respond.io simplifient cette partie.

Langue et multilingue

Claude détecte automatiquement la langue du message entrant et répond dans la même langue. Pour l’Afrique francophone, support français et wolof pour audience sénégalaise, configuration selon votre marché.

Intégration e-commerce

Shopify, WooCommerce, Medusa peuvent être interrogés via leurs API. Claude répond aux questions sur disponibilité, prix, expédition, statut commande. Flow de commande assisté possible pour ventes simples.

Mesures de qualité

  • Taux de résolution sans transfert humain
  • Temps moyen de réponse
  • CSAT post-conversation via enquête rapide
  • Volume et distribution des sujets abordés
  • Détection d’intentions non couvertes pour amélioration continue

Conformité

Respect des règles Meta politique WhatsApp Business, interdiction spam, opt-out facile. Mention en début de conversation du traitement par IA. Conservation des logs pour audit.

Conclusion

Un chatbot Claude sur WhatsApp est un levier opérationnel majeur pour PME africaines. Service client 24/7, équipe humaine déchargée des questions répétitives, conversion commerciale améliorée.

Pourquoi un chatbot WhatsApp piloté par Claude pour une PME africaine

WhatsApp dépasse 90 % de pénétration auprès des smartphones connectés au Sénégal, en Côte d’Ivoire et au Cameroun. Une PME qui répond manuellement à 200 messages quotidiens — disponibilité, prix, horaires, zone de livraison — perd l’équivalent d’un mi-temps. Brancher un assistant Claude sur WhatsApp Cloud API permet de répondre 24h/24 en français, wolof ou bambara, en gardant un humain sur les seuls cas litigieux.

Ce tutoriel construit un webhook FastAPI qui reçoit les messages WhatsApp, les transmet à l’API Anthropic (modèle Claude Sonnet 4), puis renvoie la réponse dans la même conversation. Stack : Python 3.12, FastAPI, ngrok pour exposer le webhook, compte WhatsApp Business avec Cloud API.

Étape 1. Créer un compte Meta Developer et une app WhatsApp

Rendez-vous sur developers.facebook.com, créez un compte développeur lié à votre Facebook personnel, puis Mes applications > Créer une application > Entreprise. Dans le tableau de bord, ajoutez le produit WhatsApp. Meta vous attribue automatiquement un numéro de test et un identifiant de compte WhatsApp Business.

Notez deux valeurs cruciales : le Phone Number ID (15 chiffres) et le WhatsApp Business Account ID. Générez un jeton d’accès permanent via Configuration système > Utilisateurs système > Générer un jeton avec les permissions whatsapp_business_messaging et whatsapp_business_management. Le jeton temporaire expire en 24h, inutilisable en production.

Étape 2. Préparer l’environnement Python

Sur votre poste, créez un dossier chatbot-pme, isolez un environnement virtuel et installez les dépendances :

python -m venv .venv
source .venv/bin/activate   # macOS / Linux
.venv\Scripts\activate      # Windows PowerShell
pip install fastapi uvicorn anthropic httpx python-dotenv

Créez un fichier .env avec :

ANTHROPIC_API_KEY=sk-ant-xxx
WHATSAPP_TOKEN=EAAxxx
WHATSAPP_PHONE_ID=123456789012345
WEBHOOK_VERIFY_TOKEN=monjetonsecret2026

Le WEBHOOK_VERIFY_TOKEN est une chaîne que vous inventez ; Meta l’utilisera pour vérifier votre URL lors de la configuration. Choisissez 24 caractères aléatoires.

Étape 3. Écrire le webhook FastAPI

Créez main.py. Le code expose deux routes : GET pour la vérification initiale par Meta, POST pour la réception des messages.

import os, httpx
from fastapi import FastAPI, Request, HTTPException
from anthropic import Anthropic
from dotenv import load_dotenv

load_dotenv()
app = FastAPI()
client = Anthropic()

VERIFY = os.environ["WEBHOOK_VERIFY_TOKEN"]
TOKEN  = os.environ["WHATSAPP_TOKEN"]
PHONE  = os.environ["WHATSAPP_PHONE_ID"]

@app.get("/webhook")
async def verify(request: Request):
    p = request.query_params
    if p.get("hub.mode")=="subscribe" and p.get("hub.verify_token")==VERIFY:
        return int(p.get("hub.challenge"))
    raise HTTPException(403)

Cette route est appelée une seule fois par Meta lors de la configuration. Elle doit retourner le hub.challenge reçu en query string, sinon Meta refuse la configuration.

Étape 4. Traiter les messages entrants et appeler Claude

Ajoutez la route POST. Elle extrait le message texte, demande une réponse à Claude Sonnet 4 (modèle claude-sonnet-4-20250514 à la date de rédaction), puis renvoie via Graph API v25.0.

@app.post("/webhook")
async def receive(request: Request):
    body = await request.json()
    try:
        entry = body["entry"][0]["changes"][0]["value"]
        msg   = entry["messages"][0]
        text  = msg["text"]["body"]
        from_ = msg["from"]
    except (KeyError, IndexError):
        return {"status": "ignored"}

    answer = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=400,
        system="Tu es l'assistant de PME Sahel Café à Dakar. Réponds en français, court, factuel. Horaires : 8h-19h lundi-samedi.",
        messages=[{"role":"user","content":text}],
    ).content[0].text

    async with httpx.AsyncClient() as h:
        await h.post(
            f"https://graph.facebook.com/v25.0/{PHONE}/messages",
            headers={"Authorization": f"Bearer {TOKEN}"},
            json={"messaging_product":"whatsapp","to":from_,
                  "text":{"body": answer}},
        )
    return {"status":"ok"}

Le system prompt cadre Claude sur votre métier. Plus il est précis (zone de livraison, gamme de prix, langues acceptées), moins l’assistant invente. Limite max_tokens à 400 pour rester dans les limites WhatsApp (4 096 caractères).

Étape 5. Exposer le webhook avec ngrok

Lancez le serveur localement :

uvicorn main:app --reload --port 8000

Dans un second terminal, exposez le port 8000 sur Internet :

ngrok http 8000

ngrok affiche une URL HTTPS publique du type https://a1b2c3.ngrok-free.app. Copiez cette URL, ajoutez /webhook et collez-la dans Meta Developer > WhatsApp > Configuration > Webhook. Saisissez le même WEBHOOK_VERIFY_TOKEN que dans votre .env. Cliquez Vérifier et enregistrer ; Meta confirme par un message de succès.

Abonnez-vous au champ messages dans la même page. Pour la production, remplacez ngrok par un VPS chez OVH (Gravelines, RGPD-friendly) à environ 5 EUR / 3 280 FCFA par mois, ou par un Render Web Service en plan starter à 7 USD.

Étape 6. Tester avec un numéro réel

Dans Meta Developer > WhatsApp > Démarrer, ajoutez votre numéro personnel comme destinataire de test (limite 5 numéros tant que l’app n’est pas validée). Envoyez « Bonjour, vos horaires ? » au numéro de test fourni par Meta. La réponse de Claude doit arriver dans les 3 à 5 secondes.

Vérifiez les logs FastAPI (terminal uvicorn) : vous devez voir la requête POST entrante et la réponse 200 vers Graph API. Si vous voyez une 401, votre jeton est expiré. Si vous voyez une 400 avec recipient phone number not in allowed list, ajoutez le numéro testeur.

Étape 7. Industrialiser et facturer correctement les conversations

WhatsApp Cloud API facture par conversation (fenêtre 24h initiée par un message utilisateur ou par un template approuvé). Les rate cards 2026 (effet 1 avril 2026) en zone Afrique de l’Ouest tournent autour de 0,03 USD par conversation utilitaire et 0,07 USD par conversation marketing. Une PME avec 1 500 conversations utilitaires mensuelles paie environ 45 USD soit 27 000 FCFA.

Côté Anthropic, Claude Sonnet 4 facture 3 USD par million de tokens en entrée et 15 USD en sortie. Une conversation moyenne (300 tokens entrée + 200 sortie) coûte 0,0039 USD soit 2,4 FCFA. Pour 1 500 conversations, ajoutez 6 USD au budget. Pour les paiements vers Anthropic ou Meta, utilisez une carte Visa virtuelle Wave Sénégal ou Mixx by Yas, ou une carte Wari prépayée selon votre marché.

Persistance : stockez l’historique des messages dans PostgreSQL (Supabase plan gratuit suffit jusqu’à 500 MB) avec colonnes from_number, direction, text, created_at. Vous pourrez ensuite passer le contexte des 5 derniers messages à Claude pour des conversations cohérentes.

Sessions multi-tours : maintenir le contexte sans saturer le prompt

Un chatbot WhatsApp branche sur Claude doit gerer plusieurs conversations en parallele sans melanger les contextes. La cle est un store de session indexe par numero E.164. Chaque message entrant declenche la lecture du tableau messages des 10 derniers tours, l’envoi a Claude avec instructions systeme stables, puis le stockage de la reponse. Pour un commerce de plats prepares aux Almadies qui prend 80 commandes par jour, ce schema tient sans difficulte sur un Redis de 256 Mo, soit moins de 5 000 FCFA par mois en cloud.

La taille du contexte fait exploser les couts. Claude facture chaque appel sur le total tokens entree + sortie. Si on envoie a chaque tour les 30 derniers messages, le cout grimpe vite. La technique du sliding window combine a un resume periodique limite la facture. Pratiquement : conserver les 6 derniers tours integraux, et un resume condense des 20 tours precedents (genere lui-meme par Claude tous les 10 tours). Le prompt systeme rappelle la persona : « Tu es l’assistant commercial de Bissap & Co, restaurant senegalais a Dakar. Tu prends les commandes, tu confirmes l’adresse, tu ne discutes jamais le prix. Si le client demande la carte, envoie le menu structure. Si tu ne comprends pas, transfere a un humain. »

L’identifiant de session doit etre robuste. Utiliser le numero E.164 brut suffit pour un usage simple, mais pour un service multi-locataires (plusieurs marques sur un meme numero WhatsApp Business), une cle composite tenant_id:phone_e164:thread_id evite les collisions. La duree de vie de session se fixe typiquement a 24 heures inactives : au-dela, le contexte est purge et le prochain message demarre un nouveau fil.

Fallback humain : detecter quand Claude doit passer la main

Aucun chatbot, meme excellent, ne couvre tous les cas. Un fallback humain bien concu evite la frustration. Trois signaux declenchent automatiquement le transfert. Premier signal : la confiance basse. Demander a Claude de retourner un score de certitude entre 0 et 100 dans une cle JSON dediee, et router toute reponse sous 60 vers la file humaine. Deuxieme signal : detection explicite, sur des mots-cles comme « agent », « humain », « parler a quelqu’un », « reclamation » ou « rembours ». Troisieme signal : compteur de tours sans resolution. Si le client repete la meme question trois fois, le bot transfere automatiquement.

L’implementation du transfert utilise typiquement un canal Slack ou un dashboard interne. Le message envoye a l’agent humain inclut le numero du client, le resume de la conversation, le motif probable du transfert et un lien direct pour reprendre la conversation depuis la console WhatsApp Business. Pour une banque a Lome qui pilote son support clients via WhatsApp, ce dispositif a reduit le temps moyen de resolution de 18 a 7 minutes en redirigeant 22 % des demandes vers l’humain au bon moment.

Un point doctrinal important : il ne faut jamais laisser le bot pretendre etre humain. La premiere reponse de chaque session doit indiquer « Je suis l’assistant automatique de [marque]. Pour parler a un conseiller, ecrivez agent. » Ce principe de transparence est en train de devenir obligatoire dans plusieurs juridictions et reste une marque de respect envers le client. La serie WhatsApp Business detaille la conformite reglementaire pour l’Afrique de l’Ouest francophone.

Mesurer la satisfaction : NPS post-conversation et metriques operationnelles

Trois metriques pilotent l’amelioration continue. La premiere est le NPS post-conversation : a la fin de chaque session, un message envoie « Sur une echelle de 0 a 10, recommanderiez-vous notre service ? ». Le taux de reponse en WhatsApp est typiquement de 30 a 45 %, bien superieur a un email. Le calcul standard NPS = % promoteurs (9-10) – % detracteurs (0-6) donne une tendance lisible. Sur les commerces que nous suivons, un NPS au-dessus de 40 indique un chatbot bien parametre, en dessous de 20 il faut revoir le prompt systeme.

La deuxieme metrique est le taux de resolution sans transfert humain. Si moins de 70 % des conversations sont resolues par le bot seul, le perimetre est probablement mal cale. La troisieme est le temps median de premiere reponse : un bon chatbot Claude repond sous 4 secondes. Au-dela, l’experience se degrade et les utilisateurs abandonnent. Le suivi mensuel de ces trois metriques sur un dashboard simple (Looker Studio gratuit ou Metabase auto-heberge) permet d’iterer sereinement le prompt systeme et la configuration.

Articles connexes Claude

مشاركة