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=reportsLa 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_detailEn 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-10y 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-10y 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=queuesAl 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_idResultado:
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=agentsAl 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_idEntidades: 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.5314Y 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=realtimeSe 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%20SpencerDe 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