Как сохранить пользовательский разговор в бот-фреймворке v4 с помощью Node Mysql Api - PullRequest
0 голосов
/ 10 октября 2019

Bot Framework последняя версия,

Я хочу сохранить весь пользовательский диалог на сервере mysql

Как решить эту задачу?

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Вы сможете включить 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();

Надеюсь на помощь!

0 голосов
/ 10 октября 2019

Учитывая, что вам нужны обновления в режиме реального времени, есть 2 решения:

Через CosmosDB

В этой статье объясняется, как настроить хранилище разговоров. в CosmosDB.

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

Когда у вас есть данные, хранящиеся там, вы можете либо выполнить пакетное задание, которое экспортирует в MySQL на основе cron, либо использовать ленту изменений . Таким образом, для каждой записи в CosmosDB вы будете делать INSERT в MySQL, используя функцию Azure.

Через промежуточное ПО

В приложении конечной точки обмена сообщениями перехватывайте все входящиеи исходящие сообщения с использованием промежуточного программного обеспечения. Подробнее в этой статье .

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();
    }
}

Я предпочитаю использовать промежуточное ПО, поскольку оно имеет меньшедвижущиеся части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...