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); }