Example #1
0
        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            var activity = await result as Activity;

            //// Calculate something for us to return
            //int length = (activity.Text ?? string.Empty).Length;

            //// Return our reply to the user
            //await context.PostAsync($"You sent {activity.Text} which was {length} characters");

            if (activity.Text == "ato")
            {
                var str = await EdaClient.GetAtoDataTypesAsync("ato");

                await context.PostAsync($"You sent {activity.Text}.");

                await context.PostAsync($"response ----- {str}");
            }
            else if (activity.Text == "search")
            {
                var srchClient = new SearchDatasets();

                var searchResults = await srchClient.GetAzSearchResultsAsync("Energy");



                // use attachment list
                var responseMessage = context.MakeMessage(); // show have preperties set properly for conversation and recepient
                responseMessage.AttachmentLayout = AttachmentLayoutTypes.List;
                responseMessage.Attachments      = new List <Attachment>();

                var i    = 1;
                var item = searchResults.Results[0];
                {
                    var    files = item.Document["files"] as string[];
                    string url   = (string)files[0];

                    CardAction cardButton = new CardAction()
                    {
                        Title = $"{new UriBuilder(url).Uri.AbsoluteUri}",
                        Type  = "openUrl",
                        Value = new UriBuilder(url).Uri.AbsoluteUri
                    };


                    List <CardAction> cardActions = new List <CardAction>();
                    cardActions.Add(cardButton);
                    HeroCard hCard = new HeroCard()
                    {
                        Title = $"{i++}: {item.Document["title"]}",

                        Text = $"{item.Document["description"]}",
                        //Text = $"Text: {v.name}",
                        Images  = null,
                        Buttons = cardActions
                    };

                    Attachment cardAttachment = hCard.ToAttachment();
                    responseMessage.Attachments.Add(cardAttachment);
                }

                await context.PostAsync(responseMessage);
            }
            else if (activity.Text == "graph")
            {
                var resp = await EdaClient.GetPlotAsync("ato");


                var responseMessage = context.MakeMessage();
                responseMessage.Attachments.Add(new Attachment()
                {
                    ContentUrl  = resp[0],
                    ContentType = "image/png",
                    Name        = "ato.png"
                });


                await context.PostAsync(responseMessage);
            }
            else
            {
            }

            context.Wait(MessageReceivedAsync);
        }
Example #2
0
        public async Task FindDatasetIntent(IDialogContext context, LuisResult result)
        {
            EntityRecommendation dataSetEntity;
            string query;

            if (result.TryFindEntity("datasettopic", out dataSetEntity))
            {
                System.Diagnostics.Debug.WriteLine($"Call Azure Search, pass {dataSetEntity}");
                query = dataSetEntity.Entity;
            }
            else
            {
                query = result.Query;
            }

            var srchClient    = new SearchDatasets();
            var searchResults = await srchClient.GetAzSearchResultsAsync(query);

            // use attachment list
            var responseMessage = context.MakeMessage(); // show have preperties set properly for conversation and recepient

            responseMessage.AttachmentLayout = AttachmentLayoutTypes.List;
            responseMessage.Attachments      = new List <Attachment>();

            var i = 0;

            //var item = searchResults.Results[0];
            foreach (var item in searchResults.Results)
            {
                if (i > 5)
                {
                    break;
                }


                var    files = item.Document["files"] as string[];
                string url   = (string)files[0];

                CardAction cardButton = new CardAction()
                {
                    Title = $"{new UriBuilder(url).Uri.AbsoluteUri}",
                    Type  = "openUrl",
                    Value = new UriBuilder(url).Uri.AbsoluteUri
                };


                List <CardAction> cardActions = new List <CardAction>();
                cardActions.Add(cardButton);
                HeroCard hCard = new HeroCard()
                {
                    Title    = $"{i++}: {item.Document["title"]}",
                    Subtitle = $"Score: {item.Score}",
                    Text     = $"{item.Document["description"]}",
                    //Text = $"Text: {v.name}",
                    Images  = null,
                    Buttons = cardActions
                };

                Attachment cardAttachment = hCard.ToAttachment();
                responseMessage.Attachments.Add(cardAttachment);
                responseMessage.AttachmentLayout = AttachmentLayoutTypes.Carousel;
            }

            if (searchResults.Results.Count > 0)
            {
                await context.PostAsync(responseMessage);
            }
            else
            {
                await context.PostAsync($"I couldn't find any thing about  {query}. Try to rephrase your question!");

                await context.PostAsync($"... or maybe there is nothing about this topic! hmmm! :/ ");
            }
            context.Wait(this.MessageReceived);
        }