UNPKG

prodap-chatbot-domain

Version:

Classes utilizadas na resposta de todas as Intents do Assistente Virtual

251 lines (221 loc) 11 kB
# Prodap Chatbot Domain Classes de domínio responsáveis por montar uma gramática rica e padronizada para o Chatbot da Prodap. Veja abaixo como criar uma mensagem simples para o Chatbot: ```js const result = new Dialog('start-day') result.add( new SystemText( 'Sou Loris, sua Assistente Pessoal, e vou acompanhar a rotina da fazenda junto com você!' ) ) res.json(result) ``` O próximo exemplo cria uma mensagem complexa: ```js const result = new Dialog('start-day') result .add( new PlainText( 'Sou Loris, sua Assistente Pessoal, e vou acompanhar a rotina da fazenda junto com você!' ) ) .add(new PlainText('Olá eu sou a Loris! Vou te ajudar com algumas dicas.')) .add(new PlainText('blá blá blá')) .add( new Menu( 'Gostaria de visualizar alguns indicadores?', new HttpAction({ label: '👍 Sim', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: '👎 Não', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: '👎 Cancelar', url: 'http://teste.com/next?value=cancel' }), new DialogAction({ label: 'Encerrar', dialog: new Dialog().add(new PlainText('Ok então. Até mais')) }) ) ) res.json(result) ``` Este exemplo mostra como criar uma mensagem com um gráfico de Pizza: ```js const result = new Dialog('chart-intent') result.add( new PieChart('Acompanhamento e Vistorias', 'Maio/2020', 'Vistoria dos Lotes', 'TOTAL: 46 Lotes') .addData( { label: 'Lotes vistoriados nos ultimos 3 dias: 72% - 33 lotes', value: 33, color: 'green', }, { label: 'Lotes vistoriados nos ultimos 7 dias: 12% - 6 lotes', value: 6, color: 'orange', }, { label: 'Lotes vistoriados há mais de uma semana: 16% - 7 lotes', value: 33, color: 'red', } ) .addAction(new HttpAction({ label: 'Detalhar informações', 'https://action.detail.pie')) ) res.json(result) ``` Este exemplo mostra como criar um Card, que e composto de listas de objetos: ```js const result = new Dialog('CardListActions') let cardProps: CardListProps = { cardListProps: { title: 'Parcialmente vistoriados nos últimos 3 dias', subtitle: 'MÓDULOS E PASTOS AFETADOS', tooltip: 'Clique no módulo / pasto para ver os retiros associados', } as CardProps, } result.add( new CardList(cardProps).addList( new HttpAction({ label: 'MOD. QUIXUIO RIO GRANDE DO SUL', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. FRENTE CASA DA SEDE', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO DA MATA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO GRANDE GAMELEIRA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. MATA AMARELA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Canto', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Fundo do curral', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Alegria', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Esperança', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lança Curta', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lima Limão', url: 'http://teste.com/next?value=no' }) ) ) cardProps = { cardListProps: { title: 'Lotes vistoriados há mais de uma semana', subtitle: 'MÓDULOS E PASTOS AFETADOS', tooltip: 'Clique no módulo / pasto para ver os retiros associados', } as CardProps, } result.add( new CardList(cardProps).addList( new HttpAction({ label: 'MOD. QUIXUIO RIO GRANDE DO SUL', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. FRENTE CASA DA SEDE', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO DA MATA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO GRANDE GAMELEIRA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. MATA AMARELA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Canto', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Fundo do curral', url: 'http://teste.com/next?value=no' }) ) ) ``` Este exemplo mostra como criar um Gráfico de Barras: ```js let result = new Dialog('BarChart') result.add( new BarChart( 'Tábuas do barril x Vistorias', 'Maio/2020', '% de itens acompanhados nos últimos 7 dias', 'TOTAL: 29 Lotes', DataTypes.NUMBER ) .addData( { label: 'Aguada', value: 33, }, { label: 'Rebanho', value: 6, }, { label: 'Altura Pasto', value: 33, } ) .addRule( { valMin: 0, valMax: 39, label: 'Inferior à 40%', color: 'red', }, { valMin: 40, valMax: 54, label: '40% à 55%', color: 'orange', }, { valMin: 55, valMax: 100, label: 'Inferior à 40%', color: 'green', } ) .addAction(new HttpAction({ label: 'Detalhar informações', 'https://action.detail.bar' })) ) ``` Este exemplo mostra como criar CardListOfList: ```js const result = new Dialog('CardListOfList') result.add( new CardListOfList({ title: 'Módulos/ pastos NÃO VISTORIADOS nos últimos 7 dias', subtitle: 'MÓDULOS E PASTOS AFETADOS', tooltip: 'Clique no módulo / pasto para ver os retiros associados', }).addCardList( new CardList({ title: 'RETIRO A', }).addList( new HttpAction({ label: 'MOD. QUIXUIO RIO GRANDE DO SUL', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. FRENTE CASA DA SEDE', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO DA MATA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO GRANDE GAMELEIRA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. MATA AMARELA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Canto', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Fundo do curral', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Alegria', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Esperança', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lança Curta', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lima Limão', url: 'http://teste.com/next?value=no' }) ), new CardList({ title: 'RETIRO B', }).addList( new HttpAction({ label: 'MOD. QUIXUIO RIO GRANDE DO SUL', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. FRENTE CASA DA SEDE', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO DA MATA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO GRANDE GAMELEIRA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. MATA AMARELA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Canto', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Fundo do curral', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Alegria', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Esperança', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lança Curta', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lima Limão', url: 'http://teste.com/next?value=no' }) ), new CardList({ title: 'RETIRO C', }).addList( new HttpAction({ label: 'MOD. QUIXUIO RIO GRANDE DO SUL', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. FRENTE CASA DA SEDE', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO DA MATA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. QUICUIO GRANDE GAMELEIRA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'MOD. MATA AMARELA', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Canto', url: 'http://teste.com/next?value=yes' }), new HttpAction({ label: 'Pasto Fundo do curral', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Alegria', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Esperança', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lança Curta', url: 'http://teste.com/next?value=no' }), new HttpAction({ label: 'Pasto Lima Limão', url: 'http://teste.com/next?value=no' }) ) ) ) ``` # Instalação Esta é uma biblioteca do [Node.js](https://nodejs.org/download/release/v12.18.2/) disponível por meio do registro [npm](https://www.npmjs.com/) . Antes de instalar, baixe e instale [Node.js](https://nodejs.org/download/release/v12.18.2/). É necessário Node.js 12.18.2 ou superior. Se este for um projeto totalmente novo, certifique-se de criar um `package.json` primeiro com o comando [`npm init`](https://docs.npmjs.com/creating-a-package-json-file). A instalação é feita usando o comando [`npm install`](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): ```bash $ npm install prodap-chatbot-domain ``` # Vantagens: - Padronização das respostas - Uso do padrão de design **Fluent Interface** para a construção do retorno - Uma gramática rica, que permite montar diálogos complexos para que sistemas de Chat interpretem.