All guides
IntermediateSelf-pacedFree GuideSection 86/95

Intégrer les automatisations (workflows)

Practise development foundations: programming, web, APIs, data and AI tools. Work through sections and exercises to build your first projects.

The full lessons for this course are currently available in French. Use the section menu to navigate the French course.

💡

Free content, available without an account. Tools and models change: use the current model guide to check their versions. Models and sources

Section 11.5.8 : Intégrer les automatisations (workflows)

🎯 Objectif pédagogique

Connecter votre application IA à des workflows d'automatisation (Make, Zapier, webhook). Vous serez capable d'automatiser des actions déclenchées par votre chatbot : notifications, emails, logs.


Le chatbot qui déclenche des actions

Marc a un chatbot qui répond. Maintenant il veut qu'il agisse au-delà du texte : envoyer un email de résumé, logger les conversations dans Google Sheets, notifier sur Slack. C'est la puissance de l'intégration avec les outils d'automatisation de la Semaine 3.

Webhook — Le pont entre votre app et Make/Zapier

# webhook_client.py — Envoyer des données à des webhooks

import requests
import json
from datetime import datetime

class WebhookClient:
    """Client pour envoyer des données à des webhooks Make/Zapier."""
    
    def __init__(self, webhook_urls=None):
        self.webhooks = webhook_urls or \{\}
    
    def send(self, webhook_name, data):
        """Envoyer des données à un webhook."""
        url = self.webhooks.get(webhook_name)
        if not url:
            print(f"Webhook '\{webhook_name\}' non configuré.")
            return None
        
        payload = \{
            "timestamp": datetime.now().isoformat(),
            "source": "CareerBot Pro",
            **data
        \}
        
        try:
            response = requests.post(url, json=payload, timeout=10)
            return response.status_code == 200
        except requests.RequestException as e:
            print(f"Erreur webhook: \{e\}")
            return False

# Configuration des webhooks
webhooks = WebhookClient(\{
    "conversation_log": "https://hook.eu2.make.com/xxxxx",
    "weekly_report": "https://hooks.zapier.com/xxxxx",
    "slack_notification": "https://hook.eu2.make.com/yyyyy",
\})

Scénarios d'automatisation

# Actions automatisées déclenchées par le chatbot :

# 1. Logger chaque conversation dans Google Sheets
def log_conversation(user_question, bot_response, tools_used):
    webhooks.send("conversation_log", \{
        "question": user_question[:500],
        "response": bot_response[:500],
        "tools_used": tools_used,
        "model": "gpt-4o-mini"
    \})

# 2. Envoyer un résumé hebdomadaire par email
def send_weekly_summary(stats):
    webhooks.send("weekly_report", \{
        "total_conversations": stats["total"],
        "top_questions": stats["top_questions"],
        "avg_satisfaction": stats["satisfaction"],
        "report_period": "last_7_days"
    \})

# 3. Alerter sur Slack si le bot échoue
def alert_on_error(error_message, user_question):
    webhooks.send("slack_notification", \{
        "type": "error",
        "error": error_message,
        "trigger_question": user_question[:200],
        "severity": "high"
    \})

Intégration dans l'agent

# Dans agent.py, après chaque réponse :

class CareerAgentRAG:
    def chat(self, user_message):
        # ... (code existant) ...
        
        response = "..."  # Réponse générée
        
        # Logger automatiquement
        try:
            log_conversation(
                user_question=user_message,
                bot_response=response,
                tools_used=[tc.function.name for tc in msg.tool_calls] if msg.tool_calls else []
            )
        except Exception:
            pass  # Le logging ne doit jamais bloquer la réponse
        
        return response

Workflow Make : Chatbot → Google Sheets → Email

Workflow automatisé dans Make :

1. TRIGGER : Webhook reçoit les données du chatbot
   ↓
2. Google Sheets : Ajouter une ligne (question, réponse, date)
   ↓
3. Filter : Si tools_used contient "analyze_profile"
   ↓
4. Gmail : Envoyer un email de résumé à l'utilisateur
   "Voici l'analyse de votre profil : [contenu]"
   ↓
5. Slack : Notification au channel #careerbot-logs
   "Nouvelle analyse de profil effectuée"

Webhook = Fire and forget

L'appel webhook est asynchrone dans l'esprit : votre chatbot envoie les données et continue. Si Make/Zapier est en panne, le chatbot fonctionne toujours. Le logging et les notifications sont des bonus, pas des dépendances critiques. C'est le pattern "fire and forget".

🏋️ Exercice pratique (20 minutes)

  1. →Créez un webhook Make ou Zapier de test
  2. →Implémentez le WebhookClient
  3. →Intégrez le logging automatique dans votre agent
  4. →Vérifiez que les données arrivent dans Make/Zapier
Quick Check

Pourquoi le webhook ne doit-il pas bloquer la réponse du chatbot en cas d'erreur ?

Your progress

Progress is self-reported and stored in your browser. The final completion record is not a qualification or an independent assessment.

View progress and completion record

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

One practical AI workflow in your inbox

Methods, resources and new exercises. Free, unsubscribe at any time.