private async Task PostNewQuestion(IDialogContext context)
        {
            try
            {
                string conversationId = context.MakeMessage().Conversation.Id;

                byte level = context.ConversationData.GetValueOrDefault <byte>(KEY_LEVEL);

                Trace.TraceInformation($"PostNewQuestion: conversation: {conversationId}; level: {level}");

                QuestionItem newQuestion = await _questionData.GetRandomQuestion(conversationId, (QuestionComplexity)level);

                Trace.TraceInformation($"PostNewQuestion: {newQuestion.Id}, {newQuestion.Question}, {newQuestion.Answer}");

                if (newQuestion != null)
                {
                    newQuestion.InitUrls("https://db.chgk.info/images/db/");

                    context.ConversationData.SetValue(KEY, newQuestion);

                    IMessageActivity message = context.MakeMessage();

                    message.Id = newQuestion.Id.ToString();

                    CardAction answerAction = new CardAction()
                    {
                        Title = "Answer",
                        Type  = "imBack",
                        Value = "answer"
                    };

                    message.Text = $"**Question:**<br/>{newQuestion.Question}<br/><br/>" +
                                   $"**Author:** {newQuestion.Authors ?? "Unknkown"}<br/>" +
                                   $"**Tour:** {newQuestion.TournamentTitle ?? "Unknkown"}";

                    message.Attachments      = newQuestion.QuestionImageUrls.Select(ToAttachement).ToList();
                    message.SuggestedActions = new SuggestedActions
                    {
                        Actions = new List <CardAction> {
                            answerAction
                        }
                    };

                    await context.PostAsync(message);
                }
                else
                {
                    await context.SayAsync("I'm sorry there are no more questions for you. Please, try to set another level :-(");
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError("Exception in PostNewQuestion", ex);
                await context.SayAsync("I'm sorry - something wrong has happened.");
            }
        }
Beispiel #2
0
        public async static Task <IMessageActivity> PostNewQuestion(IBotDataBag conversationData, IMessageActivity messageActivity)
        {
            string conversationId = messageActivity.Conversation.Id;

            byte level = conversationData.GetValueOrDefault <byte>(KEY_LEVEL);

            Trace.TraceInformation($"PostNewQuestion: conversation: {conversationId}; level: {level}");

            QuestionItem newQuestion = await new QuestionDataSql().GetRandomQuestion(conversationId, (QuestionComplexity)level);

            Trace.TraceInformation($"PostNewQuestion: {newQuestion?.Id}, {newQuestion?.Question}, {newQuestion?.Answer}");

            if (newQuestion != null)
            {
                newQuestion.InitUrls("https://db.chgk.info/images/db/");

                conversationData.SetValue(KEY, newQuestion);

                messageActivity.Id = newQuestion.Id.ToString();

                CardAction answerAction = new CardAction()
                {
                    Title = "Answer",
                    Type  = "imBack",
                    Value = "answer"
                };

                messageActivity.Text = $"**Question:**<br/>{newQuestion.Question}<br/><br/>" +
                                       $"**Author:** {newQuestion.Authors ?? "Unknkown"}<br/>" +
                                       $"**Tour:** {newQuestion.TournamentTitle ?? "Unknkown"}";

                messageActivity.Attachments      = newQuestion.QuestionImageUrls.Select(ToAttachement).ToList();
                messageActivity.SuggestedActions = new SuggestedActions
                {
                    Actions = new List <CardAction> {
                        answerAction
                    }
                };

                return(messageActivity);
            }

            return(null);
        }