GeneXus Chatbots Generator

Em GeneXus estamos desenvolvendo um gerador que permite criar facilmente um chatbot para ser integrado em aplicativos para smart devices e Web; e também com as diferentes plataformas de mensagens existentes. Além disso, sempre com base em sua definição pode ser usado para os diferentes fornecedores do mercado (Watson Conversation, Dialogflow, Amazon Lex). Como conseguimos isso? No caminho do desenvolvimento deste gerador, a primeira coisa que fizemos foi estudar em profundidade a operação dos diferentes provedores para gerar uma “camada de abstração” que abrange todos os campos que gerenciam esses serviços. Para ser mais claro, procuramos os pontos em comum de cada um, de modo que o ponto de acesso seja um: GeneXus. Então, dessa forma, conseguimos ser independentes dos fornecedores quando se trata de “criar” o nosso bot. Agora, como conseguimos unificar o caminho para definir um bot em GeneXus? Bem, por isso, decidimos criar um novo objeto: os Conversational Flows. Os Conversational Flows.são solicitações de forma independente, e dele é feita referência aos objetos da nossa base de conhecimento com a qual queremos trabalhar. Este objeto contém elementos diferentes que ajudam a definir os diferentes fluxos que pensamos para o chatbot. Vejamos um pouco sobre os principais elementos e propriedades, depois compartilharei o link para a documentação do Gerador de Chatbots, em que você pode ver de forma mais detalhada como funciona cada elemento. Flow É o elemento principal dos Conversational Flows, você pode adicionar múltiplos nós de Flows. Este nó é mapeado para fornecedores como a representação de uma intenção. Conversational Object Não é um elemento na realidade, mas é uma propriedade do nó Flow. Ao atribuir um objeto nesta propriedade, o objeto atribuído será o “Resolver” da intenção. Ou seja, no final do fluxo necessário para cumprir a intenção, todos os dados serão transmitidos para este objeto, que pode retornar uma resposta. Hoje, podem ser Conversational Object os seguintes objetos: Transações, Provedores de Dados, Procedimentos, Web Panels e SD Panels. User Input Representam os parâmetros de entrada de um fluxo, ou seja, os diferentes parâmetros pelos quais o chatbot irá perguntar ao usuário quando ele detecta a intenção relacionada ao fluxo ao qual eles correspondem. User Input Condition São condições que são executadas quando o usuário entra com dados para os parâmetros. Com base nisso, é possível executar diferentes ações (redirecionar a conversa para outro fluxo ou simplesmente exigir ou não um parâmetro). Resposta Este nó agrupa as diferentes respostas possíveis definidas para que o chatbot responda quando o fluxo está finalizado. Em cada uma dessas respostas (Nó da Mensagem), é possível definir as condições que devem ser dadas para serem executadas. Essas condições, como as das User Input Conditions, são baseadas nos dados que o contexto está lidando ao fazer a comparação lógica. As mensagens de resposta podem ter estilos diferentes, ou seja, eles podem ser simplesmente uma mensagem de texto, um redirecionamento para outro fluxo ou um componente. Com o componente, queremos dizer que você pode renderizar um SDPanel ou um painel da Web, que mostra as informações na tela. Mas o melhor é ver com um exemplo. Imagine que precisamos desenvolver um chatbot para um hospital. Sim? Bem, em princípio, somos solicitados que o chatbot cumpra o mais básico, que seria cumprimentar o usuário e perguntar o que poderia ajudar. Para atender a esses primeiros requisitos, nem precisamos da assistência de outros objetos GeneXus, simplesmente adicionamos a nossa instância um nó Flow que saberá cumprimentar, mas com o detalhe de que vamos pedir ao nome do usuário para que já possamos ter essa referência e, desta forma, mais tarde, ele será capaz de ter uma conversa mais personalizada. Bem, com essa pequena interação com o Conversational Flows, conseguimos ter um chatbot que sabe como pedir nosso nome e nos informar sobre suas habilidades. Mas falta mais, vejamos um exemplo em que nos perguntam qual médico está de plantão. Como podemos resolver isso? É uma consulta que o GeneXus podemos resolver com um Provedor de Dados. Então, se temos um Provedor de Dados, que nos devolve a informação de qual médico está de plantão, podemos simplesmente adicionar um Fluxo à nossa instância de Conversational Flows  e em sua propriedade de Conversational Object, selecionamos o Provedor de Dados em questão.   Então, GeneXus irá adicionar automaticamente entradas de usuários e parâmetros de resposta ao nosso fluxo. Como não queremos que ele responda apenas com texto, vamos selecionar que o estilo da resposta é um componente view. Nesse caso, como não selecionamos um SDPanel ou um painel da Web específico, o GeneXus gerará automaticamente objetos de ambos os tipos que podem processar a resposta na maneira solicitada. 0.jpg Uma vez gerado, tentamos novamente: 11 Como podemos ver na tela mostra um componente, no qual vemos os dados do médico, uma foto, nome, sobrenome e especialidade. Neste artigo, não veremos como implementar todas as possibilidades oferecidas pelo Gerador de Chatbots. Para aprofundar no assunto, você pode ler a sua documentação aqui. Bem, agora que vimos o “como?” Uma questão interessante é o “o quê?”, Isto é, o que geramos para que isso funcione? O que o Generador de Chatbots gera, podemos dividi-lo em três partes, user interfaces, backend y “provider side” Quanto às user interfaces, são gerados os clientes da Web e os smart devices necessários para se comunicar com o chatbot. E quando falamos sobre a interface do usuário, certamente a grande questão surge: E quanto ao Messenger? e Slack? Sim, em princípio, a integração com essas plataformas de mensagens é suportada pelos mesmos provedores e, se eles não forem suportados, os integraremos ao gerador. No lado do backend, o que vamos ter são os serviços necessários para que nossa camada de serviço possa receber as consultas do cliente e enviá-las ao provedor, ou recebê-las do provedor, dependendo do serviço escolhido para gerá-las. Nós também temos os objetos necessários para que nosso bot possa se comunicar com os objetos que definimos em Conversational Flows como “conversational objects”. O que chamamos de “provider side”, geramos a estrutura que pode ser importada para o provedor, ou seja, geramos um arquivo que contém as intenções, as entidades e os “diálogos” que o nosso bot poderá gerenciar. Saindo um pouco do funcionamento do Gerador, gostaria de mencionar RUDI e Clarita, nossos assistentes no GX27. Por quê? Porque esses dois chatbots foram criados com o Gerador de Chatbots. No caso de RUDI, os Conversational Flows foram aplicados com base nos conhecimentos existentes para a aplicação do evento. Obviamente, também tivemos que implementar o design e algumas características específicas do aplicativo. No caso de Clarita, foi realizado um procedimento similar, só que foi utilizada outra interface de usuário, que não é gerada pelo nosso gerador. Então, o que ganhamos ao usar esse gerador? Podemos dedicar-nos a pensar sobre o que queremos que nosso chatbot saiba como responder, quais objetos queremos trabalhar com ele, sem ter que nos preocupar com a geração de serviços, não ter que armar a estrutura no provedor ou ter que programar a interface do usuário. Nós encurtamos o tempo de desenvolvimento, permitindo ainda mais tempo para o treinamento de chatbot.   Finalmente, gostaria de convidá-lo a testar o gerador atualmente disponível em uma das suas primeiras versões no GeneXusTero e para se juntar ao Google Group onde você pode deixar seus comentários e impressões.   Mais informações no seguinte link: http://genexus.com/tero

One thought on “GeneXus Chatbots Generator

Deixe uma resposta

%d blogueiros gostam disto: