Agent WhatsApp IA avec Google ADK (Agent Development Kit)
🎯 Objectif
-
Capturer un message WhatsApp (via Cloud API ou WhatsApp Web).
-
Le transmettre à un agent Google ADK.
-
Laisser l’agent analyser, planifier et répondre automatiquement.
-
Envoyer la réponse par WhatsApp.
📦 1. Installation des dépendances Python
On commence avec un environnement Python :
pip install flask openai google-agents python-dotenv requests
Crée un fichier .env :
OPENAI_API_KEY=sk-xxxxxxxx
WHATSAPP_TOKEN=EAAJ...
PHONE_NUMBER_ID=1234567890
🧠 2. Création de l’Agent Google ADK
agent_whatsapp.py
from google_agents import Agent, Tool
class WhatsAppResponseTool(Tool):
def run(self, message: str) -> str:
return f"Voici la réponse reçue : {message}"
def create_whatsapp_agent():
tools = [WhatsAppResponseTool()]
agent = Agent(
tools=tools,
llm="gpt-4", # ou palm, gemini, etc.
description="Agent WhatsApp qui répond de manière claire et concise"
)
return agent
Tu peux personnaliser WhatsAppResponseTool pour inclure une logique métier, du résumé, des analyses, etc.
🌐 3. Serveur Flask pour recevoir les messages WhatsApp
server.py
from flask import Flask, request
from agent_whatsapp import create_whatsapp_agent
import requests
import os
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)
ACCESS_TOKEN = os.getenv("WHATSAPP_TOKEN")
PHONE_ID = os.getenv("PHONE_NUMBER_ID")
agent = create_whatsapp_agent()
def envoyer_reponse(numero, message):
url = f"https://graph.facebook.com/v18.0/{PHONE_ID}/messages"
headers = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"Content-Type": "application/json"
}
data = {
"messaging_product": "whatsapp",
"to": numero,
"type": "text",
"text": { "body": message }
}
requests.post(url, headers=headers, json=data)
@app.route("/webhook", methods=["GET", "POST"])
def webhook():
if request.method == "GET":
verify_token = "my_custom_verify_token"
if request.args.get("hub.verify_token") == verify_token:
return request.args.get("hub.challenge")
return "Erreur de vérification", 403
if request.method == "POST":
data = request.get_json()
try:
message = data["entry"][0]["changes"][0]["value"]["messages"][0]
numero = message["from"]
texte = message["text"]["body"]
print(f"[Message reçu] : {texte}")
reponse = agent.run(texte)
envoyer_reponse(numero, reponse)
except Exception as e:
print("Erreur:", e)
return "OK", 200
if __name__ == "__main__":
app.run(port=5000)
🧪 4. Tester avec Ngrok
Expose localement avec Ngrok :
ngrok http 5000
➡️ Copie l’URL Ngrok dans Meta > WhatsApp > Webhook Configuration.
📈 Fonctionnement Résumé
[Utilisateur WhatsApp]
↓
Message reçu par Webhook Flask
↓
Transmis à Google ADK Agent
↓
Génération d'une réponse claire et logique
↓
Réponse envoyée automatiquement sur WhatsApp
💡 Personnalisation possible
-
Ajouter mémoire contextuelle pour suivre des conversations
-
Ajouter des outils métier (ex : API météo, BDD clients…)
-
Gérer des commandes spécifiques (ex : “!rdv” → fixer un rendez-vous)
-
Ajout de ton et style personnalisé (assistant pro, drôle, médical...)