Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Tip

Aquí podremos encontrar toda la información relevante a las acciones de telefonía que pueden ser realizadas a través de nuestra API.

Info

Recordar que para poder usar la API se necesita:

  1. Autenticarse y obtener un token para la sesión.

  2. Usar el token en el Header Authorization.

  3. Finalizar sesión.

Vea más aquí


Contenido

Table of Contents
maxLevel1


Llamadas

Aquí veremos las siguientes acciones disponibles:

Realizar llamadas

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Agents/AgentCall
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: callerid (Número con que va a salir la llamada)
            agent    (Nombre del agente que genera la llamda)
            phone    (Número de teléfono del agente)
            tech     (Usualmente SIP)
            context  (Contexto del agente configurado en uContact)
            outqueue (Nombre de la campaña que se computara la llamada)
            destination (Número destino)
Resultado: TEXTO  (Guid de la llamada generado)
              0  Error

Es una llamada en 2 pasos se llama al agente y cuando Atiende o Auto-atiende se genera la llamada final.

Realizar llamada vía proxy

Code Block
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/porthole/1.0.0/porthole.js"></script>
<script type="text/javascript">
 
   function Call () {
       var windowProxy;
       windowProxy.addEventListener(onResponse);
       windowProxy = new Porthole.WindowProxy(window.location.protocol + window.location.hostname);
       windowProxy.post({'action': 'call', 'campaign' : '<CAMPAIGN>', 'callerid' : '<CALLERID>', 'destination' : '<NUMBER>'});
   }

   function onResponse(messageEvent) {
        response = messageEvent.data.guid; //retorna id único de llamada
 
    }
 
</script>

Realizar llamada pasando Datos al Workflow

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Agents/AgentCallwithData
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: callerid (Número con que va a salir la llamada)
            agent    (Nombre del agente que genera la llamda)
            phone    (Número de teléfono del agente)
            tech     (Usualmente SIP)
            context  (Contexto del agente configurado en uContact)
            outqueue (Nombre de la campaña que se computara la llamada)
            destination (Número destino)
            data     (datos para enviar al workflow, habitualmente un JSON que se puede pasar a variables con la actividad JSON dentro del flujo)
            form     (Nombre de Form o URL para Popup)
            
Resultado: TEXTO  (Guid de la llamda generado)
              0  Error


Es una llamada en 2 pasos se llama al agente y cuando Atiende o Auto-atiende se genera la llamada final.

Realizar llamada directamente desde el teléfono

Info

Esta función permite realizar llamadas, pero se diferencia de la anterior porque utiliza el teléfono ya inicializado del portal.

La única manera de realizarlo es vía proxy, dado que la comunicación es directamente con el portal de uContact.

Code Block
languagejs
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/porthole/1.0.0/porthole.js"></script>
<script>
        function call(){

            var windowProxy;
            
            windowProxy = new Porthole.WindowProxy(window.location.protocol + '//' + window.location.hostname);
            windowProxy.addEventListener(onResponse);
            windowProxy.post({
                action: 'callWithPhone',
                destination: '091000000',
                campaign: 'Sale->'
            });
        }

   
 
        function onResponse(messageEvent) {
            var response = messageEvent.data.guid;
            alert(response);
        }
</script>

Cortar llamada

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Agents/HangupPhone
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: phone    (Número de teléfono del agente)

Resultado:    1  Llamada cortada correctamente
              0  Error

Cortar llamada vía Proxy

Code Block
languagejs
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/porthole/1.0.0/porthole.js"></script>
<script type="text/javascript">
//Ejemplo en click de cerrar el Tab
   function Hangup () {
       var windowProxy;
       windowProxy = new Porthole.WindowProxy(window.location.protocol + window.location.hostname);
	   windowProxy.post({'action': 'hangup'});
   }

</script>

Tipificar llamadas

Info

