API de historial de estado del operador de Zoho SalesIQ: Soluciones alternativas

¿Cómo puedo acceder al historial de estado del operador de Zoho SalesIQ a través de la API cuando me encuentro con errores de alcance de OAuth?

API de Zoho SalesIQ: Disponibilidad histórica de operadores (Edición UE)

API de Zoho SalesIQ: Cómo acceder al historial de disponibilidad de operadores (Edición UE)

Publicado originalmente como un debate comunitario en SalesIQ API – Historical Operator Availability? y ampliado, verificado y actualizado para su publicación.

Si has intentado obtener un historial con marca de tiempo de los estados de disponibilidad de tus operadores de Zoho SalesIQ (Disponible, Ocupado y Desconectado) a través de la API REST, probablemente te hayas topado con un problema. Tal vez recibiste un error INVALID_OAUTHSCOPE . Tal vez el punto final que funciona en tu navegador se niega a responder a una llamada OAuth de servidor a servidor. No estás solo y no estás haciendo nada mal.

Esta guía explica qué está sucediendo, qué admite la API oficial y qué puede hacer al respecto ahora mismo, tanto si utiliza el centro de datos de la UE como el global.


Qué es lo que realmente intentas hacer (y por qué es difícil)

El objetivo parece sencillo: obtener un registro con marca de tiempo de cuándo cada operador estuvo disponible, ocupado o desconectado, para poder calcular cuánto tiempo pasó cada operador en cada estado. Los gerentes de equipos de soporte necesitan estos datos analíticos de la fuerza laboral.

El problema radica en que la API REST v2 de Zoho SalesIQ no expone un punto final para consultar el estado histórico de los operadores . Esto se ha confirmado consultando la documentación oficial sobre el alcance y las operaciones de la API v2 de SalesIQ . La API de operadores devuelve el estado actual del operador y admite el filtrado de estado. No se trata de un flujo de eventos ni de un registro histórico.

La interfaz de usuario de informes basada en navegador muestra estos datos, pero internamente utiliza cookies de sesión y tokens CSRF. No existe un equivalente público y con ámbito /api/v2/ para ese endpoint. Al intentar replicarlo con un token OAuth, se produce un error INVALID_OAUTHSCOPE . El ámbito no está mal escrito; no existe un ámbito público para ese endpoint interno .


Centro de datos de la UE: Configure correctamente su sistema desde el principio.

Antes de solucionar el problema, confirme la alineación de su centro de datos en la UE. Un token emitido en accounts.zoho.com y utilizado contra salesiq.zoho.eu no funcionará, y viceversa. Los tres componentes deben apuntar a la región de la UE.

Componente Punto final de la UE
Punto final del token OAuth https://accounts.zoho.eu/oauth/v2/token
URL base de la API de SalesIQ https://salesiq.zoho.eu/api/v2/{screen_name}/
Consola del desarrollador https://api-console.zoho.eu

Esto se explica en la guía oficial de requisitos previos de SalesIQ v2 . Si alguno de estos tres elementos apunta a la región incorrecta, sus solicitudes fallarán independientemente del alcance.


Descifrando el error: ¿Qué significa realmente cada respuesta?

No todos los errores significan lo mismo. Antes de asumir que el punto final no existe, lea atentamente el cuerpo del error:

Código de error Qué significa Qué hacer
INVALID_OAUTHSCOPE (Código 1009) El token es válido pero carece del alcance requerido, o el punto final no tiene un alcance público. Consulta la lista de ámbitos documentados. Si la ruta no aparece en la lista, ningún ámbito la desbloqueará.
INVALID_TOKEN El token está dañado, ha caducado o proviene de un DC incorrecto. Genéralo desde la consola de la UE correcta.
URL_RULE_NOT_CONFIGURED La ruta no es una ruta de API pública registrada. Es probable que el punto final sea solo interno.

Un error INVALID_OAUTHSCOPE en un punto final de estado histórico casi con certeza significa que la ruta no tiene un alcance público porque no es una API pública .


Lista de alcance verificada para operadores de SalesIQ

