Как интегрировать действия LUIS в моего бота, запрашивая у пользователя дополнительную информацию?
Я использую LuisDialog
и я хотел бы знать, как использовать LuisResult
обнаруживать действия, параметры и запрашивать у пользователя пропущенные параметры. Я знаю LuisResult
уже содержит действия и параметры, однако я не знаю, как лучше всего подсказать пользователю или как отправить эту информацию обратно в LUIS с помощью contextId
, Я не смог найти ни одного примера по этому вопросу в BotBuilder SDK или в Интернете в целом.
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
, но с меньшей гибкостью