Tipifica la llamada ejecutando la acción correspondiente al Marcador.

  • RESPOOL

  • RESPOOLALTERNATIVE

  • BLACKLIST

  • RESCHEDULE

Deben estar configuradas las tipificaciones en el sistema para que funcione.

Code Block
Relative URL: Integra/resources/api/DispositionCall
Method: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Params:     campaign      (Nombre de la campaña obligatorio)
            agent         (nombre agente obligatorio)
            callerid      (número telefono cliente)
            guid          (id de la llamada)
            l1            (nivel 1 tipificación)
            l2            (nivel 2 tipificación)
            l3            (nivel 3 tipificación)
            d1            (dato extra a guardar)
            d2            (dato extra a guardar)
            comment       (comentario)
            schedule       (si hay una fecha (formato ejemplo 2019-02-26 13:45:00) y la accion del marcador es RESCHEDULE agenda una llamada a ese número )
            camptoreschedule (marcador al cual se puede reagendar la llamada)
            tag            ( texto para tag o vacio por defecto l1|l2|l3 )
Result:  1

Respuestas del WS

Code Block
200 OK:

Retorna json que contiene:

Result: ok, txtcode: txtcode


400 ERROR:

Campos obligatorios:

Campana: "Wrong parameters:  Empty campaign."
Callerid: "Wrong parameters: Empty callerid"
Guid: "Wrong parameters: Empty guid"
Agente: "Wrong parameters: Empty agent"
Nivel 1 de tipificación: "Wrong parameters: Empty value1"
Validaciones:

La combinación de campana, nivel1, nivel2, nivel3 no corresponde con una tipificación creada.
Disposition not found for level1: " + l1 + ", level2: " + l2 + " level3: " + l3
En caso de acción de reagenda:

The schedule date format is not well formed: El formato de la fecha tiene que ser yyyy-MM-dd HH:mm:ss
Wrong parameters: Empty schedule date.

Agregar número a Blacklist

InfoAgrega un numero a la black list, puede ser por campaña o usar * en campaign para todas

Blacklist

Objeto de blacklist

Code Block
languagejs
{
  "phone": "12341234",
  "campaign": "Campaign",
  "username": "username",
  "company": "Company name",
  "job_title": "Developer",
  "name": "Name"
}
Info
  • Se pueden agregar y eliminar uno o varios registros de blacklist al mismo tiempo.

  • Es posible utilizar * en la propiedad de campaign para hacer referencia a todas las campañas.

  • Los campos obligatorios son phone y campaign, el resto son opcionales

  • Al momento de eliminar registros no es necesario enviar todas las propiedades del objeto. Solo phone y campaign son necesarios

Agregar número a Blacklist

Code Block
Relative URL: Integra/resources/admin/addblack
Method: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Params:  objeto blacklist (JSON Object)
Result:  1

Agregar varios números a Blacklist

Code Block
Relative URL: Integra/resources/admin/addblackbulk
Method: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Params:  array de blacklist (JSON Array)
Result:  1

Eliminar numero de Blacklist

Code Block
Relative URL: Integra/resources/admin/deleteblack
Method: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Params:  objeto blacklist (JSON Object)
Result:  1

Eliminar varios numeros de Blacklist

Code Block
Relative URL: Integra/resources/admin/addblackdeleteblackbulk
Method: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Params:   array de  blackblacklist (JSON ObjectArray)
Result:  1

Objeto Json

Code Block
languagejs
{ "phone": "número de telefono", "campaign":"Campaña", "username": "usuario que ingreso el dato", "company": "Dato Cliente", "job_title": "Dato Cliente","name": "Nombre"}



Grabaciones

Obtener grabaciones de llamada

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Cdr/getrecords
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: lastrow  (Último número de resultados de obtener registros) ejemplo 0 (Obtiene ne 50 grabaciones de la 0-50), 50 (obtiene de la 51-100)) si el searchLimit es 50
			searchLimit cantidad de registros
            filter  (Objeto filtro JSON) 
            Random: 1 (Siempre 1)
            searchLimit :50
