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. 
GeneXus Chatbots Generator
