- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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);
}
}
模拟器测试结果:
VS 输出窗口:
此外,如果您在 Logger 中设置断点来调试和跟踪事件,您会发现 activity.AsMessageActivity()?.Text
将是 ""
当它呈现一个 HeroCard 以提示用户进行一组选择中的一个。
因此一个空字符串将被写入 VS 输出窗口。
关于c# - IActivityLogger 不记录 PromptDialog.Choice 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50811364/
我目前正在研究 Azure 数据工厂管道。我将 _logger.write("My error content.") 放在我的 .net 自定义事件中。 但是,我找不到日志的存储位置。我上网查了一下,
我们在 V4 中是否有类似 IActivityLogger (V3) 的接口(interface)来记录所有用户事件? 我想在我的 cosmos 数据库中记录所有用户查询和机器人响应。我能够使用 IA
我正在使用 IActivityLogger 来记录机器人和用户之间的对话。这里记录器正在记录所有消息,除了由 PromptDialog.Choice() 生成的文本 我已经测试了 PromptDial
我是一名优秀的程序员,十分优秀!