Passer au contenu principal
AutoReply est le système de réponse automatique de Fanify. C’est le cœur du chatbot : un job qui s’exécute en arrière-plan sur une conversation, analyse les derniers messages de l’utilisateur, puis génère et envoie une réponse au nom du créateur. Chaque exécution suit un processus rigoureux : attente du bon moment, application de votre stratégie, génération par des agents IA, fenêtre de contrôle opérateur, puis envoi humanisé.

Déclenchement

Un job AutoReply démarre dans trois situations :
DéclencheurDescription
Nouveau messageUn utilisateur envoie un message. C’est le cas le plus courant.
RelanceLe système de relance (follow-up) planifie une reprise de contact. L’instruction de relance est injectée dans la génération.
Demande manuelleUn opérateur demande explicitement une réponse automatique depuis le chat, avec la possibilité de forcer une intention (texte, photo, contenu payant, vocal).
Une seule réponse automatique peut être en cours par conversation. Si un job AutoReply tourne déjà pour cet utilisateur, aucun nouveau job n’est créé.
Le démarrage est soumis à des conditions, vérifiées à la création du job puis revérifiées à son exécution :
  • Les services IA et AutoReply sont activés globalement : Admin > Chatting Auto > Chatting, interrupteurs IA Enabled et AutoReply Enabled. Sinon le job s’annule.
  • Ils sont activés individuellement pour l’utilisateur : page de l’utilisateur > Settings, propriétés Enable AI et Enable AutoReply.
  • La conversation n’est pas suspendue par l’IA : une fin ou pause de conversation bloque tout nouveau job jusqu’à la date de reprise prévue.

Workflow

Voici le cycle de vie complet d’une réponse automatique :
1

Vérifications initiales

Le job vérifie que tout est en ordre : utilisateur trouvé, services activés, conversation accessible. Il charge ensuite les paramètres AutoReply (globaux ou surchargés pour cet utilisateur) et récupère les derniers messages de la conversation (BatchMessageCount, 50 par défaut).
2

Attente intelligente

Le job patiente (statut Awaiting) tant que le moment n’est pas opportun pour répondre :
  • L’utilisateur est en train d’écrire.
  • Sa dernière interaction est trop récente (paramètre RecentInteractionDelay, 20 s par défaut).
  • Des médias reçus n’ont pas encore de description (transcription/analyse en cours, voir AllowMissingAlt).
  • Un job d’enrichissement du profil utilisateur est en cours : ses conclusions (mémoires, scores) doivent être disponibles avant de répondre.
Ces conditions sont revérifiées toutes les RetryDelay secondes. Cette phase évite de couper la parole à l’utilisateur et garantit que l’IA dispose du contexte complet. Elle peut être contournée ponctuellement via Skip waiting depuis le badge du job.
3

Vérification des accomplissements

L’Agent d’accomplissements détecte si l’utilisateur a débloqué de nouveaux accomplissements définis dans sa stratégie (ex. « On connaît son prénom »). Les accomplissements détectés sont enregistrés immédiatement : une règle qui en dépend matchera dès l’étape suivante, dans la même réponse.
4

Évaluation de la stratégie

Les règles actives de la stratégie assignée à l’utilisateur sont évaluées par ordre de priorité. Chaque règle qui matche :
  • Injecte ses instructions dans le contexte de génération (contexte, objectifs, règles de conduite).
  • Exécute ses actions dans l’ordre : envoi direct de message, modification de variables, changement de stratégie, arrêt ou redémarrage du job, modification de l’intention, etc.
Points de comportement à connaître :
  • Certaines actions déclenchent une ré-évaluation des règles (jusqu’à 10 passes maximum) : une action peut modifier l’état de l’utilisateur, puis les règles sont relues avec ce nouvel état. Une règle déjà exécutée n’est jamais ré-exécutée dans le même job. Les injections retenues sont celles de la dernière passe.
  • Les messages envoyés directement par des actions sont intégrés au contexte : les agents de génération les voient comme déjà envoyés.
  • Une action peut interrompre le job ici (ex. arrêt pour réserver la conversation à un opérateur) : aucune réponse IA n’est alors générée.
5

Génération de la réponse

Le moteur de génération sélectionné (voir section suivante) produit un ou plusieurs messages candidats : textes, photos, vocaux ou liens de paiement. À ce stade, rien n’est encore envoyé à l’utilisateur. Le nombre de bulles est plafonné par MaxMessagesPerReply.Le moteur peut aussi décider de ne pas répondre : voir Fin et pause de conversation.
6

