Telegram (Bot API)
Estado: listo para producción para MD de bots + grupos mediante grammY. El sondeo largo es el modo predeterminado; el modo webhook es opcional.Pairing
La política predeterminada de MD para Telegram es pairing.
Channel troubleshooting
Diagnóstico entre canales y guías de reparación.
Gateway configuration
Patrones y ejemplos completos de configuración de canales.
Configuración rápida
Create the bot token in BotFather
Abre Telegram y chatea con @BotFather (confirma que el identificador sea exactamente
@BotFather).Ejecuta /newbot, sigue las indicaciones y guarda el token.Configure token and DM policy
TELEGRAM_BOT_TOKEN=... (solo cuenta predeterminada).
Telegram no usa openclaw channels login telegram; configura el token en config/env y luego inicia el gateway.El orden de resolución del token tiene en cuenta la cuenta. En la práctica, los valores de configuración tienen prioridad sobre la variable de entorno de respaldo, y
TELEGRAM_BOT_TOKEN solo se aplica a la cuenta predeterminada.Configuración en el lado de Telegram
Privacy mode and group visibility
Privacy mode and group visibility
Los bots de Telegram usan Privacy Mode de forma predeterminada, lo que limita qué mensajes de grupo reciben.Si el bot debe ver todos los mensajes del grupo, haz una de estas dos cosas:
- desactiva el modo de privacidad mediante
/setprivacy, o - convierte al bot en administrador del grupo.
Group permissions
Group permissions
El estado de administrador se controla en la configuración del grupo de Telegram.Los bots administradores reciben todos los mensajes del grupo, lo que resulta útil para un comportamiento siempre activo en grupos.
Helpful BotFather toggles
Helpful BotFather toggles
/setjoingroupspara permitir/denegar añadidos a grupos/setprivacypara el comportamiento de visibilidad en grupos
Control de acceso y activación
- DM policy
- Group policy and allowlists
- Mention behavior
channels.telegram.dmPolicy controla el acceso a mensajes directos:pairing(predeterminado)allowlist(requiere al menos un ID de remitente enallowFrom)open(requiere queallowFromincluya"*")disabled
channels.telegram.allowFrom acepta ID numéricos de usuario de Telegram. Los prefijos telegram: / tg: se aceptan y se normalizan.
dmPolicy: "allowlist" con allowFrom vacío bloquea todos los MD y la validación de configuración lo rechaza.
El onboarding acepta entrada @username y la resuelve a ID numéricos.
Si actualizaste y tu configuración contiene entradas de lista de permitidos @username, ejecuta openclaw doctor --fix para resolverlas (mejor esfuerzo; requiere un token de bot de Telegram).
Si antes dependías de archivos de lista de permitidos del almacén de pairing, openclaw doctor --fix puede recuperar entradas en channels.telegram.allowFrom en flujos de lista de permitidos (por ejemplo, cuando dmPolicy: "allowlist" aún no tiene ID explícitos).Para bots de un solo propietario, prefiere dmPolicy: "allowlist" con ID numéricos explícitos en allowFrom para mantener la política de acceso de forma duradera en la configuración (en lugar de depender de aprobaciones de pairing previas).Confusión habitual: aprobar el pairing de MD no significa “este remitente está autorizado en todas partes”.
El pairing concede acceso solo a MD. La autorización del remitente en grupos sigue viniendo de las listas de permitidos explícitas de la configuración.
Si quieres “estoy autorizado una vez y funcionan tanto los MD como los comandos de grupo”, coloca tu ID numérico de usuario de Telegram en channels.telegram.allowFrom.Encontrar tu ID de usuario de Telegram
Más seguro (sin bot de terceros):- Envía un MD a tu bot.
- Ejecuta
openclaw logs --follow. - Lee
from.id.
@userinfobot o @getidsbot.Comportamiento en tiempo de ejecución
- Telegram pertenece al proceso del gateway.
- El enrutamiento es determinista: las respuestas entrantes de Telegram vuelven a Telegram (el modelo no elige canales).
- Los mensajes entrantes se normalizan en la envoltura de canal compartida con metadatos de respuesta y marcadores de posición de medios.
- Las sesiones de grupo están aisladas por ID de grupo. Los temas de foros añaden
:topic:<threadId>para mantener el aislamiento entre temas. - Los mensajes de MD pueden llevar
message_thread_id; OpenClaw los enruta con claves de sesión conscientes del hilo y conserva el ID del hilo para las respuestas. - El sondeo largo usa grammY runner con secuenciación por chat/por hilo. La concurrencia general del receptor de runner usa
agents.defaults.maxConcurrent. - Telegram Bot API no admite confirmaciones de lectura (
sendReadReceiptsno se aplica).
Referencia de funciones
Live stream preview (message edits)
Live stream preview (message edits)
OpenClaw puede transmitir respuestas parciales en tiempo real:
- chats directos: mensaje de vista previa +
editMessageText - grupos/temas: mensaje de vista previa +
editMessageText
channels.telegram.streamingesoff | partial | block | progress(predeterminado:partial)progressse asigna apartialen Telegram (compatibilidad con nomenclatura entre canales)- los valores heredados
channels.telegram.streamModey booleanosstreamingse asignan automáticamente
- MD: OpenClaw conserva el mismo mensaje de vista previa y realiza una edición final en el mismo lugar (sin segundo mensaje)
- grupo/tema: OpenClaw conserva el mismo mensaje de vista previa y realiza una edición final en el mismo lugar (sin segundo mensaje)
sendMessage + editMessageText.Transmisión de razonamiento solo para Telegram:/reasoning streamenvía el razonamiento a la vista previa en vivo mientras se genera- la respuesta final se envía sin el texto del razonamiento
Formatting and HTML fallback
Formatting and HTML fallback
El texto saliente usa
parse_mode: "HTML" de Telegram.- El texto tipo Markdown se renderiza como HTML seguro para Telegram.
- El HTML sin procesar del modelo se escapa para reducir los fallos de análisis de Telegram.
- Si Telegram rechaza el HTML analizado, OpenClaw reintenta como texto sin formato.
channels.telegram.linkPreview: false.Native commands and custom commands
Native commands and custom commands
El registro del menú de comandos de Telegram se gestiona al inicio con Reglas:Comandos de pairing de dispositivos (plugin
Cuando el plugin
setMyCommands.Valores predeterminados de comandos nativos:commands.native: "auto"habilita comandos nativos para Telegram
- los nombres se normalizan (eliminan el
/inicial, minúsculas) - patrón válido:
a-z,0-9,_, longitud1..32 - los comandos personalizados no pueden sobrescribir comandos nativos
- los conflictos/duplicados se omiten y se registran
- los comandos personalizados son solo entradas de menú; no implementan el comportamiento automáticamente
- los comandos de plugins/Skills pueden seguir funcionando cuando se escriben incluso si no se muestran en el menú de Telegram
setMyCommands failedconBOT_COMMANDS_TOO_MUCHsignifica que el menú de Telegram siguió desbordado después de recortarlo; reduce comandos de plugins/Skills/personalizados o deshabilitachannels.telegram.commands.native.setMyCommands failedcon errores de red/fetch normalmente significa que el DNS/HTTPS saliente haciaapi.telegram.orgestá bloqueado.
Comandos de pairing de dispositivos (plugin device-pair)
Cuando el plugin device-pair está instalado:/pairgenera el código de configuración- pega el código en la app de iOS
/pair pendinglista las solicitudes pendientes (incluidos rol/alcances)- aprueba la solicitud:
/pair approve <requestId>para aprobación explícita/pair approvecuando solo hay una solicitud pendiente/pair approve latestpara la más reciente
scopes: []; cualquier token de operador transferido permanece limitado a operator.approvals, operator.read, operator.talk.secrets y operator.write. Las comprobaciones de alcance de bootstrap usan prefijos por rol, por lo que esa lista de permitidos de operador solo satisface solicitudes de operador; los roles que no son operador siguen necesitando alcances bajo su propio prefijo de rol.Si un dispositivo vuelve a intentarlo con detalles de autenticación modificados (por ejemplo, rol/alcances/clave pública), la solicitud pendiente anterior se reemplaza y la nueva solicitud usa un requestId diferente. Vuelve a ejecutar /pair pending antes de aprobar.Más detalles: Pairing.Inline buttons
Inline buttons
Telegram message actions for agents and automation
Telegram message actions for agents and automation
Las acciones de herramientas de Telegram incluyen:
sendMessage(to,content,mediaUrl,replyToMessageId,messageThreadIdopcionales)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,content)createForumTopic(chatId,name,iconColor,iconCustomEmojiIdopcionales)
send, react, delete, edit, sticker, sticker-search, topic-create).Controles de activación:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(predeterminado: deshabilitado)
edit y topic-create están actualmente habilitados de forma predeterminada y no tienen alternadores separados channels.telegram.actions.*.
Los envíos en tiempo de ejecución usan la instantánea activa de configuración/secretos (inicio/recarga), por lo que las rutas de acción no realizan una nueva resolución ad hoc de SecretRef en cada envío.Semántica de eliminación de reacciones: /tools/reactionsReply threading tags
Reply threading tags
Forum topics and thread behavior
Forum topics and thread behavior
Supergrupos de foro:Cada tema tiene entonces su propia clave de sesión: Actualmente esto se limita a temas de foros en grupos y supergrupos.Creación de ACP vinculado a hilos desde el chat:
- las claves de sesión de temas añaden
:topic:<threadId> - las respuestas y las acciones de escritura se dirigen al hilo del tema
- ruta de configuración del tema:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1):- los envíos de mensajes omiten
message_thread_id(Telegram rechazasendMessage(...thread_id=1)) - las acciones de escritura siguen incluyendo
message_thread_id
requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy).
agentId es exclusivo del tema y no se hereda de los valores predeterminados del grupo.Enrutamiento de agentes por tema: cada tema puede enrutar a un agente distinto configurando agentId en la configuración del tema. Esto da a cada tema su propio espacio de trabajo, memoria y sesión aislados. Ejemplo:agent:zu:telegram:group:-1001234567890:topic:3Enlace persistente de temas ACP: los temas de foros pueden fijar sesiones de arnés ACP mediante enlaces ACP tipados de nivel superior:bindings[]contype: "acp"ymatch.channel: "telegram"
/acp spawn <agent> --thread here|autopuede enlazar el tema actual de Telegram a una nueva sesión ACP.- Los mensajes posteriores del tema se enrutan directamente a la sesión ACP enlazada (no se requiere
/acp steer). - OpenClaw fija el mensaje de confirmación de creación dentro del tema después de un enlace correcto.
- Requiere
channels.telegram.threadBindings.spawnAcpSessions=true.
MessageThreadIdIsForum
- los chats privados con
message_thread_idmantienen el enrutamiento de MD pero usan claves de sesión y destinos de respuesta conscientes del hilo.
Audio, video, and stickers
Audio, video, and stickers
Mensajes de audio
Telegram distingue entre notas de voz y archivos de audio.- predeterminado: comportamiento de archivo de audio
- etiqueta
[[audio_as_voice]]en la respuesta del agente para forzar el envío como nota de voz
Mensajes de vídeo
Telegram distingue entre archivos de vídeo y notas de vídeo.Ejemplo de acción de mensaje:Stickers
Manejo de stickers entrantes:- WEBP estático: se descarga y procesa (marcador
<media:sticker>) - TGS animado: se omite
- WEBM de vídeo: se omite
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
Reaction notifications
Reaction notifications
Las reacciones de Telegram llegan como actualizaciones
message_reaction (separadas de las cargas de mensajes).Cuando están habilitadas, OpenClaw pone en cola eventos del sistema como:Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(predeterminado:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(predeterminado:minimal)
ownsignifica solo reacciones de usuarios a mensajes enviados por el bot (mejor esfuerzo mediante caché de mensajes enviados).- Los eventos de reacción siguen respetando los controles de acceso de Telegram (
dmPolicy,allowFrom,groupPolicy,groupAllowFrom); los remitentes no autorizados se descartan. - Telegram no proporciona ID de hilo en las actualizaciones de reacción.
- los grupos que no son foros se enrutan a la sesión de chat grupal
- los grupos de foro se enrutan a la sesión del tema general del grupo (
:topic:1), no al tema exacto de origen
allowed_updates para sondeo/webhook incluyen message_reaction automáticamente.Ack reactions
Ack reactions
ackReaction envía un emoji de confirmación mientras OpenClaw procesa un mensaje entrante.Orden de resolución:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- emoji de respaldo de identidad del agente (
agents.list[].identity.emoji, o bien ”👀”)
- Telegram espera emoji Unicode (por ejemplo, ”👀”).
- Usa
""para deshabilitar la reacción para un canal o cuenta.
Config writes from Telegram events and commands
Config writes from Telegram events and commands
Las escrituras de configuración del canal están habilitadas de forma predeterminada (
configWrites !== false).Las escrituras activadas por Telegram incluyen:- eventos de migración de grupos (
migrate_to_chat_id) para actualizarchannels.telegram.groups /config sety/config unset(requiere habilitación de comandos)
Long polling vs webhook
Long polling vs webhook
Predeterminado: sondeo largo.Modo webhook:
- configura
channels.telegram.webhookUrl - configura
channels.telegram.webhookSecret(obligatorio cuandowebhookUrlestá configurado) channels.telegram.webhookPathopcional (predeterminado/telegram-webhook)channels.telegram.webhookHostopcional (predeterminado127.0.0.1)channels.telegram.webhookPortopcional (predeterminado8787)
127.0.0.1:8787.Si tu endpoint público es distinto, coloca un proxy inverso delante y apunta webhookUrl a la URL pública.
Configura webhookHost (por ejemplo 0.0.0.0) cuando necesites intencionalmente ingreso externo.Limits, retry, and CLI targets
Limits, retry, and CLI targets
channels.telegram.textChunkLimittiene como valor predeterminado 4000.channels.telegram.chunkMode="newline"prefiere límites de párrafo (líneas en blanco) antes de dividir por longitud.channels.telegram.mediaMaxMb(predeterminado 100) limita el tamaño de los medios entrantes y salientes de Telegram.channels.telegram.timeoutSecondssobrescribe el tiempo de espera del cliente de la API de Telegram (si no se configura, se aplica el valor predeterminado de grammY).- el historial de contexto de grupo usa
channels.telegram.historyLimitomessages.groupChat.historyLimit(predeterminado 50);0lo deshabilita. - el contexto suplementario de respuesta/cita/reenvío se pasa actualmente tal como se recibe.
- las listas de permitidos de Telegram controlan principalmente quién puede activar el agente, no son un límite completo de redacción del contexto suplementario.
- controles del historial de MD:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- la configuración
channels.telegram.retryse aplica a los ayudantes de envío de Telegram (CLI/herramientas/acciones) para errores recuperables de API saliente.
openclaw message poll y admiten temas de foros:--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-idpara temas de foros (o usa un destino:topic:)
--buttonspara teclados en línea cuandochannels.telegram.capabilities.inlineButtonslo permite--force-documentpara enviar imágenes y GIF salientes como documentos en lugar de cargas comprimidas de foto o medios animados
channels.telegram.actions.sendMessage=falsedeshabilita los mensajes salientes de Telegram, incluidos los sondeoschannels.telegram.actions.poll=falsedeshabilita la creación de sondeos de Telegram y mantiene habilitados los envíos normales
Exec approvals in Telegram
Exec approvals in Telegram
Telegram admite aprobaciones de ejecución en MD de aprobadores y opcionalmente puede publicar solicitudes de aprobación en el chat o tema de origen.Ruta de configuración:
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(opcional; recurre a los ID numéricos de propietario inferidos deallowFromydefaultTodirecto cuando es posible)channels.telegram.execApprovals.target(dm|channel|both, predeterminado:dm)agentFilter,sessionFilter
enabled no está configurado o es "auto" y se puede resolver al menos un aprobador, ya sea desde execApprovals.approvers o desde la configuración numérica del propietario de la cuenta (allowFrom y defaultTo de mensaje directo). Configura enabled: false para deshabilitar explícitamente Telegram como cliente nativo de aprobación. De lo contrario, las solicitudes de aprobación recurren a otras rutas de aprobación configuradas o a la política de respaldo de aprobación de ejecución.Telegram también renderiza los botones de aprobación compartidos usados por otros canales de chat. El adaptador nativo de Telegram añade principalmente el enrutamiento de MD para aprobadores, la difusión a canal/tema y las pistas de escritura antes de la entrega.
Cuando esos botones están presentes, son la UX principal de aprobación; OpenClaw
solo debería incluir un comando manual /approve cuando el resultado de la herramienta diga
que las aprobaciones por chat no están disponibles o que la aprobación manual es la única vía.Reglas de entrega:target: "dm"envía solicitudes de aprobación solo a los MD de aprobadores resueltostarget: "channel"envía la solicitud de vuelta al chat/tema de Telegram de origentarget: "both"envía a los MD de aprobadores y al chat/tema de origen
/approve ni los botones de aprobación de Telegram.Comportamiento de resolución de aprobación:- Los ID con prefijo
plugin:siempre se resuelven mediante aprobaciones del plugin. - Otros ID prueban primero
exec.approval.resolve. - Si Telegram también está autorizado para aprobaciones del plugin y el gateway dice
que la aprobación de ejecución es desconocida o caducó, Telegram reintenta una vez mediante
plugin.approval.resolve. - Las denegaciones/errores reales de aprobación de ejecución no pasan silenciosamente a la resolución de aprobación del plugin.
channel o both solo en grupos/temas de confianza. Cuando la solicitud llega a un tema de foro, OpenClaw conserva el tema tanto para la solicitud de aprobación como para el seguimiento posterior a la aprobación. Las aprobaciones de ejecución caducan después de 30 minutos de forma predeterminada.Los botones de aprobación en línea también dependen de que channels.telegram.capabilities.inlineButtons permita la superficie objetivo (dm, group o all).Documentación relacionada: Aprobaciones de ejecuciónControles de respuesta de error
Cuando el agente encuentra un error de entrega o de proveedor, Telegram puede responder con el texto del error o suprimirlo. Dos claves de configuración controlan este comportamiento:| Key | Values | Default | Description |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply envía un mensaje de error amigable al chat. silent suprime por completo las respuestas de error. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Tiempo mínimo entre respuestas de error al mismo chat. Evita spam de errores durante caídas. |
Solución de problemas
Bot does not respond to non mention group messages
Bot does not respond to non mention group messages
- Si
requireMention=false, el modo de privacidad de Telegram debe permitir visibilidad completa.- BotFather:
/setprivacy-> Disable - luego elimina y vuelve a añadir el bot al grupo
- BotFather:
openclaw channels statusmuestra una advertencia cuando la configuración espera mensajes de grupo sin mención.openclaw channels status --probepuede comprobar ID numéricos explícitos de grupo; el comodín"*"no puede sondearse para membresía.- prueba rápida de sesión:
/activation always.
Bot not seeing group messages at all
Bot not seeing group messages at all
- cuando existe
channels.telegram.groups, el grupo debe estar listado (o incluir"*") - verifica la membresía del bot en el grupo
- revisa los registros:
openclaw logs --followpara ver motivos de omisión
Commands work partially or not at all
Commands work partially or not at all
- autoriza la identidad de tu remitente (pairing y/o
allowFromnumérico) - la autorización de comandos sigue aplicándose incluso cuando la política de grupo es
open setMyCommands failedconBOT_COMMANDS_TOO_MUCHsignifica que el menú nativo tiene demasiadas entradas; reduce comandos de plugins/Skills/personalizados o deshabilita los menús nativossetMyCommands failedcon errores de red/fetch normalmente indica problemas de alcance DNS/HTTPS haciaapi.telegram.org
Polling or network instability
Polling or network instability
- Node 22+ + fetch/proxy personalizado pueden activar un comportamiento de cancelación inmediata si los tipos de AbortSignal no coinciden.
- Algunos hosts resuelven
api.telegram.orgprimero a IPv6; una salida IPv6 defectuosa puede causar fallos intermitentes de la API de Telegram. - Si los registros incluyen
TypeError: fetch failedoNetwork request for 'getUpdates' failed!, OpenClaw ahora los reintenta como errores de red recuperables. - En hosts VPS con salida/TLS directa inestable, enruta las llamadas a la API de Telegram mediante
channels.telegram.proxy:
- Node 22+ usa de forma predeterminada
autoSelectFamily=true(excepto WSL2) ydnsResultOrder=ipv4first. - Si tu host es WSL2 o explícitamente funciona mejor con comportamiento solo IPv4, fuerza la selección de familia:
- Las respuestas del rango de prueba RFC 2544 (
198.18.0.0/15) ya están permitidas para descargas de medios de Telegram de forma predeterminada. Si una IP falsa de confianza o un proxy transparente reescribeapi.telegram.orga alguna otra dirección privada/interna/de uso especial durante las descargas de medios, puedes habilitar la omisión solo para Telegram:
- La misma opción también está disponible por cuenta en
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - Si tu proxy resuelve hosts de medios de Telegram en
198.18.x.x, deja primero desactivada la marca peligrosa. Los medios de Telegram ya permiten por defecto el rango de referencia RFC 2544.
- Anulaciones por entorno (temporales):
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- Validar respuestas DNS:
Punteros de referencia de configuración de Telegram
Referencia principal:-
channels.telegram.enabled: habilitar/deshabilitar el inicio del canal. -
channels.telegram.botToken: token del bot (BotFather). -
channels.telegram.tokenFile: leer el token desde una ruta de archivo normal. Los enlaces simbólicos se rechazan. -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(predeterminado: pairing). -
channels.telegram.allowFrom: lista de permitidos de MD (ID numéricos de usuario de Telegram).allowlistrequiere al menos un ID de remitente.openrequiere"*".openclaw doctor --fixpuede resolver entradas heredadas@usernamea ID y recuperar entradas de lista de permitidos desde archivos del almacén de pairing en flujos de migración de lista de permitidos. -
channels.telegram.actions.poll: habilitar o deshabilitar la creación de sondeos de Telegram (predeterminado: habilitado; sigue requiriendosendMessage). -
channels.telegram.defaultTo: destino predeterminado de Telegram usado por CLI--delivercuando no se proporciona--reply-toexplícito. -
channels.telegram.groupPolicy:open | allowlist | disabled(predeterminado: allowlist). -
channels.telegram.groupAllowFrom: lista de permitidos de remitentes de grupo (ID numéricos de usuario de Telegram).openclaw doctor --fixpuede resolver entradas heredadas@usernamea ID. Las entradas no numéricas se ignoran en el momento de autenticación. La autenticación de grupos no usa el respaldo del almacén de pairing de MD (2026.2.25+). -
Precedencia de múltiples cuentas:
- Cuando se configuran dos o más ID de cuenta, configura
channels.telegram.defaultAccount(o incluyechannels.telegram.accounts.default) para hacer explícito el enrutamiento predeterminado. - Si no se configura ninguno, OpenClaw recurre al primer ID de cuenta normalizado y
openclaw doctormuestra una advertencia. channels.telegram.accounts.default.allowFromychannels.telegram.accounts.default.groupAllowFromse aplican solo a la cuentadefault.- Las cuentas con nombre heredan
channels.telegram.allowFromychannels.telegram.groupAllowFromcuando los valores a nivel de cuenta no están configurados. - Las cuentas con nombre no heredan
channels.telegram.accounts.default.allowFrom/groupAllowFrom.
- Cuando se configuran dos o más ID de cuenta, configura
-
channels.telegram.groups: valores predeterminados por grupo + lista de permitidos (usa"*"para valores predeterminados globales).channels.telegram.groups.<id>.groupPolicy: anulación por grupo paragroupPolicy(open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: control predeterminado por mención.channels.telegram.groups.<id>.skills: filtro de Skills (omitir = todas las Skills, vacío = ninguna).channels.telegram.groups.<id>.allowFrom: anulación por grupo de la lista de permitidos de remitentes.channels.telegram.groups.<id>.systemPrompt: prompt del sistema adicional para el grupo.channels.telegram.groups.<id>.enabled: deshabilita el grupo cuando esfalse.channels.telegram.groups.<id>.topics.<threadId>.*: anulaciones por tema (campos de grupo +agentIdexclusivo del tema).channels.telegram.groups.<id>.topics.<threadId>.agentId: enrutar este tema a un agente específico (sobrescribe el enrutamiento a nivel de grupo y de binding).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: anulación por tema paragroupPolicy(open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: anulación por tema del control por mención. -
bindings[]de nivel superior contype: "acp"e ID canónico de temachatId:topic:topicIdenmatch.peer.id: campos de enlace persistente de temas ACP (consulta Agentes ACP). -
channels.telegram.direct.<id>.topics.<threadId>.agentId: enrutar temas de MD a un agente específico (el mismo comportamiento que los temas de foros). -
channels.telegram.execApprovals.enabled: habilitar Telegram como cliente de aprobación de ejecución basado en chat para esta cuenta. -
channels.telegram.execApprovals.approvers: ID de usuario de Telegram autorizados para aprobar o denegar solicitudes de ejecución. Opcional cuandochannels.telegram.allowFromo unchannels.telegram.defaultTodirecto ya identifica al propietario. -
channels.telegram.execApprovals.target:dm | channel | both(predeterminado:dm).channelybothconservan el tema de Telegram de origen cuando está presente. -
channels.telegram.execApprovals.agentFilter: filtro opcional por ID de agente para solicitudes de aprobación reenviadas. -
channels.telegram.execApprovals.sessionFilter: filtro opcional por clave de sesión (subcadena o regex) para solicitudes de aprobación reenviadas. -
channels.telegram.accounts.<account>.execApprovals: anulación por cuenta para el enrutamiento de aprobaciones de ejecución de Telegram y la autorización de aprobadores. -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(predeterminado: allowlist). -
channels.telegram.accounts.<account>.capabilities.inlineButtons: anulación por cuenta. -
channels.telegram.commands.nativeSkills: habilitar/deshabilitar comandos nativos de Skills de Telegram. -
channels.telegram.replyToMode:off | first | all(predeterminado:off). -
channels.telegram.textChunkLimit: tamaño de fragmento saliente (caracteres). -
channels.telegram.chunkMode:length(predeterminado) onewlinepara dividir por líneas en blanco (límites de párrafo) antes de fragmentar por longitud. -
channels.telegram.linkPreview: alternar vistas previas de enlaces para mensajes salientes (predeterminado: true). -
channels.telegram.streaming:off | partial | block | progress(vista previa de transmisión en vivo; predeterminado:partial;progressse asigna apartial;blockes compatibilidad heredada del modo de vista previa). La transmisión de vista previa de Telegram usa un único mensaje de vista previa que se edita en el mismo lugar. -
channels.telegram.mediaMaxMb: límite de medios entrantes/salientes de Telegram (MB, predeterminado: 100). -
channels.telegram.retry: política de reintento para los ayudantes de envío de Telegram (CLI/herramientas/acciones) en errores recuperables de API saliente (intentos,minDelayMs,maxDelayMs,jitter). -
channels.telegram.network.autoSelectFamily: sobrescribirautoSelectFamilyde Node (true=habilitar, false=deshabilitar). Predeterminado habilitado en Node 22+, con WSL2 deshabilitado de forma predeterminada. -
channels.telegram.network.dnsResultOrder: sobrescribir el orden de resultados DNS (ipv4firstoverbatim). Predeterminadoipv4firsten Node 22+. -
channels.telegram.network.dangerouslyAllowPrivateNetwork: opción peligrosa para entornos de IP falsa o proxy transparente de confianza donde las descargas de medios de Telegram resuelvenapi.telegram.orga direcciones privadas/internas/de uso especial fuera de la concesión predeterminada del rango de referencia RFC 2544. -
channels.telegram.proxy: URL de proxy para llamadas a Bot API (SOCKS/HTTP). -
channels.telegram.webhookUrl: habilitar modo webhook (requierechannels.telegram.webhookSecret). -
channels.telegram.webhookSecret: secreto de webhook (obligatorio cuandowebhookUrlestá configurado). -
channels.telegram.webhookPath: ruta local del webhook (predeterminado/telegram-webhook). -
channels.telegram.webhookHost: host local de enlace del webhook (predeterminado127.0.0.1). -
channels.telegram.webhookPort: puerto local de enlace del webhook (predeterminado8787). -
channels.telegram.actions.reactions: controla las reacciones de herramientas de Telegram. -
channels.telegram.actions.sendMessage: controla los envíos de mensajes de herramientas de Telegram. -
channels.telegram.actions.deleteMessage: controla la eliminación de mensajes de herramientas de Telegram. -
channels.telegram.actions.sticker: controla acciones de stickers de Telegram — envío y búsqueda (predeterminado: false). -
channels.telegram.reactionNotifications:off | own | all— controla qué reacciones activan eventos del sistema (predeterminado:owncuando no está configurado). -
channels.telegram.reactionLevel:off | ack | minimal | extensive— controla la capacidad de reacción del agente (predeterminado:minimalcuando no está configurado). -
channels.telegram.errorPolicy:reply | silent— controla el comportamiento de respuesta de error (predeterminado:reply). Se admiten anulaciones por cuenta/grupo/tema. -
channels.telegram.errorCooldownMs: ms mínimos entre respuestas de error al mismo chat (predeterminado:60000). Evita spam de errores durante caídas. - Referencia de configuración - Telegram
- inicio/autenticación:
enabled,botToken,tokenFile,accounts.*(tokenFiledebe apuntar a un archivo normal; los enlaces simbólicos se rechazan) - control de acceso:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*,bindings[]de nivel superior (type: "acp") - aprobaciones de ejecución:
execApprovals,accounts.*.execApprovals - comando/menú:
commands.native,commands.nativeSkills,customCommands - encadenamiento/respuestas:
replyToMode - streaming:
streaming(vista previa),blockStreaming - formato/entrega:
textChunkLimit,chunkMode,linkPreview,responsePrefix - medios/red:
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - acciones/capacidades:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - reacciones:
reactionNotifications,reactionLevel - errores:
errorPolicy,errorCooldownMs - escrituras/historial:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit