【问题标题】:How to store user conversation in bot framework v4 using Node Mysql Api如何使用 Node Mysql Api 在 bot 框架 v4 中存储用户对话
【发布时间】:2020-02-07 12:47:14
【问题描述】:

Bot Framework 最新版本,

我想将所有用户对话存储在节点mysql后端

如何完成这个任务?

【问题讨论】:

  • 你想用对话实时还是批量更新mysql?
  • 使用node api更新MySQL数据库的实时对话

标签: mysql node.js azure botframework bots


【解决方案1】:

考虑到您需要实时更新,有两种解决方案:

通过 CosmosDB

article 解释了如何在 CosmosDB 中设置对话存储。

var docDbClient = new azure.DocumentDbClient(documentDbOptions);
var tableStorage = new azure.AzureBotStorage({ gzipData: false }, docDbClient);

一旦您将数据存储在那里,您可以执行一个基于 cron 导出到 MySQL 的批处理作业,或者使用change feed。因此,对于 CosmosDB 中的每个条目,您将使用 Azure 函数在 MySQL 中执行 INSERT。

通过中间件

在您的消息传递端点应用程序中,使用中间件拦截所有传入和传出消息。更多详情请看article

server.post('/api/messages', connector.listen());
var bot = new builder.UniversalBot(connector);
bot.use({
    botbuilder: function (session, next) {
        myMiddleware.saveIncomingMessage(session, next);
    },
    send: function (event, next) {
        myMiddleware.saveOutgoingMessage(event, next);
    }
})

然后对每条消息进行 INSERT:

module.exports = {
    saveIncomingMessage: function (session, next) {
        // INSERT session.message.text
        next();
    },
    saveOutgoingMessage: function (event, next) {
        // INSERT event.text;
        next();
    }
}

我更喜欢通过中间件,因为它的活动部件较少。

【讨论】:

  • 除了 cosmos db,有任何解决方案可以在 mysql db 上存储实时更新
  • @SathisSakthivel ,是的,检查第二个选项 - 通过中间件
  • 可以,但是提到代码Bot framework 3.0,我用的是4.0,不合适
  • 基本上是一样的——stackoverflow.com/questions/54225716/…
【解决方案2】:

您应该能够将位于here 的 MySQL npm pacakge 合并到您的项目中。配置并建立连接后,只需从活动中传递所需的数据即可。

您可能希望构建一个中间件层,以便通过每个活动。然后,在中间件中,您将解析活动并将其保存到您的 MySQL 数据库中。您可以在 BotFramework docs 中阅读有关中间件的更多信息。文档末尾有几个链接指向中间件示例,供参考。

代码的最基本形式如下所示:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

希望有帮助!

【讨论】:

  • 你有这个 Python 解决方案吗?因为我在 Python 中使用 Bot Framework,并且我正在尝试将我的聊天实时保存在 MySQL 中。那你能帮帮我吗?
猜你喜欢
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 2021-03-08
  • 2016-05-05
  • 1970-01-01
相关资源
最近更新 更多