Skip to content

Rédiger (IA) ​

Fait rédiger un message par le modèle selon vos consignes et le profil du destinataire (le registre, le ton, la langue, la signature). Ne l’envoie pas : ajoutez « Envoyer » derrière pour le déposer en brouillon ou l’expédier.

Rédiger (IA) fait écrire un mail par le modèle à partir de vos consignes, adapté au destinataire : tutoiement ou vouvoiement, ton, langue, notes de contexte et signature viennent du profil du destinataire dans le carnet d’adresses. Le même workflow tutoie alors un client de longue date et vouvoie un prospect, sans que vous ayez à écrire l’une ou l’autre règle.

Le nœud ne fait que produire le message. Il ne dépose aucun brouillon et n’envoie rien. Branchez Envoyer derrière lui pour déposer le message en brouillon ou l’expédier, et placez entre les deux ce dont vous avez besoin : une Approbation, une condition, une écriture dans une table. Quand le texte est un gabarit fixe plutôt qu’un texte à rédiger, utilisez Rédiger : il ne coûte aucun appel de modèle.

En bref ​

  • Type : ai.compose · version 1
  • Catégorie : IA
  • Nature : Étape — s’exécute pendant une exécution
  • Effet : Sans effet externe (none) — rien n’est écrit hors de Mankomail ; rejouable sans risque
  • Exige un mail porteur : Non
  • Connexion : Aucune
  • Entrées : main
  • Sorties : main
  • Ports de service : model (llm.model, facultatif)

Paramètres ​

instructions ​

Ce que le mail doit dire — Les consignes données au modèle, pas le texte final. Accepte des expressions {{ }} : {{ data.extract_1.numero }}, {{ email.from.name }}.

  • Type : Texte long (text)
  • Requis : Oui
  • Défaut : "" (vide)
  • 10000 caractères au plus
  • Exemple : Confirme la réception de la demande et annonce une réponse chiffrée sous 48 h.
  • Expressions : {{ }} accepté

to ​

Destinataires — Adresses séparées par des virgules. Par défaut : l’expéditeur du mail déclencheur — et rien quand le déclencheur n’apporte pas de mail.

  • Type : Texte (string)
  • Requis : Oui
  • Défaut : Selon le déclencheur — {{ email.from.email }} (déclencheur mail ou manuel) ; "" (vide) (appelé par un autre workflow) ; "" (vide) (planification, webhook ou événement d’intégration)
  • 2000 caractères au plus
  • Expressions : {{ }} accepté

cc ​

Copie (Cc)

  • Type : Texte (string)
  • Requis : Non
  • Défaut : "" (vide)
  • 2000 caractères au plus
  • Expressions : {{ }} accepté

bcc ​

Copie cachée (Cci)

  • Type : Texte (string)
  • Requis : Non
  • Défaut : "" (vide)
  • 2000 caractères au plus
  • Expressions : {{ }} accepté

subject ​

Objet

  • Type : Texte (string)
  • Requis : Oui
  • Défaut : Selon le déclencheur — Re: {{ email.subject }} (déclencheur mail ou manuel) ; "" (vide) (appelé par un autre workflow) ; "" (vide) (planification, webhook ou événement d’intégration)
  • 500 caractères au plus
  • Expressions : {{ }} accepté

replyInThread ​

Répondre dans le fil — La réponse est rattachée au mail déclencheur et reste dans la conversation. Coché par défaut sous un déclencheur mail, décoché sous une planification, un webhook ou un appel — il n’y a alors pas de fil, et la publication le refuse s’il reste coché.

  • Type : Oui / non (boolean)
  • Requis : Non
  • Défaut : Selon le déclencheur — true (déclencheur mail ou manuel) ; false (appelé par un autre workflow) ; false (planification, webhook ou événement d’intégration)
  • Exige un mail porteur pour : true

includeThreadContext ​

