gpt4 book ai didi

c# - 我们如何将用户和机器人消息记录到微软机器人框架中的cosmos db

转载 作者:行者123 更新时间:2023-12-02 13:37:08 25 4
gpt4 key购买 nike

我使用微软机器人框架v4 sdk创建了一个聊天机器人。我想将机器人用户和机器人消息记录到 cosmos db。

我只能使用下面的博客 https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-howto-v4-storage?view=azure-bot-service-4.0&tabs=csharp#using-cosmos-db 记录用户消息.

我希望记录用户和机器人响应。

最佳答案

幸运的是,这很容易,因为 ItranscriptLoggerTranscriptLoggerMiddleware已经存在。

创建 TranscriptStore 类(新类文件)

using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Azure;
using Microsoft.Bot.Schema;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace QuickTestBot_CSharp
{
public class CosmosTranscriptStore : ITranscriptLogger
{
private CosmosDbStorage _storage;

public CosmosTranscriptStore(CosmosDbStorageOptions config)
{
_storage = new CosmosDbStorage(config);
}
public async Task LogActivityAsync(IActivity activity)
{
// activity only contains Text if this is a message
var isMessage = activity.AsMessageActivity() != null ? true : false;
if (isMessage)
{
// Customize this to save whatever data you want
var data = new
{
From = activity.From,
To = activity.Recipient,
Text = activity.AsMessageActivity().Text,
};
var document = new Dictionary<string, object>();
// activity.Id is being used as the Cosmos Document Id
document.Add(activity.Id, data);
await _storage.WriteAsync(document, new CancellationToken());
}
}
}
}

创建并添加中间件(在 Startup.cs 中)

[...]
var config = new CosmosDbStorageOptions
{
AuthKey = "<YourAuthKey>",
CollectionId = "<whateverYouWant>",
CosmosDBEndpoint = new Uri("https://<YourEndpoint>.documents.azure.com:443"),
DatabaseId = "<whateverYouWant>",
};

var transcriptMiddleware = new TranscriptLoggerMiddleware(new CosmosTranscriptStore(config));

var middleware = options.Middleware;
middleware.Add(transcriptMiddleware);
[...]

结果:

enter image description here

enter image description here

注意:

这可能是最简单/最好的方法。不过,您也可以使用 turnContext.OnSendActivities()OnTurnAsync() 下捕获传出事件,然后将传出事件写入存储。

关于c# - 我们如何将用户和机器人消息记录到微软机器人框架中的cosmos db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56016335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com