prodap-chatbot-domain
v1.20.0
Published
Classes utilizadas na resposta de todas as Intents do Assistente Virtual
Downloads
1,030
Readme
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:
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:
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:
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:
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:
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:
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 disponível por meio do registro npm . Antes de instalar, baixe e instale Node.js. É 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
.
A instalação é feita usando o comando npm install
:
$ 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.