Bot 框架 - 自适应对话框
Bot framework - Adaptive dialog
我正在使用机器人框架自适应对话框。我在通过使用识别器读取 luis 数据来获取意图和已解决的实体时遇到问题。仅通过阅读子自适应 dialog.i 中的“turn.recognized”获得响应中得分最高的意图已将我的 luis 迁移到 v3 并在调用 luis 时将 IncludeAllIntents 属性 设置为 true。我错过了在 LuisAdaptiveRecognizer 中设置任何 属性 吗?任何人都可以帮我解决这个问题,因为我有一个场景可以检查 bot 中排名第二的得分意图。这是自适应对话框的问题吗?
我已经使用 Ms docs 构建了机器人自适应对话框。
还有一件事有没有办法从 turn.recognized.
的结果中提取 luis 解析的实体作为一种 RecognizerResult
根对话框:
var rootDialog = new AdaptiveDialog(nameof(AdaptiveDialog))
{
Recognizer = new LuisAdaptiveRecognizer()
{
ApplicationId = Configuration["LuisAppId"],
EndpointKey = Configuration["LuisAPIKey"],
Endpoint = Configuration["LuisAPIHostName"],
PredictionOptions = new Microsoft.Bot.Builder.AI.LuisV3.LuisPredictionOptions
{
IncludeAllIntents = true,
IncludeInstanceData = true,
IncludeAPIResults = true,
PreferExternalEntities = true,
Slot = "producton"
}
},
Triggers = new List<OnCondition>()
{
new OnIntent("Greetings")
{
Actions = new List<Dialog>()
{
new SendActivity("${HelpRootDialog()}")
}
},
},
子对话框:
public FindLinks(IConfiguration configuration) : base(nameof(FindLinks))
{
_configuration = configuration;
this.LinksDialog = new AdaptiveDialog(nameof(FindLinks))
{
Triggers = new List<OnCondition>()
{
new OnBeginDialog()
{
Actions = new List<Dialog>()
{
new CodeAction(ResolveAndSendAnswer)
}
},
}
};
AddDialog(this._findLinksDialog);
InitialDialogId = nameof(FindLinks);
}
private async Task<DialogTurnResult> ResolveAndSendAnswer(DialogContext dialogContext, System.Object options)
{
JObject jObject;
IList<string> queries = new List<string>();
dialogContext.State.TryGetValue("turn.recognized", out jObject);
....This is how i resolved the luis data from the turn.
}
不幸的是,无论您使用哪种识别器,自适应对话框都被设计为仅在 turn.recognized
中包含一个意图。可以在源码中看到 here:
result.Intents.Clear();
result.Intents.Add(topIntent, topScore);
看起来唯一可以访问其他意图的地方是在您的遥测中。所以你有几个选择,虽然我知道它们并不理想。
- 显式调用您的 LUIS 端点,而不是依赖
LuisAdaptiveRecognizer
。这可以使用 HTTP 请求作为自适应对话框内的操作来完成,也可以在对话框外完成。
- 从记录的遥测中加载额外的意图。如果您制作了一个自定义遥测客户端,使数据在您的机器人的本地内存中可用,这可能是最简单的。
- 在 GitHub 上提出功能请求,要求他们在自适应对话框中提供所有意图:https://github.com/microsoft/botbuilder-dotnet/issues/new/choose
我正在使用机器人框架自适应对话框。我在通过使用识别器读取 luis 数据来获取意图和已解决的实体时遇到问题。仅通过阅读子自适应 dialog.i 中的“turn.recognized”获得响应中得分最高的意图已将我的 luis 迁移到 v3 并在调用 luis 时将 IncludeAllIntents 属性 设置为 true。我错过了在 LuisAdaptiveRecognizer 中设置任何 属性 吗?任何人都可以帮我解决这个问题,因为我有一个场景可以检查 bot 中排名第二的得分意图。这是自适应对话框的问题吗?
我已经使用 Ms docs 构建了机器人自适应对话框。
还有一件事有没有办法从 turn.recognized.
的结果中提取 luis 解析的实体作为一种 RecognizerResult根对话框:
var rootDialog = new AdaptiveDialog(nameof(AdaptiveDialog))
{
Recognizer = new LuisAdaptiveRecognizer()
{
ApplicationId = Configuration["LuisAppId"],
EndpointKey = Configuration["LuisAPIKey"],
Endpoint = Configuration["LuisAPIHostName"],
PredictionOptions = new Microsoft.Bot.Builder.AI.LuisV3.LuisPredictionOptions
{
IncludeAllIntents = true,
IncludeInstanceData = true,
IncludeAPIResults = true,
PreferExternalEntities = true,
Slot = "producton"
}
},
Triggers = new List<OnCondition>()
{
new OnIntent("Greetings")
{
Actions = new List<Dialog>()
{
new SendActivity("${HelpRootDialog()}")
}
},
},
子对话框:
public FindLinks(IConfiguration configuration) : base(nameof(FindLinks))
{
_configuration = configuration;
this.LinksDialog = new AdaptiveDialog(nameof(FindLinks))
{
Triggers = new List<OnCondition>()
{
new OnBeginDialog()
{
Actions = new List<Dialog>()
{
new CodeAction(ResolveAndSendAnswer)
}
},
}
};
AddDialog(this._findLinksDialog);
InitialDialogId = nameof(FindLinks);
}
private async Task<DialogTurnResult> ResolveAndSendAnswer(DialogContext dialogContext, System.Object options)
{
JObject jObject;
IList<string> queries = new List<string>();
dialogContext.State.TryGetValue("turn.recognized", out jObject);
....This is how i resolved the luis data from the turn.
}
不幸的是,无论您使用哪种识别器,自适应对话框都被设计为仅在 turn.recognized
中包含一个意图。可以在源码中看到 here:
result.Intents.Clear(); result.Intents.Add(topIntent, topScore);
看起来唯一可以访问其他意图的地方是在您的遥测中。所以你有几个选择,虽然我知道它们并不理想。
- 显式调用您的 LUIS 端点,而不是依赖
LuisAdaptiveRecognizer
。这可以使用 HTTP 请求作为自适应对话框内的操作来完成,也可以在对话框外完成。 - 从记录的遥测中加载额外的意图。如果您制作了一个自定义遥测客户端,使数据在您的机器人的本地内存中可用,这可能是最简单的。
- 在 GitHub 上提出功能请求,要求他们在自适应对话框中提供所有意图:https://github.com/microsoft/botbuilder-dotnet/issues/new/choose