Я следовал , как это , чтобы сохранить беседу чата, но проблема в том, что она хранит беседу каждого пользователя в 1 списке, называемом UtteranceList
, но я хочу, чтобы беседа каждого пользователя сохранялась в их отдельных списках.,Спасибо!
const { BotFrameworkAdapter, ConversationState, MemoryStorage } require('botbuilder');
const restify = require('restify');
// Create server.
// let server = restify.createServer();
// server.listen(process.env.port || process.env.PORT || 3978, function () {
// console.log(`${server.name} listening to ${server.url}`);
// });
// Create adapter.
// const adapter = new BotFrameworkAdapter({
// appId: process.env.MICROSOFT_APP_ID,
// appPassword: process.env.MICROSOFT_APP_PASSWORD
// });
// Add memory storage.
var storage = new MemoryStorage();
// const conversationState = new ConversationState(storage);
// adapter.use(conversationState);
// Listen for incoming requests - adds storage for messages.
server.post('/api/messages', (req, res) => {
adapter.processActivity(req, res, async (context) => {
if (context.activity.type === 'message') {
// Route to main dialog.
await myBot.onTurn(context);
// Save updated utterance inputs.
await logMessageText(storage, context);
}
else {
// Just route to main dialog.
await myBot.onTurn(context);
}
});
});
// This function stores new user messages. Creates new utterance log if none exists.
async function logMessageText(storage, context) {
let utterance = context.activity.text;
try {
// Read from the storage.
let storeItems = await storage.read(["UtteranceLogJS"])
// Check the result.
var UtteranceLogJS = storeItems["UtteranceLogJS"];
if (typeof (UtteranceLogJS) != 'undefined') {
// The log exists so we can write to it.
storeItems["UtteranceLogJS"].turnNumber++;
storeItems["UtteranceLogJS"].UtteranceList.push(utterance);
// Gather info for user message.
var storedString = storeItems.UtteranceLogJS.UtteranceList.toString();
var numStored = storeItems.UtteranceLogJS.turnNumber;
try {
await storage.write(storeItems)
context.sendActivity(`${numStored}: You stored: ${storedString}`);
} catch (err) {
context.sendActivity(`Write failed of UtteranceLogJS: ${err}`);
}
} else {
context.sendActivity(`Creating and saving new utterance log`);
var turnNumber = 1;
storeItems["UtteranceLogJS"] = { UtteranceList: [`${utterance}`], "eTag": "*", turnNumber }
// Gather info for user message.
var storedString = storeItems.UtteranceLogJS.UtteranceList.toString();
var numStored = storeItems.UtteranceLogJS.turnNumber;
try {
await storage.write(storeItems)
context.sendActivity(`${numStored}: You stored: ${storedString}`);
} catch (err) {
context.sendActivity(`Write failed: ${err}`);
}
}
} catch (err) {
context.sendActivity(`Read rejected. ${err}`);
};
}
Это текущий вывод в Blobstorage:
{
"id":"UtteranceLog",
"realId":"UtteranceLog",
"document":{"UtteranceList":["hello","I need help","hi","find job"],
"eTag":"\"0x8D42EE3R3C34123\"",
"turnNumber":null}
}
Но я хочу вот так:
{
"id":"UtteranceLog",
"realId":"UtteranceLog",
"document":{"1DDeWoTrvrr4u4Jme6mcLBBo-7":["hello","I need help"],
"eTag":"\"0x8D42EE3R3C34123\"",
"turnNumber":null},{"3DTveoTrvcc3u3Jmx3mcLCCT-7":["hi","find job"],
"eTag":"\"0x8D42EE3R3C34123\"","turnNumber":null}}
Как видите,из текущего примера вывода.Он хранит два разговора в одном списке, но я хочу, чтобы он был в двух списках, как во втором примере.Спасибо!