Aquí están los ámbitos de OAuth confirmados y documentados para la API de operadores de SalesIQ v2, tomados de la referencia oficial de ámbitos y operaciones de Zoho :

Operación Alcance
Enumerar todos los operadores SalesIQ.operators.READ
Obtenga los detalles del operador. SalesIQ.operators.READ
Crear un operador SalesIQ.operators.CREATE
Actualizar los datos del operador SalesIQ.operators.UPDATE
Eliminar un operador SalesIQ.operators.DELETE
Establecer el estado de disponibilidad del operador SalesIQ.operators.UPDATE

⚠️ Importante: Los nombres de ámbito distinguen entre mayúsculas y minúsculas. Utilice SalesIQ.operators.READ , no SalesIQ.Operators.READ . El formato sigue la convención estándar de tres partes de Zoho: ServiceName.ScopeName.Operation .

Lo que falta en esta lista: cualquier ámbito para recuperar el estado de disponibilidad histórica . SalesIQ.Reports.READ no aparece en la tabla de ámbitos v2 para el historial del operador. Si está probando ámbitos candidatos, pruébelos uno por uno en un Self Client, pero prepárese para que la respuesta sea "estos datos no están disponibles a través de la API".


Lo que realmente devuelve la API de operadores

El endpoint GET /api/v2/{screen_name}/operators devuelve el estado actual de cada operador. Tenga en cuenta estos comportamientos:

  • Paginación: Los resultados están limitados a 20 operadores por consulta. Utilice el parámetro index para paginar.
  • last_sync_time : Este parámetro recupera los operadores modificados después de una marca de tiempo determinada. No es un cursor de historial de estado y no debe tratarse como tal.
  • Configuración de estado: El punto final para establecer el estado de disponibilidad del operador solo acepta Available u Busy . No existe la opción Offline a través de la API. Los operadores se desconectan cuando cierran la sesión.
  • Límites de velocidad: La documentación de la versión 2 no publica un límite de velocidad numérico específico. Gestione las respuestas HTTP 429 con retroceso exponencial y evite intervalos de sondeo agresivos.

Seis soluciones, clasificadas según su practicidad.

✅ Opción A: Pregunta directamente a Zoho (Hazlo hoy mismo)

Abra un ticket de soporte con el soporte de SalesIQ, a través de la ayuda integrada en el producto o la comunidad de Zoho SalesIQ , y formule estas tres preguntas:

  1. ¿Existe algún punto final de API o ámbito de OAuth compatible para el estado histórico de disponibilidad del operador?
  2. De no ser así, ¿existe alguna solicitud de función o elemento en la hoja de ruta para esto?
  3. ¿El informe de disponibilidad del operador se puede exportar o programar en su plan actual?

Solo Zoho puede confirmar si el punto final de la interfaz de usuario interna es intencionalmente privado o si existe una ruta compatible que aún no está documentada. La visibilidad en la comunidad también es importante. Las solicitudes de nuevas funciones con más votos influyen en la hoja de ruta.


✅ Opción B: Consultar el punto final de estado actual y crear un historial propio (la solución alternativa más robusta)

Dado que no existe un punto final histórico, capture instantáneas del estado actual periódicamente y cree el historial usted mismo. Esta es la solución programática más fiable disponible en la actualidad.

Pasos de configuración:

  1. Cree un cliente propio en https://api-console.zoho.eu con el ámbito SalesIQ.operators.READ
  2. Genera un código de concesión, cámbialo por un token de actualización y guárdalo de forma segura. Nunca lo incluyas en el código fuente.
  3. De forma programada (cada 1-5 minutos), actualice el token de acceso y llame a:
 GET https://salesiq.zoho.eu/api/v2/{screen_name}/operators
Authorization: Zoho-oauthtoken {access_token}
  1. Escribe las filas (operator_id, status, observed_at) en una base de datos. Registra solo los cambios, además de una señal de actividad periódica.
  2. Calcular duraciones: para cada par consecutivo de registros por operador, duration = next.observed_at − current.observed_at

