Telegram (Bot API)
Statut : prêt pour la production pour les DM de bot + les groupes via grammY. Le long polling est le mode par défaut ; le mode webhook est facultatif.Appairage
Dépannage des canaux
Configuration de Gateway
Configuration rapide
Créer le jeton du bot dans BotFather
@BotFather).Exécutez /newbot, suivez les invites et enregistrez le jeton.Configurer le jeton et la politique DM
TELEGRAM_BOT_TOKEN=... (compte par défaut uniquement).
Telegram n’utilise pas openclaw channels login telegram ; configurez le jeton dans la config/l’environnement, puis démarrez gateway.TELEGRAM_BOT_TOKEN ne s’applique qu’au compte par défaut.Paramètres côté Telegram
Mode confidentialité et visibilité des groupes
Mode confidentialité et visibilité des groupes
- désactivez le mode confidentialité via
/setprivacy, ou - faites du bot un administrateur du groupe.
Autorisations de groupe
Autorisations de groupe
Options BotFather utiles
Options BotFather utiles
/setjoingroupspour autoriser/interdire l’ajout à des groupes/setprivacypour le comportement de visibilité dans les groupes
Contrôle d’accès et activation
- Politique DM
- Politique de groupe et listes d’autorisation
- Comportement des mentions
channels.telegram.dmPolicy contrôle l’accès aux messages directs :pairing(par défaut)allowlist(nécessite au moins un ID d’expéditeur dansallowFrom)open(nécessite queallowFrominclue"*")disabled
channels.telegram.allowFrom accepte des ID utilisateur Telegram numériques. Les préfixes telegram: / tg: sont acceptés et normalisés.
dmPolicy: "allowlist" avec un allowFrom vide bloque tous les DM et est rejeté par la validation de configuration.
L’onboarding accepte une entrée @username et la résout en ID numériques.
Si vous avez effectué une mise à niveau et que votre configuration contient des entrées de liste d’autorisation @username, exécutez openclaw doctor --fix pour les résoudre (au mieux ; nécessite un jeton de bot Telegram).
Si vous vous appuyiez auparavant sur les fichiers de liste d’autorisation du magasin d’appairage, openclaw doctor --fix peut récupérer des entrées dans channels.telegram.allowFrom dans les flux de liste d’autorisation (par exemple lorsque dmPolicy: "allowlist" n’a pas encore d’ID explicites).Pour les bots à propriétaire unique, préférez dmPolicy: "allowlist" avec des ID numériques explicites dans allowFrom afin de conserver une politique d’accès durable dans la configuration (au lieu de dépendre d’approbations d’appairage précédentes).Confusion courante : l’approbation d’un appairage DM ne signifie pas « cet expéditeur est autorisé partout ».
L’appairage n’accorde qu’un accès DM. L’autorisation des expéditeurs dans les groupes provient toujours de listes d’autorisation explicites dans la configuration.
Si vous voulez « je suis autorisé une fois et les DM ainsi que les commandes de groupe fonctionnent », placez votre ID utilisateur Telegram numérique dans channels.telegram.allowFrom.Trouver votre ID utilisateur Telegram
Plus sûr (sans bot tiers) :- Envoyez un DM à votre bot.
- Exécutez
openclaw logs --follow. - Lisez
from.id.
@userinfobot ou @getidsbot.Comportement du runtime
- Telegram est géré par le processus gateway.
- Le routage est déterministe : les réponses entrantes Telegram reviennent vers Telegram (le modèle ne choisit pas les canaux).
- Les messages entrants sont normalisés dans l’enveloppe de canal partagée avec métadonnées de réponse et espaces réservés aux médias.
- Les sessions de groupe sont isolées par ID de groupe. Les sujets de forum ajoutent
:topic:<threadId>pour maintenir l’isolation des sujets. - Les messages DM peuvent transporter
message_thread_id; OpenClaw les route avec des clés de session conscientes des fils et préserve l’ID du fil pour les réponses. - Le long polling utilise le runner grammY avec séquencement par chat/par fil. La concurrence globale du runner sink utilise
agents.defaults.maxConcurrent. - Telegram Bot API ne prend pas en charge les accusés de lecture (
sendReadReceiptsne s’applique pas).
Référence des fonctionnalités
Aperçu de flux en direct (modifications de message)
Aperçu de flux en direct (modifications de message)
- chats directs : message d’aperçu +
editMessageText - groupes/sujets : message d’aperçu +
editMessageText
channels.telegram.streamingvautoff | partial | block | progress(par défaut :partial)progresscorrespond àpartialsur Telegram (compatibilité avec la dénomination inter-canaux)- les anciennes valeurs booléennes de
channels.telegram.streamModeetstreamingsont mappées automatiquement
- DM : OpenClaw conserve le même message d’aperçu et effectue une modification finale sur place (pas de second message)
- groupe/sujet : OpenClaw conserve le même message d’aperçu et effectue une modification finale sur place (pas de second message)
sendMessage + editMessageText.Flux de raisonnement réservé à Telegram :/reasoning streamenvoie le raisonnement vers l’aperçu en direct pendant la génération- la réponse finale est envoyée sans le texte de raisonnement
Formatage et repli HTML
Formatage et repli HTML
parse_mode: "HTML" de Telegram.- Le texte de type Markdown est rendu en HTML sûr pour Telegram.
- Le HTML brut du modèle est échappé pour réduire les échecs d’analyse de Telegram.
- Si Telegram rejette le HTML analysé, OpenClaw réessaie en texte brut.
channels.telegram.linkPreview: false.Commandes natives et commandes personnalisées
Commandes natives et commandes personnalisées
setMyCommands.Valeurs par défaut des commandes natives :commands.native: "auto"active les commandes natives pour Telegram
- les noms sont normalisés (suppression du
/initial, minuscules) - motif valide :
a-z,0-9,_, longueur1..32 - les commandes personnalisées ne peuvent pas remplacer les commandes natives
- les conflits/doublons sont ignorés et journalisés
- les commandes personnalisées sont uniquement des entrées de menu ; elles n’implémentent pas automatiquement un comportement
- les commandes de plugin/Skills peuvent toujours fonctionner lorsqu’elles sont saisies, même si elles ne sont pas affichées dans le menu Telegram
setMyCommands failedavecBOT_COMMANDS_TOO_MUCHsignifie que le menu Telegram déborde toujours après réduction ; réduisez les commandes personnalisées/de plugin/de Skills ou désactivezchannels.telegram.commands.native.setMyCommands failedavec des erreurs réseau/fetch signifie généralement que le DNS/HTTPS sortant versapi.telegram.orgest bloqué.
Commandes d’appairage d’appareil (plugin device-pair)
Lorsque le plugin device-pair est installé :/pairgénère un code de configuration- collez le code dans l’application iOS
/pair pendingliste les demandes en attente (y compris rôle/portées)- approuvez la demande :
/pair approve <requestId>pour une approbation explicite/pair approvelorsqu’il n’y a qu’une seule demande en attente/pair approve latestpour la plus récente
scopes: [] ; tout jeton operator transmis reste limité à operator.approvals, operator.read, operator.talk.secrets et operator.write. Les vérifications de portée bootstrap sont préfixées par rôle, de sorte que cette liste d’autorisation operator ne satisfait que les demandes operator ; les rôles non-operator ont toujours besoin de portées sous leur propre préfixe de rôle.Si un appareil réessaie avec des détails d’authentification modifiés (par exemple rôle/portées/clé publique), la demande en attente précédente est remplacée et la nouvelle demande utilise un autre requestId. Réexécutez /pair pending avant d’approuver.Plus de détails : Appairage.Boutons intégrés
Boutons intégrés
offdmgroupallallowlist(par défaut)
capabilities: ["inlineButtons"] est mappé vers inlineButtons: "all".Exemple d’action de message :callback_data: <value>Actions de message Telegram pour les agents et l’automatisation
Actions de message Telegram pour les agents et l’automatisation
sendMessage(to,content,mediaUrl,replyToMessageId,messageThreadIdfacultatifs)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,content)createForumTopic(chatId,name,iconColor,iconCustomEmojiIdfacultatifs)
send, react, delete, edit, sticker, sticker-search, topic-create).Contrôles de restriction :channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(par défaut : désactivé)
edit et topic-create sont actuellement activés par défaut et n’ont pas de bascules channels.telegram.actions.* séparées.
Les envois runtime utilisent l’instantané actif de la configuration/des secrets (démarrage/rechargement), donc les chemins d’action n’effectuent pas de nouvelle résolution ad hoc de SecretRef à chaque envoi.Sémantique de suppression de réaction : /tools/reactionsBalises de fil de réponse
Balises de fil de réponse
[[reply_to_current]]répond au message déclencheur[[reply_to:<id>]]répond à un ID de message Telegram spécifique
channels.telegram.replyToMode contrôle le traitement :off(par défaut)firstall
off désactive le fil de réponse implicite. Les balises explicites [[reply_to_*]] sont toujours honorées.Sujets de forum et comportement des fils
Sujets de forum et comportement des fils
- les clés de session de sujet ajoutent
:topic:<threadId> - les réponses et les indicateurs de saisie ciblent le fil du sujet
- chemin de configuration du sujet :
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1) :- les envois de message omettent
message_thread_id(Telegram rejettesendMessage(...thread_id=1)) - les actions de saisie incluent toujours
message_thread_id
requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy).
agentId est réservé au sujet et n’hérite pas des valeurs par défaut du groupe.Routage d’agent par sujet : chaque sujet peut être routé vers un agent différent en définissant agentId dans la configuration du sujet. Cela donne à chaque sujet son propre espace de travail, sa propre mémoire et sa propre session. Exemple :agent:zu:telegram:group:-1001234567890:topic:3Liaison ACP persistante par sujet : les sujets de forum peuvent épingler des sessions de harnais ACP via des liaisons ACP typées de niveau supérieur :bindings[]avectype: "acp"etmatch.channel: "telegram"
/acp spawn <agent> --thread here|autopeut lier le sujet Telegram actuel à une nouvelle session ACP.- Les messages suivants dans le sujet sont routés directement vers la session ACP liée (pas de
/acp steerrequis). - OpenClaw épingle le message de confirmation du lancement dans le sujet après une liaison réussie.
- Nécessite
channels.telegram.threadBindings.spawnAcpSessions=true.
MessageThreadIdIsForum
- les chats privés avec
message_thread_idconservent le routage DM mais utilisent des clés de session/cibles de réponse conscientes des fils.
Audio, vidéo et stickers
Audio, vidéo et stickers
Messages audio
Telegram distingue les notes vocales des fichiers audio.- par défaut : comportement de fichier audio
- balise
[[audio_as_voice]]dans la réponse de l’agent pour forcer l’envoi en note vocale
Messages vidéo
Telegram distingue les fichiers vidéo des notes vidéo.Exemple d’action de message :Stickers
Gestion des stickers entrants :- WEBP statique : téléchargé et traité (espace réservé
<media:sticker>) - TGS animé : ignoré
- WEBM vidéo : ignoré
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
Notifications de réaction
Notifications de réaction
message_reaction (séparées des charges utiles des messages).Lorsqu’elles sont activées, OpenClaw met en file d’attente des événements système tels que :Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(par défaut :own)channels.telegram.reactionLevel:off | ack | minimal | extensive(par défaut :minimal)
ownsignifie uniquement les réactions des utilisateurs aux messages envoyés par le bot (au mieux via le cache des messages envoyés).- Les événements de réaction respectent toujours les contrôles d’accès Telegram (
dmPolicy,allowFrom,groupPolicy,groupAllowFrom) ; les expéditeurs non autorisés sont ignorés. - Telegram ne fournit pas d’ID de fil dans les mises à jour de réaction.
- les groupes non forum sont routés vers la session de chat de groupe
- les groupes forum sont routés vers la session du sujet général du groupe (
:topic:1), et non vers le sujet d’origine exact
allowed_updates pour le polling/webhook inclut automatiquement message_reaction.Réactions d’accusé de réception
Réactions d’accusé de réception
ackReaction envoie un emoji d’accusé de réception pendant qu’OpenClaw traite un message entrant.Ordre de résolution :channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- repli sur l’emoji d’identité de l’agent (
agents.list[].identity.emoji, sinon ”👀”)
- Telegram attend un emoji unicode (par exemple ”👀”).
- Utilisez
""pour désactiver la réaction pour un canal ou un compte.
Écritures de configuration depuis les événements et commandes Telegram
Écritures de configuration depuis les événements et commandes Telegram
configWrites !== false).Les écritures déclenchées par Telegram incluent :- les événements de migration de groupe (
migrate_to_chat_id) pour mettre à jourchannels.telegram.groups /config setet/config unset(nécessite l’activation de la commande)
Long polling vs webhook
Long polling vs webhook
- définissez
channels.telegram.webhookUrl - définissez
channels.telegram.webhookSecret(obligatoire lorsque l’URL webhook est définie) channels.telegram.webhookPathfacultatif (par défaut/telegram-webhook)channels.telegram.webhookHostfacultatif (par défaut127.0.0.1)channels.telegram.webhookPortfacultatif (par défaut8787)
127.0.0.1:8787.Si votre point de terminaison public diffère, placez un proxy inverse en amont et faites pointer webhookUrl vers l’URL publique.
Définissez webhookHost (par exemple 0.0.0.0) lorsque vous avez intentionnellement besoin d’une entrée externe.Limites, nouvelles tentatives et cibles CLI
Limites, nouvelles tentatives et cibles CLI
channels.telegram.textChunkLimitvaut 4000 par défaut.channels.telegram.chunkMode="newline"privilégie les frontières de paragraphe (lignes vides) avant la segmentation par longueur.channels.telegram.mediaMaxMb(par défaut 100) limite la taille des médias Telegram entrants et sortants.channels.telegram.timeoutSecondsremplace le délai d’expiration du client Telegram API (si non défini, la valeur par défaut de grammY s’applique).- l’historique du contexte de groupe utilise
channels.telegram.historyLimitoumessages.groupChat.historyLimit(par défaut 50) ;0le désactive. - le contexte supplémentaire de réponse/citation/transfert est actuellement transmis tel que reçu.
- les listes d’autorisation Telegram servent principalement à contrôler qui peut déclencher l’agent, et non une frontière complète de caviardage du contexte supplémentaire.
- contrôles d’historique DM :
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- la configuration
channels.telegram.retrys’applique aux helpers d’envoi Telegram (CLI/outils/actions) pour les erreurs API sortantes récupérables.
openclaw message poll et prennent en charge les sujets de forum :--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-idpour les sujets de forum (ou utilisez une cible:topic:)
--buttonspour les claviers intégrés lorsquechannels.telegram.capabilities.inlineButtonsl’autorise--force-documentpour envoyer des images et GIF sortants comme documents au lieu de photos compressées ou de médias animés
channels.telegram.actions.sendMessage=falsedésactive les messages Telegram sortants, y compris les sondageschannels.telegram.actions.poll=falsedésactive la création de sondages Telegram tout en laissant les envois classiques activés
Approbations exec dans Telegram
Approbations exec dans Telegram
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(facultatif ; retombe sur les ID de propriétaire numériques déduits deallowFromet dedefaultTodirect lorsque possible)channels.telegram.execApprovals.target(dm|channel|both, par défaut :dm)agentFilter,sessionFilter
enabled n’est pas défini ou vaut "auto" et qu’au moins un approbateur peut être résolu, soit depuis execApprovals.approvers, soit depuis la configuration numérique du propriétaire du compte (allowFrom et defaultTo de message direct). Définissez enabled: false pour désactiver explicitement Telegram comme client d’approbation natif. Les demandes d’approbation retombent sinon sur d’autres routes d’approbation configurées ou sur la politique de repli des approbations exec.Telegram affiche également les boutons d’approbation partagés utilisés par les autres canaux de chat. L’adaptateur Telegram natif ajoute principalement le routage DM des approbateurs, la diffusion vers le canal/sujet et les indications de saisie avant livraison.
Lorsque ces boutons sont présents, ils constituent l’UX principale d’approbation ; OpenClaw
ne doit inclure une commande manuelle /approve que lorsque le résultat de l’outil indique
que les approbations de chat ne sont pas disponibles ou que l’approbation manuelle est la seule voie.Règles de livraison :target: "dm"envoie les invites d’approbation uniquement aux DM des approbateurs résolustarget: "channel"renvoie l’invite au chat/sujet Telegram d’originetarget: "both"envoie aux DM des approbateurs et au chat/sujet d’origine
/approve ni les boutons d’approbation Telegram.Comportement de résolution des approbations :- les ID préfixés par
plugin:sont toujours résolus via les approbations de plugin. - les autres ID essaient d’abord
exec.approval.resolve. - si Telegram est aussi autorisé pour les approbations de plugin et que gateway indique
que l’approbation exec est inconnue/expirée, Telegram réessaie une fois via
plugin.approval.resolve. - les refus/erreurs d’approbation exec réels ne retombent pas silencieusement sur la résolution d’approbation de plugin.
channel ou both uniquement dans des groupes/sujets de confiance. Lorsque l’invite arrive dans un sujet de forum, OpenClaw préserve le sujet à la fois pour l’invite d’approbation et pour le suivi après approbation. Les approbations exec expirent après 30 minutes par défaut.Les boutons d’approbation intégrés dépendent aussi du fait que channels.telegram.capabilities.inlineButtons autorise la surface cible (dm, group ou all).Documentation associée : Approbations execContrôles des réponses d’erreur
Lorsque l’agent rencontre une erreur de livraison ou de fournisseur, Telegram peut soit répondre avec le texte d’erreur, soit le supprimer. Deux clés de configuration contrôlent ce comportement :| Clé | Valeurs | Par défaut | Description |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply envoie un message d’erreur convivial dans le chat. silent supprime entièrement les réponses d’erreur. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Temps minimal entre deux réponses d’erreur au même chat. Empêche le spam d’erreurs pendant les pannes. |
Dépannage
Le bot ne répond pas aux messages de groupe sans mention
Le bot ne répond pas aux messages de groupe sans mention
- Si
requireMention=false, le mode confidentialité Telegram doit autoriser une visibilité complète.- BotFather :
/setprivacy-> Désactiver - puis supprimer + réajouter le bot au groupe
- BotFather :
openclaw channels statusavertit lorsque la configuration attend des messages de groupe sans mention.openclaw channels status --probepeut vérifier des ID de groupe numériques explicites ; le joker"*"ne peut pas être sondé pour l’appartenance.- test rapide de session :
/activation always.
Le bot ne voit pas du tout les messages de groupe
Le bot ne voit pas du tout les messages de groupe
- lorsque
channels.telegram.groupsexiste, le groupe doit être listé (ou inclure"*") - vérifiez l’appartenance du bot au groupe
- consultez les journaux :
openclaw logs --followpour les raisons d’ignorance
Les commandes fonctionnent partiellement ou pas du tout
Les commandes fonctionnent partiellement ou pas du tout
- autorisez votre identité d’expéditeur (appairage et/ou
allowFromnumérique) - l’autorisation des commandes s’applique toujours même lorsque la politique de groupe est
open setMyCommands failedavecBOT_COMMANDS_TOO_MUCHsignifie que le menu natif a trop d’entrées ; réduisez les commandes personnalisées/de plugin/de Skills ou désactivez les menus natifssetMyCommands failedavec des erreurs réseau/fetch indique généralement des problèmes d’accessibilité DNS/HTTPS versapi.telegram.org
Polling ou instabilité réseau
Polling ou instabilité réseau
- Node 22+ + fetch/proxy personnalisé peuvent déclencher un comportement d’abandon immédiat si les types AbortSignal ne correspondent pas.
- Certains hôtes résolvent
api.telegram.orgvers IPv6 en premier ; une sortie IPv6 défectueuse peut provoquer des échecs intermittents de Telegram API. - Si les journaux incluent
TypeError: fetch failedouNetwork request for 'getUpdates' failed!, OpenClaw réessaie désormais ces cas comme des erreurs réseau récupérables. - Sur des hôtes VPS avec sortie directe/TLS instable, faites passer les appels Telegram API via
channels.telegram.proxy:
- Node 22+ utilise par défaut
autoSelectFamily=true(sauf WSL2) etdnsResultOrder=ipv4first. - Si votre hôte est WSL2 ou fonctionne explicitement mieux avec un comportement IPv4 uniquement, forcez la sélection de famille :
- Les réponses de plage de benchmark RFC 2544 (
198.18.0.0/15) sont déjà autorisées par défaut pour les téléchargements de médias Telegram. Si un faux IP ou un proxy transparent de confiance réécritapi.telegram.orgvers une autre adresse privée/interne/spéciale lors des téléchargements de médias, vous pouvez activer le contournement réservé à Telegram :
- Le même opt-in est disponible par compte dans
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - Si votre proxy résout les hôtes média Telegram en
198.18.x.x, laissez d’abord le drapeau dangereux désactivé. Les médias Telegram autorisent déjà la plage de benchmark RFC 2544 par défaut.
- Remplacements via variables d’environnement (temporaires) :
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- Validez les réponses DNS :
Pointeurs de référence de configuration Telegram
Référence principale :-
channels.telegram.enabled: activer/désactiver le démarrage du canal. -
channels.telegram.botToken: jeton du bot (BotFather). -
channels.telegram.tokenFile: lire le jeton depuis un chemin de fichier ordinaire. Les liens symboliques sont rejetés. -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(par défaut : pairing). -
channels.telegram.allowFrom: liste d’autorisation DM (ID utilisateur Telegram numériques).allowlistexige au moins un ID d’expéditeur.openexige"*".openclaw doctor --fixpeut résoudre les anciennes entrées@usernameen ID et peut récupérer des entrées de liste d’autorisation à partir des fichiers du magasin d’appairage dans les flux de migration de liste d’autorisation. -
channels.telegram.actions.poll: activer ou désactiver la création de sondages Telegram (activé par défaut ; nécessite toujourssendMessage). -
channels.telegram.defaultTo: cible Telegram par défaut utilisée par le CLI--deliverlorsqu’aucun--reply-toexplicite n’est fourni. -
channels.telegram.groupPolicy:open | allowlist | disabled(par défaut : allowlist). -
channels.telegram.groupAllowFrom: liste d’autorisation des expéditeurs de groupe (ID utilisateur Telegram numériques).openclaw doctor --fixpeut résoudre les anciennes entrées@usernameen ID. Les entrées non numériques sont ignorées au moment de l’authentification. L’authentification de groupe n’utilise pas de repli sur le magasin d’appairage DM (2026.2.25+). -
Priorité multi-comptes :
- Lorsque deux ID de compte ou plus sont configurés, définissez
channels.telegram.defaultAccount(ou incluezchannels.telegram.accounts.default) pour rendre le routage par défaut explicite. - Si aucun n’est défini, OpenClaw retombe sur le premier ID de compte normalisé et
openclaw doctorémet un avertissement. channels.telegram.accounts.default.allowFrometchannels.telegram.accounts.default.groupAllowFromne s’appliquent qu’au comptedefault.- Les comptes nommés héritent de
channels.telegram.allowFrometchannels.telegram.groupAllowFromlorsque les valeurs au niveau du compte ne sont pas définies. - Les comptes nommés n’héritent pas de
channels.telegram.accounts.default.allowFrom/groupAllowFrom.
- Lorsque deux ID de compte ou plus sont configurés, définissez
-
channels.telegram.groups: valeurs par défaut par groupe + liste d’autorisation (utilisez"*"pour des valeurs par défaut globales).channels.telegram.groups.<id>.groupPolicy: remplacement par groupe pour groupPolicy (open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: valeur par défaut du contrôle par mention.channels.telegram.groups.<id>.skills: filtre Skills (omission = tous les Skills, vide = aucun).channels.telegram.groups.<id>.allowFrom: remplacement de la liste d’autorisation des expéditeurs par groupe.channels.telegram.groups.<id>.systemPrompt: prompt système supplémentaire pour le groupe.channels.telegram.groups.<id>.enabled: désactive le groupe lorsquefalse.channels.telegram.groups.<id>.topics.<threadId>.*: remplacements par sujet (champs de groupe +agentIdréservé au sujet).channels.telegram.groups.<id>.topics.<threadId>.agentId: route ce sujet vers un agent spécifique (remplace le routage au niveau du groupe et des liaisons).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: remplacement par sujet pour groupPolicy (open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: remplacement du contrôle par mention par sujet. -
bindings[]de niveau supérieur avectype: "acp"et ID de sujet canoniquechatId:topic:topicIddansmatch.peer.id: champs de liaison ACP persistante par sujet (voir Agents ACP). -
channels.telegram.direct.<id>.topics.<threadId>.agentId: route les sujets DM vers un agent spécifique (même comportement que les sujets de forum). -
channels.telegram.execApprovals.enabled: active Telegram comme client d’approbation exec basé sur le chat pour ce compte. -
channels.telegram.execApprovals.approvers: ID utilisateur Telegram autorisés à approuver ou refuser des demandes exec. Facultatif lorsquechannels.telegram.allowFromou unchannels.telegram.defaultTodirect identifie déjà le propriétaire. -
channels.telegram.execApprovals.target:dm | channel | both(par défaut :dm).channeletbothpréservent le sujet Telegram d’origine lorsqu’il est présent. -
channels.telegram.execApprovals.agentFilter: filtre facultatif sur les ID d’agent pour les invites d’approbation transférées. -
channels.telegram.execApprovals.sessionFilter: filtre facultatif sur les clés de session (sous-chaîne ou regex) pour les invites d’approbation transférées. -
channels.telegram.accounts.<account>.execApprovals: remplacement par compte pour le routage des approbations exec Telegram et l’autorisation des approbateurs. -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(par défaut : allowlist). -
channels.telegram.accounts.<account>.capabilities.inlineButtons: remplacement par compte. -
channels.telegram.commands.nativeSkills: activer/désactiver les commandes natives de Skills Telegram. -
channels.telegram.replyToMode:off | first | all(par défaut :off). -
channels.telegram.textChunkLimit: taille de segmentation sortante (caractères). -
channels.telegram.chunkMode:length(par défaut) ounewlinepour segmenter sur les lignes vides (frontières de paragraphe) avant la segmentation par longueur. -
channels.telegram.linkPreview: activer/désactiver les aperçus de liens pour les messages sortants (par défaut : true). -
channels.telegram.streaming:off | partial | block | progress(aperçu de flux en direct ; par défaut :partial;progresscorrespond àpartial;blockest une compatibilité héritée avec le mode d’aperçu). Le flux d’aperçu Telegram utilise un unique message d’aperçu modifié sur place. -
channels.telegram.mediaMaxMb: limite de médias Telegram entrants/sortants (MB, par défaut : 100). -
channels.telegram.retry: politique de nouvelle tentative pour les helpers d’envoi Telegram (CLI/outils/actions) sur les erreurs API sortantes récupérables (tentatives, minDelayMs, maxDelayMs, jitter). -
channels.telegram.network.autoSelectFamily: remplace Node autoSelectFamily (true=activer, false=désactiver). Activé par défaut sur Node 22+, avec WSL2 désactivé par défaut. -
channels.telegram.network.dnsResultOrder: remplace l’ordre des résultats DNS (ipv4firstouverbatim).ipv4firstpar défaut sur Node 22+. -
channels.telegram.network.dangerouslyAllowPrivateNetwork: opt-in dangereux pour les environnements de faux IP ou proxy transparent de confiance où les téléchargements de médias Telegram résolventapi.telegram.orgvers des adresses privées/internes/spéciales en dehors de la plage de benchmark RFC 2544 autorisée par défaut. -
channels.telegram.proxy: URL du proxy pour les appels Bot API (SOCKS/HTTP). -
channels.telegram.webhookUrl: active le mode webhook (nécessitechannels.telegram.webhookSecret). -
channels.telegram.webhookSecret: secret webhook (obligatoire lorsquewebhookUrlest défini). -
channels.telegram.webhookPath: chemin webhook local (par défaut/telegram-webhook). -
channels.telegram.webhookHost: hôte de liaison du webhook local (par défaut127.0.0.1). -
channels.telegram.webhookPort: port de liaison du webhook local (par défaut8787). -
channels.telegram.actions.reactions: restreint les réactions d’outil Telegram. -
channels.telegram.actions.sendMessage: restreint les envois de message d’outil Telegram. -
channels.telegram.actions.deleteMessage: restreint les suppressions de message d’outil Telegram. -
channels.telegram.actions.sticker: restreint les actions de sticker Telegram — envoi et recherche (par défaut : false). -
channels.telegram.reactionNotifications:off | own | all— contrôle quelles réactions déclenchent des événements système (par défaut :ownsi non défini). -
channels.telegram.reactionLevel:off | ack | minimal | extensive— contrôle la capacité de réaction de l’agent (par défaut :minimalsi non défini). -
channels.telegram.errorPolicy:reply | silent— contrôle le comportement des réponses d’erreur (par défaut :reply). Remplacements par compte/groupe/sujet pris en charge. -
channels.telegram.errorCooldownMs: nombre minimal de ms entre deux réponses d’erreur au même chat (par défaut :60000). Empêche le spam d’erreurs pendant les pannes. - Référence de configuration - Telegram
- démarrage/authentification :
enabled,botToken,tokenFile,accounts.*(tokenFiledoit pointer vers un fichier ordinaire ; les liens symboliques sont rejetés) - contrôle d’accès :
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*,bindings[]de niveau supérieur (type: "acp") - approbations exec :
execApprovals,accounts.*.execApprovals - commande/menu :
commands.native,commands.nativeSkills,customCommands - fils/réponses :
replyToMode - streaming :
streaming(aperçu),blockStreaming - formatage/livraison :
textChunkLimit,chunkMode,linkPreview,responsePrefix - média/réseau :
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - webhook :
webhookUrl,webhookSecret,webhookPath,webhookHost - actions/capacités :
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - réactions :
reactionNotifications,reactionLevel - erreurs :
errorPolicy,errorCooldownMs - écritures/historique :
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit