API para los datos de llamada
Call Center Stats PRO
incluye un servicio web con tecnología REST
, sencillo y potente. Con este, es posible acceder a todos los informes y funciones disponibles en la interfaz de usuario de CCStats PRO, pero en formato JSON. La llamada como una función
REST
se realizar mendiante la apertura de un URL de la siguiente manera: bash
https://dominio_pbx/stats/rest/index.php?entity=value
Donde,
dominio_pbx
es la dirección ip o dominio donde se tiene instalado Asternic Call Center PRO
. "stats" es el directorio web, y "value" es la entidad o función REST
disponible. Las funciones disponibles son:
- Reportes (Reports)
- Tiempo real (Realtime)
- Colas (Queues)
- Agentes (Agents)
- Llamada (Call)
- Buscar (Search)
Es importante tener en cuenta que es posible probar todas las conexiones y funciones
REST
con un navegador web estándar. Los resultados se mostrarán como una página web en formato JSON. INFO
Asternic Call Center Stats PRO
solicitará el nombre de usuario y la contraseña definidos en Configuración → Usuarios y restringirá la información devuelta según lo configurado para el usuario.Entidades: Reportes
Esta entidad tiene el nombre reports
y puede ser llamada de la siguiente manera:
bash
https://dominio_pbx/stats/rest/index.php?entity=reports
La URL anterior mostrará los informes disponibles que se pueden solicitar:
bash
{
"data": [
{
"report" : "answered_calls_detail"
},
{
"report" : "answered_calls_by_queue"
},
{
"report" : "answered_calls_by_agent"
},
{
"report" : "answered_calls_by_url"
},
{
"report" : "answered_calls_by_did"
},
{
"report" : "answered_calls_by_holdtime"
},
{
"report" : "answered_calls_by_event"
}
]
}
Es posible seleccionar cualquier reporte y utilizarlo según corresponda
Ejemplo de reporte de detalle de llamadas contestadas
La llamada de ejemplo se realiza de la siguiente manera:
bash
https://dominio_pbx/qstats/rest/index.php?entity=reports/answered_calls_detail
En este caso, se mostrará la data del día actual debido a que no se ha definido ningún filtro de rango de fecha. Si no se tiene datos para mostrar, la respuesta aparecerá como se muestra a continuación:
bash
{
"page":"1",
"total":"0",
"records":"0",
"rows": []
}
Hay diferentes variables que pueden ser utilizadas con el método
GET
para mostrar resultados condicionales para la entidad: - 1. start: Fecha de inicio en formato año-mes-día (aaaa-mm-dd).
Ejemplo:?entity=reports/answered_calls_detail&start=2012-08-01
- 2. end: Fecha de finalización en formato año-mes-día (aaaa-mm-dd).
Ejemplo:?entity=reports/answered_calls_detail&start=2012-08-01&end=2012-08-02
- 3. secondstart: Hora del día en segundos para mostrar la hora de inicio en un rango.
Ejemplo:?entity=reports/answered_calls_detail&secondsstart=2016551
- 4. secondsend: Hora del día en segundos para mostrar la hora final en un rango.
Ejemplo:?entity=reports/answered_calls_detail&secondsend=2019999
- 5. agent: Para los reportes "_by_agent", se puede filtrar por agente.
- 6. queue: Para los informes "_by_queue", puede filtrar por cola.
Es posible utilizar todas estas variables juntas para obtener una consulta de informe precisa. A continuación, un ejemplo:
bash
https://dominio_pbx/stats/rest/index.php?entity=reports/answered_calls_by_queue&start=2016-08-01&end=2016-08-10
y el resultado
bash
{
"page":"1",
"total":"1",
"records":"6",
"rows": [
{
"Queue" : "2000",
"Received" : "165",
"% Calls" : "71.12"
},
{
"Queue" : "2001",
"Received" : "3",
"% Calls" : "1.29"
},
{
"Queue" : "2002",
"Received" : "60",
"% Calls" : "25.86"
},
{
"Queue" : "2003",
"Received" : "2",
"% Calls" : "0.86"
},
{
"Queue" : "2006",
"Received" : "1",
"% Calls" : "0.43"
},
{
"Queue" : "2007",
"Received" : "1",
"% Calls" : "0.43"
}
]
}
Otro ejemplo de answers_calls_detail que muestra las llamadas detalladas:
bash
https://dominio_pbx/stats/rest/index.php?entity=reports/answered_calls_detail&start=2012-08-01&end=2012-08-10
y el resultado:
bash
{
"page":"1",
"total":"1",
"records":"232",
"rows": [
{
"datetime" : "01-08-2016 10:31:21",
"queue" : "2002",
"agent" : "Travis Spencer",
"callerid" : "4787574818",
"event" : "COMPLETEAGENT",
"waitTime" : "10",
"ringTime" : "10",
"callTime" : "94",
"agentName" : "Travis Spencer",
"queueName" : "2002",
"recording" : "test.wav",
"uniqueid" : "1327498260.2637",
"callflow" : "/asternicjquery/rest/index.php?entity=call/1327498260.2637",
"url" : "www.lala.com",
"did" : ""
},
{
"datetime" : "01-08-2016 10:53:45",
"queue" : "2002",
"agent" : "Travis Spencer",
"callerid" : "2568314606",
"event" : "COMPLETEAGENT",
"waitTime" : "13",
"ringTime" : "13",
"callTime" : "63",
"agentName" : "Travis Spencer",
"queueName" : "2002",
"recording" : "test.wav",
"uniqueid" : "1327499602.2681",
"callflow" : "/asternicjquery/rest/index.php?entity=call/1327499602.2681",
"url" : "www.lala.com",
"did" : ""
},
{
"datetime" : "01-08-2016 11:14:02",
"queue" : "2000",
"agent" : "Regina Spek",
"callerid" : "5082817600",
... la data continúa ...
En el resultado del último ejemplo, es importante tener en cuenta una propiedad llamada "callflow" que muestra un enlace a la entidad "call", que se detallará más adelante en esta documentación. La entidad "call" muestra información detallada de una llamada específica.
Entidades: Colas
Esta entidad tiene el nombre
queues
y puede ser llamada de la siguiente manera:bash
https://dominio_pbx/stats/rest/index.php?entity=queues
Al llamar a esta entidad, se mostrarán las
colas
disponibles en Call Center Stats PRO
. Se mostrará algo similar a esto:bash
{
"data": [
{
"queue_id" : "2",
"queue" : "2000",
"queue_name" : "2000"
},
{
"queue_id" : "8",
"queue" : "2001",
"queue_name" : "2001"
},
{
"queue_id" : "4",
"queue" : "2002",
"queue_name" : "2002"
},
{
"queue_id" : "5",
"queue" : "2003",
"queue_name" : "2003"
},
{
"queue_id" : "1",
"queue" : "2005",
"queue_name" : "2005"
},
{
"queue_id" : "3",
"queue" : "2006",
"queue_name" : "2006"
},
{
"queue_id" : "6",
"queue" : "2007",
"queue_name" : "2007"
},
{
"queue_id" : "9",
"queue" : "2009",
"queue_name" : "2009"
},
{
"queue_id" : "-1",
"queue" : "ALL",
"queue_name" : "ALL"
},
{
"queue_id" : "7",
"queue" : "NONE",
"queue_name" : "NONE"
}
]
}
Para obtener información de una
cola
específica se puede agregar el identificador "queue_id" en la petición de la siguiente manera: bash
https://dominio_pbx/stats/rest/index.php?entity=queues/queue_id
Resultado:
bash
{
"data": [
{
"queue_id" : "6",
"queue" : "2007",
"queue_name" : "2007"
}
]
}
Entidades: Agentes
Esta entidad tiene el nombre
agents
y puede ser llamada de la siguiente manera:bash
https://dominio_pbx/stats/rest/index.php?entity=agents
Al llamar a esta entidad, se mostrarán los
agentes
registrados en Call Center Stats PRO
. Se mostrará algo similar a esto:bash
{
"data": [
{
"agent_id" : "-1",
"agent" : "ALL",
"agent_name" : "ALL"
},
{
"agent_id" : "6",
"agent" : "Andy Fisher",
"agent_name" : "Andy Fisher"
},
{
"agent_id" : "16",
"agent" : "B.Obama",
"agent_name" : "B.Obama"
},
{
"agent_id" : "14",
"agent" : "Boris G.",
"agent_name" : "Boris G."
},
{
"agent_id" : "7",
"agent" : "Daniel L.",
"agent_name" : "Daniel L."
},
{
"agent_id" : "11",
"agent" : "David Haseholf",
......la data continua......
Es posible elegir un agente específico que llame a la entidad de esta manera colocando su identificador "agent_id" en la ruta de la petición:
bash
https://dominio_pbx/stats/rest/index.php?entity=agents/agent_id
Entidades: Llamada
La entidad de llamada denominada
call
muestra información detallada sobre una llamada identificada por la variable "unique_id" de la esta. Para utilizar esta entidad se utilizar el siguiente URL:bash
https://dominio_pbx/stats/rest/index.php?entity=call/13448674833.5314
Y el resultado mostrará algo similar a lo expuesto a a continuación:
bash
{
"totalpages": "1",
"currpage": "1",
"totalrecords": "3",
"data": [
{
"id" : "1",
"uniqueid" : "1327498260.2637",
"datetime" : "2016-08-01 10:31:11",
"queue" : "2002",
"agent" : "NONE",
"event" : "ENTERQUEUE",
"info1" : "www.lala.com",
"info2" : "4787574818",
"info3" : "",
"info4" : "",
"info5" : "Sale",
"agentName" : "NONE",
"queueName" : "2002"
},
{
"id" : "2",
"uniqueid" : "1327498260.2637",
"datetime" : "2016-08-01 10:31:21",
"queue" : "2002",
"agent" : "Travis Spencer",
"event" : "CONNECT",
"info1" : "10",
"info2" : "1327498271.2638",
"info3" : "7",
"info4" : "",
"info5" : "",
"agentName" : "Travis Spencer",
"queueName" : "2002"
},
{
"id" : "3",
"uniqueid" : "1327498260.2637",
"datetime" : "2016-08-01 10:32:55",
"queue" : "2002",
"agent" : "Travis Spencer",
"event" : "COMPLETEAGENT",
"info1" : "10",
"info2" : "94",
"info3" : "1",
"info4" : "",
"info5" : "",
"agentName" : "Travis Spencer",
"queueName" : "2002"
}
]
}
En el ejemplo anterior, se pueden observar eventos detallados para la llamada identificada con el campo utilizado como "unique_id". La primera fila muestra el evento de entrada a la
cola
(ENTERQUEUE), la siguiente muestra el evento de conexión (CONNECT), y finalmente la última corresponde al evento de finalización de llamada (COMPLETECALLER).INFO
La aplicación de
cola
de Asterisk
genera un registro con varios eventos que indican los estados y las acciones durante todas las llamadas recibidas. La sección de entidad de reportes explica cada evento y los campos relacionados.Entidades: Tiempo real (Realtime)
La entidad en tiempo real denominada
realtime
captura al instante el estado de una cola
de Asterisk
, el estado del agente, las estadísticas del día actual y más. Para realizar la petición de esta entidad se utiliza el parámetro de la siguiente manera:bash
https://dominio_pbx/stats/rest/index.php?entity=realtime
Se puede obtener un resultado como el mostrado a continuación:
bash
{
"waiting calls": {
"OUTBOUND": {},
"Test": {},
"saliente": {},
"100": {
"1": {
"calleridNum": "asterisk",
"calleridName": "asterisk",
"waitTime": "2"
}
},
"101": {},
"102": {
"1": {
"calleridNum": "32080805",
"calleridName": "32080805",
"waitTime": "17"
}
},
"103": {}
}
,
"summary": {
"queue": {
"OUTBOUND": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"Test": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"saliente": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"100": {
"Waiting": "1",
"Agents": "1",
"Penalty": "0",
"Logged Off": "1",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "2"
},
"101": {
"Waiting": "0",
"Agents": "1",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"102": {
"Waiting": "1",
"Agents": "1",
"Penalty": "1",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "17"
},
"103": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "1",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
}
}
},
{
"waiting calls": {
"OUTBOUND": {},
"Test": {},
"saliente": {},
"100": {
"1": {
"calleridNum": "asterisk",
"calleridName": "asterisk",
"waitTime": "2"
}
},
"101": {},
"102": {
"1": {
"calleridNum": "32080805",
"calleridName": "32080805",
"waitTime": "17"
}
},
"103": {},
}
},
"summary": {
"queue": {
"OUTBOUND": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"Test": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"saliente": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"100": {
"Waiting": "1",
"Agents": "1",
"Penalty": "0",
"Logged Off": "1",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "2"
},
"101": {
"Waiting": "0",
"Agents": "1",
"Penalty": "0",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
},
"102": {
"Waiting": "1",
"Agents": "1",
"Penalty": "1",
"Logged Off": "0",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "17"
},
"103": {
"Waiting": "0",
"Agents": "0",
"Penalty": "0",
"Logged Off": "1",
"Busy": "0",
"Paused": "0",
"Answered": "0",
"Unanswered": "0",
"Abandoned": "0",
"Abandon Rate": "0",
"Avg Wait": "0",
"Avg Duration": "0",
"Max. wait time": "0"
}
}
},
"agents": {
"OUTBOUND": {},
"Test": {},
"saliente": {},
"100": {},
"101": {},
"102": {},
"103": {}
}
}
Se mostrará en formato JSON el estado actualizado de las
colas
y los agentes
en ese momento. Puede que se requiera actualizarlo cada 5 o 10 segundos para tener los datos más recientes. Entidades: Buscar (Search)
Esta entidad permite buscar en toda la base de datos filas que coincidan utilizando las variables disponibles.
Ejemplo de búsqueda
bash
https://dominio_pbx/stats/rest/index.php?entity=search&start=2016-08-01&end=2016-08-02&agent=Travis%20Spencer
De donde se obtendrá un resultado similar al siguiente:
bash
{
"page":"1",
"total":"1",
"records":"6",
"rows": [
{
"firstEvent" : "ENTERQUEUE",
"overflow" : "1",
"uniqueid" : "1327498260.2637",
"callerid" : "4787574818",
"dateStart" : "2016-08-01 10:31:11",
"dateEnd" : "2016-08-01 10:32:55",
"event" : "COMPLETEAGENT",
"agent" : "Travis Spencer",
"queue" : "2002",
"waitTime" : "10",
"talkTime" : "0",
"combinedWaitTime" : "104",
"totalDuration" : "104",
"recordingFilename" : "test.wav",
"agent_name" : "Travis Spencer",
"queue_name" : "2002",
"callflow" : "/asternicjquery/rest/index.php?entity=call/1327498260.2637"
},
{
"firstEvent" : "ENTERQUEUE",
"overflow" : "1",
"uniqueid" : "1327499602.2681",
"callerid" : "2568314606",
"dateStart" : "2016-08-01 10:53:32",
"dateEnd" : "2016-08-01 10:54:48",
"event" : "COMPLETEAGENT",
"agent" : "Travis Spencer",
"queue" : "2002",
"waitTime" : "13",
"talkTime" : "0",
"combinedWaitTime" : "76",
"totalDuration" : "76",
"recordingFilename" : "test.wav",
"agent_name" : "Travis Spencer",
"queue_name" : "2002",
"callflow" : "/asternicjquery/rest/index.php?entity=call/1327499602.2681"
},
{
"firstEvent" : "ENTERQUEUE",
"overflow" : "1",
"uniqueid" : "1327504603.2835",
"callerid" : "4234324839",
"dateStart" : "2016-08-01 12:16:53",
"dateEnd" : "2016-08-01 12:17:39",
"event" : "COMPLETEAGENT",
"agent" : "Travis Spencer",
......la data continúa......
Si hay alguna información errónea o incompleta, o es necesario generar información adicional, escribir a isscc@issabel.com