API de Movidesk - Telefonía - Sin control de la cola
12 min
Creado por Heloisa Kopsch Hendges en 12/11/2018 16:40
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 tiene un escenario específico que requiere un aumento en el uso, póngase en contacto con nuestro equipo de atención para analizar la viabilidad. Obtenga más información sobre horarios y límites de las API
https://api.movidesk.com/public/v1

Telefonía - Sin control de la cola

          A lo largo de esta documentación, se describen los procedimientos para utilizar la API que integra centrales telefónicas con Movidesk. Es importante que antes de utilizar la API, lea la documentación del módulo de telefonía (que puede encontrar haciendo clic aquí). Para cada llamada transferida, debe haber una llamada API que finalice la llamada. Si esto no se cumple, los registros en la base de datos referentes a las llamadas telefónicas estarán incompletos.

 

Diseño 

Llamada transferida

  URL:    /asterisk_startTransferedCall
  Métodos: GET

 

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. Nota: Solo será posible relacionar un ID único de llamada a un ticket. No será posible asociar un ID repetido a un ticket.
branchLine string 128 Extensión del agente a la que se transfirió la llamada. 
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*. *Si la fecha no se proporciona, se considerará la fecha actual.
transferDate datetime UTC   * Fecha en que la llamada fue transferida al agente.  La fecha informada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. *Si la fecha no se proporciona, se considerará la fecha actual.

 

Llamada finalizada

  URL:    /asterisk_completedCall
  Métodos: GET

 

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 transferida. Nota: Solo será posible relacionar un ID único de llamada a un ticket. Por lo tanto, no será posible asociar un ID repetido a un ticket.
link string  max  OBSERVACIÓN: Incluso vacío, este parámetro debe ser informado.  Enlace con la grabación de la llamada. Este se incluirá en la descripción de la acción del ticket correspondiente a la llamada.
completedDate datetime UTC   * Fecha de finalización de la llamada.  La fecha proporcionada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. *Si la fecha no se proporciona, se considerará la fecha actual.



Llamada cancelada/abandonada

  URL:    /asterisk_startCanceledCall
  Métodos: GET

 

Propiedad Tipo Tamaño Obligatorio Descripción
token Guid   ✓  Clave API de Movidesk.
queueId int 10 ✓  ID de la cola, debe ser el mismo que se informó en el registro de grupo de telefonía en Movidesk.
clientNumber string  128 ✓  Número de teléfono que canceló/abandonó la llamada.
id string   256 ✓  Identificador único de la llamada cancelada/abandonada. Nota: Solo será posible relacionar un ID único de llamada a un ticket. Por lo tanto, no será posible asociar un ID repetido a un ticket.
callDate datetime UTC   * Fecha de recepción de la llamada.  La fecha proporcionada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. *Si la fecha no se proporciona, se considerará la fecha actual.
canceledDate datetime UTC   Fecha de cancelación/abandono de la llamada.  La fecha proporcionada debe estar en el formato yyyy-MM-ddThh:mm y en UTC*. *Si la fecha no se proporciona, se considerará la fecha actual.

 

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. Nota: Solo será posible relacionar un id único de llamada para un ticket. Por lo tanto, no será posible asociar un id repetido para un ticket.
Link string 256    Enlace con la grabación de la llamada. Este 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 la zona horaria de referencia a partir de la cual se calculan todas las demás zonas horarias del mundo. Ej: Si tu zona horaria es la de Brasilia (UTC-03:00) y la hora actual es 15:30, la hora UTC será 18:30.

 

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 Configuración / Cuenta / Parámetros y en la pestaña de entorno haz clic en el botón "Generar nueva clave" si aún no tienes una creada.
Puedes repetir esta operación siempre que desees generar una nueva clave de acceso, pero recuerda que al generar una nueva clave, todos los programas que utilicen la clave antigua dejarán de funcionar.

Flujos que deben seguirse 

Escenario feliz 

 

Central recibe llamada telefónica ->  Central transfiere la llamada a la extensión del agente y realiza una llamada API al método asterisk_startTransferedCall -> Movidesk abre automáticamente una pantalla para el control de la llamada telefónica para el agente al que se transfirió la llamada -> Central identifica que la llamada ha terminado 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 transferida

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

          Respuesta: Estado 200. En este 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

GET: 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 este 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.

 

Escenario alternativo

  1. Central recibe llamada telefónica -> Central considera la llamada como cancelada/abandonada y realiza una llamada API al método asterisk_startCanceledCall -> 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. 

  

Llamada cancelada/abandonada

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

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


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

Método GET

try
{

var response = await SendAsync("https://api.movidesk.com/public/v1/asterisk_startTransferedCall?
token=SEUTOKEN&queueId=1&clientNumber=4733990777&id=3&branchLine=5252&callDate=2018-5-1T17:00:00&transferDate=2018-5-1T17:02:00",
NULL, "GET", "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.