Fenêtre de contrôle opérateur

Un accusé de lecture est envoyé sur le canal de communication (l’utilisateur voit que ses messages ont été lus). Le job attend ensuite la durée configurée (AutoSendDelay, 5 s par défaut) avant l’envoi automatique.Cette fenêtre laisse le temps à un opérateur de superviser : annuler le job depuis son badge pour reprendre la main, ou utiliser Skip waiting pour envoyer immédiatement.
7

Envoi humanisé

Les messages candidats sont envoyés séquentiellement, en simulant un comportement humain :
  • Indicateur d’activité visible par l’utilisateur, renouvelé en continu : « écrit… » pour un texte, « enregistre un audio… » pour un vocal.
  • Délai d’écriture simulé avant chaque message, calculé selon la longueur du contenu et la vitesse de frappe configurée dans la persona du créateur. Pour un vocal, le délai correspond à la durée réelle de l’audio.
  • En cas d’indisponibilité temporaire du canal (limitation Telegram dite flood wait), le job patiente le délai exigé (avec une marge aléatoire) et réessaie, jusqu’à 5 tentatives par message. Un message n’est enregistré qu’après envoi réussi : les retries ne produisent jamais de doublon.

Les moteurs de génération (frameworks)

La phase de génération est assurée par un moteur interchangeable, aussi appelé framework. Un moteur est un assemblage d’agents IA spécialisés qui collaborent pour produire la réponse. Deux moteurs existent :
MoteurApprocheStatut
V1Chaîne d’agents spécialisés, routée par une classification d’intention préalableHistorique
V2Agent central unique (ReplyAgent) équipé d’outils, qui décide lui-même quoi fairePar défaut
Le moteur se sélectionne via le paramètre Framework des paramètres AutoReply, globalement ou par utilisateur.

Moteur V1

Le moteur V1 commence par classifier l’intention du message utilisateur via le Classificateur d’intention : réponse texte, demande de photo, contenu payant ou vocal. Chaque intention emprunte ensuite un chemin dédié d’agents spécialisés : Chaque agent a une mission unique, détaillée sur sa page dédiée :
  • Le ThinkingAgent réfléchit à la stratégie de réponse et produit une directive de rédaction. Sa réflexion est systématiquement vérifiée par le ValidationAgent (Chain-of-Verification, jusqu’à 3 allers-retours).
  • Le RedactionAgent transforme la directive en messages naturels, relus par le Validateur de rédaction (jusqu’à 3 corrections).
  • Pour le vocal, le Rédacteur vocal remplace le RedactionAgent et produit des phrases oralisées, ensuite synthétisées.
  • Un ContextAgent de pré-analyse existe en amont du ThinkingAgent, mais il est actuellement désactivé.
Ce découpage produit des réponses contrôlées mais multiplie les appels IA : temps de réponse plus long et coût plus élevé. C’est la raison d’être du moteur V2.

Moteur V2

Le moteur V2 remplace la chaîne par un agent central unique, le ReplyAgent. Plus de classification d’intention préalable : l’agent analyse lui-même la conversation et choisit ses actions grâce à une palette d’outils. Les avantages de cette approche :
  • Plus rapide et plus économique : moins d’appels IA successifs, pas d’étape de vérification de réflexion (compensée par un modèle plus performant), outils de recherche parallélisables.
  • Plus cohérent : un seul « cerveau » décide du texte, des médias et des paiements dans une même réponse.
  • Plus flexible : l’agent peut combiner librement les types de messages (un texte + une photo + un vocal dans la même réponse).
Les outils, leurs garde-fous (plafond d’itérations, anti-boucle, limite de médias gratuits, continuité d’album) et la configuration complète sont détaillés sur la page ReplyAgent.
La stratégie peut restreindre dynamiquement les outils du ReplyAgent. Par exemple, une action forçant l’intention « texte » désactive l’envoi de liens de paiement pour cette réponse : l’outil n’est alors plus disponible pour l’agent (voir le paramètre HardRemoveDisabledTools).

Relances