Resultado: JSON 


Objeto Json

Code Block
languagejs
{
"calldatei": "2015-12-03 00:00:00",         //Fecha inicial
"calldatef": "2016-02-24 23:59:59",          //Fecha final
"agent": "",                                 //Agente
"campaign": "",                              //Campaña
"source": "",                                //Origen
"destination": "",                           //Destino
"data": "",                                  //Datos de Tag de Llamadas
"range": "",                                 //Rango de horas
"rating": "",                                //Calificación
"mindur": "",                                //Duración mínima
"exclude": "",                               //Excluir número
"type": "record"                             //Tipo de registro siempre igual
,"cont": ""                                  //Cantidad de veces que se encuentra ese número en el rango seleccionado
}
Info

Las grabaciones pueden estar en 4 lugares distintos:

Respuesta

Code Block
[
{
		"id" : 1,
		"calldate" : "2022-06-20 17:56:59",
		"clid" : "\"Out<-\" <9901>",
		"src" : "9901",
		"dst" : "33334444",
		"dcontext" : "inbound",
		"channel" : "SIP/9901-00000000",
		"dstchannel" : "SIP/1111-00000001",
		"lastapp" : "Queue",
		"lastdata" : "Out<-,tkc,,,600,,,functions,,",
		"duration" : 16,
		"billsec" : 16,
		"disposition" : "NO ANSWER",
		"amaflags" : 3,
		"accountcode" : "Inbound",
		"userfield" : null,
		"uniqueid" : "1655747819.0",
		"type" : "record",
		"guid" : "020f9687-adc6-46ca-b675-e96c9d1606ef",
		"causecode" : "16",
		"campaign" : "Out<-",
		"direction" : "inbound",
		"carrier" : "9901",
		"linkedid" : "1655747819.0",
		"peeraccount" : "agent",
		"sequence" : 0,
		"charged_balance" : null,
		"real_balance" : null,
		"note" : null,
		"contact" : null,
		"finishtime" : "2022-06-20 17:58:34",
		"rating" : 0,
		"dialerbase" : null,
		"parandvalues" : null,
		"alternatives" : null,
		"quality" : 0
	},
	{
		"id" : 2,
		"calldate" : "2022-06-20 17:57:00",
		"clid" : "\"Out<-\" <9901>",
		"src" : "9901",
		"dst" : "33334444",
		"dcontext" : "inbound",
		"channel" : "SIP/9901-00000000",
		"dstchannel" : "SIP/9911-00000002",
		"lastapp" : "Queue",
		"lastdata" : "Out<-,tkc,,,600,,,functions,,",
		"duration" : 15,
		"billsec" : 15,
		"disposition" : "NO ANSWER",
		"amaflags" : 3,
		"accountcode" : "Inbound",
		"userfield" : null,
		"uniqueid" : "1655747819.0",
		"type" : "record",
		"guid" : "020f9687-adc6-46ca-b675-e96c9d1606ef",
		"causecode" : "16",
		"campaign" : "Out<-",
		"direction" : "inbound",
		"carrier" : "9901",
		"linkedid" : "1655747819.0",
		"peeraccount" : "InboxUser",
		"sequence" : 3,
		"charged_balance" : null,
		"real_balance" : null,
		"note" : null,
		"contact" : null,
		"finishtime" : "2022-06-20 17:58:34",
		"rating" : 0,
		"dialerbase" : null,
		"parandvalues" : null,
		"alternatives" : null,
		"quality" : 0
	}]
Code Block
https://Telefonía/records/guid.mp3
https://Telefonía/records/guid.mp3
https://RespaldoGrabaciones/records/20160118/guid.mp3
https://RespaldoGrabaciones/records/guid.mp3

Guid (Identificador único encontrado en objeto JSON)
Ejemplo: 7e4e7db9-f080-494e-b04b-7c8e47711558
Note