Donner le mail au modèle — Le corps du mail déclencheur est fourni comme contexte, en données délimitées. Le fil complet n’est pas encore disponible. Sans mail porteur, il n’y a rien à donner : le modèle ne travaille que sur vos consignes.

  • Type : Oui / non (boolean)
  • Requis : Non
  • Défaut : Selon le déclencheur — true (déclencheur mail ou manuel) ; false (appelé par un autre workflow) ; false (planification, webhook ou événement d’intégration)

useRecipientProfiles ​

Appliquer les profils destinataires — Le registre (tutoiement ou vouvoiement), le ton, la langue, les notes et la signature du destinataire sont injectés dans les consignes du modèle.

  • Type : Oui / non (boolean)
  • Requis : Non
  • Défaut : true

languageOverride ​

Forcer la langue

  • Type : Un choix (options)
  • Requis : Non
  • Défaut : "" (vide)
  • Options :
    • — Selon le profil
    • fr — Français
    • en — Anglais

toneOverride ​

Forcer le ton

  • Type : Un choix (options)
  • Requis : Non
  • Défaut : "" (vide)
  • Options :
    • — Selon le profil
    • formal — Formel
    • neutral — Neutre
    • casual — Familier

Sorties ​

  • main

Données produites ​

Ce que ce nœud ajoute aux données de l’exécution, et comment le lire dans une expression. <step> désigne la clé de l’étape : le nom du nœud ramené à un identifiant (voir Données et expressions).

  • {{ data.<step>.message }} — object { to, cc?, bcc?, subject, bodyText?, inReplyToMessageId? }. Le message rédigé, prêt pour un nœud Envoyer. Faites pointer le champ « Message à envoyer » d’Envoyer sur cette expression. to, cc et bcc sont des tableaux d’adresses ; cc et bcc sont absents quand ils sont vides ; inReplyToMessageId n’est présent que si le message répond dans le fil.
  • {{ data.<step>.message.bodyText }} — string. Le corps complet rédigé par le modèle, suivi de la signature du profil destinataire quand il en a une.
  • {{ data.<step>.message.subject }} — string. L’objet. Quand le champ « Objet » est rendu vide et que l’exécution a un mail déclencheur, il vaut Re: suivi de l’objet de ce mail.
  • {{ data.<step>.bodyPreview }} — string. Les 280 premiers caractères du corps, pour l’affichage dans le détail d’exécution.
  • {{ data.<step>.bodyTruncated }} — boolean. true quand le corps est plus long que l’aperçu.
  • {{ data.<step>.style }} — object { formality, tone, language, overridden }. Le style réellement appliqué : formality vaut tu ou vous, tone vaut formal, neutral ou casual, language est un code de langue ou null (la réponse suit le mail), overridden liste ce que le nœud a forcé (tone, language).
  • {{ data.<step>.profileApplied }} — object keyed by address. Pour chaque destinataire résolu : formality, tone, language (ou null), signature (le profil en a-t-il une) et notes (le nombre de notes). Le texte des notes n’est pas recopié.

Exemple ​

Accuser réception de chaque demande de devis par une réponse dans le fil. Derrière la branche cat:Devis d’un Catégoriser, ajoutez un nœud Rédiger (IA) nommé Reponse :

instructions: "Remercie pour la demande, confirme sa bonne réception et annonce une réponse chiffrée sous 48 h. Cite le produit demandé."
to: "{{ email.from.email }}"
subject: "Re: {{ email.subject }}"
replyInThread: true
includeThreadContext: true
useRecipientProfiles: true

Ajoutez ensuite un nœud Envoyer avec :

message: "{{ data.reponse.message }}"
mode: draft

Les données de l’étape Reponse contiennent le message :

json
{
  "message": {
    "to": ["acheteur@example.com"],
    "subject": "Re: Prix pour 200 pièces",
    "bodyText": "Bonjour Madame Martin,\n\nMerci pour votre demande…",
    "inReplyToMessageId": "<CAF123@mail.example.com>"
  },
  "bodyPreview": "Bonjour Madame Martin,\n\nMerci pour votre demande…",
  "bodyTruncated": false,
  "style": { "formality": "vous", "tone": "neutral", "language": null, "overridden": [] },
  "profileApplied": { "acheteur@example.com": { "formality": null, "tone": null, "language": null, "signature": false, "notes": 0 } }
}