Les relances (follow-ups) déclenchent un job AutoReply particulier : l’instruction de relance remplace ou complète la réflexion. Le comportement dépend de l’option Thinking de la relance :
OptionMoteur V1Moteur V2
Avec réflexion (Thinking activé)Workflow complet, l’instruction est injectée dans le ThinkingAgent.Workflow complet, l’instruction est injectée dans le ReplyAgent.
Sans réflexionL’instruction est transmise telle quelle au RedactionAgent.Identique au V1 : rédaction directe, le ReplyAgent est court-circuité.
Les relances forcent l’intention texte et ignorent le paramètre SkipIfLastMessageFromAI (le dernier message est par définition celui du créateur). Les jetons de l’instruction ({{USER_*}}, {{CREATORPERSONA_*}}…) sont résolus avant injection.

Fin et pause de conversation

Les agents de réflexion (ThinkingAgent en V1, ReplyAgent en V2) partagent deux outils de pilotage, leave_on_read et conversation_pause, qui leur permettent de décider qu’il ne faut pas répondre :
  • Laisser sur « vu » (leave_on_read) : l’échange est arrivé à son terme naturel (objectif atteint, utilisateur hostile, impasse). Le fan est laissé sur « vu », les réponses automatiques sont suspendues, puis une relance est automatiquement planifiée à l’heure de contact optimale de l’utilisateur pour reprendre contact naturellement.
  • Pause de conversation : suspension temporaire jusqu’à une date de reprise choisie par l’agent (ex. l’utilisateur part travailler), avec une relance planifiée à cette échéance.
Dans les deux cas, un message système documente la décision dans la conversation et le job se termine en succès, sans envoi. Le détail du mécanisme (heure optimale, type de relance planifiée) est décrit sur la page ThinkingAgent.

Suivi et contrôle en temps réel

Chaque exécution est entièrement traçable et pilotable depuis le chat :
  • Un badge de job apparaît dans la conversation et affiche l’étape en cours en temps réel. Son bouton « » donne accès aux actions de contrôle : Afficher (page de détail), Skip waiting (contourner une attente en cours), mettre en pause ou annuler le job — voir Cycle de vie d’un job et Interface.
  • Un message de trace (visible uniquement des opérateurs) détaille le raisonnement complet : agents exécutés avec leurs échanges, règles de stratégie déclenchées, actions effectuées, verdicts de validation, plan stratégique retenu pour le prochain tour. Il se met à jour en direct pendant l’exécution.
  • La page de détail du job (liste Admin > Jobs ou badge > Afficher) expose la progression par étapes et tous les appels IA effectués, avec leurs durées, tokens et coûts.
Skip waiting ne contourne que l’attente en cours. Si le job enchaîne sur une nouvelle attente (ex. l’utilisateur se remet à écrire), le contournement doit être renouvelé.

Paramètres

Les paramètres AutoReply se configurent à deux niveaux :
  1. Global : Admin > Chatting Auto > Chatting > carte Paramètres AutoReply. S’applique à tous les utilisateurs.
  2. Par utilisateur : page de l’utilisateur > Settings > carte AutoReply Settings. Surcharge la configuration globale pour cet utilisateur uniquement (bouton Clear override pour revenir au global).
ParamètreDéfautDescription et conséquences
FrameworkV2Moteur de génération : V1 (chaîne d’agents) ou V2 (ReplyAgent). Permet de revenir au comportement historique par utilisateur ou globalement.
RecentInteractionDelay20 sDurée minimale depuis la dernière interaction de l’utilisateur avant de générer. Trop court : l’IA coupe la parole à un utilisateur qui enchaîne les messages. Trop long : réponses tardives.
RetryDelay10 sIntervalle entre deux vérifications pendant les phases d’attente. Influe sur la réactivité du job, pas sur son comportement.
AutoSendDelay5 sDurée de la fenêtre de contrôle opérateur avant envoi automatique. Mettre une valeur haute si vos opérateurs veulent systématiquement relire avant envoi.
BatchMessageCount50Nombre de messages récents chargés pour le job. Les agents y puisent ensuite leurs propres fenêtres (typiquement les 15 derniers).
MaxMessagesPerReply3Plafond de bulles texte générées par réponse. Les phrases vocales sont plafonnées séparément par MaxVocalsPerReply du Rédacteur vocal.
SkipIfLastMessageFromAIDésactivéAnnule le job si le dernier message de la conversation vient déjà de l’IA. Évite que l’IA monologue ; sans effet sur les relances.
AllowMissingAltActivéAutorise la génération même si des médias reçus n’ont pas encore de description. Si activé, l’IA peut inventer le contenu d’un média qu’elle n’a pas « vu ». Si désactivé, le job attend la description.
MinIntentScore20Moteur V1 uniquement. Score de confiance minimal du Classificateur d’intention, sous lequel le job échoue (AR-141) plutôt que de répondre à contresens.
Les paramètres propres à chaque agent (modèles IA, itérations, validation…) se règlent séparément : voir Agent.