Los directorios (folder) son la fecha de la grabación que se encuentra en ese registro (calldate), sin guiones ni la hora.

Esto se debe a que al guardar millones de archivos en el Sistema Operativo no los maneja correctamente, por lo cual se guardan dentro de directorios.

Warning

Si no se encuentra la grabación en estos lugares, puede ser que se encuentre en formato GSM.

Si este es el caso, es posible realizar 2 acciones:

  1. Si su aplicación puede reproducir GSM es simplemente cambiar la extension mp3 por gsm e intentar encontrarla en los mismos 4 lugares.

  2. Se puede convertir GSM a MP3 con un WebService.

Convertir grabaciones

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Supervisor/convert
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: guid (Identificador único de la grabación)  
            folder (Ejemplo:20160118) Es la fecha de la grabación en caso que se encuentre en su directorio.
Result: 1 para completado.
Info

Luego intentaremos encontrar los MP3 de la misma forma (puede usarse el reproductor de HTML5 o cualquier reproductor de audio).

Code Block
https://Telefonía/records/guid.mp3
https://Telefonía/records/folder/guid.mp3
https://RespaldoGrabaciones/records/folder/guid.mp3
https://RespaldoGrabaciones/records/guid.mp3
 
  
Guid (Identificador único encontrado en objeto JSON) 
Ejemplo: 7e4e7db9-f080-494e-b04b-7c8e47711558

Marcar grabación (Tag)

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Agents/TagRecord
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: phone   (Número destino) 
            guid    (Identificador único)
            data    (Texto de marcado )
Result: Vacío, es asincrónico

Vía Proxy

Code Block
languagejs
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/porthole/1.0.0/porthole.js"></script>
<script type="text/javascript">
//Ejemplo en click de cerrar el Tab
   function Hangup () {
       var windowProxy;
       windowProxy = new Porthole.WindowProxy(window.location.protocol + window.location.hostname);
	   windowProxy.post({'action': 'tag', 'guid' : '<GUID>', 'message' : '<MESSAGE>'});
   }

</script>



Marcadores

Acciones disponibles

CTI

Este JSON es encontrado en el LocalStorage y encriptado, tiene la información de la llamada que fue atendida y la información del registro del marcador, si corresponde para Respool.

Dialer: Campaña, Num principal, status (siempre 1), data (parámetros y valores que pasan al Workflow), alternatives (separados por :), retries (reintentos que va haciendo ese número), contact (ID contacto), dialebase, prioridad, agentphone.

Estos datos hay que convertirlos al objetoRespool que se muestra más abajo.

¿Qué podemos realizar con Objeto Respool?

  • Cambiar teléfono principal por alternativos y reordenar a gusto.

  • Cambiar cantidad de reintentos para ese número (ejemplo: si pongo un alternativo como principal poner el 0).

  • Cambiar prioridades.

  • Agregar datos para el workflow o cambiarlos.

  • agentphone, si es progressive asignar a otro agente.

Warning

NO CAMBIAR: campaña, status, contact, dialerbase: Puede ocasionar errores en el marcador.

Vía Proxy

Definir en su página

Code Block
languagejs
  windowProxy = new Porthole.WindowProxy('<URL PADRE>');
  windowProxy.addEventListener(onMessage);
  windowProxy.post({'action': 'CTI'});


  function onMessage(messageEvent) {
    CTI = messageEvent.data.CTI;
  
  }

Respool llamada

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Dialers/Respool
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros:  callspool   (Objeto JSON)
Resultado:  1

Objeto Json

Code Block
languagejs
{
  "campaign": "Ventas->",                  //Nombre campaña
  "destination": "098344484",              //Número destino
  "dialerbase": "basetest",                 //Nombre lista del discador
  "status": 1,                               // 1 registro habilitado a ser marcado
  "data": "Par1=Val1:Par2=Val2",             // Parametros para flujos y formularios
  "alternatives": "098124484",               // Números alternativos separados con :
  "contact": 222,                            // Id contacto
  "retries": 0,                              // 0 ya que comenzamos a marcar un nuevo número
  "priority": 9999,                          // Prioridad del registro no usar 1 ya que es para agendados, usar > 1 
  "agentphone": "1001"                       // Para marcadores Progresivos
}

