4
respostas

Como incluir informações vinda do DialogFlow em um chatbot?

Em um chatbot como eu busco informações no Dialogflow e gravar em um banco?

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
4 respostas

Olá João.
Tudo bem?
Para buscar informações no Dialogflow e gravar em um banco, você precisa integrar o Dialogflow com sua aplicação backend. No fluxo básico, quando o usuário envia uma mensagem para o bot, o Dialogflow processa a requisição e retorna uma resposta com base na intenção ou entidade correspondentes. Em seguida, no código da sua aplicação (como um servidor Node.js, Python, etc.), você captura a resposta do Dialogflow e, dependendo das informações necessárias, realiza uma conexão com o banco de dados (como MySQL, PostgreSQL, MongoDB, etc.).
Você pode usar bibliotecas específicas de acesso ao banco, como Sequelize ou Mongoose, para inserir ou atualizar os dados no banco após a resposta do Dialogflow.
Para isso, é importante configurar um webhook no Dialogflow, que vai direcionar a comunicação entre o Dialogflow e seu backend.
No backend, você valida os dados e faz a inserção no banco conforme necessário.
Qualquer duvida comente ai .
Bons estudos.

Você teria um passo a passo ou um curso referente acima:

Olá amigo.
Vamos dividir esse processo em etapas para te ajudar a implementar um sistema básico de integração entre o Dialogflow, backend e um banco de dados.
Vou te guiar por cada uma das partes: configuração do Dialogflow, criação do backend e integração com o banco de dados.

1. Configuração do Dialogflow

1.1 Criar um agente no Dialogflow

  • Primeiramente, crie um agente no Dialogflow (caso ainda não tenha).
  • Vá para o Dialogflow Console e crie um novo agente.
  • Depois, defina as intenções e entidades que o bot irá identificar (como "informações de usuário", "consulta de dados", etc.).

1.2 Criar um webhook no Dialogflow

  • No Dialogflow, o webhook é o endpoint da sua aplicação backend que vai ser chamado quando o Dialogflow precisar executar uma ação (como acessar um banco de dados).
  • Vá para a aba Fulfillment no Dialogflow e habilite o Webhook.
  • Defina a URL para o seu endpoint (essa URL vai ser do seu servidor backend, onde você vai processar a lógica e comunicar-se com o banco).

2. Configuração do Backend

Agora que o Dialogflow está configurado, precisamos criar o servidor backend para processar as requisições.

2.1 Criando um servidor com Node.js (Express)

Vou te passar um exemplo básico de como criar um servidor usando Node.js e o framework Express para receber as requisições do Dialogflow e interagir com o banco de dados.

Instalar as dependências
  1. Inicie um novo projeto Node.js:

    npm init -y
    
  2. Instale as dependências necessárias:

    npm install express body-parser axios sequelize mysql2
    
Criar o servidor Express

Crie um arquivo chamado index.js e adicione o seguinte código:

const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');
const { Sequelize, DataTypes } = require('sequelize');

// Criando a instância do Express
const app = express();
const port = 3000;

// Configurando o BodyParser
app.use(bodyParser.json());

// Configurando a conexão com o banco de dados (MySQL no exemplo)
const sequelize = new Sequelize('mysql://user:password@localhost:3306/db_name');

// Definindo o modelo do banco de dados
const User = sequelize.define('User', {
  name: {
    type: DataTypes.STRING,
    allowNull: false
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false
  },
});

// Testando a conexão com o banco
sequelize.authenticate().then(() => {
  console.log('Conexão com o banco de dados estabelecida com sucesso!');
}).catch((err) => {
  console.error('Erro ao conectar ao banco de dados:', err);
});

// Endpoint para receber dados do Dialogflow
app.post('/webhook', async (req, res) => {
  const { queryResult } = req.body;

  // Aqui, você pode tratar a intenção que foi identificada pelo Dialogflow
  const intent = queryResult.intent.displayName;
  const parameters = queryResult.parameters;

  if (intent === 'Cadastrar Usuário') {
    const { name, email } = parameters;
    
    // Inserir no banco de dados
    try {
      await User.create({ name, email });
      res.json({
        fulfillmentText: `Usuário ${name} cadastrado com sucesso!`
      });
    } catch (error) {
      res.json({
        fulfillmentText: 'Ocorreu um erro ao cadastrar o usuário.'
      });
    }
  } else {
    res.json({
      fulfillmentText: 'Desculpe, não entendi sua solicitação.'
    });
  }
});

// Iniciar o servidor
app.listen(port, () => {
  console.log(`Servidor rodando na porta ${port}`);
});

2.2 Explicando o código

  • Conexão com o banco: Estamos usando o Sequelize para se conectar a um banco MySQL. O modelo User foi definido para armazenar name e email.
  • Webhook: O servidor recebe as requisições POST do Dialogflow no endpoint /webhook. A partir disso, ele verifica a intenção (intent) e os parâmetros enviados.
  • Inserção no banco: Quando a intenção for Cadastrar Usuário, os parâmetros name e email são extraídos e salvos no banco de dados.

2.3 Testando o servidor

  • Inicie o servidor com o comando:

    node index.js
    
  • Agora, no Dialogflow, defina o Webhook URL para o endereço do seu servidor (ex: http://localhost:3000/webhook).

continua...

3. Testar o Fluxo de Trabalho

Agora, quando o Dialogflow identificar a intenção correta (por exemplo, "Cadastrar Usuário"), ele vai chamar seu webhook.
O servidor backend processa a requisição e insere as informações no banco de dados, enviando uma resposta de volta para o Dialogflow, que por sua vez, envia essa resposta ao usuário.

4. Ajustes e Melhorias

  • Validação de Dados: Verifique os dados antes de inserir no banco, para garantir que o email ou nome estejam no formato correto.
  • Segurança: Em produção, use validações e segurança nas comunicações, como autenticação, SSL e sanitização de dados.
  • Resposta ao usuário: Melhore a resposta que é retornada ao usuário, com mais interatividade ou informações relevantes.

5. Conclusão

Esse é o fluxo básico de integração entre o Dialogflow, seu backend e o banco de dados.
O Dialogflow processa a entrada do usuário, o backend recebe a requisição e faz a manipulação do banco conforme necessário.
Analisa o texto acima faça as implementações e avise qualquer duvida.
Bons estudos.