API de Movidesk - Telefonía - Con control de la cola
19 min
Creado por Heloisa Kopsch Hendges en 13/05/2018 17:18
Actualizado por Karine Moreira en 24/09/2024 16:33
Importante: Nuestras API tienen un límite de 10 solicitudes por minuto para garantizar un comportamiento saludable en su uso. Si tienes un escenario específico que requiere aumentar el uso, contacta a nuestro equipo de atención para analizar la viabilidad. Más información sobre horarios y límites de las APIs
https://api.movidesk.com/public/v1

Telefonía - Con control de la cola

          A lo largo de esta documentación, se describen los procedimientos para la utilización de la API que integra centrales telefónicas con Movidesk. Si se utilizan las APIs descritas en esta documentación, Movidesk controlará la cola de tu central telefónica. Es importante que antes de utilizar la API, leas la documentación del módulo de telefonía (que puedes encontrar haciendo clic aquí). Para cada llamada recibida, debe haber una llamada API identificando uno de los siguientes estados: "Llamada finalizada", "Llamada perdida" o "Llamada cancelada". Si esto no se cumple, los registros en la base de datos relacionados con las llamadas telefónicas estarán incompletos.

 

Layout 

Llamada recibida

  URL:    /asterisk_receivedCall
  Métodos: POST

 

Propiedad Tipo Tamaño Obligatorio Descripción
token Guid   ✓  Clave API de Movidesk.
queueId int           10 ✓  ID de la cola, debe ser el mismo informado en el registro de grupo de telefonía en Movidesk.
clientNumber string  128 ✓  Número de teléfono que está realizando la llamada.
id string  256 ✓  Identificador único de la llamada realizada. Obs.: Solo será posible relacionar un id único de llamada a un ticket. De esta forma, no será posible asociar un id repetido a un ticket.
callDate datetime UTC   Fecha de recepción de la llamada.  La fecha informada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. 

 

Llamada transferida

  URL:    /asterisk_transferedCall
  Métodos: POST

 

Propiedad Tipo Tamaño Obligatorio Descripción
token Guid   ✓  Clave API de Movidesk.
id string   256 ✓  Identificador único de la llamada realizada. Debe ser el mismo que fue informado en el método de llamada recibida. Obs.: Solo será posible relacionar un id único de llamada a un ticket. De esta forma, no será posible asociar un id repetido a un ticket.
branchLine string  128 ✓  Extensión del agente a la que la llamada será transferida. Debe ser la misma que retornó el método de llamada recibida.
transferDate datetime UTC   Fecha de la transferencia de la llamada.  La fecha informada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. 

  

Llamada finalizada

  URL:    /asterisk_completedCall
  Métodos: POST

 

Propiedad Tipo Tamaño Obligatorio Descripción
token Guid   ✓  Clave API de Movidesk.
id string   256 ✓  Identificador único de la llamada realizada. Debe ser el mismo que fue informado en el método de llamada recibida. Obs.: Solo será posible relacionar un id único de llamada a un ticket. De esta forma, no será posible asociar un id repetido a un ticket.
link string  max   Enlace con la grabación de la llamada. El mismo será incluido en la descripción de la acción del ticket respectivo a la llamada.
completedDate datetime UTC   Fecha de finalización de la llamada.  La fecha informada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. 

  

Llamada perdida

  URL:    /asterisk_lostCall
  Métodos: POST

 

Propiedad Tipo Tamaño Obligatorio Descripción
token Guid   ✓  Clave API de Movidesk.
id string   256 ✓  Identificador único de la llamada realizada. Debe ser el mismo que se informó en el método de llamada recibida. Obs.: Solo se podrá relacionar un id único de llamada para un ticket. Por lo tanto, no será posible asociar un id repetido para un ticket.
link string  max   Enlace con la grabación del mensaje dejado por el cliente. El mismo será incluido en la descripción de la acción del ticket respectivo a la llamada.
completedDate datetime UTC   Fecha de finalización de la llamada.  La fecha informada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. 

    

Llamada cancelada/abandonada

  URL:    /asterisk_canceledCall
  Métodos: POST

 

Propiedad Tipo Tamaño Obligatorio Descripción
tokenGuid ✓ Clave API de Movidesk.idstring  256✓ Identificador único de la llamada realizada. Debe ser el mismo que se informó en el método de llamada recibida. Obs.: Solo se podrá relacionar un id único de llamada a un ticket. Por lo tanto, no será posible asociar un id repetido a un ticket.canceledDatedatetime UTC ✓Fecha de cancelación/abandono de la llamada.  La fecha informada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. 

 

Actualizar enlace de la grabación de la llamada

  URL:    /setMadeCallLink
  Métodos: POST

 

