Encerramento de tickets pelo Usuário 12 de julho de 2023 20:44 Atualizado Índice: Condição de saída Ação para fechar o ticket Fechar o ticket de clientes que utilizam o canal MS Teams Atualmente, possuem duas formas nativas para encerramento de tickets: pelo atendente através do Blip Desk ou através da inatividade do usuário ou do atendente. Caso deseje oferecer a opção para que seu cliente escolha finalizar um ticket, deverão ser realizadas as seguintes configurações no seu bot de atendimento humano: Condição de saída Deverá ser adicionada uma condição de saída no bloco de atendimento humano, pode por exemplo sair do bloco quando o usuário digitar “Sair”. Observação: Entretanto, ao sair do bloco o ticket continua aberto e será necessário fechá-lo manualmente. Ação para fechar o ticket Para fechar o ticket, no bloco para o qual o usuário será direcionado, adicione uma ação de entrada de Processar comando com o command de fechar um ticket com a seguinte requisição: https://docs.blip.ai/#close-a-ticket-as-user (Caso a opção “Utilizar contexto do roteador” esteja habilitada será necessário substituir as ações “Processar comando” por Requisições HTTP, passo a passo no final do artigo.) Para buscar o id do ticket basta enviar o seguinte command: Para: postmaster@desk.msging.net Método: get URI: /tickets?$filter=(status%20eq%20'open'%20or%20status%20eq%20'waiting')%20and%20(CustomerIdentity%20eq%20'{{contact.identity}}')&$skip=0&$take=100 Segue exemplo: Para filtrar o ticket desejado, crie uma ação de Executar Script: Adicione a variável de entrada ticket que possuirá o número do ticket que foi localizado na ação processar comando executada antes da ação Executar script. Em seguida, informe o seguinte script: function run(ticket) { try { let ticket = JSON.parse(ticket); return ticket.resource.items[0].id; } catch (error) { return 'script error'; } } Adicione uma variável para salvar o retorno, como por exemplo: ticketId. Segue exemplo: Após a ação executar script, adicione mais uma ação do tipo Processar comando para realizar o encerramento do ticket: Para: postmaster@desk.msging.net Método: set URI: /tickets/change-status Tipo: application/vnd.iris.ticket+json Resource: {"id":"{{ticketId}}","status":"ClosedClient"} Salvar resposta: responseClose As ações de entrada do bloco para o qual o usuário será direcionado ao digitar “sair”, por exemplo, ficarão na seguinte ordem: Caso utilize uma estrutura router e a opção Utilizar contexto do roteador esteja habilitada, será necessário utilizar ações Requisição HTTP ao invés das ações “ Processar comando”. A primeira requisição deverá conter os seguintes parâmetros: Método: PostOBS: Utilize a URL com id do contrato para consumir os endpoints informados abaixo, sua performance e funcionamento podem ser impactados caso não esteja com id do contrato, portanto, é fundamental utilizar a url com o id do contrato para utilizar as requisições http! URL: https://{{contractid}}.http.msging.net/commands Cabeçalhos: Content-Type: application/json Authorization: API KEY do seu bot Corpo: {"id": "{{random.guid}}","to": "postmaster@desk.msging.net","method": "get","uri": "/tickets?$filter=(status%20eq%20'open'%20or%20status%20eq%20'waiting')%20and%20(CustomerIdentity%20eq%20'{{tunnel.identity}}')&$skip=0&$take=100"} Salve as respostas em variáveis. Ficará da seguinte forma: A segunda requisição irá substituir a ação processar comando para finalização do ticket. Método: PostOBS: Utilize a URL com id do contrato para consumir os endpoints informados abaixo, sua performance e funcionamento podem ser impactados caso não esteja com id do contrato, portanto, é fundamental utilizar a url com o id do contrato para utilizar as requisições http! URL: https://{{contractid}}.http.msging.net/commands Cabeçalhos: Content-Type: application/json Authorization: API KEY do seu bot Corpo: Salve as respostas em variáveis. {"id": "{{$guid}}","to": "postmaster@desk.msging.net","method": "set","uri": "/tickets/change-status","type": "application/vnd.iris.ticket+json","resource": {"id": "{{ticketId}}","status": "ClosedClient"}} Salve as respostas em variáveis. A ordem ficará da seguinte forma: Para finalizar, no bloco onde serão executadas as ações para finalização do ticket, defina uma condição de saída para o usuário que finalizou o ticket: Fechar o ticket de clientes que utilizam o canal MS Teams Para fechar o ticket de clientes que utilizam o canal MS Teams, no bloco para o qual o usuário será direcionado, adicione uma ação de entrada de Processar comando com o command de fechar um ticket com a seguinte requisição: https://docs.blip.ai/#close-a-ticket-as-user (Caso a opção “Utilizar contexto do roteador” esteja habilitada será necessário substituir as ações “Processar comando” por Requisições HTTP, passo a passo no final do artigo.) Passo 1: Para buscar todos os tickets que estão abertos ou em espera, utilizamos o comando: Para: postmaster@desk.msging.net Método: get URI: /tickets?$filter=status%20eq%20'open'%20or%20status%20eq%20'waiting'&$skip=0&$take=100 Segue exemplo: Passo 2: Para filtrar o ticket desejado, crie uma ação de Executar Script: Adicione a variável de entrada ticket que possuirá o número do ticket que foi localizado na ação processar comando executada antes da ação Executar script. O corpo do script ficará da seguinte forma: function run(ticketvar) { var jsonVar = JSON.parse(ticketvar); jsonVar.resource.items.forEach(item => { if (item.customerIdentity == "{{contact.identity}}") { jsonVar.resource.items = []; jsonVar.resource.items.push(item); } }); return jsonVar.resource.items[0].id; }; Obs.: Lembrar de após escrever o script apertar CTRL+S para salvar. Passo 3: Após a ação executar script, adicione mais uma ação do tipo Processar comando para realizar o encerramento do ticket: Para: postmaster@desk.msging.net Método: set URI: /tickets/change-status Tipo: application/vnd.iris.ticket+json Resource: {"id":"{{ticketId}}","status":"ClosedClient"} Salvar resposta: responseClose As ações de entrada do bloco para o qual o usuário será direcionado ao digitar “sair”, por exemplo, ficarão na seguinte ordem: Para mais informações, acesse a discussão sobre o assunto em nossa comunidade ou os vídeos no nosso canal. 😃 Artigos relacionados Como finalizar tickets Configurando a expiração da sessão ou o tempo de inatividade Como enviar SMS via API Enviando dados para análise através de Webhooks Mensagens Ativas - Códigos de erro