Indicadores
Referencia de la ruta relatorios/resumo: volúmenes de conversaciones y mensajes, tiempos promedio contados en horario de atención, satisfacción y números por departamento y por agente, en un período libre de hasta un año. Cada indicador se explica con la regla exacta de cálculo.
Visión general
La ruta de indicadores entrega, en una sola llamada, el retrato de la atención de un período: cuántas atenciones se abrieron y se cerraron, cuántas resolvió la IA sola, cuánto esperó el cliente por la primera respuesta y en la cola, cuánto duró cada atención y cómo la evaluó el cliente. Los tiempos siguen las mismas reglas de la pantalla Informes: cuentan solo el horario de atención y descuentan la espera de respuesta del cliente.
Casos típicos:
- BI y paneles de gestión: alimentar Power BI, Metabase, Grafana o una hoja de cálculo con la serie diaria, semanal o mensual.
- Cierre del mes: exportar los números por departamento y por agente para el informe de la dirección o para la remuneración variable.
- Seguimiento de metas: verificar todos los días si la primera respuesta promedio está dentro de lo acordado.
| Ruta | Método | Permiso de la clave |
|---|---|---|
relatorios/resumo | GET (o POST) | Indicadores |
El permiso Indicadores ("Volúmenes, tiempos en horario hábil, satisfacción y números por departamento y agente") se marca en la clave, en Integraciones, tarjeta API de ChatISP. Da acceso solo a números agregados: aparecen nombres de agentes y departamentos, pero ningún mensaje ni dato de cliente.
La llamada
/api_publica.php?r=relatorios/resumo| Parámetro | Tipo | Descripción |
|---|---|---|
de | fecha | Inicio del período. Predeterminado: 00:00 de hace 29 días (con el valor predeterminado de ate, los últimos 30 días contando hoy). |
ate | fecha | Fin del período. Predeterminado: hoy, 23:59:59. Una fecha sin hora vale hasta las 23:59:59 del día. |
departamento_id | entero | Restringe todos los números a un departamento (vea Filtro por departamento). Sin él, o con 0, toda la empresa. |
El período máximo es de 366 días. Las fechas aceptan ISO 8601 (2026-09-01T00:00:00-03:00), AAAA-MM-DD o AAAA-MM-DD HH:MM:SS en la zona horaria del servidor.
curl -s -G "https://atendimento.seuprovedor.com.br/api_publica.php" \ -H "Authorization: Bearer $CHATISP_CHAVE" \ --data-urlencode "r=relatorios/resumo" \ --data-urlencode "de=2026-09-01" \ --data-urlencode "ate=2026-09-30"
<?php
$url = 'https://atendimento.seuprovedor.com.br/api_publica.php?' . http_build_query([
'r' => 'relatorios/resumo',
'de' => '2026-09-01',
'ate' => '2026-09-30',
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('CHATISP_CHAVE')],
]);
$resposta = json_decode(curl_exec($ch), true);import os, requests
resposta = requests.get(
"https://atendimento.seuprovedor.com.br/api_publica.php",
params={"r": "relatorios/resumo", "de": "2026-09-01", "ate": "2026-09-30"},
headers={"Authorization": "Bearer " + os.environ["CHATISP_CHAVE"]},
timeout=30,
).json(){
"ok": true,
"periodo": {"de": "2026-09-01T00:00:00-03:00", "ate": "2026-09-30T23:59:59-03:00"},
"departamento_id": null,
"conversas": {
"abertas": 2184,
"encerradas": 2161,
"em_andamento_agora": 37,
"resolvidas_pela_ia": 912
},
"mensagens": {
"recebidas": 25390,
"enviadas": 27713,
"pela_ia": 11240,
"pelos_atendentes": 12988
},
"tempos": {
"primeira_resposta_media_seg": 41.7,
"espera_fila_media_seg": 318.2,
"duracao_media_seg": 1146.9
},
"satisfacao": {
"pesquisas_enviadas": 1240,
"respostas": 433,
"media": 4.62
},
"por_departamento": [
{"departamento_id": 3, "departamento": "Suporte técnico", "abertas": 1402, "encerradas": 1381},
{"departamento_id": 2, "departamento": "Financeiro", "abertas": 611, "encerradas": 609},
{"departamento_id": 1, "departamento": "Comercial", "abertas": 171, "encerradas": 168}
],
"por_atendente": [
{
"atendente_id": 7,
"atendente": "Carlos Lima",
"atendidas": 402,
"encerradas": 398,
"duracao_media_seg": 1310.4,
"satisfacao_media": 4.71,
"avaliacoes": 151
},
{
"atendente_id": 4,
"atendente": "Paula Andrade",
"atendidas": 377,
"encerradas": 377,
"duracao_media_seg": 1022.0,
"satisfacao_media": 4.55,
"avaliacoes": 138
}
]
}Los tiempos vienen en segundos, con un decimal. Cuando no hay ninguna muestra en el período (ninguna conversación respondida, ninguna cerrada), el tiempo viene null, no cero: trate null como "sin dato" en su panel.
Bloque conversaciones
| Campo | Cómo se cuenta |
|---|---|
abertas | Atenciones (protocolos) abiertas dentro del período, en cualquier estado hoy. Incluye las conversaciones de aviso que nacen cerradas (envío por la API o campaña a quien no tenía conversación abierta). |
encerradas | Atenciones cerradas dentro del período, sin importar cuándo se abrieron (incluidas las conversaciones de aviso). |
em_andamento_agora | Atenciones no cerradas en el momento de la llamada (con la IA, en un flujo, en la cola o con un agente). No depende del período: es la fotografía del momento. |
resolvidas_pela_ia | Cerradas en el período que terminaron sin agente y tuvieron al menos un mensaje de la IA. Es el volumen que la IA resolvió sin que nadie del equipo asumiera. |
Para la tasa de resolución por la IA, divida resolvidas_pela_ia por encerradas.
Bloque mensajes
Mensajes creados dentro del período. Las notas internas del equipo no entran en ningún número.
| Campo | Cómo se cuenta |
|---|---|
recebidas | Mensajes que enviaron los clientes. |
enviadas | Todo lo que salió del proveedor: IA, agentes, flujos, mensajes automáticos, campañas y envíos por la API. |
pela_ia | Enviados por la IA. |
pelos_atendentes | Enviados por personas del equipo. |
La diferencia entre enviadas y la suma de pela_ia con pelos_atendentes es el volumen automático (flujos, avisos, campañas, integraciones).
Bloque tiempos
Horario hábil
Los tres tiempos cuentan solo lo que cae dentro del horario de atención: vale el horario del departamento de la conversación cuando tiene uno; si no, el horario general. La madrugada, el almuerzo cerrado y el fin de semana no cuentan. Sin ningún horario registrado, el reloj corre las 24 horas. Ejemplo: con jornada de 08:00 a 18:00, un cliente que escribe a las 19:50 y es atendido a las 08:05 del día siguiente cuenta 5 minutos de espera, no 12 horas. La regla completa está en Tiempos en horario de atención.
| Campo | Desde qué hasta qué | Qué atenciones entran |
|---|---|---|
primeira_resposta_media_seg | Desde el primer mensaje del cliente hasta la primera respuesta de la empresa, sea de la IA o de un agente. | Abiertas en el período, con mensaje del cliente y respuesta dentro del período. Una atención sin respuesta no entra. Los mensajes automáticos de flujo y los avisos no cuentan como respuesta. |
espera_fila_media_seg | Desde la apertura de la atención hasta la primera vez que una persona asumió la conversación o la distribución automática se la entregó a alguien. | Abiertas en el período que llegaron a ser asumidas o distribuidas dentro del período. Una conversación resuelta solo por la IA no entra. |
duracao_media_seg | Desde la apertura hasta el cierre, descontados los períodos en que la conversación quedó marcada como esperando respuesta del cliente. | Cerradas en el período. |
Espera de respuesta descontada
Cuando el agente marca la conversación como esperando respuesta del cliente (por ejemplo, "reinicie el router y avíseme"), el tiempo hasta que el cliente vuelve no pesa en la duración de la atención. Cada intervalo de espera se descuenta, también solo en la parte que cae dentro del horario hábil. Una espera todavía abierta al cierre se descuenta hasta el cierre.
Los tiempos miden la atención, no el reloj de pared. Para verificar una conversación específica, la exportación CSV de la pantalla Informes trae la duración hábil de cada conversación cerrada, ya con las mismas reglas.
Bloque satisfacción
Proviene de la encuesta de satisfacción enviada al final de la atención (cuando está activada en Configuración), con una nota de 1 a 5. Vea Encuesta de satisfacción.
| Campo | Cómo se cuenta |
|---|---|
pesquisas_enviadas | Encuestas enviadas dentro del período. |
respostas | De esas, cuántas respondió el cliente con una nota. |
media | Promedio de las notas de esas respuestas, con dos decimales; null sin ninguna respuesta. |
Tasa de respuesta: respostas dividido por pesquisas_enviadas.
Por departamento
por_departamento lista los departamentos que tuvieron atenciones abiertas en el período, del mayor volumen al menor. Un departamento sin ninguna atención en el período no aparece.
| Campo | Descripción |
|---|---|
departamento_id / departamento | Identificación del departamento. |
abertas | Atenciones abiertas en el período que hoy están en ese departamento. |
encerradas | De esas mismas atenciones, cuántas ya están cerradas. |
Aquí encerradas es distinto del bloque conversas: cuenta las atenciones abiertas en el período que ya se cerraron (es la cohorte del período), mientras que conversas.encerradas cuenta todo lo que se cerró en el período, incluso lo que se abrió antes. Por eso las sumas por departamento no coinciden con el total general.
El departamento considerado es el actual de la conversación: una atención que comenzó en Comercial y fue transferida a Soporte cuenta en Soporte.
Por agente
por_atendente lista las personas que son responsables de atenciones abiertas en el período, de quien atendió más a quien atendió menos.
| Campo | Cómo se cuenta |
|---|---|
atendente_id / atendente | Identificación de la persona. |
atendidas | Atenciones abiertas en el período de las que es la responsable actual. |
encerradas | De esas, cuántas ya están cerradas. |
duracao_media_seg | Duración promedio, en horario hábil y con la espera de respuesta descontada, de sus atenciones cerradas en el período. null si no hay ninguna. |
satisfacao_media | Promedio de las notas de encuesta atribuidas a ella y respondidas en el período; null si no hay ninguna. |
avaliacoes | Cuántas notas recibió en el período. |
La atención cuenta para quien es el responsable actual. Si la conversación se transfirió de una persona a otra, cuenta solo para quien se quedó con ella.
Filtro por departamento
Con departamento_id, todos los números pasan a considerar solo ese departamento: conversaciones, mensajes, tiempos, la lista por departamento (que queda con una sola fila) y los volúmenes y duraciones por agente consideran las atenciones que hoy están en el departamento; la satisfacción (general y por agente) usa el departamento registrado en la encuesta.
Para armar una tabla con todos los departamentos lado a lado, llame una vez sin filtro (el total de la empresa) y una vez por departamento, con los ids de departamentos/listar. La receta Exportar indicadores mensuales hace esto.
Buenas prácticas
- Cierre períodos completos. Para la serie histórica, consulte días, semanas o meses ya terminados y guarde el resultado en su BI. El mes en curso cambia con cada atención.
- Prefiera varias llamadas cortas a una larga. Se acepta un año entero, pero una serie mensual (12 llamadas) da más información y cada llamada es más liviana.
- No consulte en un bucle corto. Los números se calculan en el momento; una consulta cada 5 o 15 minutos es suficiente para un panel en vivo. Respete la cuota de la clave (
X-RateLimit-Remaining). - Zona horaria. Las fechas sin zona horaria se interpretan en la zona horaria del servidor (vea
servidor.fuso_horarioen chave/info). Al armar el período desde otra zona horaria, envíe la fecha en ISO 8601 con la zona horaria explícita. - Promedios de promedios. Para unir períodos, no saque el promedio de los promedios: pondere por el volumen (por ejemplo,
duracao_media_segporencerradas).
Errores
Además de los errores comunes a toda la API, descritos en Errores:
error | HTTP | Causa |
|---|---|---|
permissao | 403 | La clave no tiene el permiso Indicadores (escopo igual a relatorios). |
periodo_invalido | 400 | ate anterior a de, o período de más de 366 días (la respuesta trae maximo_dias). |
data_invalida | 400 | de o ate que no se pudo leer (vea campo). |
parametro_invalido | 400 | departamento_id que no es un número entero. |
{"ok": false, "error": "periodo_invalido", "maximo_dias": 366}