Propiedad Tipo Tamaño Obligatorio Descripción
token Guid   ✓  Clave API de Movidesk.
id string   256 ✓  Identificador único de la llamada realizada. Debe ser el mismo que se informó en el método de llamada recibida. Obs.: Solo se podrá relacionar un id único de llamada a un ticket. Por lo tanto, no será posible asociar un id repetido a un ticket.
Link string 256    Enlace con la grabación de la llamada. Será incluido en la descripción de la acción del ticket respectivo a la llamada.

   *UTC: El Tiempo Universal Coordinado (del inglés Universal Time Coordinated) es el huso horario de referencia a partir del cual se calculan todas las demás zonas horarias del mundo. Ej: Si tu huso horario es el de Brasilia (UTC-03:00) y la hora actual es 15h30, la hora UTC será 18h30.

 

Trabajando con los datos

Para acceder a los datos es necesario que previamente se genere una clave para la API

Para generar una clave para la API (token), accede a Movidesk, ve a Configuraciones / Cuenta / Parámetros y en la pestaña de ambiente haz clic en el botón "Generar nueva clave" si aún no tienes una creada.
Podrás repetir esta operación siempre que quieras generar una nueva clave de acceso, pero recuerda que al generar una nueva clave, todos los programas que usen la clave antigua dejarán de funcionar.

Flujos que deben ser seguidos 

Escenario feliz 

 

La central recibe una llamada telefónica ->  La central realiza una llamada API al método asterisk_receivedCall -> Movidesk retorna la extensión del agente disponible para atender la llamada -> La central transfiere la llamada a la extensión y realiza una llamada API al método asterisk_transferedCall -> Movidesk abre automáticamente la pantalla de control de la llamada telefónica para el agente al que se transfirió la llamada -> La central identifica que la llamada ha finalizado y realiza una llamada API al método asterisk_completedCall -> Movidesk cierra automáticamente la pantalla que estaba abierta para el agente y realiza los trámites necesarios en el ticket generado/asociado a la llamada.

 

 Llamada recibida

POST: https://api.movidesk.com/public/v1/asterisk_receivedCall?
token=155cac97-f203-4bb8-86e1-aa4cb8781f3e&queueId=1&clientNumber=4733990777&id=3&callDate=2018-5-1T17:00:00

          Respuesta: Estado 200 con la extensión del agente disponible para atender la llamada o código que indica por qué la llamada no podrá ser transferida. En este momento la llamada aparecerá en Movidesk en la cola de llamadas esperando atención. Sugerimos que, cuando el código devuelto sea 3 o 4, la central continúe llamando al método asterisk_receivedCall hasta que se devuelva la extensión de algún agente. Es necesario que al recibir la respuesta con la extensión, se valide por la central si esa extensión realmente está disponible, ya que puede ser que el propio agente haya originado una llamada y Movidesk no tendrá control sobre eso. Si la central considera que la extensión no está disponible, se debe realizar otra llamada al asterisk_receivedCall, que siempre devuelve extensiones diferentes siguiendo el orden establecido dentro de Movidesk. Si la central considera la llamada como perdida, se debe llamar al método asterisk_lostCall.

         Identificación de códigos:

         0 = Es un feriado;

         1 = Fuera del horario de atención;

         2 = Ningún agente del grupo está en línea en Movidesk;

         3 = Ningún agente del grupo está en línea en la telefonía;

         4 = Todos los agentes del grupo están en llamada.

 

LLamada transferida

POST: https://api.movidesk.com/public/v1/asterisk_transferedCall?
token=155cac97-f203-4bb8-86e1-aa4cb8781f3e&id=3&branchLine=5252&transferDate=2018-5-1T17:02:00

          Respuesta: Estado 200. En ese momento, la llamada aparecerá en Movidesk en la cola de llamadas en curso y la pantalla para el control de llamadas aparecerá automáticamente para el agente con la extensión informada (en el ejemplo, 5252).

 

LLamada finalizada

POST: https://api.movidesk.com/public/v1/asterisk_completedCall?
token=155cac97-f203-4bb8-86e1-aa4cb8781f3e&id=3&link=https://www.linkdagravacaodachamada.com.br&completedDate=2018-5-1T17:20:00

          Respuesta: Estado 200. En ese momento, la llamada saldrá de las colas de Movidesk y la pantalla para el control de llamadas se cerrará automáticamente. Se añadirá la acción con la grabación de la llamada en el ticket correspondiente a la llamada.

 

