我正在使用LuisDialog
,我想知道如何使用LuisResult
检测操作,参数并提示用户输入缺失的参数。我知道LuisResult
已经包含了操作和参数,但是我不知道提示用户的最佳方式是什么,或者如何使用contextId
将该信息发送回LUIS。我无法在BotBuilder SDK或Web上找到关于此主题的任何示例。
答案 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
}
这是一种完全手动的方式,我认为通过将FormFlow
与LuisDialog
相结合可以实现更多自动化,但灵活性较低