C# BotFramework:如何为一个目的处理多个实体?
在C# BotFramework:如何为一个目的处理多个实体?,c#,botframework,azure-language-understanding,C#,Botframework,Azure Language Understanding,在LUIS中,我创建了一些检测到Intent的话语,并为其设置了3个不同的实体,例如,我试图构建一个机器人来检测与应用程序相关的用户问题。因此,当用户输入无法打开Android时我将意图设置为查找问题并将实体设置为1。产品2。问题3。错误。但是由于无法打开Android,因此不包含任何错误代码。我只得到了2个实体产品和问题。现在我想得到Error的值,如果没有错误,它将被存储为none。 以下是迄今为止的任务代码 [LuisIntent("Find_Issue")] public asy
LUIS
中,我创建了一些检测到Intent
的话语,并为其设置了3个不同的实体
,例如,我试图构建一个机器人来检测与应用程序相关的用户问题。因此,当用户输入无法打开Android时
我将意图设置为查找问题
并将实体
设置为1。产品
2。问题
3。错误
。但是由于无法打开Android,因此不包含任何错误代码。我只得到了2个实体
产品
和问题
。现在我想得到Error
的值,如果没有错误,它将被存储为none。
以下是迄今为止的任务
代码
[LuisIntent("Find_Issue")]
public async Task getIssue(IDialogContext context, LuisResult result)
{
EntityRecommendation getProduct;
EntityRecommendation getIssue;
EntityRecommendation getError;
if(result.TryFindEntity("Product",out getProduct))
{
chatdetails.issuedetails.product = getProduct.Entity;
}
if (result.TryFindEntity("Issue", out getIssue))
{
chatdetails.issuedetails.issue = getIssue.Entity;
}
if (result.TryFindEntity("Error", out getError))
{
chatdetails.issuedetails.error = getError.Entity;
}
}
chatdetails.IssuedDetails
是为存储产品
,问题
,错误
的值而创建的类
我不知道如何进一步操作。在LUIS中定义意图时,您还可以定义其动作参数。动作参数包括参数名称、实体类型、提示以及是否需要
然后,当使用最新版本的BotFramework Nuget包时,您的LuisDialog将自动检测到缺少所需的参数(如在错误实体的场景中),并将使用操作参数中定义的消息自动触发参数提示
有关此操作参数如何工作的技术细节,请检查。您的路易斯代理需要更多的培训。如果用户的声明中没有任何与错误相关的内容,那么它将不会得到…但是如果它没有找到错误的内容,它应该向用户询问错误相关的问题。@saikatmukherjee Train查找意图更多,如果有没有实体您可以使用formflow从用户处获取有关<代码>错误
问题的答案无需使用formflow。这是你可以用路易斯自动完成的事情。见下面我的答案。