首页 > 解决方案 > 当用户触发意图时如何存储数据?

问题描述

我正在创建一个可以进行预订的聊天机器人。我想在用户触发bookingIntent. 当用户发送查询时,它会将整个字符串存储在我的informationType参数中。例如,用户会询问“预约”,它会将所有内容存储到参数中。我不想做我上面提到的事情,而是希望它存储“guest”而不是仅仅存储整个用户查询。

这是我将用户输入存储到我的数据库的 webhook。

const db = require("../models");
const Guest = db.guest;
const Op = db.Sequelize.Op;

// Create and Save a new Guest
exports.create = (req, res) => {
  if (req.body.queryResult.parameters.informationType == "guest") {
    const guest = {
      firstName: req.body.queryResult.parameters.firstName,
      lastName: req.body.queryResult.parameters.lastName,
      mobile: req.body.queryResult.parameters.mobile,
      email: req.body.queryResult.parameters.email,
      informationType: req.body.queryResult.parameters.informationType,
    };

    // Save Guest in the database
    Guest.create(guest)
      .then(function () {
        return res.json({
          fulfillmentText: "Guest account successfully added!",
        });
      })

      .catch(() => {
        return res.json({
          fulfillmentText: "An error has occured. Cannot create guest account.",
        });
      });
  }
};
module.exports = (sequelize, Sequelize) => {
  const Guest = sequelize.define("guest", {

    informationType: {
      type: Sequelize.STRING,
      required: true
    },    
    firstName: {
      type: Sequelize.STRING,
      required: true
    },
    lastName: {
      type: Sequelize.STRING,
      required: true
    },
    mobile: {
      type: Sequelize.STRING,
      required: true
    },
    email: {
      type: Sequelize.STRING,
      required: true
    }
  });

  return Guest;
};

标签: dialogflow-esdialogflow-es-fulfillment

解决方案


推荐阅读