gpt4 book ai didi

c# - 是否有任何通用方法可以满足 LUIS 对话框中的所有意图?

转载 作者:行者123 更新时间:2023-11-30 21:36:42 26 4
gpt4 key购买 nike

我想知道是否有人知道在调用任何 Luis Intent 方法时始终调用自定义方法的方法。基本上,当 Bot 从 LuisDialog 获取数据时,我试图向用户添加加载程序消息。

最佳答案

如果您有一个将消息转发到 LuisDialog 的 RootDialog,则可以在 RootDialog 或 LuisDialog 的 StartAsync 方法中显示“加载程序消息”。另一种选择是覆盖 LuisDialog 的 MessageReceived,并在调用 base.MessageReceived 之前发送加载程序消息。

[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)
{
var activity = await result as Activity;
await context.PostAsync("RootDialog.MessageReceivedAsync");
await context.Forward(new LuisTestDialog(), AfterLuisDialog, activity);
}

private async Task AfterLuisDialog(IDialogContext context, IAwaitable<object> result)
{
await context.PostAsync("RootDialog.AfterLuisDialog");
}
}

[LuisModel("xxx", "xxx")]
[Serializable]
public class LuisTestDialog : LuisDialog<object>
{
public async override Task StartAsync(IDialogContext context)
{
await context.PostAsync("LuisTestDialog.StartAsync");
await base.StartAsync(context);
}

[LuisIntent("")]
[LuisIntent("None")]
public async Task None(IDialogContext context, LuisResult result)
{
await context.PostAsync("LuisTestDialog.None");
context.Done(true);
}

protected async override Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item)
{
await context.PostAsync("LuisTestDialog.MessageReceived");
await base.MessageReceived(context, item);
}
}

以上将导致以下消息:

enter image description here

关于c# - 是否有任何通用方法可以满足 LUIS 对话框中的所有意图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47942211/

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