Via Proxy

Code Block
languagejs
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/porthole/1.0.0/porthole.js"></script>
<script type="text/javascript">

   function Respool () {
       var windowProxy;
       windowProxy = new Porthole.WindowProxy(window.location.protocol + window.location.hostname);
	   windowProxy.post({'action': 'respool', 'objetoRespool' : <Objeto Respool>});
   }

</script>

Agendar llamada

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Dialers/ScheduleDialerCall
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros:  callschedule   (Objeto JSON)
Resultado:  1 OK
            0 ERROR

Objeto Json

Code Block
 {
  "calldate" : "2015-10-11 15:00:00",              //Fecha a ser ejecutada
  "campaign" : "Ventas->",                         //Campaña de marcador
  "destination" : "098344484",                     //Destino de la llamada
  "alternatives" : "099124484:099121212",          //Números alternativos
  "agentphone" : "1001",                           //Número de agente si Progresivo
  "data" :  "Par1=Val1:Par2=Val2"                  //Valores para Flujos y Formularios
}

Via Proxy

Code Block
languagejs
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/porthole/1.0.0/porthole.js"></script>
<script type="text/javascript">

   function Schedule () {
       var windowProxy;
       windowProxy = new Porthole.WindowProxy(window.location.protocol + window.location.hostname);
	   windowProxy.post({'action': 'schedule', 'callDate' : '<2016-10-10 15:00:00>', 'objectDialer' : <Objecto Respool> });
   }

</script>

Tareas Marcadores

Info

Si se especifica fecha, la tarea se ejecutará mismo en esa fecha agendada, en caso de que la fecha se especifique como nula, la tarea se ejecutará cuando no haya tareas agendadas y se encuentre libre.

La prioridad de la tarea con fecha específica será mayor a la prioridad de la tarea agendada con fecha nula.

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Dialers/DialerTask
Método: POST
content-type: application/x-www-form-urlencoded
Parámetros:  call   (Objeto JSON)
Resultado:  1 OK
            0 ERROR

Ejemplos para cada modo:

Agregar marcador con prioridad 1

Info

“calldate” es AHORA
Esta acción es utilizada para llamar momentos luego de ser ejecutada
bulk = false
automatic = true
Se le da prioridad 1 pone una agenda para la llamada

Code Block
{"calldate" : null,
"campaign" : "nombreCampaña<-",
"destination": "12-345-678",
"alternatives": "",
"agent" : "",
"data": "idcustomer=7:name=Seba",
"source": "source",
"bulk" : false,
"automatic" : true }

Crear llamada manual en el momento

Info

calldate = null el parámetro quedará vacío
bulk = false
automatic = false

Esto crea una llamada en el momento

Code Block
{"calldate" : null,
"campaign" : "nombreCampaña<-",
"destination": "12-345-678",
"alternatives": "",
"agent" : "",
"data": "idcustomer=7",
"source": "source",
"bulk" : false,
"automatic" : false }

Agregar llamada al marcador

Note

En caso de ser Progresivo recordar ingresar tambien el agente.

Code Block
//Uso el nombre de usuario para ese Agente:

{"calldate" : null,
"campaign" : "nombreCampaña->",
"destination": "12-345-678",
"alternatives": "",
"agent" : "Agente1",
"data": "idcustomer=7",
"source": "source",
"bulk" : true,
"automatic" : false }

//Uso el número asignado para ese Agente:

{"calldate" : null,
"campaign" : "nombreCampaña->",
"destination": "12-345-678",
"alternatives": "",
"agent" : "1001",
"data": "idcustomer=7",
"source": "source",
"bulk" : true,
"automatic" : false }

