Ejemplo n.º 1
0
 public async Task <SoResponse> SoQuestion([FromBody] SoRequest query)
 {
     return(await StackOverflow.Query(query.Question));
 }
Ejemplo n.º 2
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            var message = await argument;

            if (_pizzaFlow)
            {
                if (message.Text == "abort")
                {
                    PromptDialog.Confirm(context, AfterResetAsync, "Are you sure you want to abort ordering?", "Didn't get that!", promptStyle: PromptStyle.None);
                }
                else
                {
                    context.Wait(MessageReceivedAsync);
                }
            }
            else
            {
                string resultString = "Sorry, I am not getting you...";

                QueryResult luisResult = await GetEntityFromLuis(message.Text);

                switch (luisResult.topScoringIntent.intent)
                {
                case "Coding":
                {
                    if (luisResult.entities.Any())
                    {
                        var query = luisResult.entities.FirstOrDefault(x => x.type.ToLower().Contains("topic"))?.entity ?? "";
                        var tag   = luisResult.entities.FirstOrDefault(x => x.type.ToLower().Contains("language"))?.entity ?? "";

                        //var query = luisResult.entities.OrderBy(x => x.startIndex).Select(x => x.entity).Aggregate((current, next) => current + " " + next);


                        //msg.Text = soResult.Body;
                        //msg.Attachments = new List<Attachment>()
                        //{
                        //    new Attachment()
                        //    {
                        //        ContentType = "application/vnd.microsoft.card.thumbnail",
                        //        Name = soResult.Title,
                        //        Content = "Please visit my site.",
                        //        ContentUrl = soResult.Link,

                        //    }
                        //};

                        var soResult = await StackOverflow.Query(query, tag);

                        var msg2 = context.MakeMessage();
                        msg2.Type       = "message";
                        msg2.TextFormat = "markdown";
                        //var converter = new Converter();
                        //var markdown = converter.Convert(soResult.Body);
                        //var converter = new ReverseMarkdown.Converter();
                        //string markdown = converter.Convert(soResult.Body);
                        msg2.Text = soResult.Body;

                        await context.PostAsync(msg2);

                        var msg = context.MakeMessage();
                        msg.Type        = "message";
                        msg.Attachments = new List <Attachment>();
                        List <CardImage> cardImages = new List <CardImage>();
                        cardImages.Add(new CardImage(url: "https://cdn.sstatic.net/Sites/stackoverflow/img/[email protected]?v=73d79a89bded&a"));
                        List <CardAction> cardButtons = new List <CardAction>();
                        CardAction        plButton    = new CardAction()
                        {
                            Value = soResult.Link,
                            Type  = "openUrl",
                            Title = soResult.Title
                        };
                        cardButtons.Add(plButton);
                        ThumbnailCard plCard = new ThumbnailCard()
                        {
                            Title    = soResult.Title,
                            Subtitle = "Please click me for more information!",
                            Images   = cardImages,
                            Buttons  = cardButtons
                        };
                        Attachment plAttachment = plCard.ToAttachment();
                        msg.Attachments.Add(plAttachment);

                        //  "attachments": [
                        //  {
                        //    "contentType": "application/vnd.microsoft.card.thumbnail",
                        //    "content": {
                        //      "title": "I'm a thumbnail card",
                        //      "subtitle": "Please visit my site.",
                        //      "images": [
                        //        {
                        //          "url": "https://mydeploy.azurewebsites.net/matsu.jpg"
                        //        }
                        //      ],
                        //      "buttons": [
                        //        {
                        //          "type": "openUrl",
                        //          "title": "Go to my site",
                        //          "value": "https://blogs.msdn.microsoft.com/tsmatsuz"
                        //        }
                        //      ]
                        //    }
                        //  }
                        //]

                        await context.PostAsync(msg);
                    }
                    context.Wait(MessageReceivedAsync);
                    break;
                }

                case "Greeting":
                {
                    var rand = new Random();
                    resultString = Greetings[rand.Next(0, Greetings.Length)];
                    await context.PostAsync(resultString);

                    context.Wait(MessageReceivedAsync);
                    break;
                }

                case "xkcd":
                {
                    var reply     = context.MakeMessage();
                    var imgString = string.Empty;
                    if (luisResult.entities.Any())
                    {
                        imgString = await XkcdLib.GetComic(luisResult.entities[0].entity);
                    }
                    else
                    {
                        imgString = await XkcdLib.GetRandomComic();
                    }

                    reply.Attachments = new List <Attachment>
                    {
                        new Attachment()
                        {
                            ContentUrl  = imgString,
                            ContentType = "image/jpg",
                            Name        = $"{Guid.NewGuid()}.jpg"
                        }
                    };

                    await context.PostAsync(reply);

                    context.Wait(MessageReceivedAsync);
                    break;
                }

                case "OrderPizza":
                {
                    //await context.PostAsync($"Hmm would you like to order pizza?");
                    _pizzaFlow = true;
                    PromptDialog.Text(context, Resume, "Hmm would you like to order pizza?", "Didn't get that!");

                    break;
                }

                default:
                {
                    await context.PostAsync(resultString);

                    context.Wait(MessageReceivedAsync);
                    break;
                }
                }
            }
        }