Note 1 : Autorise les images pour profiter de cette newsletter et ajoute cette adresse en contact pour m’aider à ce qu’elle ne finisse pas en spam. Si cette newsletter t’a été transféré, tu peux t’abonner ici.
Note 2 : Cette newsletter est trop longue et sera tronquée, tu devras cliquer sur “Voir le message en entier”.
Ce guide est la suite du guide de la semaine dernière, que tu trouveras ici.
Ce scénario permet de classer, archiver & répondre aux mails. Ou plus précisément, préparer une réponse en brouillon aux mails qui demandent une réponse personnelle.
La première chose à faire, si ce n’est pas déjà fait, est de créer un compte OpenAI API. Tu trouveras tous les détails dans l’étape 2 du guide de la semaine dernière.
Les abonnés payants peuvent télécharger le template Make directement en Annexe 2. Pour tous les autres, il vous suffit de suivre le guide !
Étape 1 - Récupérer les mails et créé ton assistant IA de gestion de mail.
Si tu n’as pas déjà de compte Make, utilise ce lien pour t’inscrire. Puis, va dans l’onglet “Scenarios” et crée un nouveau scénario vierge. En termes de plan, celui à 8€ te permettra de traiter environ 2k mails / mois.
Crée un premier node nommé “Watch Messages” dans les automatisations Outlook. Il va te demander de te connecter à ton compte Outlook.
Ici le but est de vider la boîte de réception (Inbox 0). Une fois le node configuré, Make va te demander à partir de quand les mails vont être traités. J’ai choisi de traiter tous les messages, mais tu peux te contenter de “à partir de maintenant” si tu ne veux pas toucher à tes mails précédents.
Ensuite, tu peux choisir d’exécuter l’automatisation toutes les 6h (360min), ça suffira probablement pour traiter les nouveaux mails quotidiens.
Ensuite, le node OpenAI contiendra toute la logique de notre automatisation en un seul prompt. C’est-à-dire qu’il va nous permettre de classer et répondre en une seule opération. Étudiez et adaptez à votre activité le prompt en annexe. Il est en deux parties : le prompt système qui contient la logique et le prompt utilisateur qui contient le message. Ils sont à mettre à deux endroits différents dans le node OpenAI.
Quelques notes sur la conception de votre prompt :
Les noms des labels doivent correspondre exactement, au caractère près, à ce qui se trouve dans les labels que vous avez choisis dans votre boîte Outlook.
Donnez une description complète de ce qui doit se trouver dans chaque label. De mon côté, j’ai été assez bref.
C’est sur cette partie qu’il ne faudra pas se contenter d’un copié-collé, mais qu’il faudra réfléchir à votre organisation, comment vous voulez classer et comment vous voulez répondre aux mails.
Ce n’est pas nécessaire de donner des templates de réponse à ChatGPT. Vous pouvez lui dire comment vous voulez qu’il réponde et lui donner des infos supplémentaires en fin de prompt (FAQ ?).
Le prompt complet se trouve en Annexe 1.
Le node OpenAI donnera une réponse au format JSON. C’est un format de réponse qui permet de contrôler plus finement ce qu’il produit. Il faudra ensuite parser sa réponse dans un objet JSON pour accéder aux variables “label” et “answer”.
Ajoutez un node “Parse JSON” de la manière suivante : Nous verrons comment écrire le brouillon plus tard pour les mails qui demandent une réponse. Pour le moment, nous allons construire une branche par catégorie que l’on a choisie.
L’API Outlook ne permet pas de classer un mail par le nom de son label, mais par son ID. C’est une information que nous ne pouvons avoir sans écrire du code.
Nous sommes donc obligés d’avoir une branche par catégorie, vers un node Outlook qui va classer et archiver un mail d’une seule catégorie.
Commence par ajouter un “Router”. Ce node permet de partager le chemin en plusieurs branches. Sur chaque branche, nous allons ajouter une condition qui correspond à une des catégories :
Ensuite j’ai ajouter un module “Switch” pour filtrer les mails par mot-clef auquel je ne veux pas que l’automatisation réponde. J’ai remarqué que même avec un prompt détaillé, l’IA avait tendance à considérer certains mails comme demandant une réponse alors que je ne voulais pas y répondre.
Donc, dès que je vois l’un des mots suivant, je supprime la réponse (“answer”) :
<ma-propre-adresse-mail> (je ne veux pas répondre à mes propres mails)
Gérer les préférences
unsubscribe
Unsubscribe
désinscrire
désabonner
Désabonner
Désinscrire
Ne plus recevoir d'e-mail
Ne plus recevoir de message
Invitation:
New comment
is ready to download
Derniers jours pour
podia.com
contact@
notifications@
aliexpress
Tu peux prendre ma liste, ou définir la tienne et le mettre dans le module switch comme suit :
L’étape suivante va être de déterminer tous les cas qui peuvent arriver.
Étape 2 - Classer & archiver les mails ne demandant pas de réponse.
Nous verrons comment écrire le brouillon plus tard pour les mails qui demandent une réponse. Pour le moment, nous allons construire une branche par catégorie que l’on a choisie. L’API Outlook ne permet pas de classer un mail par le nom de son label, mais par son ID. C’est une information que nous ne pouvons avoir sans écrire du code.
Nous sommes donc obligés d’avoir une branche par catégorie, vers un node Outlook qui va classer et archiver un mail d’une seule catégorie.
Commence par ajouter un “Router”. Ce node permet de partager le chemin en plusieurs branches. Sur chaque branche, nous allons ajouter une condition qui correspond à une des catégories :
Ensuite ajoute un node Outlook “Move a Message”, configuré comme suit :
Ce module est très simple à configurer, il suffit de mettre l’ID du Message et de sélectionner la bonne catégorie (qui sera transformé en ID de catégorie ensuite, d’où le texte qui parait crypté).
Tu garderas une catégorie “Autre”, qui permet de classer et archiver les mails que l’IA n’arrive pas à classer et qui ne demandent pas de réponse. Il faut que cette catégorie existe dans ton Outlook. Sur la branche du router, il faudra mettre cette route comme “fallback”. C’est-à-dire, si aucune route ne fonctionne, alors c’est cette route qui sera choisie.
Étape 3 - Poster un brouillon contenant la réponse.
C’est la partie compliquée que tu ne retrouveras dans aucun autre guide d’automatisation de mails à ma connaissance. Make permet de créer des brouillons, mais pas en réponse à des mails existants.
Cela rend l’automatisation quasiment inutile pour répondre aux gens, ou au mieux hautement insatisfaisante.
Je n’ai donc pas utilisé l’intégration Make pour faire cela, mais j'ai moi-même réalisé une intégration avec un node pour faire des appels API à Outlook (Outlook - Make an API call).
/v1.0/me/messages/{{1.id}}/createReply
Tu remarqueras cet appel à l’API ne contient pas la réponse du message. C’est parce que, c’est impossible de le faire. Il est uniquement possible de créer un brouillon. Ensuite, nous allons récupérer l’identifiant de ce brouillon créé puis le mettre à jour avec la réponse de ChatGPT.
Avant de faire ça, il va être nécessaire de lancer l’automatisation avec un message qui demande une réponse. Car, pour le moment, Make ne sais pas ce que va retourner l’API Outlook. Une fois qu’il aura utilisé l’API une fois, nous aurons accès aux variables renvoyés par l’API (qui vont contenir l’identifiant du brouillon créé).
J’ai simplement envoyé le message suivant :
Puis nous pouvons configurer le node suivant “Update a Message” :
Et voilà, l’automatisation est terminée.
À bientôt dans un nouveau rendez-vous pour automatiser le monde.
Annexe 1 - Prompt ChatGPT pour l’assistant IA email.
# SYSTEM PROMPT
Ton but est de classer mes mails dans dans différentes catégories et de préparer une réponse pour ceux qui en nécessite une. Pour te donner du contexte, je m'appelle Paul Irolla, entrepreneur dans l'intelligence artificielle. J'utilise cette boite mail comme tout venant. Il y a donc à la fois du pro et du perso.
Voici les labels :
- 'Achats divers' : les mails automatiques pour divers achat que j'ai fais
- 'Commandes Amazon' : tous les mails d'Amazon
- 'Mails auto de clients' : tous les mails de clients (comme Skills4all) automatiques. Donc les mails qui ne demandent pas de réponse de ma part.
- 'Newsletters' : tout ce qui resemble à une newsletter.
- 'Services en ligne (outils, souscription)' : tous les mails venant d'outils en ligne ou de service en ligne avec souscription. C'est souvent des mails automatiques.
- 'Notifications' : souvent se sont des notifications de réseaux sociaux
- 'Factures envoyés' : comme son nom l'indique, c'est les factures que j'ai envoyé.
- 'Factures reçues' : comme son nom l'indique, c'est les factures que j'ai reçues.
- Autre : tout ce qui ne rentre pas dans cette catégorie. Il n'y a pas de label à donner pour les autres mails, ils seront gérés par d'autres systèmes. Ça peut être des emails perso, des gens qui me contactent via linkedin / youtube, des gens qui me posent des questions ou de manière générale des entreprises qui me contacte pour me proposer des choses.
Il peut être adapté que tu prépare une réponse pour les mails Autre. Par contre, je ne veux pas répondre à des mails qui ne me sont pas spécifiquement adressé. Notamment, je ne réponds pas aux mails de newsletters & de services en ligne & les adresses 'noreply' ou tout mail qui date de plus d'un mois.
Pour tous les mails Autre qui te semblent adapté, tu préparera une réponse adapté en employant un ton simple et direct. Tutoie l'interlocuteur sauf s'il me vouvoie. Tu peux saluer avec le prénom de la personne si tu as l'info, sinon salue sans prénom.
To donneras tes réponses au format JSON :
{
"label": "<le label qui corresponds au mail, ou vide si il ne rentre dans aucune catégorie>",
"answer": "<la réponse que tu auras préparé pour ce mail, ou vide si le mail ne demande pas de réponse>"
}
# MESSAGE UTILISATEUR
Voici le mail reçu :
Current Date: {{now}}
Date : {{1.receivedDateTime}}
Delivered-to : {{1.toRecipients}}
Reply-to : {{1.replyTo}}
Subject : {{1.subject}}
Text content : {{substring(1.body.content; 0; 5000)}}
Sender Email : {{1.sender.emailAddress}}
Annexe 2 - Template Make
Télécharge le template Make et enregistre le. Puis importe le dans Make :