Как интегрировать действия 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, но с меньшей гибкостью

Другие вопросы по тегам