https://api.movidesk.com/public/v1
Telefonia - Com controle da fila
Ao decorrer desta documentação, estão descritos os procedimentos para utilização da API que integra centrais telefônicas com o Movidesk. Caso as APIs descritas nesta documentação sejam utilizadas, o Movidesk controlará a fila da sua central telefônica. É importante que antes de utilizar a API, leia-se a documentação do módulo de telefonia (que você encontrará clicando aqui). Para toda chamada recebida, deverá haver uma chamada API identificando um dos seguintes status: "Chamada finalizada", "Chamada perdida" ou "Chamada cancelada". Caso isso não se cumpra, os registros na base de dados referentes às chamadas telefônicas ficarão incompletos.
Layout
Chamada recebida
URL: /asterisk_receivedCall Métodos: POST
Propriedade | Tipo | Tamanho | Obrigatório | Descrição |
---|---|---|---|---|
token | Guid | ✓ | Chave API do Movidesk. | |
queueId | int | 10 | ✓ | ID da fila, deve ser o mesmo informado no cadastro de grupo de telefonia no Movidesk. |
clientNumber | string | 128 | ✓ | Número do telefone que está efetuando a chamada. |
id | string | 256 | ✓ | Identificador único da chamada efetuada. Obs.: Somente será possível relacionar um id único de chamada para um ticket. De tal forma que, não será possível associar um id repetido para um ticket. |
callDate | datetime UTC | ✓ | Data do recebimento da chamada. A data informada deve estar no formato yyyy-MM-ddThh:mm e em UTC*. |
Chamada transferida
URL: /asterisk_transferedCall Métodos: POST
Propriedade | Tipo | Tamanho | Obrigatório | Descrição |
---|---|---|---|---|
token | Guid | ✓ | Chave API do Movidesk. | |
id | string | 256 | ✓ | Identificador único da chamada efetuada. Deve ser o mesmo que foi informado no método de chamada recebida. Obs.: Somente será possível relacionar um id único de chamada para um ticket. De tal forma que, não será possível associar um id repetido para um ticket. |
branchLine | string | 128 | ✓ | Ramal do agente para qual a chamada será transferida. Deve ser o mesmo que o método de chamada recebida retornou. |
transferDate | datetime UTC | ✓ | Data da transferência da chamada. A data informada deve estar no formato yyyy-MM-ddThh:mm e em UTC*. |
Chamada finalizada
URL: /asterisk_completedCall Métodos: POST
Propriedade | Tipo | Tamanho | Obrigatório | Descrição |
---|---|---|---|---|
token | Guid | ✓ | Chave API do Movidesk. | |
id | string | 256 | ✓ | Identificador único da chamada efetuada. Deve ser o mesmo que foi informado no método de chamada recebida. Obs.: Somente será possível relacionar um id único de chamada para um ticket. De tal forma que, não será possível associar um id repetido para um ticket. |
link | string | max | Link com a gravação da chamada. O mesmo sera incluído na descrição da ação do ticket respectivo a ligação. | |
completedDate | datetime UTC | ✓ | Data de finalização da chamada. A data informada deve estar no formato yyyy-MM-ddThh:mm e em UTC*. |
Chamada perdida
URL: /asterisk_lostCall Métodos: POST
Propriedade | Tipo | Tamanho | Obrigatório | Descrição |
---|---|---|---|---|
token | Guid | ✓ | Chave API do Movidesk. | |
id | string | 256 | ✓ | Identificador único da chamada efetuada. Deve ser o mesmo que foi informado no método de chamada recebida. Obs.: Somente será possível relacionar um id único de chamada para um ticket. De tal forma que, não será possível associar um id repetido para um ticket. |
link | string | max | Link com a gravação do recado deixado pelo cliente. O mesmo sera incluído na descrição da ação do ticket respectivo a ligação. | |
completedDate | datetime UTC | ✓ | Data de finalização da chamada. A data informada deve estar no formato yyyy-MM-ddThh:mm e em UTC*. |
Chamada cancelada/abandonada
URL: /asterisk_canceledCall Métodos: POST
Propriedade | Tipo | Tamanho | Obrigatório | Descrição |
---|---|---|---|---|
token | Guid | ✓ | Chave API do Movidesk. | |
id | string | 256 | ✓ | Identificador único da chamada efetuada. Deve ser o mesmo que foi informado no método de chamada recebida. Obs.: Somente será possível relacionar um id único de chamada para um ticket. De tal forma que, não será possível associar um id repetido para um ticket. |
canceledDate | datetime UTC | ✓ | Data de cancelamento/abandono da chamada. A data informada deve estar no formato yyyy-MM-ddThh:mm e em UTC*. |
Atualizar link da gravação da chamada
URL: /setMadeCallLink Métodos: POST
Propriedade | Tipo | Tamanho | Obrigatório | Descrição |
---|---|---|---|---|
token | Guid | ✓ | Chave API do Movidesk. | |
id | string | 256 | ✓ | Identificador único da chamada efetuada. Deve ser o mesmo que foi informado no método de chamada recebida. Obs.: Somente será possível relacionar um id único de chamada para um ticket. De tal forma que, não será possível associar um id repetido para um ticket. |
Link | string | 256 | Link com a gravação da chamada. O mesmo será incluído na descrição da ação do ticket respectivo à ligação. |
*UTC: O Tempo Universal Coordenado (do inglês Universal Time Coordinated) é o fuso horário de referência a partir do qual se calculam todas as outras zonas horárias do mundo. Ex: Se o seu fuso horário for o de Brasília (UTC-03:00) e o horário atual for 15h30, o horário UTC será 18h30.
Trabalhando com os dados
Para ter acesso aos dados é necessário que previamente seja gerada uma chave para a API
Para gerar uma chave para a API (token), acesse ao Movidesk, vá em Configurações / Conta / Parâmetros e na guia ambiente clique no botão "Gerar nova chave" caso ainda não tenha uma criada.
Você poderá repetir essa operação sempre que quiser gerar uma nova chave de acesso, mas lembre-se que ao gerar uma nova chave, todos os programas que utilizarem a chave antiga irão parar de funcionar.
Fluxos que devem ser seguidos
Cenário feliz
Central recebe chamada telefônica -> Central realiza chamada API para o método asterisk_receivedCall -> Movidesk retorna o ramal do agente que está disponível para atender a ligação -> Central transfere a ligação para o ramal e realiza chamada API para o método asterisk_transferedCall -> Movidesk abre automaticamente tela para controle da chamada telefônica para o agente para qual a chamada foi transferida -> Central identifica que a chamada foi finalizada e realizada chamada API para o método asterisk_completedCall -> Movidesk fecha automaticamente tela que estava aberta para o agente e realiza os trâmites necessários no ticket gerado/associado à ligação.
Chamada recebida
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
Retorno: Status 200 com o ramal do agente disponível para atender a ligação ou código identificando porque a ligação não poderá ser transferida. Neste momento a chamada aparecerá no Movidesk na fila de chamadas aguardando atendimento. Sugerimos que, quando o código retornado for 3 ou 4, a central permaneça chamando o método asterisk_receivedCall até que seja retornado o ramal de algum agente. É necessário que ao receber o retorno com o ramal, seja validado pela central se aquele ramal realmente está disponível, pois pode ser que o próprio agente tenha originado uma ligação e o Movidesk não terá controle sobre isso. Se a central considerar que o ramal não está disponível, deve ser realizada outra chamada para o asterisk_receivedCall, que sempre retorna ramais diferentes seguindo a ordem estabelecida dentro do Movidesk. Se a central considerar a chamada como perdida, deve ser chamado o método asterisk_lostCall.
Identificação dos códigos:
0 = É feriado;
1 = Fora do horário de atendimento;
2 = Nenhum agente do grupo está online no Movidesk;
3 = Nenhum agente do grupo está online na telefonia;
4 = Todos os agentes do grupo estao em ligacao.
Chamada 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
Retorno: Status 200. Nesse momento a chamada aparecerá no Movidesk na fila de chamadas em andamento e a tela para controle de chamada aparecerá automaticamente para o agente com o ramal informado (no exemplo, 5252).
Chamada 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
Retorno: Status 200. Nesse momento a chamada sairá das filas do Movidesk e a tela para controle de chamada será fechada automaticamente. Será adicionada a ação com a gravação da chamada no ticket referente a ligação.
Cenários alternativos
- Central recebe chamada telefônica -> Central realiza chamada API para o método asterisk_receivedCall -> Movidesk retorna o código 0 ou 1 ou 2 -> Central considera como chamada perdida, solicita ao cliente que deixe um recado e realiza chamada API para o método asterisk_lostCall -> Movidesk gera ticket automaticamente com origem de chamada perdida e gera ação no ticket com descrição da chamada e link para ouvir a gravação do recado deixado pelo cliente.
- Central recebe chamada telefônica -> Central realiza chamada API para o método asterisk_receivedCall -> Movidesk retorna o código 3 ou 4 -> Central considera que todos os agentes estão ocupados, mas continua realizando requisições para asterisk_receivedCall até que o Movidesk retorne o ramal do agente que está disponível para atender a ligação -> Central transfere a ligação para o ramal e realiza chamada API para o método asterisk_transferedCall -> Movidesk abre automaticamente tela para controle da chamada telefônica para o agente para qual a chamada foi transferida -> Central identifica que a chamada foi finalizada e realizada chamada API para o método asterisk_completedCall -> Movidesk fecha automaticamente tela que estava aberta para o agente e realiza os trâmites necessários no ticket gerado/associado à ligação.
- Central recebe chamada telefônica -> Central realiza chamada API para o método asterisk_receivedCall -> Movidesk retorna o código 3 ou 4 -> Central considera que todos os agentes estão ocupados, mas continua realizando requisições para asterisk_receivedCall até que o cliente canse de esperar e abandone a ligação -> Central considera como chamada cancelada/abandonada e realiza chamada API para o método asterisk_canceledCall -> Movidesk gera ticket automaticamente com origem de chamada cancelada e gera ação no ticket com descrição da chamada.
- Central recebe chamada telefônica -> Central realiza chamada API para o método asterisk_receivedCall -> Movidesk retorna o ramal do agente que está disponível para atender a ligação -> Central verifica que aquele ramal não está disponível (por exemplo: o próprio agente originou uma chamada, ou o agente recebeu uma chamada interna, ou o agente está com o telefone fora do gancho) -> Central realiza novamente chamada API para o método asterisk_receivedCall até que receba um ramal válido (cenário feliz ou cenário alternativo 2) ou que considere a chamada como perdida (cenário alternativo 1) ou cancelada (cenário alternativo 3).
Chamada 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
Retorno: Status 200. Esse método deve ser chamado quando o método asterisk_receivedCall retornar os códigos 0, 1 e 2 ou após várias tentativas e o método asterisk_receivedCall continuar retornando os códigos 3 e 4. Nesse caso será gerado automaticamente um ticket com origem chamada perdida e com uma ação contendo as respectivas informações.
Chamada 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
Retorno: Status 200. Esse método deve ser chamado após o método asterisk_receivedCall e antes do método asterisk_transferedCall, ou seja, quando o cliente cancelar/abandonar a chamada antes de ela ser de fato transferida para o agente. Nesse caso será gerado automaticamente um ticket com origem chamada cancelada e com uma ação contendo as respectivas informações.
Exemplo de código fonte na linguagem C# da chamada da 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();
}
}
}
Os retornos são detalhados na variável response e devem ser tratados seguindo essa documentação.