Qué manipular con cuidado:

  • No se admiten datos retroactivos. El historial comienza cuando se inicia el sondeo. No hay forma de recuperar datos anteriores.
  • Interrupciones en la recopilación de datos. Si el sistema de recopilación de datos deja de funcionar, marque ese período como "unknown" en lugar de asumir que el último estado conocido se mantuvo. Esto es importante para obtener informes precisos.
  • Límite de precisión. Con un intervalo de sondeo de 5 minutos, es posible que no se detecten los cambios de estado que ocurran en menos de 5 minutos. Si la precisión es importante, utilice un intervalo más corto.
  • Límites de velocidad. Implementar retroceso exponencial en las respuestas 429 .

Opciones de programación: una tarea programada (cron job), una función en la nube (AWS Lambda, Google Cloud Functions) o, si desea permanecer completamente dentro del ecosistema de Zoho, una función programada de Zoho Flow que utilice una conexión OAuth administrada, la cual se encarga de la actualización del token por usted.

Si sueles crear integraciones personalizadas de Zoho, considera Zoho Creator como una plataforma de bajo código para alojar funciones programadas de Deluge que llaman a la API de SalesIQ, sin necesidad de infraestructura externa.


✅ Opción C: Consulta los informes integrados (la solución más rápida si cubre tus necesidades)

Antes de crear cualquier función personalizada, compruebe qué ofrece ya el módulo de informes de SalesIQ.

El módulo Informes 2.0 incluye informes del operador que abarcan la disponibilidad, el rendimiento y el volumen de chat. Detalles clave:

  • Requisito del plan: Reports 2.0 solo está disponible en los planes Professional y Enterprise .
  • Granularidad diaria: Para una fecha seleccionada, el informe muestra los cambios de estado en función de las horas. Para rangos de fechas superiores a un día, el informe utiliza agregados basados en inicios de sesión en lugar de cronogramas detallados de cambios de estado.
  • Opciones de exportación: Compruebe si su plan admite la exportación a CSV/PDF o el envío programado por correo electrónico. De ser así, puede automatizar la recepción del archivo exportado mediante una regla de buzón y un analizador.

Si los datos agregados cumplen con el requisito de "tiempo dedicado por estado", esta es la opción más rápida. Si necesita marcas de tiempo sin procesar, utilice la opción B.


✅ Opción D: Integraciones nativas de Zoho (Ruta de bajo código)

Varias opciones nativas de Zoho pueden reducir los costos de ingeniería:

Conector Zoho Analytics SalesIQ
Compruebe si los datos de disponibilidad del operador se encuentran entre los módulos sincronizados en el conector Zoho Analytics SalesIQ. Analytics puede programar sincronizaciones y exponer datos a través de su propia API documentada. Si el conector incluye datos de disponibilidad, podría reemplazar el sondeo personalizado.

Zoho Flow con conexión administrada
Zoho Flow permite ejecutar flujos de trabajo programados que llaman a SalesIQ mediante una conexión OAuth administrada, de modo que Zoho gestiona automáticamente la actualización de tokens. Esta es una forma sencilla de implementar el método de sondeo de la Opción B sin tener que gestionar los tokens manualmente. Compruebe si SalesIQ expone un activador de cambio de estado del operador en Flow. Si lo hace, la captura basada en eventos es más precisa que el sondeo.

Combinación de Zoho Flow y Zoho Creator
Para los equipos que ya utilizan Zoho Creator, pueden combinar los activadores de Flow con la base de datos de Creator para almacenar instantáneas de estado en una plataforma totalmente nativa de Zoho. Consulte nuestra guía sobre la integración de Zoho SalesIQ con Zoho Creator mediante Zoho Flow para obtener una explicación práctica.


⚠️ Opción E: Inferir actividad a partir de conversaciones (solo aproximación)

Puedes usar la API de Conversaciones ( SalesIQ.conversations.READ ) para inferir cuándo los operadores estuvieron activos. Sin embargo, muestra cuándo estaban gestionando chats , no cuándo estaban Disponibles, Ocupados o Desconectados. Un operador puede estar Disponible sin conversaciones activas o Ocupado sin chatear activamente.

Este método no es adecuado cuando se requiere precisión en la duración del estado. Úselo solo como una aproximación cuando no haya otra opción disponible.


