Skip to content

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ónUsuarios 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.
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