Beam Help
Solicitar ayuda

How-to · Zoho DESK

Cómo recuperar el temporizador de un ticket en Zoho Desk

Obtén los datos del temporizador activo o en pausa de cualquier ticket mediante la API.

Recuperar el temporizador de un ticket en Zoho Desk es sencillo usando la API REST — puedes obtener tanto el registro completo del temporizador como únicamente el temporizador en ejecución (activo) para cualquier ticket.


Por qué esto es importante


Cuando tu equipo de soporte registra el tiempo dedicado a los tickets, puede que necesites leer los datos del temporizador de forma programática — para paneles de informes, integraciones de facturación o flujos de trabajo automatizados. Zoho Desk expone endpoints dedicados tanto para el temporizador completo como para el temporizador activo, de modo que puedes elegir el más adecuado según si necesitas una instantánea de todo el tiempo registrado o solo lo que está contando en este momento. Como soporte experto independiente (no soporte oficial de Zoho), Beam Help te guía por ambas opciones a continuación.


---


Paso a paso


Paso 1. Autentícate y obtén un token de acceso válido.


Antes de llamar a cualquier endpoint de Zoho Desk, tu integración debe disponer de un token de acceso OAuth 2.0 válido. Si tu token ha expirado, el sistema usará tu refresh token almacenado para solicitar uno nuevo automáticamente — el actualizador intercambia el refreshtoken contra la URL del token usando tu clientid y clientsecret, y luego almacena el accesstoken actualizado y su marca de tiempo de expiración para llamadas futuras. [8]


Paso 2. Inicializa el cliente de la API de Zoho Desk.


Instancia un ZohoDeskClient con tu dominio de API, el token de acceso actual y el ID de organización (orgid). Envuélvelo en una instancia de ZohoDeskApi. Si tu orgid aún no está almacenado, el cliente puede descubrirlo automáticamente llamando al endpoint de organizaciones y persistiendo el primer resultado. [7]


Paso 3. Recupera el temporizador completo del ticket.


Llama al endpoint GET /api/v1/tickets/{ticketId}/timer, sustituyendo el identificador real del ticket por {ticketId}. En Python, se vería así:


result = api.get_ticket_timer(ticketId="your_ticket_id")

El método emite una solicitud GET a /api/v1/tickets/{ticketId}/timer y devuelve el registro del temporizador asociado a ese ticket. Un parámetro opcional p puede incluir argumentos adicionales de cadena de consulta si es necesario. [1]


Paso 4. (Alternativa) Recupera solo el temporizador activo.


Si solo te interesa un temporizador que esté en ejecución en este momento — por ejemplo, para mostrar un indicador de tiempo transcurrido en vivo — usa el endpoint del temporizador activo en su lugar:


result = api.get_active_timer_for_a(ticketId="your_ticket_id")

Esto emite una solicitud GET a /api/v1/tickets/{ticketId}/activeTimer y devuelve datos exclusivamente del temporizador que se encuentra actualmente en estado de ejecución. [2]


Paso 5. Gestiona la respuesta.


Ambos endpoints devuelven un diccionario. Inspecciona el resultado en busca de campos del temporizador como duración, estado y detalles del agente. Si el ticket no tiene un temporizador activo cuando llamas al endpoint activeTimer, espera un payload de datos vacío o nulo en lugar de un error.


---


Errores comunes


  • orgid ausente o desactualizado: Zoho Desk requiere que el ID de organización se pase como encabezado o parámetro en cada solicitud. Si orgid está en blanco, el cliente intentará la detección automática, pero esto añade latencia. Persiste siempre el org_id tras la primera llamada exitosa. [7]

  • Tokens de acceso expirados: Los tokens suelen expirar tras 3.600 segundos. Si recibes un error de autenticación, verifica que tu lógica de renovación de token esté actualizando correctamente tanto accesstoken como tokenexpires_at en tu almacén de datos. [8]

  • Confundir los dos endpoints del temporizador: GET .../timer devuelve el registro completo del temporizador (incluidos los datos históricos), mientras que GET .../activeTimer devuelve solo lo que está en ejecución en este momento. [1][2] Usar el incorrecto puede generar respuestas vacías que parecen errores.

  • Actualizar o restablecer por error: Si necesitas acceso de solo lectura, ten cuidado de no llamar accidentalmente a PATCH /api/v1/tickets/{ticketId}/timer (que modifica el temporizador) [4] ni a POST /api/v1/tickets/{ticketId}/timer/reset (que lo restablece por completo). [6] Mantén tu método HTTP estrictamente como GET para la recuperación de datos.

---


Qué verificar


  • Confirma que el ticketId es válido — verifica que existe en tu portal de Zoho Desk antes de realizar la llamada a la API, ya que un ID no válido devolverá un error de no encontrado en lugar de los datos del temporizador.
  • Verifica tus scopes de OAuth — asegúrate de que el token de acceso fue concedido con el scope de lectura de seguimiento de tiempo de Desk; los scopes faltantes producirán un error de permisos incluso con un token válido. [5]
  • Inspecciona la estructura de la respuesta — confirma que el diccionario devuelto contiene los campos del temporizador esperados antes de pasar los datos a procesos posteriores, ya que un ticket inactivo puede devolver un objeto de temporizador mínimo o vacío. [1][2]

Sources cited

  1. [1] GET /api/v1/tickets/{ticketId}/timer
  2. [2] GET /api/v1/tickets/{ticketId}/activeTimer
  3. [3] server.py: build_zoho_links
  4. [4] PATCH /api/v1/tickets/{ticketId}/timer
  5. [5] zoho_oauth.py
  6. [6] POST /api/v1/tickets/{ticketId}/timer/reset
  7. [7] server.py: get_zoho_api
Obtener Temporizador de Ticket | Beam Help — Beam Help