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