Por qué los conteos de chats de Telegram difieren: contactos, diálogos y filas de CRM

Los recuentos de chats de Telegram difieren porque una lista de contactos, una lista de conversaciones en vivo, un inventario guardado del CRM y las filas visibles en pantalla miden cosas distintas. Antes de afirmar que falta un chat, compara la misma cuenta de Telegram, el alcance de acceso, la cobertura de carpetas y el momento de observación. Después, comprueba si la paginación y la sincronización han terminado.
La imagen existente del producto Chiho que aparece arriba ilustra filas y campos del CRM. No es una captura de pantalla de la comparación de recuentos siguiente.
Comprobado el 15 de septiembre de 2026: el comportamiento de Chiho descrito aquí se basa en el código y la documentación actuales, no en una auditoría de una cuenta real. Las cifras del ejemplo son ficticias. Chiho publica esta guía; no presenta resultados de clientes ni afirma que unos totales coincidentes demuestren una migración completa.
Identifica el inventario antes de comparar cifras
Los contactos son entradas de la agenda de la cuenta de Telegram. Telegram proporciona una API de contactos independiente. Que alguien aparezca en una conversación no convierte la lista de conversaciones en un recuento de la agenda.
Los diálogos son conversaciones del inventario de diálogos de Telegram de una cuenta. La API de listas de diálogos de Telegram admite parámetros de carpetas y paginación. Una página devuelta puede contener menos entradas que el total del inventario. Los grupos y canales también hacen que un inventario de diálogos difiera de una lista de clientes individuales.
Los diálogos guardados del CRM son los registros de diálogos que Chiho ha persistido para su uso en el CRM dentro del alcance seleccionado. Tienen un historial de sincronización. Un total guardado y un total recién obtenido de Telegram no tienen por qué describir el mismo momento.
Las filas visibles son las entradas que muestra actualmente una pantalla. Un filtro seleccionado o una página incompleta pueden explicar una visualización menor sin demostrar que falte el registro subyacente.
Si estás decidiendo qué información pertenece a un CRM además de la conversación, empieza por qué hace un CRM de Telegram. Aquí, la pregunta inmediata es más concreta: ¿qué inventario describe cada cifra?
Empieza con una cuenta y un alcance de acceso
Anota la cuenta de Telegram seleccionada y si la vista tiene alcance personal o de equipo. No compares el total de Telegram de una cuenta con una vista de equipo cuyos límites de acceso sean distintos. Registra cualquier filtro de búsqueda, estado o carpeta en la pantalla que estás investigando.
Para un cliente de IA conectado a Chiho, account_whoami identifica las cuentas accesibles. Comprueba su estado de conexión y reautorización antes de interpretar un resultado ausente. Un error de permisos o conexión significa que la medición no está disponible, no que el recuento sea cero.
El dialogs_list en vivo de Chiho no está disponible para tokens con alcance de equipo; la alternativa compatible es crm_dialogs_list, que lee el inventario persistido del CRM. Esa alternativa no convierte el resultado guardado en una medición en vivo de Telegram. Si no está disponible el alcance requerido, registra la limitación y pide a un titular de cuenta autorizado que haga la comparación. Consulta la guía de conexión para agentes de IA para conocer la configuración y los límites de acceso.
Compara por separado los diálogos activos y archivados
inventory_summary de Chiho devuelve los totales en vivo de Telegram activeTotal, archivedTotal y allTotal, junto con los valores independientes del CRM syncedTotal y lastSyncedAt. La sección de Telegram también registra measuredAt.
Utiliza telegramDialogs.allTotal cuando preguntes por el total de diálogos de Telegram disponible actualmente. No lo sustituyas por la cantidad de elementos de una respuesta de dialogs_list. Conserva los recuentos de activos y archivados en tu hoja de trabajo para que las diferencias de cobertura del archivo sean visibles.
Un total en vivo sigue siendo una observación, no una exportación inmutable. Las conversaciones pueden cambiar mientras recorres las páginas. Compara observaciones realizadas en momentos cercanos y conserva sus marcas de tiempo. Una diferencia posterior puede requerir otra lectura acotada en lugar de afirmar que se perdieron registros.
Termina la paginación antes de dar una lista por completa
Una primera página responde a «¿qué hay en esta página?». Para inspeccionar todos los diálogos devueltos, sigue nextCursor hasta que deje de aparecer, conservando la cuenta y el alcance de la consulta. Registra si realmente llegaste a ese punto.
En los diálogos guardados del CRM, crm_dialogs_list.syncedTotal es independiente de la cantidad de elementos de la página actual. Si el inventario cambia durante la paginación del CRM, Chiho puede rechazar el cursor y exigir que se reinicie la paginación. Trata esa respuesta como una observación interrumpida; no añadas la primera página reiniciada a una lista antigua ni cuentes duplicados como conversaciones nuevas.
Al comparar registros individuales, utiliza la cuenta y la identidad estable del interlocutor devueltas por la herramienta, incluido su tipo cuando esté disponible. Los nombres visibles son malos identificadores para encontrar coincidencias: dos conversaciones pueden tener el mismo título y los títulos pueden cambiar. Conserva solo los identificadores mínimos necesarios en un registro de diagnóstico autorizado.
Lee el estado de sincronización antes de intentar una reparación
sync_status lee la ejecución más reciente o una especificada sin iniciar trabajo en Telegram. Inspecciona su modo, cobertura de archivos, fase, progreso, fallos e información de reintento junto con los totales del inventario.
- queued o running: la ejecución todavía no ha alcanzado su estado terminal. Un inventario guardado parcial no es un resultado final de comparación.
- waiting_for_telegram: inspecciona resumeAt. Chiho persiste la espera y el progreso confirmado; el trabajo programado no debe llamar a Telegram antes de ese momento. Solicitar sincronizaciones repetidamente no evita la espera.
- enriching: hay más procesamiento en curso. No deduzcas que ya están rellenados todos los campos del CRM ni los detalles relacionados.
- complete: la ejecución ha terminado, pero inspecciona los recuentos informados de elementos omitidos y fallos de enriquecimiento. La finalización no demuestra que todas las tareas de enriquecimiento hayan tenido éxito ni que se hayan importado todos los mensajes del historial.
- failed: conserva el ID de ejecución, la fase y el código de error. Informa del fallo antes de decidir cómo recuperarse.
Iniciar sync_once es una acción independiente que inicia o reanuda trabajo de sincronización persistido; no forma parte de esta comprobación de solo lectura. Si un operador autorizado elige después una comparación completa, la configuración documentada es el modo completo con inclusión de diálogos archivados. El modo completo también actualiza la instantánea de contactos y requiere el permiso telegram.contacts.read, concedido por separado. Una ejecución en modo reciente no debe presentarse como prueba de cobertura completa del inventario.
Ejemplo resuelto: 50 filas no significa 50 chats
La siguiente es una hoja de trabajo sintética, no una cuenta observada de Chiho ni una prueba de rendimiento. Supón que todas las observaciones corresponden a la misma cuenta personal y que los totales en vivo permanecen estables durante la comprobación.
- Diálogos activos de Telegram: 120.
- Diálogos archivados de Telegram: 30.
- Todos los diálogos de Telegram: 150.
- Diálogos guardados del CRM de Chiho: 142, con su propia marca de tiempo de sincronización registrada.
- Filas de la primera página del CRM: 50, con un cursor de continuación.
- Contactos de la agenda de Telegram: 80, medidos por separado con acceso a contactos.
- Estado de sincronización: waiting_for_telegram, con una hora de reanudación futura.
Esto es lo que permite concluir la hoja de trabajo:
- El total de diálogos en vivo es 120 + 30 = 150.
- Las 50 filas son una página. No demuestran una pérdida de 100 chats.
- El total guardado es 8 menor que el total en vivo. Es una diferencia de recuento sin resolver, no una prueba de que falten ocho chats concretos.
- Los 80 contactos pertenecen a un inventario diferente. No los restes de 150 para calcular clientes ausentes.
- La ejecución en espera no ha terminado. Registra su hora de reintento e inspecciona el estado de nuevo después del momento de reanudación permitido.
Incluso después de una ejecución posterior completada, unos totales iguales no demostrarían que los dos conjuntos contienen las mismas conversaciones. La ausencia de un interlocutor y la presencia de otro sobrante obsoleto pueden compensarse numéricamente. Si la integridad importa, compara los conjuntos reales de interlocutores después de terminar la paginación y luego inspecciona las diferencias dentro del alcance autorizado.
Copia esta hoja de trabajo de comparación
Utiliza un registro por cuenta y alcance. Deja los campos desconocidos como desconocidos, en lugar de adivinarlos.
- Pregunta: ¿Qué conversación o recuento concreto parece incorrecto?
- Cuenta y acceso: cuenta seleccionada; alcance personal o de equipo; estado de conexión.
- Pantalla: búsqueda y filtros actuales; recuento de filas visibles; si quedan más páginas.
- Diálogos en vivo: activos; archivados; todos; momento de observación; cualquier error de lectura.
- Diálogos guardados: total sincronizado; hora de la última sincronización; paginación completada o interrumpida.
- Contactos, si procede: medición independiente de contactos; permiso disponible o no disponible.
- Sincronización: ID de ejecución; modo; cobertura de archivos; estado; fase; progreso; trabajo omitido o fallido; hora de reanudación.
- Comparación de registros: identidades estables mínimas de interlocutores presentes solo en un lado; momento de observación.
- Decisión: explicado por el alcance, la página o el filtro; esperando a que termine; o discrepancia sin resolver que requiere investigación.
Por ejemplo, «El chat del cliente no aparece en la primera página» exige recorrer las páginas o hacer una búsqueda dentro del alcance. «El mismo interlocutor no aparece en el inventario guardado completo, pero sí en el inventario en vivo» constituye evidencia más sólida para investigar. Un chat que aparece pero no tiene una nota presenta un problema de campo o contexto, que corresponde al flujo de traspaso entre compañeros, no al cálculo del total de diálogos.
Asigna a un agente de IA una tarea acotada de solo lectura
Después de conectar Chiho con tu cliente, utiliza una solicitud como esta:
Para la cuenta seleccionada, inspecciona la identidad de la cuenta, el resumen del inventario y el estado de sincronización. Informa por separado de los totales en vivo de diálogos activos y archivados y del total guardado del CRM, con marcas de tiempo y cualquier error de acceso. No inicies una sincronización ni envíes mensajes. Si necesitas listar registros, indica si la paginación está completa. No deduzcas los recuentos de contactos a partir de los diálogos.
Para una consulta sobre contactos, solicita explícitamente una lectura independiente de contactos solo cuando ese permiso esté disponible. Para una conexión con alcance de equipo, acepta que la herramienta de lista de diálogos en vivo no está disponible e identifica el inventario guardado como tal.
Siguiente paso: abre Chiho, elige la cuenta que estás investigando y completa la hoja de trabajo para una discrepancia concreta. El resultado útil es una diferencia explicada o un registro de diagnóstico reproducible, no simplemente dos cifras que casualmente coinciden.