gpt4 book ai didi

c# - IActivityLogger 不记录 PromptDialog.Choice 文本

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:43 25 4
gpt4 key购买 nike

我正在使用 IActivityLogger 来记录机器人和用户之间的对话。这里记录器正在记录所有消息,除了由 PromptDialog.Choice() 生成的文本

我已经测试了 PromptDialog 的其他方法,例如

PromptDialog.Confirm()
PromptDialog .Text()

这些正在工作,我的意思是正在记录来自这些方法的文本,只有 PromptDialog.Choice 文本没有命中 IActivityLogger。

记录器.cs

public class Logger : IActivityLogger
{
public async Task LogAsync(IActivity activity)
{
Debug.WriteLine(activity.AsMessageActivity()?.Text);
}
}

根对话框.cs

public async Task StartAsync(IDialogContext context)
{
string[] choices = new string[]{ "choice 1" , "choice 2"};
PromptDialog.Choice(context, resumeAfterPrompt, choices, "please choose an option.");
}

private async Task resumeAfterPrompt(IDialogContext context, IAwaitable<object> result)
{
await context.PostAsync((await result).ToString());
context.Done<object>(null);
}

除了来自 RootDialog 的 PromptDialog.Choice() 之外,所有其他来往消息都通过 Logger 类。

最佳答案

the PromptDialog.Choice text is not hitting the IActivityLogger

我创建了一个示例并尝试重现该问题,我发现当我从 PromptDialog.Choice 选项列表中选择一个选项时它可以命中记录器。

根对话框:

[Serializable]
public class RootDialog : IDialog<object>
{
public Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);

return Task.CompletedTask;
}

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{

string[] choices = new string[] { "choice 1", "choice 2" };
PromptDialog.Choice(context, resumeAfterPrompt, choices, "please choose an option.");
}

private async Task resumeAfterPrompt(IDialogContext context, IAwaitable<string> result)
{
string choice = await result;

await context.PostAsync($"You sent {choice}");
//context.Done<object>(null);
}
}

记录器:

public class DebugActivityLogger : IActivityLogger
{
public async Task LogAsync(IActivity activity)
{
Debug.WriteLine(activity.AsMessageActivity()?.Text);
}
}

模拟器测试结果:

enter image description here

VS 输出窗口:

enter image description here

此外,如果您在 Logger 中设置断点来调试和跟踪事件,您会发现 activity.AsMessageActivity()?.Text 将是 "" 当它呈现一个 HeroCard 以提示用户进行一组选择中的一个。

enter image description here

因此一个空字符串将被写入 VS 输出窗口。

enter image description here

关于c# - IActivityLogger 不记录 PromptDialog.Choice 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50811364/

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