Opción F: Reproducir el punto final del navegador (último recurso: evitar)

La automatización del navegador sin interfaz gráfica o la reproducción de las cookies de sesión contra el punto final de la interfaz de usuario interna es técnicamente posible, pero conlleva riesgos graves:

  • Condiciones del servicio: Es probable que esto infrinja las condiciones de servicio de Zoho sobre el uso de API no compatibles. Revise las condiciones de servicio antes de intentarlo.
  • Fragilidad: Las sesiones caducan, la autenticación multifactor puede interrumpir la automatización y los puntos finales internos pueden cambiar sin previo aviso.
  • Seguridad: Esto requiere el almacenamiento de las credenciales de usuario, lo cual supone un importante problema de seguridad.

Si cree que esta es su única opción, utilice una cuenta de servicio dedicada, obtenga la aprobación por escrito de Zoho y aíslela completamente de los sistemas de producción. Considérela una medida temporal mientras evalúa la Opción A.


Siga esta secuencia para obtener datos rápidamente mientras busca una solución permanente:

Momento Acción
Hoy (30 min) Verifique la alineación del centro de datos de la UE en los tres puntos finales; inspeccione el campo scope en su respuesta de token.
Hoy Abra un ticket de soporte de Zoho (Opción A) solicitando un punto final o alcance compatible.
En paralelo Comience a realizar encuestas con la Opción B para que el historial comience a acumularse de inmediato.
Esta semana Compruebe el módulo de Informes (Opción C). Es posible que ya cumpla con sus requisitos.
Esta semana Evalúe los conectores de Zoho Analytics y Zoho Flow (Opción D) para una solución que requiera menos mantenimiento.
Evitar Opción F a menos que Zoho la apruebe explícitamente por escrito.

Lista de verificación de diagnóstico (ejecútela antes que nada)

Antes de asumir que el punto final no existe, dedique 30 minutos a estas comprobaciones:


Preguntas abiertas (Verificar con la documentación actual)

La API de SalesIQ evoluciona. Antes de implementar una solución, verifique estos puntos directamente con Zoho o en la documentación actual:

  • Si se ha añadido un punto final v2 documentado o un alcance para el estado histórico del operador desde que se escribió esto.
  • Límites de velocidad numéricos exactos para la API de operadores
  • Si el informe de disponibilidad del operador se puede exportar o programar en su plan específico.
  • Si SalesIQ expone un evento de cambio de estado del operador en los activadores de Zoho Flow

Conclusiones clave

  1. Hasta la fecha, no existe ningún punto final de API público para consultar el estado histórico de los operadores en Zoho SalesIQ v2. Esto se confirma con la documentación oficial.
  2. Los ámbitos de la UE correctos son SalesIQ.operators.READ y SalesIQ.operators.UPDATE . Los nombres de los ámbitos distinguen entre mayúsculas y minúsculas.
  3. La alineación del centro de datos de la UE en el punto final del token, el host de la API y la consola del desarrollador es obligatoria y una fuente común de errores.
  4. La solución más práctica consiste en consultar periódicamente el estado actual del punto final y crear una base de datos de historial propia.
  5. Zoho Flow y Zoho Analytics pueden ofrecer alternativas nativas que requieren menos mantenimiento y que vale la pena considerar antes de crear una infraestructura personalizada.
  6. Para obtener una respuesta autorizada y ayudar a identificar la solicitud de función más adecuada, póngase en contacto directamente con Zoho .

¿Necesitas ayuda para construir esto?

Si estás trabajando en una integración personalizada de SalesIQ, ya sea un servicio de encuestas, una aplicación Zoho Creator o una automatización basada en Flow, el equipo de Creator Scripts se especializa en este tipo de implementación técnica de Zoho.

También podrían resultarle útiles estas guías relacionadas:


Este artículo amplía y verifica la información del debate de la comunidad publicado originalmente en el subreddit de Zoho titulado «¿Disponibilidad histórica de operadores en la API de SalesIQ?» . Todos los nombres de ámbitos de la API y el comportamiento de los puntos finales se han verificado con la documentación oficial de Zoho SalesIQ v2.