我已经使用微软bot框架v4 sdk创建了一个聊天机器人。我想将bot用户和bot消息记录到cosmos db。
我只能使用下面的博客记录用户消息https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-howto-v4-storage?view=azure-bot-service-4.0
我希望记录用户和机器人的响应。
谢天谢地,这很容易,因为ItransptLogger和TranscriptLoggerMiddleware已经存在。
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());
}
}
}
}
[...]
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);
[...]
这可能是最简单/最好的方法。但是,您也可以使用turnContext在
,然后将传出活动也写入存储器。OnTurnAsync()
下捕获传出活动。OnSendActivities()
我正在开发一个基于微软bot框架的多渠道bot(专注于web和电报)(https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0) 我被用户收到的最初消息所困扰。我的机器人基于Microsoft发布的复杂机器人:https://github.com/Microsoft/BotFramework-Sam
问题内容: 我是Microsoft Bot框架的新手。现在,我正在模拟器上测试代码。我想在您连接后立即发送Hello消息。以下是我的代码。 上面的代码在用户发起对话时发送Hello消息。我想在用户连接后立即发送此消息。 问题答案: 钩住事件并检查何时添加了漫游器。之后,您可以发布一条消息或开始一个新对话框(如下面从ContosoFlowers Node.js示例中 提取的代码所示,尽管还有许多其他
我使用Directline api进行网络聊天。 生成令牌后,连同标头中的令牌和正文中的活动对象,我请求发送到此url: https://directline.botframework.com/v3/directline/conversations/{conversationID}/活动 我得到404页未找到响应: 这是我的活动对象: {类型:消息,文本:测试Directline API,对话:{
我正在python3(discord.py 1.3.3,discord 1.0.1)中开发一个discord机器人,我需要删除一条用户消息,但我不知道如何正确调用协同程序。 我查看了一些其他线程,并尝试查看文档(以及discord.py文档),但我一直没有找到答案。 以下是我正在测试的内容: 运行该命令会返回带有ID号的控制台调试消息,但不会删除该消息。如果我添加一个调试打印行后它不会返回。所以这
我有2条s(特别是2条s),我希望bot发送第一条,然后单击按钮将其编辑到第二条。 机器人将发送消息(one.build())。队列(),然后它将向嵌入添加一个按钮(在我的情况下),如果用户单击该按钮,嵌入将被编辑为两个。 我已经阅读了文档,但没有得到太多信息,所以我认为堆栈溢出会有所帮助。
我正在为我的Discord服务器创建一个bot。 我的服务器中有一个新的用户通道。当新用户加入时,我想向这个频道发送欢迎消息。但是,我不知道如何才能访问新用户的渠道。