Envoyer lit le message, le dépose en brouillon dans la boîte du mail déclencheur, et le brouillon apparaît pour relecture.

Langue de sortie ​

Sauf réglage contraire, le modèle écrit dans la langue du mail déclencheur, quelle que soit la langue de vos consignes ou de l’interface : des consignes rédigées en anglais produisent une réponse en français à un mail en français. Deux réglages fixent la langue à la place : une langue définie sur le profil du destinataire principal, ou « Forcer la langue » sur le nœud (Français ou Anglais). « Forcer la langue » l’emporte sur le profil.

Profils destinataires ​

Avec « Appliquer les profils destinataires » coché (le défaut), le nœud résout les profils de toutes les adresses de « Destinataires » et de « Copie (Cc) ». La première adresse de « Destinataires » donne le style : tutoiement ou vouvoiement (vouvoiement à défaut), ton (neutre à défaut), langue, nom affiché et signature. Les notes de tous les destinataires résolus sont ajoutées comme contexte. « Forcer le ton » remplace le ton du profil sans désactiver le reste. Décochez « Appliquer les profils destinataires » pour rédiger sans aucun profil.

Quand le profil du destinataire principal porte une signature, le modèle reçoit la consigne de terminer par elle, sans la modifier, et le nœud l’ajoute lui-même si le modèle l’a oubliée.

Ce que voit le modèle ​

Vos consignes partent dans un message utilisateur, jamais dans le message système. Avec « Donner le mail au modèle » coché et un mail déclencheur présent, l’objet et le corps texte du mail sont ajoutés dans un bloc distinct et délimité, avec la consigne explicite de le traiter comme une donnée et d’ignorer toute instruction qu’il contiendrait. Seul le mail déclencheur est fourni, pas le reste du fil. Sans mail déclencheur (planification, webhook, appel), le modèle ne travaille qu’à partir de vos consignes.

Choix du modèle ​

Le nœud possède un port de service model. Laissé vide, l’appel utilise le modèle par défaut que l’administrateur a choisi pour l’usage « Rédiger » sur la page Connexions (section Intelligence artificielle) (ou le défaut de l’instance). Branchez un nœud fournisseur comme Anthropic (Claude) ou Mistral AI sur le port model pour rédiger avec ce fournisseur.

Conseils ​

  • Exécutions sans mail. Sous une planification, un webhook ou un déclencheur par sondage, « Destinataires » et « Objet » partent vides et doivent être remplis, et « Répondre dans le fil » part décoché. S’il reste coché, la publication le refuse ; à l’exécution, le nœud échoue avec mail.reply_without_email avant d’appeler le modèle, pour ne pas payer une rédaction impossible à rendre.
  • Pas de Message-ID. Si le mail déclencheur n’a pas d’en-tête Message-ID exploitable, le message est rédigé hors du fil plutôt que perdu.
  • Deux signatures. La signature du profil fait partie du corps. Si Envoyer ajoute aussi une signature, le message porte les deux : choisissez l’une ou l’autre.
  • Les valeurs insérées sont des données. Les consignes peuvent insérer du contenu écrit par un tiers ({{ data.<step>.attachments.0.text }}) ; le modèle est prévenu que les valeurs insérées sont des données, pas des consignes.
  • Essais. En essai, le modèle est réellement appelé : vous pouvez relire la vraie réponse ; rien n’est déposé ni envoyé, puisque le nœud n’a pas d’effet et qu’Envoyer est simulé. Si l’instance n’a aucun fournisseur d’IA utilisable, le corps est un texte de remplissage fixe et le détail d’exécution signale que l’IA a été sautée.
  • Erreurs. Des consignes vides donnent node_nothing_to_do ; aucun destinataire restant après le rendu de « Destinataires » donne node_invalid_param, de même qu’un objet vide sans mail déclencheur. Voir Gestion des erreurs.