Bem-vindo de volta à segunda parte de nossa série de duas partes sobre a criação de um aplicativo interativo de suporte ao atendimento ao cliente que capacita os agentes de suporte com a ajuda da IA. O objetivo é aprimorar o importante trabalho deles, aproveitando respostas resolvidas anteriormente para perguntas abertas atuais de forma rápida e intuitiva usando a pesquisa vetorial.

tl;dr Caso queira pular direto para a implementação, você pode encontrar um exemplo totalmente funcional desse aplicativo em GitHub juntamente com instruções detalhadas do README.

Na primeira parte, configuramos todos os serviços necessários para nosso aplicativo, incluindo:

    • Couchbase Capella
    • API de mensagens da Vonage
    • API de incorporação da OpenAI

IA em ação: Aprimorando e não substituindo empregos

Também montamos o back-end do nosso aplicativo com o Ruby on Rails. Agora, vamos escrever o código que conectará esses três serviços e os reunirá para dar suporte ao trabalho dos agentes de atendimento ao cliente que respondem às consultas dos usuários via WhatsApp.

Primeiro, vamos definir a lógica comercial do nosso aplicativo.

Definição da lógica comercial do aplicativo

Uma das coisas boas do Ruby on Rails é sua noção de convenção sobre configuração. Isso significa que não precisamos reinventar a roda para saber onde colocar a lógica comercial do nosso aplicativo. O que criaremos agora será uma versão simplificada. Todo o código do aplicativo não será mostrado neste tutorial, mas, conforme mencionado no início, toda a base de código está disponível para clonagem localmente em GitHub.

Em resumo, definiremos nossa lógica nos arquivos de modelo e controlador. 

O aplicativo terá três modelos:

    • Bilhete
    • Usuário
    • Agente

O aplicativo também terá dois controladores:

    • Controlador de mensagens
    • Controlador do painel

Outras partes do aplicativo que precisarão ser configuradas incluem os inicializadores Vonage, OpenAI e Couchbase em config/initializadorese as rotas para o aplicativo em config/routes.rb. Todos eles podem ser visualizados no GitHub e copiados diretamente de lá para sua própria base de código.

Vamos começar com os modelos.

Criar modelos

É verdade que, classicamente, o Rails trabalha com bancos de dados SQL imediatamente. E se você quiser combinar o melhor do Rails com o melhor de um banco de dados de documentos JSON como o Couchbase? Agora é possível fazer isso de forma simplificada graças ao Couchbase Ruby ORM, que disponibiliza muitas das funcionalidades do ActiveRecord no Rails para trabalhar com o Couchbase. Cada um de nossos modelos herdará de CouchbaseOrm::Base para tornar os métodos do ORM disponíveis para ele.

O modelo Ticket

Um tíquete no aplicativo precisa conter informações sobre a consulta, seu status atual, quem a solicitou, o resumo da eventual resolução e a incorporação vetorial dessa resolução. Podemos definir cada uma dessas informações como atributos:

Como você pode ver acima, também definimos duas constantes, ABERTO e RESOLVIDO, que são os dois estados de status possíveis em que um ticket pode estar. Também criamos o relacionamento de um ticket com um usuário e com um agente, opcionalmente.

Além de definir os atributos, também queremos criar alguns métodos no tíquete que possam ser acessados em nosso aplicativo. Queremos criar métodos auxiliares que possam ser usados para verificar o status de um tíquete como este:

Em conjunto, o modelo de ticket terá a seguinte aparência, incluindo validações adicionais:

Vamos seguir um caminho semelhante para o modelo de usuário.

O modelo do usuário

Um usuário no aplicativo precisa ter muitos tíquetes, pois é possível que um cliente esteja lidando com vários problemas para os quais está buscando suporte. 

Também queremos garantir que possamos encontrar facilmente um usuário pelo número do WhatsApp, portanto, criaremos um método auxiliar no modelo para isso também. Nesse método auxiliar, um usuário será encontrado pelo número ou, caso contrário, um novo usuário será criado e uma parte do número será usada para preencher o campo de nome.

O último modelo que criaremos é o modelo Agent, vamos fazer isso.

O modelo de agente

De muitas maneiras, o modelo de agente é semelhante ao modelo de usuário, pois ambos têm muitos tíquetes. Uma distinção importante é que o agente não usa seu próprio número do WhatsApp para se comunicar no aplicativo. Em vez disso, ele se comunica com os usuários por meio do painel do aplicativo e a API Vonage Messages envia programaticamente suas mensagens para a caixa de entrada do WhatsApp do usuário.

Neste ponto, já criamos nossos modelos. Não é hora de definir os controladores.

Criar controladores

O aplicativo terá dois controladores que definem o que acontece em cada rota do site. Ou seja, um controlador de painel que supervisiona a funcionalidade do Dashboard, e um controlador_de_mensagens que supervisiona a funcionalidade de mensagens.

Começaremos com o Dashboard primeiro.

O controlador Dashboard