Escenarios alternativos 

  1. La central recibe una llamada telefónica -> La central realiza una llamada API al método asterisk_receivedCall -> Movidesk devuelve el código 0 o 1 o 2 -> La central considera la llamada como perdida, solicita al cliente que deje un mensaje y realiza una llamada API al método asterisk_lostCall -> Movidesk genera automáticamente un ticket con origen de llamada perdida y genera una acción en el ticket con la descripción de la llamada y el enlace para escuchar la grabación del mensaje dejado por el cliente.
  2. La central recibe una llamada telefónica -> La central realiza una llamada API al método asterisk_receivedCall -> Movidesk devuelve el código 3 o 4 -> La central considera que todos los agentes están ocupados, pero sigue realizando solicitudes al método asterisk_receivedCall hasta que Movidesk devuelva la extensión del agente que está disponible para atender la llamada -> La central transfiere la llamada a la extensión y realiza una llamada API al método asterisk_transferedCall -> Movidesk abre automáticamente la pantalla de control de la llamada telefónica para el agente al que se transfirió la llamada -> La central identifica que la llamada ha finalizado y realiza una llamada API al método asterisk_completedCall -> Movidesk cierra automáticamente la pantalla que estaba abierta para el agente y realiza los trámites necesarios en el ticket generado/ asociado a la llamada.
  • La central recibe una llamada telefónica -> La central realiza una llamada API al método asterisk_receivedCall -> Movidesk devuelve el código 3 o 4 -> La central considera que todos los agentes están ocupados, pero continúa realizando solicitudes al asterisk_receivedCall hasta que el cliente se canse de esperar y abandone la llamada -> La central considera la llamada como cancelada/abandonada y realiza una llamada API al método asterisk_canceledCall -> Movidesk genera automáticamente un ticket con origen de llamada cancelada y genera una acción en el ticket con la descripción de la llamada.
  • La central recibe una llamada telefónica -> La central realiza una llamada API al método asterisk_receivedCall -> Movidesk devuelve la extensión del agente que está disponible para atender la llamada -> La central verifica que esa extensión no está disponible (por ejemplo: el propio agente ha originado una llamada, o el agente ha recibido una llamada interna, o el agente tiene el teléfono fuera del gancho) -> La central realiza nuevamente una llamada API al método asterisk_receivedCall hasta que reciba una extensión válida (escenario feliz o escenario alternativo 2) o que considere la llamada como perdida (escenario alternativo 1) o cancelada (escenario alternativo 3).

 

Llamada perdida

POST: https://api.movidesk.com/public/v1/asterisk_lostCall?
token=155cac97-f203-4bb8-86e1-aa4cb8781f3e&id=3&link=https://www.linkdagravacaodarecado.com.br&completedDate=2018-5-1T17:20:00

          Respuesta: Estado 200. Este método debe ser llamado cuando el método asterisk_receivedCall devuelva los códigos 0, 1 y 2 o después de varios intentos y el método asterisk_receivedCall siga devolviendo los códigos 3 y 4. En este caso, se generará automáticamente un ticket con origen de llamada perdida y con una acción que contenga la información respectiva.

 

Llamada cancelada/abandonada

POST: https://api.movidesk.com/public/v1/asterisk_canceledCall?
token=155cac97-f203-4bb8-86e1-aa4cb8781f3e&id=3&canceledDate=2018-5-1T17:20:00

          Respuesta: Estado 200. Este método debe ser llamado después del método asterisk_receivedCall y antes del método asterisk_transferedCall, es decir, cuando el cliente cancele/abandone la llamada antes de que sea transferida al agente. En este caso, se generará automáticamente un ticket con origen de llamada cancelada y con una acción que contenga la información respectiva.


Ejemplo de código fuente en lenguaje C# para llamar a la API

Método POST

try
{

var response = await SendAsync("https://api.movidesk.com/public/v1/asterisk_receivedCall?
token=SEUTOKEN&queueId=1&clientNumber=4733990777&id=3&callDate=2018-5-1T17:00:00",
NULL, "POST", "application/json");

}
catch (WebException ex)
{
var response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
}

public static async Task<string> SendAsync(string uri, string content, string method, string contentType)
{
var req = WebRequest.Create(uri);
req.ContentType = contentType;
req.Method = method;

using (var stream = await req.GetRequestStreamAsync())
using (var streamWriter = new StreamWriter(stream))
{
await streamWriter.WriteAsync(content);
}

var httpResponse = (HttpWebResponse)await req.GetResponseAsync();
using (var stream = httpResponse.GetResponseStream())
{
if (stream == null)
return null;

using (var streamReader = new StreamReader(stream))
{
return await streamReader.ReadToEndAsync();
}
}
}

          Las respuestas se detallan en la variable response y deben ser tratadas siguiendo esta documentación.