Пример #1
0
        private async Task <Activity> GetQnAResponse(string query, ITurnContext turnContext)
        {
            Activity outputActivity = null;
            var      newState       = new QnABotState();

            var qnaState = await _qnaStateAccessor.GetAsync(turnContext, () => new QnABotState());

            var qnaResult = await this.qnAServiceHelper.QueryQnAService(query, qnaState, turnContext);

            var qnaAnswer = qnaResult[0].Answer;

            if (string.Equals(qnaAnswer, "No good match found in KB.", StringComparison.OrdinalIgnoreCase))
            {
                qnaAnswer = "I didn't understand what you just said to me.";
            }

            var prompts = qnaResult[0].Context?.Prompts;

            if (prompts == null || prompts.Length < 1)
            {
                outputActivity = MessageFactory.Text(qnaAnswer);
                InQnaMaker     = false;
            }
            else
            {
                // Set bot state only if prompts are found in QnA result
                newState.PreviousQnaId     = qnaResult[0].Id;
                newState.PreviousUserQuery = query;

                outputActivity = CardHelper.GetHeroCard(qnaAnswer, prompts);
            }

            await _qnaStateAccessor.SetAsync(turnContext, newState);

            return(outputActivity);
        }