API do Movidesk - Telefonia - Com controle da fila
17 min
Criado por Heloisa Kopsch Hendges em 13/05/2018 17:18
Atualizado por Thiago Tamanini em 28/07/2022 11:52
Importante: Nossas API's possuem um limite de 10 requisições por minuto para garantir um comportamento saudável no seu uso. Caso você tenha um cenário específico que precise aumentar o uso, entre em contato com o nosso time de atendimento para análise de viabilidade. Saiba mais sobre horários e limites das API's
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 

  1. 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.
  2. 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.
  3. 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.
  4. 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.