O índice e show serão definidas no controlador do painel, juntamente com métodos auxiliares para buscar a similaridade vetorial de tickets resolvidos anteriormente para os agentes de suporte em seu trabalho com os tickets atuais. 

O Couchbase Ruby SDK inclui muitas abstrações úteis para tornar a interação com a funcionalidade do Couchbase mais simplificada. Isso inclui a criação de uma nova pesquisa vetorial usando Couchbase::VectorSearch.new definindo os argumentos dentro da instanciação de um novo VectorSearch objeto como esse:

Primeiro, o VectorSearch é agrupado em uma nova instância de Couchbase::SearchRequest, como o VectorSearch é um tipo de solicitação de pesquisa. Em seguida, uma nova Couchbase::VectorQuery é passada para a instância VectorSearch especificando o campo a ser pesquisado (ou seja, o objeto incorporação) e a consulta do cliente convertida em sua própria incorporação como o segundo argumento.

Tendo isso em mente sobre como criar uma pesquisa vetorial usando o Ruby SDK, vamos dar uma olhada no código completo do controlador do painel:

Com esse código, definimos a lógica funcional tanto para a visualização do painel principal quanto para a visualização de cada tíquete individual no painel. 

O código de front-end pode ser encontrado em GitHub para essas duas visualizações e podem ser copiadas diretamente para sua base de código ou editadas de acordo com suas necessidades específicas.

O controlador de mensagens

Agora precisamos definir a lógica de todas as mensagens que serão recebidas e enviadas pelo aplicativo via WhatsApp. O controlador de mensagens também será responsável por garantir que novos tíquetes e usuários sejam criados quando um usuário enviar uma mensagem pela primeira vez. 

É possível que, em uma iteração posterior do aplicativo, algumas dessas funcionalidades possam ser movidas e separadas em diferentes áreas da base de código, mas, para simplificar, manteremos tudo no controlador de mensagens por enquanto.

Um dos grandes aspectos do Rails é a capacidade de injetar dinamicamente novo conteúdo na janela do navegador sem a necessidade de usar JavaScript. Isso é feito com o ActionCableum recurso essencial do Rails. Também usaremos o ActionCable para atualizar a exibição de tíquete individual do painel com as mensagens mais recentes enviadas e recebidas com a API de mensagens da Vonage.

Conforme mencionado no Usando a API de mensagens da Vonage seção, para fins de desenvolvimento, estamos construindo com a sandbox da API, portanto, como resultado, nossa chamada de API para enviar mensagens será construída manualmente como uma solicitação HTTP POST. Depois de concluir as etapas necessárias descritas na documentação da Vonage para obter uma conta comercial do Meta WhatsApp, você poderá usar o Ruby SDK da Vonage para abstrair essas solicitações HTTP para você.

Aqui está o código do controlador:

Com a criação do controlador de mensagens, definimos praticamente toda a funcionalidade de que precisamos em nosso aplicativo. 

Qualquer coisa que você ainda esteja tentando descobrir está prontamente disponível no aplicativo de exemplo totalmente completo e funcional em GitHub.

Tudo o que falta fazer agora é executar nosso aplicativo! 

Executar o aplicativo

Para usar o aplicativo, abra uma janela de terminal e execute bin/dev dentro da pasta do aplicativo. Isso iniciará um ambiente de desenvolvimento do aplicativo. Agora, em uma janela de terminal separada, inicie o ngrok, se estiver usando o ngrok conforme descrito acima para tornar seu ambiente localhost acessível externamente, executando ngrok http 3000

Depois de executar os dois comandos, você poderá abrir no navegador http://localhost:3000. Você verá um painel vazio, sem tickets. Isso é porque você ainda não criou um!

Vá em frente e envie uma mensagem para o número do WhatsApp fornecido a você na sandbox da API do Vonage Messages. O aplicativo responderá pedindo que você explique sua pergunta de suporte. Depois disso, o painel em seu navegador será preenchido com o novo tíquete. Você pode então abrir o tíquete clicando em Ver e começar a interagir com ele.

Quando você começar a ter tickets marcados como resolvidos, os tickets futuros serão preenchidos com um Soluções sugeridas como pode ser visto na captura de tela acima. Cada solução sugerida será classificada por sua similaridade com a pergunta de suporte atual. 

Dessa forma, criamos um aplicativo utilizando IA que capacita os membros da equipe em seu trabalho e não busca substituí-los em suas funções.

Concluindo

Ao integrar Couchbase, Vonage e OpenAI, criamos um aplicativo que capacita os agentes com acesso rápido a informações relevantes, melhorando sua eficiência e permitindo que eles se concentrem em oferecer um excelente atendimento ao cliente. Esse projeto mostra como a tecnologia pode ser aproveitada para apoiar e elevar as funções humanas no local de trabalho, levando a melhores resultados para funcionários e clientes. Agora que você já viu o potencial, é hora de aplicar esses conceitos em seus próprios projetos e continuar inovando.



Autor

Postado por Ben Greenberg, desenvolvedor sênior evangelista

Deixar uma resposta