Agendar llamada para marcador

Info

Cuando calldate es distinto de null agenda llamada para el marcador

Code Block
{"calldate" : "2015-10-11 15:00:00",
"campaign" : "nombreCampaña->",
"destination": "12-345-678",
"alternatives": "",
"agent" : "Agente1",
"data": "idcustomer=7",
"source": "source",
"bulk" : true,
"automatic" : false }

Borrar Contacto del Dialer

Code Block
Relative URL: Integra/resources/Dialers/RemoveContact
Method: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Params:     campaign    (Nombre de la campaña)
            number      (Número a borrar)
Result:  1

Borrar Agenda del Marcador

Parámetros: campaña, el número, fecha desde y fecha hasta (formato YYYY-MM-DD hh:mm:ss) para poder borrar por fecha.

Code Block
Relative URL: Integra/resources/Dialers/RemoveScheduleDialerCall
Method: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Params:     campaign      (Nombre de la campaña)
            destination   (número a borrar)
            from          (Fecha desde a borrar)
            to            (Fecha hasta a borrar)
Result:  1


Subir Bases

La API nos da la posibilidad de subir las listas de marcadores con parámetros o con timezone para que sea utilizada la más adecuada a sus necesidades.

Subir base de llamadas

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Dialers/uploadbase
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros:  filename         (Nombre archivo)
             fileb64          (Contenido del archivo en base64)
             campaign         (Nombre campaña)
             cant             (Cantidad de registros)
			 username		  (Usuario que sube la base)
Resultado: 1 (Async Method)

Formato del archivo

Code Block
prueba1;098344484;var1=val1:var2=val2;099124484:099111111;9999;1001
 
campaña;númeroprincipal;parametros para formularios y flujo;alternativos separados por :; prioridad (optional);teléfono agente (optional)

Subir base de llamadas con zona horaria

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Dialers/uploadbasewithtimezone
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros:  filename         (Nombre archivo)
             fileb64          (Contenido del archivo en base64)
             campaign         (Nombre campaña)
             cant             (Cantidad de registros)
             username         (Usuario que sube la base)
             timezone         (Zona horaria, la lista de husos se encuentra en: Timezones Habilitados en uContact)
Resultado: 1 (Async Method)

Formato del archivo

Code Block
languagetext
prueba1;098344484;var1=val1:var2=val2;099124484:099111111;9999;1001
 
campaña;númeroprincipal;parametros para formularios y flujo;alternativos separados por :; prioridad (optional);teléfono agente (optional)



Información de Campañas

También puede obtener la información de las campañas de voz.

Resumen de campañas

Para ver resumido el estado de las campañas del sistema, existe el siguiente método:

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Supervisor/queuesummary
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Resultado: JSON

Respuesta

Code Block
languagejson
[
    {
        "queue": "Power<-",
        "loggedIn": 10,
        "available": 5,
        "callers": 3,
        "holdTime": 18,
        "talkTime": 130,
        "longestHoldTime": 220,
        "internalActionId": "1982468278_6312",
        "dateReceived": "Nov 2, 2018 11:31:42 AM"
    },
    {
        "queue": "test->",
        "loggedIn": 0,
        "available": 0,
        "callers": 0,
        "holdTime": 0,
        "talkTime": 0,
        "longestHoldTime": 0,
        "internalActionId": "1982468278_6312",
        "dateReceived": "Nov 2, 2018 11:31:42 AM"
    },
    {
        "internalActionId": "1982468278_6312",
        "dateReceived": "Nov 2, 2018 11:31:42 AM"
    }
]

Estado de Campañas

En cambio si queremos obtener toda la información de las campañas del sistema, podemos usar este otro método:

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Supervisor/campaignstatus
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: queue (vacio)
Resultado: JSON

Respuesta

