如何将LUIS操作集成到我的机器人中,提示用户提供更多信息?

时间:2016-10-31 13:10:31

标签: botframework luis

我正在使用LuisDialog,我想知道如何使用LuisResult检测操作,参数并提示用户输入缺失的参数。我知道LuisResult已经包含了操作和参数,但是我不知道提示用户的最佳方式是什么,或者如何使用contextId将该信息发送回LUIS。我无法在BotBuilder SDK或Web上找到关于此主题的任何示例。

1 个答案:

答案 0 :(得分:1)

我的粗略方法就是这样。例如,您期待LuisResult中的某些实体。如果它们丢失,您需要提示用户。

首先,您要检查哪些实体缺失。如果缺少某些内容,则提示用户并将其响应重定向到另一个将处理新数据的方法。已经收到的LuisResult需要首先保存在ConversationData中。

        var requiredEntities = new List<string>()
        {
            "builtin.places.place_name",
            "builtin.places.place_type"
        };
        string askForMore = null;
        foreach(var entity in requiredEntities)
        {
            EntityRecommendation temp;
            var found = result.TryFindEntity(entity, temp);
            if (!found)
            {
                //Prompt the user for more information
                askForMore = entity;
            }
        }
        if (askForMore != null)
        {
            //TODO: store values from existing LuisResult for later use
            //For example, use ConversationData for storage.

            context.PostAsync("Please enter value for entity " + askForMore);
            context.Wait(AdditionalUserInputReceived);
        }
        else
        {
            //do normal stuff
        }

这是一种完全手动的方式,我认为通过将FormFlowLuisDialog相结合可以实现更多自动化,但灵活性较低