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