Como conectar a um canal de atendimento personalizado 21 de julho de 2023 18:12 Atualizado Sumário Pré-requisitos Recebimento de novo ticket Atribuição de um ticket para um atendente Recebimento de mensagens do cliente Mensagens originadas pelo atendente Fluxo de mensagens Finalização de um ticket Pode ser interessante para seu negócio que o atendimento humano seja realizado através de uma ferramenta de sua preferência. Pensando nisso, o BLiP permite que você conecte uma plataforma personalizada como canal de atendimento. Pré-requisitos Para realizar um atendimento utilizando um canal de atendimento customizado, existem alguns pré-requisitos: Adicionar a URL da API que receberá as informações de atendimento. Adicionar uma chave de autenticação, que será enviada em cada requisição para a API, para confirmar a identidade do BLiP (Opcional). Escolher se os tickets criados para atendimento utilizarão as regras de atendimento do BLiP. Caso utilizem, adicionar as possíveis filas para o ticket (Opcional). Para um fluxo de atendimento completo existem as seguintes etapas: Recebimento de novo ticket Uma vez que o bot encaminhe a conversa para o atendimento, se o canal personalizado estiver ativo, a URL cadastrada no passo 1 receberá uma requisição POST com a mensagem de um novo ticket criado, nesse primeiro momento o ticket é armazenado no BLiP com o status de “Aguardando” (Waiting). Exemplo de um retorno com os dados do ticket criado: { "type": "application/vnd.iris.ticket+json", "content": { "id": "{TICKET_ID}", "sequentialId": "{TICKET_SEQUENTIAL_ID}", "ownerIdentity": "{BOT_ID}", "customerIdentity": "{CUSTOMER_ID}", "customerDomain": "{CUSTOMER_DOMAIN}", "provider": "Webhook", "status": "Waiting", "storageDate": "2019-11-08T20:15:59.415Z", "rating": 0, "unreadMessages": 0, "closed": false, "customerInput": { "type": "text/plain", "value": "Hello world!" } }, "id": "Ticket:{TICKET_ID}:Waiting", "from": "{TICKET_ID}@desk.msging.net/Webhook"} Em alguns casos a requisição poderá devolver o status “Fechado pelo Atendente” (ClosedAttendant) ou “Erro” (Error), nesses casos é importante conferir o endereço da URL de integração cadastrada no canal personalizado, além de verificar se a URL de integração está ativa. Um complemento adicional poderá ser realizado na configuração da caixa de atendimento do “Builder”, configurando os fluxos de exceção para direcionar para blocos específicos, deixando os cenários de erro mais transparentes e tratados. Exemplo de um retorno de erro causado por indisponibilidade do canal de integração: { "type": "application/vnd.iris.create-ticket-response+json", "resource": { "status": "Error" }, "method": "set", "status": "success", "id": "{TICKET_ID}", "from": "{TICKET_ID}@desk.msging.net/Webhook", "to": "webhooks@msging.net/default",} Atribuição de um ticket para um atendente Uma vez que o ticket é criado, fica como responsabilidade da API que receber o ticket tratá-lo e encaminhá-lo para um atendente, essa ação é realizada através da requisição de “alteração de status” (change status). Nesta etapa o BLiP espera receber o status “Aberto” (Open) juntamente com o identificador do atendente. Por isso, é uma prática recomendada para a API do canal personalizado devolver essa resposta antes de realizar outras manipulações no status do ticket, evitando assim inconsistências no fluxo. O comando para atualizar o ticket dentro da plataforma pode ser enviado conforme a extensão do BLiP Desk, como no exemplo a seguir: { "id": "{COMMAND_ID}", "to": "postmaster@desk.msging.net", "method": "set", "uri": "/tickets/change-status", "type": "application/vnd.iris.ticket+json", "resource": { "id": "{TICKET_ID}", "status": "Open", "agentIdentity": "{AGENT_ID}" }} Após o envio da requisição acima exemplificada, o BLiP realiza a associação do atendente ao ticket atualizando-o para o novo status de "Em Atendimento". A partir desta etapa, o ticket estará apto a trafegar mensagens. Recebimento de mensagens do cliente Após a atribuição de um ticket a um atendente, toda mensagem enviada do usuário para o bot será redirecionada para a URL cadastrada no passo 1. A mensagem enviada pelo cliente utilizando o BLiP estará no padrão do protocolo LIME que pode ser consultada na documentação do BLiP. Nessa etapa as interações do cliente com o BLiP gera eventos, dessa forma é possível identificar se o cliente enviou a mensagem, se está digitando (composing) ou até mesmo se pausou (paused) a digitação. Exemplo de uma mensagem enviada utilizando o Blip: { "type": "text/plain", "content": "Olá, sou seu cliente! Poderia me ajudar?!", "id": "fwd:{MESSAGE_ID}", "from": "{TICKET_ID}@desk.msging.net/Webhook"} Exemplo de uma mensagem em digitação: { "type": "application/vnd.lime.chatstate+json", "content": { "state": "composing" }, "id": "fwd:{MESSAGE_ID}", "from": "{TICKET_ID}@desk.msging.net/Webhook"} Mensagens originadas pelo atendente Dado um ticket que já está atribuído a um atendente, passa a ser possível enviar mensagens para o cliente e iniciar o atendimento. Para isto, basta mandar uma mensagem para o ticket desejado, com o conteúdo suportado pelo Protocolo Lime e documento pelo BLiP. Um exemplo de mensagem enviada que pode ser enviado para o cliente pelo atendente: { "type": "text/plain", "content": "Olá, vou continuar com seu atendimento!", "id": "{MESSAGE_ID}", "to": "{TICKET_ID}@desk.msging.net/Webhook",} 6. Fluxo de mensagens Uma vez iniciado o tráfego de mensagens, poderá ser útil acompanhar esse fluxo em tempo real, para isso a extensão do BLiP Desk também disponibiliza chamadas (APIs) que retornam essas informações. Com a requisição “threads” é possível recuperar a informação de diferentes formas, como por exemplo: Mensagens enviadas pelo cliente, mensagens enviadas pelo atendente, fluxo de conversa mais recente, entre outros. O exemplo a seguir, obtém as últimas 20 mensagens ordenadas de uma conversa com o bot, dado um determinado cliente: { "Id": "{COMMAND_ID}", "method":"get","uri":"threads-merged/{CUSTOMER_ID}?$take=20&direction=desc", "type":"application/vnd.iris.thread-message+json"} Exemplo do retorno com as mensagens trafegadas: "type": "application/vnd.lime.collection+json", "resource": { "total": 2, "itemType": "application/vnd.iris.thread-message+json", "items": [ { "id": "424385e7-b150-4fec-963e-8cf680e5299c", "direction": "received", "type": "text/plain", "content": "Meu nome é Maria.", "date": "2023-07-20T18:50:34.267Z", "status": "consumed", "metadata": { "#uniqueId": "506ab59f-65d9-42e7-8ace-dbab75990c2e", "date_created": "1689879034244", "#date_processed": "1689879034259", "$internalId": "506ab59f-65d9-42e7-8ace-dbab75990c2e", "$originatorSessionRemoteNode": "postmaster@0mn.io/#omni-gateway-lime-7ffzk", "$elapsedTimeToStorage": "00:00:00.0108285" } }, { "id": "18394a27-5772-41b5-b7be-28f292816154", "direction": "received", "type": "text/plain", "content": "Olá, preciso de ajuda!", "date": "2023-07-20T18:21:22.500Z", "status": "consumed", "metadata": { "#uniqueId": "addd53c1-e48b-4c35-b19d-3189de896d6d", "date_created": "1689877282456", "#date_processed": "1689877282466", "$internalId": "addd53c1-e48b-4c35-b19d-3189de896d6d", "$originatorSessionRemoteNode": "postmaster@0mn.io/#omni-gateway-lime-7ffzk", "$elapsedTimeToStorage": "00:00:00.0365423" } }} 7. Finalização de um ticket Quando for necessário finalizar um ticket em atendimento, basta enviar o comando de alterar o status do ticket. Uma vez finalizado o ticket, não será mais possível atualizá-lo. Este comando pode ser enviado conforme a extensão do BLiP Desk. Um exemplo de comando: { "id": "{COMMAND_ID}", "to": "postmaster@desk.msging.net", "method": "set", "uri": "/tickets/change-status", "type": "application/vnd.iris.ticket+json", "resource": { "id": "{TICKET_ID}", "status": "ClosedAttendant }} Para mais informações, acesse a discussão sobre o assunto em nossa comunidade ou os vídeos no nosso canal. 😃 Artigos relacionados Criando mensagens interativas no WhatsApp Ação: Requisição HTTP Configuração do arquivo de audiência - Envio de notificações em massa Como salvar o número do WhatsApp de um contato Priorização de Atendimento