Code Block
languagejson
{
    "Power<-": {
        "campaign": "Power<-",
        "availables": 0,
        "notavailables": 1,
        "paused": 0,
        "busy": 0,
        "busypaused": 0,
        "totalagents": 1,
        "logged": 0,
        "onwrapup": 0,
        "completed": 0,
        "abandoned": 0,
        "talked": "00:00:00-0",
        "hold": "00:00:00-0",
        "abandonedlevel": "0",
        "totalcalls": 0,
        "acd": 0,
        "servicelevel": "0.0",
        "servicelevel2": "0.0",
        "strategy": "leastrecent",
        "slevelthreshold": "3",
        "wrapup": 0
    },
    "test->": {
        "campaign": "test->",
        "availables": 0,
        "notavailables": 0,
        "paused": 0,
        "busy": 0,
        "busypaused": 0,
        "totalagents": 0,
        "logged": 0,
        "onwrapup": 0,
        "completed": 0,
        "abandoned": 0,
        "talked": "00:00:00-0",
        "hold": "00:00:00-0",
        "abandonedlevel": "0",
        "totalcalls": 0,
        "acd": 0,
        "servicelevel": "0.0",
        "servicelevel2": "0.0",
        "strategy": "leastrecent",
        "slevelthreshold": "3",
        "wrapup": 3
    }
}

Para obtener la información de los agentes junto con las estadísticas de la campaña, para una campaña en específico, existe el siguiente método. Es la misma ruta que el anterior, pero se le especifica el nombre por parámetro.

Además de devolver el objeto con información de la campaña, también se devuelve el objeto de cada agente perteneciente a ella.

Code Block
https://dominio.ucontactcloud.com/Integra/resources/Supervisor/campaignstatus
Método: POST
content-type:application/x-www-form-urlencoded; charset=UTF-8
Parámetros: queue (Ejemplo: "test->")
Resultado: JSON

Respuesta

Code Block
languagejson
{
  "test->": {
      "campaign": "test->",
      "availables": 1,
      "notavailables": 1,
      "paused": 0,
      "busy": 0,
      "busypaused": 0,
      "totalagents": 2,
      "logged": 1,
      "onwrapup": 0,
      "completed": 0,
      "abandoned": 0,
      "talked": "00:00:00-0",
      "hold": "00:00:00-0",
      "abandonedlevel": "0",
      "totalcalls": 0,
      "acd": 0,
      "servicelevel": "0.0",
      "servicelevel2": "0.0",
      "strategy": "fewestcalls",
      "slevelthreshold": "15",
      "wrapup": 0
  },
  "SIP/1010": {
      "queue": "test->",
      "location": "SIP/1010",
      "membership": "",
      "name": "Daniel",
      "penalty": 0,
      "callsTaken": 0,
      "lastCall": 0,
      "status": 5,
      "paused": false,
      "stateinterface": "SIP/1010",
      "incall": 0,
      "pausedreason": "[]",
      "internalActionId": "1982468278_8979",
      "dateReceived": "Nov 2, 2018 11:36:11 AM",
      "server": "00:10:12"
  },
  "SIP/1001": {
      "queue": "test->",
      "location": "SIP/1001",
      "membership": "",
      "name": "Santiago",
      "penalty": 0,
      "callsTaken": 0,
      "lastCall": 0,
      "status": 1,
      "paused": false,
      "stateinterface": "SIP/1001",
      "incall": 0,
      "pausedreason": "",
      "internalActionId": "1982468278_8979",
      "dateReceived": "Nov 2, 2018 11:26:45 AM",
      "server": "00:19:39"
  }
}

Códigos de estado de los agentes

Code Block
    UNKNOWN = 0
  NOT_INUSE = 1
      INUSE = 2
       BUSY = 3
    INVALID = 4
UNAVAILABLE = 5
    RINGING = 6
  RINGINUSE = 7
     ONHOLD = 8
     WRAPUP = 9


Colección de postman con algunas de las llamadas.

View file
nameAPI Telefonia.postman_collection.json