//When more than one reponse
        private async Task QnAFeedbackHandler(IDialogContext context, string userQuery, QuestionResponse.QnAMakerResult results)
        {
            this.qnaMakerResults = results;
            var qnaList = qnaMakerResults.Answers;
            await context.PostAsync(CreateHeroCard(context, qnaList));

            context.Wait(HandleQuestionResponse);
        }
        protected static IMessageActivity ProcessResultAndCreateMessageActivity(IDialogContext context, ref QuestionResponse.QnAMakerResult result)
        {
            var message = context.MakeMessage();

            var attachmentsItemRegex = new Regex("((<attachment){1}((?:\\s+)|(?:(contentType="[\\w\\/-]+"))(?:\\s+)|(?:(contentUrl="[\\w:/.=?-]+"))(?:\\s+)|(?:(name="[\\w\\s&?\\-.@%$!£\\(\\)]+"))(?:\\s+)|(?:(thumbnailUrl="[\\w:/.=?-]+"))(?:\\s+))+(/>))", RegexOptions.IgnoreCase);
            var matches = attachmentsItemRegex.Matches(result.Answers.First().Answer);

            foreach (var attachmentMatch in matches)
            {
                result.Answers.First().Answer = result.Answers.First().Answer.Replace(attachmentMatch.ToString(), string.Empty);

                var    match        = attachmentsItemRegex.Match(attachmentMatch.ToString());
                string contentType  = string.Empty;
                string name         = string.Empty;
                string contentUrl   = string.Empty;
                string thumbnailUrl = string.Empty;

                foreach (var group in match.Groups)
                {
                    if (group.ToString().ToLower().Contains("contenttype="))
                    {
                        contentType = group.ToString().ToLower().Replace(@"contenttype="", string.Empty).Replace(""", string.Empty);
                    }
                    if (group.ToString().ToLower().Contains("contenturl="))
                    {
                        contentUrl = group.ToString().ToLower().Replace(@"contenturl="", string.Empty).Replace(""", string.Empty);
                    }
                    if (group.ToString().ToLower().Contains("name="))
                    {
                        name = group.ToString().ToLower().Replace(@"name="", string.Empty).Replace(""", string.Empty);
                    }
                    if (group.ToString().ToLower().Contains("thumbnailurl="))
                    {
                        thumbnailUrl = group.ToString().ToLower().Replace(@"thumbnailurl="", string.Empty).Replace(""", string.Empty);
                    }
                }

                var attachment = new Attachment(contentType, contentUrl, name: !string.IsNullOrEmpty(name) ? name : null, thumbnailUrl: !string.IsNullOrEmpty(thumbnailUrl) ? thumbnailUrl : null);
                message.Attachments.Add(attachment);
            }

            return(message);
        }
        // Presents the user with the feedback question.
        protected async Task AnswerFeedbackMessageAsync(IDialogContext context, IMessageActivity message, QuestionResponse.QnAMakerResult result)
        {
            if (result.Answers.Count() != 0)
            {
                if (message.Text.Equals(Resource.noneOfTheAboveOption))
                {
                    await context.PostAsync("Alright, maybe try rephrasing the question. Or if you prefer here's a link to the documentation http://omnia-docs.readthedocs.io/en/latest/.");

                    context.Done(false);
                }
                else
                {
                    var reply = context.MakeMessage();
                    reply.Attachments = new List <Attachment>();
                    List <CardAction> cardButtons   = new List <CardAction>();
                    CardAction        cardActionYes = new CardAction()
                    {
                        Type  = "postBack",
                        Title = "Yes",
                        Value = "Yes"
                    };
                    CardAction cardActionNo = new CardAction()
                    {
                        Type  = "postBack",
                        Title = "No",
                        Value = "No"
                    };
                    HeroCard card = new HeroCard()
                    {
                        Title   = "Was this answer helpful?",
                        Buttons = cardButtons
                    };
                    cardButtons.Add(cardActionYes);
                    cardButtons.Add(cardActionNo);
                    Attachment atch = card.ToAttachment();
                    reply.Attachments.Add(atch);
                    await context.PostAsync(reply);

                    context.Wait(this.HandleHelpfulResponse);
                }
            }
            else
            {
                await context.PostAsync("No match could be found");

                context.Done(false);
            }
        }
        // Handles the reponse when only 1 answers was returned
        public virtual async Task DefaultMatchHandler(IDialogContext context, string originalQueryText, QuestionResponse.QnAMakerResult result)
        {
            var messageActivity = ProcessResultAndCreateMessageActivity(context, ref result);

            messageActivity.Text = result.Answers.First().Answer;
            await context.PostAsync(messageActivity);

            await AnswerFeedbackMessageAsync(context, messageActivity, result);
        }