BotFramework:如何处理单个Intent的多个实体?

时间:2017-01-19 20:41:45

标签: c# botframework luis

LUIS中,我创建了一些检测到Intent的话语,我为它设置了3个不同的Entities,例如我正在尝试构建一个机器人来检测用户&# 39;与申请有关的问题。因此,当用户输入Unable to Open Android时,我将意图设置为Find_Issue,将Entities设置为1。Product 2。Issue 3。Error。但由于Unable to Open Android不包含任何错误代码。我只收到2 entities Product& Issue。现在我想得到Error的值,如果没有错误它将被存储为无。 这是迄今为止的Task代码

[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.issuedetails是为了存储ProductIssueError的值而创建的类 我不知道如何继续前进。

1 个答案:

答案 0 :(得分:0)

在LUIS中定义意图时,您还可以定义它的动作参数。操作参数包括参数名称,实体类型,提示以及是否需要。

enter image description here

然后,当使用最新版本的BotFramework Nuget软件包时,您的LuisDialog将自动检测到所需参数(如在具有Error实体的情况中)缺失,并将使用该消息自动触发参数提示在Action Parameter中定义。

有关动作参数的工作原理的技术细节,请查看this thread