Telegram (Bot API)
Stato: pronto per la produzione per DM bot + gruppi tramite grammY. Il long polling è la modalità predefinita; la modalità Webhook è facoltativa.Abbinamento
Risoluzione dei problemi del canale
Configurazione del Gateway
Configurazione rapida
Crea il token del bot in BotFather
@BotFather).Esegui /newbot, segui le istruzioni e salva il token.Configura il token e il criterio DM
TELEGRAM_BOT_TOKEN=... (solo account predefinito).
Telegram non usa openclaw channels login telegram; configura il token nel config/env, quindi avvia il gateway.TELEGRAM_BOT_TOKEN si applica solo all’account predefinito.Impostazioni lato Telegram
Modalità privacy e visibilità nei gruppi
Modalità privacy e visibilità nei gruppi
- disabilitare la modalità privacy tramite
/setprivacy, oppure - rendere il bot amministratore del gruppo.
Permessi del gruppo
Permessi del gruppo
Impostazioni utili di BotFather
Impostazioni utili di BotFather
/setjoingroupsper consentire/negare l’aggiunta ai gruppi/setprivacyper il comportamento di visibilità nei gruppi
Controllo degli accessi e attivazione
- Criterio DM
- Criterio di gruppo e allowlist
- Comportamento delle menzioni
channels.telegram.dmPolicy controlla l’accesso ai messaggi diretti:pairing(predefinito)allowlist(richiede almeno un ID mittente inallowFrom)open(richiede cheallowFromincluda"*")disabled
channels.telegram.allowFrom accetta ID utente Telegram numerici. I prefissi telegram: / tg: sono accettati e normalizzati.
dmPolicy: "allowlist" con allowFrom vuoto blocca tutti i DM ed è rifiutato dalla validazione della configurazione.
La configurazione richiede solo ID utente numerici.
Se hai effettuato un aggiornamento e il tuo config contiene voci allowlist @username, esegui openclaw doctor --fix per risolverle (best-effort; richiede un token bot Telegram).
Se in precedenza facevi affidamento sui file allowlist del pairing-store, openclaw doctor --fix può recuperare le voci in channels.telegram.allowFrom nei flussi allowlist (ad esempio quando dmPolicy: "allowlist" non ha ancora ID espliciti).Per i bot con un solo proprietario, preferisci dmPolicy: "allowlist" con ID allowFrom numerici espliciti per mantenere duraturo il criterio di accesso nella configurazione (invece di dipendere da approvazioni di abbinamento precedenti).Confusione comune: l’approvazione dell’abbinamento DM non significa “questo mittente è autorizzato ovunque”.
L’abbinamento concede solo l’accesso ai DM. L’autorizzazione del mittente nei gruppi continua invece a dipendere da allowlist esplicite nel config.
Se vuoi che “io sia autorizzato una volta sola e che funzionino sia i DM sia i comandi nei gruppi”, inserisci il tuo ID utente Telegram numerico in channels.telegram.allowFrom.Trovare il tuo ID utente Telegram
Più sicuro (nessun bot di terze parti):- Invia un DM al tuo bot.
- Esegui
openclaw logs --follow. - Leggi
from.id.
@userinfobot o @getidsbot.Comportamento di runtime
- Telegram è gestito dal processo gateway.
- Il routing è deterministico: le risposte in ingresso da Telegram tornano su Telegram (il modello non sceglie i canali).
- I messaggi in ingresso sono normalizzati nell’envelope condivisa del canale con metadati di risposta e segnaposto per i media.
- Le sessioni di gruppo sono isolate per ID gruppo. I topic del forum aggiungono
:topic:<threadId>per mantenere i topic isolati. - I messaggi DM possono includere
message_thread_id; OpenClaw li instrada con chiavi di sessione sensibili al thread e preserva l’ID thread per le risposte. - Il long polling usa il runner grammY con sequenziamento per chat/per thread. La concorrenza complessiva del runner sink usa
agents.defaults.maxConcurrent. - La Telegram Bot API non supporta le conferme di lettura (
sendReadReceiptsnon si applica).
Riferimento funzionalità
Anteprima del flusso live (modifiche ai messaggi)
Anteprima del flusso live (modifiche ai messaggi)
- chat dirette: messaggio di anteprima +
editMessageText - gruppi/topic: messaggio di anteprima +
editMessageText
channels.telegram.streamingèoff | partial | block | progress(predefinito:partial)progresscorrisponde apartialsu Telegram (compatibilità con la denominazione cross-channel)- i valori legacy
channels.telegram.streamModee booleanistreamingsono mappati automaticamente
- DM: OpenClaw mantiene lo stesso messaggio di anteprima ed esegue una modifica finale sul posto (nessun secondo messaggio)
- gruppo/topic: OpenClaw mantiene lo stesso messaggio di anteprima ed esegue una modifica finale sul posto (nessun secondo messaggio)
sendMessage + editMessageText.Flusso di ragionamento solo Telegram:/reasoning streaminvia il ragionamento all’anteprima live durante la generazione- la risposta finale viene inviata senza testo di ragionamento
Formattazione e fallback HTML
Formattazione e fallback HTML
parse_mode: "HTML".- Il testo in stile Markdown viene renderizzato in HTML sicuro per Telegram.
- L’HTML grezzo del modello viene escaped per ridurre gli errori di parsing di Telegram.
- Se Telegram rifiuta l’HTML parsato, OpenClaw ritenta come testo semplice.
channels.telegram.linkPreview: false.Comandi nativi e comandi personalizzati
Comandi nativi e comandi personalizzati
setMyCommands.Valori predefiniti dei comandi nativi:commands.native: "auto"abilita i comandi nativi per Telegram
- i nomi sono normalizzati (rimozione di
/iniziale, minuscolo) - pattern valido:
a-z,0-9,_, lunghezza1..32 - i comandi personalizzati non possono sovrascrivere i comandi nativi
- conflitti/duplicati vengono saltati e registrati nei log
- i comandi personalizzati sono solo voci di menu; non implementano automaticamente il comportamento
- i comandi plugin/Skills possono comunque funzionare se digitati, anche se non sono mostrati nel menu Telegram
setMyCommands failedconBOT_COMMANDS_TOO_MUCHsignifica che il menu Telegram continua a essere troppo pieno dopo il trimming; riduci i comandi plugin/Skills/personalizzati o disabilitachannels.telegram.commands.native.setMyCommands failedcon errori di rete/fetch di solito significa che il DNS/HTTPS in uscita versoapi.telegram.orgè bloccato.
Comandi di abbinamento dispositivo (plugin device-pair)
Quando il plugin device-pair è installato:/pairgenera un codice di configurazione- incolla il codice nell’app iOS
/pair pendingelenca le richieste in sospeso (inclusi ruolo/scopes)- approva la richiesta:
/pair approve <requestId>per l’approvazione esplicita/pair approvequando c’è una sola richiesta in sospeso/pair approve latestper la più recente
scopes: []; qualsiasi token operatore trasferito resta limitato a operator.approvals, operator.read, operator.talk.secrets e operator.write. I controlli degli scope bootstrap usano prefissi basati sul ruolo, quindi tale allowlist dell’operatore soddisfa solo le richieste dell’operatore; i ruoli non operatore richiedono comunque scopes sotto il proprio prefisso di ruolo.Se un dispositivo riprova con dettagli di autenticazione modificati (ad esempio ruolo/scopes/chiave pubblica), la precedente richiesta in sospeso viene sostituita e la nuova richiesta usa un requestId diverso. Esegui di nuovo /pair pending prima di approvare.Maggiori dettagli: Abbinamento.Pulsanti inline
Pulsanti inline
offdmgroupallallowlist(predefinito)
capabilities: ["inlineButtons"] corrisponde a inlineButtons: "all".Esempio di azione messaggio:callback_data: <value>Azioni messaggio Telegram per agenti e automazione
Azioni messaggio Telegram per agenti e automazione
sendMessage(to,content, facoltativimediaUrl,replyToMessageId,messageThreadId)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,content)createForumTopic(chatId,name, facoltativiiconColor,iconCustomEmojiId)
send, react, delete, edit, sticker, sticker-search, topic-create).Controlli di gating:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(predefinito: disabilitato)
edit e topic-create sono attualmente abilitati per impostazione predefinita e non hanno toggle channels.telegram.actions.* separati.
Gli invii a runtime usano l’istantanea attiva di config/segreti (avvio/ricarica), quindi i percorsi azione non eseguono una nuova risoluzione ad hoc di SecretRef per ogni invio.Semantica della rimozione delle reazioni: /tools/reactionsTag di threading delle risposte
Tag di threading delle risposte
[[reply_to_current]]risponde al messaggio che ha attivato l’azione[[reply_to:<id>]]risponde a uno specifico ID messaggio Telegram
channels.telegram.replyToMode controlla la gestione:off(predefinito)firstall
off disabilita il threading implicito delle risposte. I tag espliciti [[reply_to_*]] vengono comunque rispettati.Topic del forum e comportamento dei thread
Topic del forum e comportamento dei thread
- le chiavi di sessione del topic aggiungono
:topic:<threadId> - le risposte e la digitazione sono indirizzate al thread del topic
- percorso config del topic:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1):- gli invii di messaggi omettono
message_thread_id(Telegram rifiutasendMessage(...thread_id=1)) - le azioni di digitazione includono comunque
message_thread_id
requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy).
agentId è solo del topic e non viene ereditato dalle impostazioni predefinite del gruppo.Instradamento agente per topic: ogni topic può essere instradato a un agente diverso impostando agentId nel config del topic. Questo assegna a ogni topic il proprio workspace, memoria e sessione isolati. Esempio:agent:zu:telegram:group:-1001234567890:topic:3Binding persistente del topic ACP: i topic del forum possono fissare le sessioni harness ACP tramite binding ACP tipizzati di primo livello:bindings[]contype: "acp"ematch.channel: "telegram"
/acp spawn <agent> --thread here|autopuò associare il topic Telegram corrente a una nuova sessione ACP.- I messaggi successivi nel topic vengono instradati direttamente alla sessione ACP associata (senza bisogno di
/acp steer). - OpenClaw fissa il messaggio di conferma dello spawn nel topic dopo un binding riuscito.
- Richiede
channels.telegram.threadBindings.spawnAcpSessions=true.
MessageThreadIdIsForum
- le chat private con
message_thread_idmantengono l’instradamento DM ma usano chiavi di sessione e destinazioni di risposta sensibili al thread.
Audio, video e sticker
Audio, video e sticker
Messaggi audio
Telegram distingue tra note vocali e file audio.- predefinito: comportamento da file audio
- tag
[[audio_as_voice]]nella risposta dell’agente per forzare l’invio come nota vocale
Messaggi video
Telegram distingue tra file video e video note.Esempio di azione messaggio:Sticker
Gestione degli sticker in ingresso:- WEBP statico: scaricato ed elaborato (segnaposto
<media:sticker>) - TGS animato: ignorato
- WEBM video: ignorato
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
Notifiche di reazione
Notifiche di reazione
message_reaction (separati dai payload dei messaggi).Quando abilitato, OpenClaw mette in coda eventi di sistema come:Reazione Telegram aggiunta: 👍 da Alice (@alice) al msg 42
channels.telegram.reactionNotifications:off | own | all(predefinito:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(predefinito:minimal)
ownsignifica solo reazioni dell’utente ai messaggi inviati dal bot (best-effort tramite cache dei messaggi inviati).- Gli eventi di reazione rispettano comunque i controlli di accesso Telegram (
dmPolicy,allowFrom,groupPolicy,groupAllowFrom); i mittenti non autorizzati vengono scartati. - Telegram non fornisce ID thread negli aggiornamenti di reazione.
- i gruppi non forum vengono instradati alla sessione della chat di gruppo
- i gruppi forum vengono instradati alla sessione del topic generale del gruppo (
:topic:1), non all’esatto topic di origine
allowed_updates per polling/Webhook include automaticamente message_reaction.Reazioni di ack
Reazioni di ack
ackReaction invia un’emoji di conferma mentre OpenClaw sta elaborando un messaggio in ingresso.Ordine di risoluzione:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- fallback all’emoji identità dell’agente (
agents.list[].identity.emoji, altrimenti ”👀”)
- Telegram si aspetta emoji unicode (ad esempio ”👀”).
- Usa
""per disabilitare la reazione per un canale o account.
Scritture di configurazione da eventi e comandi Telegram
Scritture di configurazione da eventi e comandi Telegram
configWrites !== false).Le scritture attivate da Telegram includono:- eventi di migrazione del gruppo (
migrate_to_chat_id) per aggiornarechannels.telegram.groups /config sete/config unset(richiede l’abilitazione dei comandi)
Long polling vs Webhook
Long polling vs Webhook
- imposta
channels.telegram.webhookUrl - imposta
channels.telegram.webhookSecret(obbligatorio quando è impostato l’URL Webhook) channels.telegram.webhookPathfacoltativo (predefinito/telegram-webhook)channels.telegram.webhookHostfacoltativo (predefinito127.0.0.1)channels.telegram.webhookPortfacoltativo (predefinito8787)
127.0.0.1:8787.Se il tuo endpoint pubblico è diverso, metti un reverse proxy davanti e punta webhookUrl all’URL pubblico.
Imposta webhookHost (ad esempio 0.0.0.0) quando hai intenzionalmente bisogno di ingress esterno.Limiti, retry e destinazioni CLI
Limiti, retry e destinazioni CLI
- il valore predefinito di
channels.telegram.textChunkLimitè 4000. channels.telegram.chunkMode="newline"preferisce i confini dei paragrafi (righe vuote) prima della suddivisione per lunghezza.channels.telegram.mediaMaxMb(predefinito 100) impone un limite alla dimensione dei media Telegram in ingresso e in uscita.channels.telegram.timeoutSecondssovrascrive il timeout del client Telegram API (se non impostato, si applica il valore predefinito di grammY).- la cronologia del contesto di gruppo usa
channels.telegram.historyLimitomessages.groupChat.historyLimit(predefinito 50);0la disabilita. - il contesto supplementare di risposta/citazione/inoltro viene attualmente passato così come ricevuto.
- le allowlist Telegram limitano principalmente chi può attivare l’agente, non costituiscono un confine completo di redazione del contesto supplementare.
- controlli della cronologia DM:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- la configurazione
channels.telegram.retrysi applica agli helper di invio Telegram (CLI/tools/actions) per gli errori recuperabili della API in uscita.
openclaw message poll e supportano i topic del forum:--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-idper i topic del forum (oppure usa una destinazione:topic:)
--buttonsper tastiere inline quandochannels.telegram.capabilities.inlineButtonslo consente--force-documentper inviare immagini e GIF in uscita come documenti invece che come foto compresse o caricamenti di media animati
channels.telegram.actions.sendMessage=falsedisabilita i messaggi Telegram in uscita, inclusi i pollchannels.telegram.actions.poll=falsedisabilita la creazione di poll Telegram lasciando abilitati i normali invii
Approvazioni exec in Telegram
Approvazioni exec in Telegram
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(facoltativo; usa come fallback gli ID proprietario numerici dedotti daallowFrome dadefaultTodiretto quando possibile)channels.telegram.execApprovals.target(dm|channel|both, predefinito:dm)agentFilter,sessionFilter
enabled non è impostato o è "auto" e può essere risolto almeno un approvatore, da execApprovals.approvers oppure dalla configurazione numerica del proprietario dell’account (allowFrom e defaultTo del messaggio diretto). Imposta enabled: false per disabilitare esplicitamente Telegram come client di approvazione nativo. In caso contrario, le richieste di approvazione usano come fallback altre route di approvazione configurate o il criterio di fallback delle approvazioni exec.Telegram rende anche i pulsanti di approvazione condivisi usati dagli altri canali chat. L’adapter Telegram nativo aggiunge principalmente l’instradamento ai DM degli approvatori, il fanout verso canali/topic e gli indicatori di digitazione prima della consegna.
Quando questi pulsanti sono presenti, sono la UX di approvazione primaria; OpenClaw
dovrebbe includere un comando manuale /approve solo quando il risultato dello strumento indica
che le approvazioni via chat non sono disponibili o che l’approvazione manuale è l’unico percorso.Regole di consegna:target: "dm"invia i prompt di approvazione solo ai DM degli approvatori risoltitarget: "channel"invia il prompt di nuovo alla chat/topic Telegram di originetarget: "both"invia ai DM degli approvatori e alla chat/topic di origine
/approve e non possono usare i pulsanti di approvazione Telegram.Comportamento di risoluzione delle approvazioni:- Gli ID con prefisso
plugin:vengono sempre risolti tramite le approvazioni del plugin. - Gli altri ID di approvazione provano prima
exec.approval.resolve. - Se Telegram è autorizzato anche per le approvazioni del plugin e il gateway dice
che l’approvazione exec è sconosciuta/scaduta, Telegram ritenta una volta tramite
plugin.approval.resolve. - I dinieghi/errori reali delle approvazioni exec non ricadono silenziosamente sulla risoluzione delle approvazioni del plugin.
channel o both solo in gruppi/topic fidati. Quando il prompt arriva in un topic del forum, OpenClaw preserva il topic sia per il prompt di approvazione sia per il follow-up post-approvazione. Le approvazioni exec scadono dopo 30 minuti per impostazione predefinita.I pulsanti di approvazione inline dipendono anche dal fatto che channels.telegram.capabilities.inlineButtons consenta la superficie di destinazione (dm, group o all).Documentazione correlata: Approvazioni execControlli delle risposte di errore
Quando l’agente incontra un errore di consegna o del provider, Telegram può rispondere con il testo dell’errore oppure sopprimerlo. Due chiavi di configurazione controllano questo comportamento:| Key | Values | Default | Description |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply invia un messaggio di errore amichevole nella chat. silent sopprime completamente le risposte di errore. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Tempo minimo tra le risposte di errore nella stessa chat. Previene lo spam di errori durante le interruzioni. |
Risoluzione dei problemi
Il bot non risponde ai messaggi di gruppo senza menzione
Il bot non risponde ai messaggi di gruppo senza menzione
- Se
requireMention=false, la modalità privacy di Telegram deve consentire piena visibilità.- BotFather:
/setprivacy-> Disable - quindi rimuovi e riaggiungi il bot al gruppo
- BotFather:
openclaw channels statusavvisa quando la configurazione prevede messaggi di gruppo senza menzione.openclaw channels status --probepuò controllare ID di gruppo numerici espliciti; il carattere jolly"*"non può essere verificato come appartenenza.- test rapido della sessione:
/activation always.
Il bot non vede affatto i messaggi di gruppo
Il bot non vede affatto i messaggi di gruppo
- quando esiste
channels.telegram.groups, il gruppo deve essere elencato (oppure includere"*") - verifica che il bot sia membro del gruppo
- controlla i log:
openclaw logs --followper i motivi di esclusione
I comandi funzionano parzialmente o non funzionano affatto
I comandi funzionano parzialmente o non funzionano affatto
- autorizza la tua identità mittente (abbinamento e/o
allowFromnumerico) - l’autorizzazione dei comandi si applica comunque anche quando il criterio di gruppo è
open setMyCommands failedconBOT_COMMANDS_TOO_MUCHsignifica che il menu nativo ha troppe voci; riduci i comandi plugin/Skills/personalizzati o disabilita i menu nativisetMyCommands failedcon errori di rete/fetch di solito indica problemi di raggiungibilità DNS/HTTPS versoapi.telegram.org
Instabilità del polling o della rete
Instabilità del polling o della rete
- Node 22+ + fetch/proxy personalizzato possono attivare un comportamento di abort immediato se i tipi AbortSignal non corrispondono.
- Alcuni host risolvono
api.telegram.orgprima in IPv6; un’uscita IPv6 difettosa può causare errori intermittenti della Telegram API. - Se i log includono
TypeError: fetch failedoNetwork request for 'getUpdates' failed!, OpenClaw ora li ritenta come errori di rete recuperabili. - Su host VPS con uscita diretta/TLS instabile, instrada le chiamate Telegram API tramite
channels.telegram.proxy:
- Node 22+ usa per impostazione predefinita
autoSelectFamily=true(eccetto WSL2) ednsResultOrder=ipv4first. - Se il tuo host è WSL2 o funziona esplicitamente meglio con comportamento solo IPv4, forza la selezione della famiglia:
- Le risposte nell’intervallo benchmark RFC 2544 (
198.18.0.0/15) sono già consentite per impostazione predefinita per i download dei media Telegram. Se un fake-IP affidabile o un proxy trasparente riscriveapi.telegram.orgverso un altro indirizzo privato/interno/special-use durante i download dei media, puoi attivare il bypass solo per Telegram:
- Lo stesso opt-in è disponibile per account in
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - Se il tuo proxy risolve gli host media Telegram in
198.18.x.x, lascia prima disattivato il flag pericoloso. I media Telegram già consentono per impostazione predefinita l’intervallo benchmark RFC 2544.
- Override ambiente (temporanei):
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- Convalida le risposte DNS:
Puntatori al riferimento della configurazione Telegram
Riferimento principale:-
channels.telegram.enabled: abilita/disabilita l’avvio del canale. -
channels.telegram.botToken: token del bot (BotFather). -
channels.telegram.tokenFile: legge il token da un normale percorso file. I symlink vengono rifiutati. -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(predefinito: pairing). -
channels.telegram.allowFrom: allowlist DM (ID utente Telegram numerici).allowlistrichiede almeno un ID mittente.openrichiede"*".openclaw doctor --fixpuò risolvere le voci legacy@usernamein ID e può recuperare voci allowlist dai file pairing-store nei flussi di migrazione allowlist. -
channels.telegram.actions.poll: abilita o disabilita la creazione di poll Telegram (predefinito: abilitato; richiede comunquesendMessage). -
channels.telegram.defaultTo: destinazione Telegram predefinita usata da CLI--deliverquando non viene fornito alcun--reply-toesplicito. -
channels.telegram.groupPolicy:open | allowlist | disabled(predefinito: allowlist). -
channels.telegram.groupAllowFrom: allowlist dei mittenti nei gruppi (ID utente Telegram numerici).openclaw doctor --fixpuò risolvere le voci legacy@usernamein ID. Le voci non numeriche vengono ignorate al momento dell’autorizzazione. L’autorizzazione dei gruppi non usa il fallback del pairing-store DM (2026.2.25+). -
Precedenza multi-account:
- Quando sono configurati due o più ID account, imposta
channels.telegram.defaultAccount(oppure includichannels.telegram.accounts.default) per rendere esplicito l’instradamento predefinito. - Se nessuno dei due è impostato, OpenClaw usa come fallback il primo ID account normalizzato e
openclaw doctormostra un avviso. channels.telegram.accounts.default.allowFromechannels.telegram.accounts.default.groupAllowFromsi applicano solo all’accountdefault.- Gli account con nome ereditano
channels.telegram.allowFromechannels.telegram.groupAllowFromquando i valori a livello di account non sono impostati. - Gli account con nome non ereditano
channels.telegram.accounts.default.allowFrom/groupAllowFrom.
- Quando sono configurati due o più ID account, imposta
-
channels.telegram.groups: valori predefiniti per gruppo + allowlist (usa"*"per i valori predefiniti globali).channels.telegram.groups.<id>.groupPolicy: override per gruppo di groupPolicy (open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: valore predefinito del gating per menzione.channels.telegram.groups.<id>.skills: filtro Skills (omesso = tutte le Skills, vuoto = nessuna).channels.telegram.groups.<id>.allowFrom: override dell’allowlist dei mittenti per gruppo.channels.telegram.groups.<id>.systemPrompt: system prompt aggiuntivo per il gruppo.channels.telegram.groups.<id>.enabled: disabilita il gruppo quando èfalse.channels.telegram.groups.<id>.topics.<threadId>.*: override per topic (campi del gruppo +agentIdsolo-topic).channels.telegram.groups.<id>.topics.<threadId>.agentId: instrada questo topic a un agente specifico (sovrascrive l’instradamento a livello di gruppo e tramite binding).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: override per topic di groupPolicy (open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: override per topic del gating per menzione. -
bindings[]di primo livello contype: "acp"e ID topic canonicochatId:topic:topicIdinmatch.peer.id: campi di binding persistente del topic ACP (vedi Agenti ACP). -
channels.telegram.direct.<id>.topics.<threadId>.agentId: instrada i topic DM a un agente specifico (stesso comportamento dei topic del forum). -
channels.telegram.execApprovals.enabled: abilita Telegram come client di approvazione exec basato su chat per questo account. -
channels.telegram.execApprovals.approvers: ID utente Telegram autorizzati ad approvare o negare richieste exec. Facoltativo quandochannels.telegram.allowFromo unchannels.telegram.defaultTodiretto identifica già il proprietario. -
channels.telegram.execApprovals.target:dm | channel | both(predefinito:dm).channelebothpreservano il topic Telegram di origine quando presente. -
channels.telegram.execApprovals.agentFilter: filtro facoltativo per ID agente per i prompt di approvazione inoltrati. -
channels.telegram.execApprovals.sessionFilter: filtro facoltativo per chiave sessione (sottostringa o regex) per i prompt di approvazione inoltrati. -
channels.telegram.accounts.<account>.execApprovals: override per account dell’instradamento delle approvazioni exec Telegram e dell’autorizzazione degli approvatori. -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(predefinito: allowlist). -
channels.telegram.accounts.<account>.capabilities.inlineButtons: override per account. -
channels.telegram.commands.nativeSkills: abilita/disabilita i comandi nativi Skills di Telegram. -
channels.telegram.replyToMode:off | first | all(predefinito:off). -
channels.telegram.textChunkLimit: dimensione dei chunk in uscita (caratteri). -
channels.telegram.chunkMode:length(predefinito) oppurenewlineper dividere sulle righe vuote (confini di paragrafo) prima del chunking per lunghezza. -
channels.telegram.linkPreview: attiva/disattiva le anteprime dei link per i messaggi in uscita (predefinito: true). -
channels.telegram.streaming:off | partial | block | progress(anteprima del flusso live; predefinito:partial;progresscorrisponde apartial;blockè compatibilità legacy con la modalità anteprima). Lo streaming di anteprima Telegram usa un singolo messaggio di anteprima che viene modificato sul posto. -
channels.telegram.mediaMaxMb: limite dei media Telegram in ingresso/uscita (MB, predefinito: 100). -
channels.telegram.retry: criterio di retry per gli helper di invio Telegram (CLI/tools/actions) sugli errori recuperabili della API in uscita (tentativi, minDelayMs, maxDelayMs, jitter). -
channels.telegram.network.autoSelectFamily: sovrascrive Node autoSelectFamily (true=abilita, false=disabilita). Per impostazione predefinita è abilitato su Node 22+, mentre su WSL2 è disabilitato per impostazione predefinita. -
channels.telegram.network.dnsResultOrder: sovrascrive l’ordine dei risultati DNS (ipv4firstoverbatim). Per impostazione predefinita èipv4firstsu Node 22+. -
channels.telegram.network.dangerouslyAllowPrivateNetwork: opt-in pericoloso per ambienti fidati fake-IP o transparent-proxy in cui i download dei media Telegram risolvonoapi.telegram.orgverso indirizzi privati/interni/special-use al di fuori dell’intervallo benchmark RFC 2544 consentito per impostazione predefinita. -
channels.telegram.proxy: URL proxy per le chiamate Bot API (SOCKS/HTTP). -
channels.telegram.webhookUrl: abilita la modalità Webhook (richiedechannels.telegram.webhookSecret). -
channels.telegram.webhookSecret: segreto Webhook (obbligatorio quando è impostatowebhookUrl). -
channels.telegram.webhookPath: percorso Webhook locale (predefinito/telegram-webhook). -
channels.telegram.webhookHost: host di bind del Webhook locale (predefinito127.0.0.1). -
channels.telegram.webhookPort: porta di bind del Webhook locale (predefinito8787). -
channels.telegram.actions.reactions: gating delle reazioni dello strumento Telegram. -
channels.telegram.actions.sendMessage: gating degli invii di messaggi dello strumento Telegram. -
channels.telegram.actions.deleteMessage: gating delle eliminazioni di messaggi dello strumento Telegram. -
channels.telegram.actions.sticker: gating delle azioni sticker Telegram — invio e ricerca (predefinito: false). -
channels.telegram.reactionNotifications:off | own | all— controlla quali reazioni attivano eventi di sistema (predefinito:ownse non impostato). -
channels.telegram.reactionLevel:off | ack | minimal | extensive— controlla la capacità di reazione dell’agente (predefinito:minimalse non impostato). -
channels.telegram.errorPolicy:reply | silent— controlla il comportamento delle risposte di errore (predefinito:reply). Sono supportati override per account/gruppo/topic. -
channels.telegram.errorCooldownMs: ms minimi tra risposte di errore nella stessa chat (predefinito:60000). Previene lo spam di errori durante le interruzioni. - Riferimento configurazione - Telegram
- avvio/autenticazione:
enabled,botToken,tokenFile,accounts.*(tokenFiledeve puntare a un file normale; i symlink vengono rifiutati) - controllo accessi:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*,bindings[]di primo livello (type: "acp") - approvazioni exec:
execApprovals,accounts.*.execApprovals - comandi/menu:
commands.native,commands.nativeSkills,customCommands - threading/risposte:
replyToMode - streaming:
streaming(anteprima),blockStreaming - formattazione/consegna:
textChunkLimit,chunkMode,linkPreview,responsePrefix - media/rete:
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - Webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - azioni/capacità:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - reazioni:
reactionNotifications,reactionLevel - errori:
errorPolicy,errorCooldownMs - scritture/cronologia:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit