обращаясь к этой части - Я хочу заменить ступени водопада на QnA maker. Это нормально, или это возможно?
Ответ - нет. QnA - это сочетание вашей базы знаний с сервисом поисковой системы. он динамически подбирает ответы на заданные вами вопросы.
Теперь перейдем к предложению решения вашего основного вопроса. (это то, что я делаю уже в своем коде)
Вы можете перехватить коллекцию информации о пользователе, прежде чем она даже отправится производителю qna в вашем коде. Вы можете создавать запросы специально для информации о пользователе, и если ваш поток определяет, что это информация о пользователе, вы переходите в свою систему сбора информации о пользователе (и таким образом предотвращаете запуск qna).
Когда это не так пользовательскую информацию (или что-то, что вы не хотите записывать) вы позволяете управлять потоком по умолчанию qna maker.
var tempInputText = activity.Text;
if(tempInputText.Contains("batman") == true)
{
var tempActivityBatman = new Activity();
tempActivityBatman.Text = "did you just ask about batman, " + userProfile.Name + "?";
tempActivityBatman.Type = "message";
//await stepContext.Context.SendActivityAsync(_templateEngine.GenerateActivityForLocale("UnsupportedMessage", userProfile));
await stepContext.Context.SendActivityAsync(tempActivityBatman,cancellationToken);
return await stepContext.NextAsync();
}
Приведенный выше пример кода представляет собой быстрый грязный код, который я использовал для навигации по конкретным c словам, которые я хотел, чтобы чат отвлекал от обычного кода.