Cas particuliers et diagnostic

Vérifiez dans l’ordre :
  1. AutoReply Enabled et IA Enabled globaux (Admin > Chatting Auto > Chatting).
  2. Enable AutoReply et Enable AI sur la fiche de l’utilisateur.
  3. Une fin ou pause de conversation est peut-être active : la conversation est suspendue jusqu’à la date de reprise (visible via le dernier message système de la conversation).
  4. Un job AutoReply est peut-être déjà en cours pour cette conversation.
C’est le comportement nominal de l’attente intelligente : utilisateur en train d’écrire, interaction trop récente, description de média manquante ou enrichissement du profil en cours. La cause exacte est affichée dans la description de l’étape du job. Utilisez Skip waiting pour passer outre ponctuellement. Si l’attente vient d’une description de média qui n’arrive jamais (job de description échoué), relancez-le ou activez AllowMissingAlt.
Le paramètre SkipIfLastMessageFromAI est activé et l’IA a déjà répondu en dernier. C’est une protection anti-monologue. Les relances ne sont pas concernées.
Cause la plus fréquente : crédits du fournisseur IA épuisés (AR-900, OpenRouter). Rechargez votre solde. Les jobs échoués avec cette référence activent l’indicateur d’attention.
Trois possibilités :
  • Un opérateur a annulé le job pendant la fenêtre de contrôle.
  • La validation critique a supprimé la réponse (AR-530, ex. l’IA admettait être une IA) : voir le code en cause dans la trace.
  • Telegram était indisponible et l’envoi a échoué après 5 tentatives (AR-182).
C’est voulu : une fin de conversation planifie automatiquement une relance à l’heure de contact optimale (voir Fin et pause de conversation). Pour stopper définitivement les réponses automatiques d’un utilisateur, désactivez Enable AutoReply sur sa fiche.
Le ReplyAgent est désactivé (Enable décoché dans sa configuration) : AutoReply bascule automatiquement sur le moteur V1. Réactivez l’agent pour retrouver le V2.
Normalement impossible : un seul job AutoReply par conversation, les messages envoyés par les actions de stratégie sont intégrés au contexte, et les retries d’envoi ne dupliquent jamais un message déjà parti. Si vous constatez un doublon, vérifiez qu’une relance et un message utilisateur ne se sont pas croisés, et consultez les jobs récents de l’utilisateur dans Admin > Jobs.

Référence des erreurs

Quand un job AutoReply échoue ou s’annule, sa description d’étape affiche un message compréhensible suivi d’un code de référence au format AR-xxx. Communiquez ce code au support pour un diagnostic immédiat. Les plages de codes :
PlageDomaine
AR-1xxInitialisation et préconditions (utilisateur introuvable, conversation vide, paramètres globaux manquants…)
AR-14xClassification de l’intention (moteur V1) : pas de réponse (AR-140), score trop bas (AR-141), intention inconnue (AR-142)
AR-16x / AR-18xEnvoi : compte Telegram non lié (AR-180), aucune réponse préparée (AR-181), indisponibilité Telegram persistante (AR-182), échec d’envoi (AR-183)
AR-5xxMoteur V2 : validation critique (AR-530), plafond d’itérations (AR-550), anti-boucle (AR-551), arrêt sans réponse (AR-552)
AR-6xxMoteur V1 : échec de génération texte (AR-600), photo (AR-610), contenu payant (AR-620), vocal (AR-630)
AR-900Crédits du fournisseur IA épuisés (OpenRouter) — rechargez votre solde
Les échecs nécessitant une intervention humaine activent l’indicateur d’attention du job, qui notifie les opérateurs abonnés à la notification NeedAttention (voir Cycle de vie d’un job).

Voir aussi

  • Job — Concepts généraux des jobs : cycle de vie, statuts, progression, interface.
  • Agent — Le fonctionnement des agents IA, leurs modèles et leur configuration.
  • ReplyAgent — L’agent central du moteur V2 en détail.