예제 #1
0
        private Attachment CreateBookingConfimrationCardAttachment(FlightitineraryModel data)
        {
            try
            {
                var cardResourcePath = "TravelBookingBot.Cards.flightCard.json";

                using (var stream = GetType().Assembly.GetManifestResourceStream(cardResourcePath))
                {
                    using (var reader = new StreamReader(stream))
                    {
                        var adaptiveCardTempalte = reader.ReadToEnd();
                        JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
                        {
                            DateFormatHandling   = DateFormatHandling.IsoDateFormat,
                            DateTimeZoneHandling = DateTimeZoneHandling.Utc
                        };
                        var dataJson = JsonConvert.SerializeObject(data, microsoftDateFormatSettings);


                        var transformer = new AdaptiveTransformer();
                        var cardJson    = transformer.Transform(adaptiveCardTempalte, dataJson);

                        return(new Attachment()
                        {
                            ContentType = AdaptiveCards.AdaptiveCard.ContentType,// "application/vnd.microsoft.card.adaptive",
                            Content = JsonConvert.DeserializeObject(cardJson),
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
예제 #2
0
        public Attachment CreateAttachment(int Index, string dataJson)
        {
            if (string.IsNullOrEmpty(dataJson))
            {
                var adaptiveCardJson       = File.ReadAllText(_path[Index]);
                var adaptiveCardAttachment = new Attachment()
                {
                    ContentType = "application/vnd.microsoft.card.adaptive",
                    Content     = JsonConvert.DeserializeObject(adaptiveCardJson),
                };
                return(adaptiveCardAttachment);
            }
            else
            {
                var CardJson = File.ReadAllText(_path[Index]);

                var transformer = new AdaptiveTransformer();
                var cardJson    = transformer.Transform(CardJson, dataJson);

                var adaptiveCardAttachment = new Attachment()
                {
                    ContentType = "application/vnd.microsoft.card.adaptive",
                    Content     = JsonConvert.DeserializeObject(cardJson),
                };
                return(adaptiveCardAttachment);
            }
        }
        public static async Task GetUserAsync(ITurnContext turnContext, TokenResponse tokenResponse, string upn)
        {
            if (turnContext == null)
            {
                throw new ArgumentNullException(nameof(turnContext));
            }

            if (tokenResponse == null)
            {
                throw new ArgumentNullException(nameof(tokenResponse));
            }

            var client = new SimpleGraphClient(tokenResponse.Token);
            var user   = await client.GetUserAsync(upn);

            var fileRead = System.IO.File.ReadAllText(@".\Resources\GetUserCard.json");
            var item     = (JObject)JsonConvert.DeserializeObject(fileRead);

            string classData = JsonConvert.SerializeObject(user, Formatting.Indented);

            AdaptiveTransformer transformer = new AdaptiveTransformer();
            string cardJson = transformer.Transform(fileRead, classData);

            Attachment attachment = new Attachment();

            attachment.ContentType = "application/vnd.microsoft.card.adaptive";
            attachment.Content     = JsonConvert.DeserializeObject(cardJson);

            var attachments = new List <Attachment>();
            var reply       = MessageFactory.Attachment(attachments);

            reply.Attachments.Add(attachment);

            await turnContext.SendActivityAsync(reply);
        }
예제 #4
0
        private static async Task <DialogTurnResult> ConfirmStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var rawValues   = (JObject)stepContext.Context.Activity.Value;
            var userProfile = (UserProfile)stepContext.Values[UserInfo];

            userProfile.Domain            = (string)rawValues.GetValue("Domain");
            userProfile.UserPrincipalName = userProfile.DomainName + userProfile.Domain;

            Dictionary <string, object> args = (Dictionary <string, object>)stepContext.Options;
            Attachment cardAttachment        = (Attachment)args["cardAttachment"];

            var fileRead = cardAttachment.Content.ToString();

            string classData = JsonConvert.SerializeObject(userProfile, Formatting.Indented);

            AdaptiveTransformer transformer = new AdaptiveTransformer();

            cardAttachment.Content = JsonConvert.DeserializeObject(transformer.Transform(fileRead, classData));

            return(await stepContext.PromptAsync(
                       nameof(TextPrompt),
                       new PromptOptions
            {
                Prompt = new Activity
                {
                    Type = ActivityTypes.Message,
                    Attachments = new List <Attachment>()
                    {
                        cardAttachment
                    },
                },
            },
                       cancellationToken : cancellationToken));
        }
예제 #5
0
        public string AsJson <T>(T data)
        {
            var cardJson = AsJson();
            var cardData = JsonConvert.SerializeObject(data);

            var transformer = new AdaptiveTransformer();

            return(transformer.Transform(cardJson, cardData));
        }
        private Attachment buildWeatherCard(string templateJson, string dataJson)
        {
            var transformer = new AdaptiveTransformer();
            var cardJson    = transformer.Transform(templateJson, dataJson);

            return(new Attachment()
            {
                ContentType = "application/vnd.microsoft.card.adaptive",
                Content = JsonConvert.DeserializeObject(cardJson)
            });
        }
예제 #7
0
        private string PopulateCard(string cardJson, string templateName)
        {
            // return template if no data
            if (string.IsNullOrEmpty(cardJson))
            {
                return(LoadCardTemplate(templateName));
            }

            var templateJson  = LoadCardTemplate(templateName);
            var transformer   = new AdaptiveTransformer();
            var populatedCard = transformer.Transform(templateJson, cardJson);

            return(populatedCard);
        }
        public static Attachment CreateAdaptiveCardFromTemplateAndDataAttachment <T>(string filePath, T data)
        {
            var transformer  = new AdaptiveTransformer();
            var templateJson = File.ReadAllText(filePath);
            var dataJson     = JsonConvert.SerializeObject(data);
            var cardJson     = transformer.Transform(templateJson, dataJson);

            var adaptiveCardAttachment = new Attachment()
            {
                ContentType = "application/vnd.microsoft.card.adaptive",
                Content     = JsonConvert.DeserializeObject(cardJson),
            };

            return(adaptiveCardAttachment);
        }
예제 #9
0
        private AdaptiveCard CreateWeatherCard(HeWeather6Item weather)
        {
            var templateJson = "{\r\n  \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",\r\n  \"type\": \"AdaptiveCard\",\r\n  \"version\": \"1.0\",\r\n  \"body\": [\r\n    {\r\n      \"type\": \"TextBlock\",\r\n      \"text\": \"{name}\",\r\n      \"size\": \"Large\",\r\n      \"isSubtle\": true\r\n    },\r\n    {\r\n      \"type\": \"ColumnSet\",\r\n      \"columns\": [\r\n        {\r\n          \"type\": \"Column\",\r\n          \"width\": \"auto\",\r\n          \"items\": [\r\n            {\r\n              \"type\": \"Image\",\r\n              \"url\": \"{iconUrl}\",\r\n              \"size\": \"Small\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"Column\",\r\n          \"width\": \"auto\",\r\n          \"items\": [\r\n            {\r\n              \"type\": \"TextBlock\",\r\n              \"text\": \"{tmp}\",\r\n              \"size\": \"ExtraLarge\",\r\n              \"spacing\": \"None\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          \"type\": \"Column\",\r\n          \"width\": \"stretch\",\r\n          \"items\": [\r\n            {\r\n              \"type\": \"TextBlock\",\r\n              \"text\": \"℃\",\r\n              \"weight\": \"Bolder\",\r\n              \"spacing\": \"Small\"\r\n            }\r\n          ]\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}";
            var dataJson     = JsonConvert.SerializeObject(new
            {
                name    = $"{weather.basic.location},{weather.basic.parent_city}",
                iconUrl = $"https://cdn.heweather.com/cond_icon/{weather.now.cond_code}.png",
                weather.now.tmp
            });
            var transformer = new AdaptiveTransformer();
            var cardJson    = transformer.Transform(templateJson, dataJson);

            var result = AdaptiveCard.FromJson(cardJson);

            return(result.Card);
        }
예제 #10
0
        public static async Task <AdaptiveCard> GetCardAsync(ITurnContext turnContext, AddToProjectCardActionValue payload)
        {
            var templateJson   = String.Empty;
            var assembly       = Assembly.GetEntryAssembly();
            var resourceStream = assembly.GetManifestResourceStream("ConsultingBot.Cards.AddToProjectConfirmationCard.json");

            using (var reader = new StreamReader(resourceStream, Encoding.UTF8))
            {
                templateJson = await reader.ReadToEndAsync();
            }

            var dataJson = JsonConvert.SerializeObject(payload);

            var transformer = new AdaptiveTransformer();
            var cardJson    = transformer.Transform(templateJson, dataJson);

            return(AdaptiveCard.FromJson(cardJson).Card);
        }
예제 #11
0
        public AdaptiveCard CreateCard(TModel startingData, ITurnContext context, CancellationToken cancellationToken = default)
        {
            var contextJSON = JsonConvert.SerializeObject(startingData);
            //Transform our template with the data model specified
            var transformedJSON = Transformer.Transform(JSON, contextJSON);
            //And then create the card from it
            AdaptiveCardParseResult parseResult = AdaptiveCard.FromJson(transformedJSON);

            //Print any warnings
            //TODO: This should tap into app insights stream somewhere
            if (parseResult.Warnings.Any())
            {
                foreach (var warning in parseResult.Warnings)
                {
                    Console.WriteLine($"[WARN] {warning.Code} - {warning.Message}");
                }
            }

            return(parseResult.Card);
        }
예제 #12
0
        public static async Task<AdaptiveCard> GetCardAsync(ITurnContext turnContext, ConsultingRequestDetails requestDetails)
        {
            var templateJson = String.Empty;
            var assembly = Assembly.GetEntryAssembly();
            var resourceStream = assembly.GetManifestResourceStream("ConsultingBot.Cards.AddToProjectCard.json");
            using (var reader = new StreamReader(resourceStream, Encoding.UTF8))
            {
                templateJson = await reader.ReadToEndAsync();
            }

            requestDetails.monthZero = GetMonthFromNow(0).ToString("MMMM, yyyy");
            requestDetails.monthOne = GetMonthFromNow(1).ToString("MMMM, yyyy");
            requestDetails.monthTwo = GetMonthFromNow(2).ToString("MMMM, yyyy");
            var dataJson = JsonConvert.SerializeObject(requestDetails);

            var transformer = new AdaptiveTransformer();
            var cardJson = transformer.Transform(templateJson, dataJson);

            var result = AdaptiveCard.FromJson(cardJson).Card;
            return result;
        }
예제 #13
0
        private async Task <DialogTurnResult> TherapistSearch(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            List <JToken> therapists = await FilterTherapists(stepContext);

            if (therapists.Capacity == 0)
            {
                return(await stepContext.PromptAsync(DialogIds.NoneFound, new PromptOptions()
                {
                    Prompt = await _responder.RenderTemplate(stepContext.Context, stepContext.Context.Activity.Locale,
                                                             EscalateResponses.ResponseIds.NoneFound),
                }));
            }

            // Fix ToString if it doesn't work
            var templateJson = _templateEngine.GenerateActivityForLocale("TherapistRecommendationCard");

            var templateString = templateJson.Attachments.Single().Content.ToString();

            var cardList = new List <string>();

            foreach (var t in therapists)
            {
                // Convert to string

                var dataJson = t.ToString();

                var transformer = new AdaptiveTransformer();
                var cardJson    = transformer.Transform(templateString, dataJson);

                // Create attachment
                cardList.Add(cardJson);
            }

            var carousel = MessageFactory.Carousel(cardList.Select(c => { return(jsonToCard(c)); }).ToList());

            // Return card
            await stepContext.Context.SendActivityAsync(carousel);

            return(await EndDialogAndProcessing(stepContext, cancellationToken));
        }
예제 #14
0
        //public Attachment Create(string cardResourcePath)
        //{
        //    using (var stream = GetType().Assembly.GetManifestResourceStream(cardResourcePath))
        //    {
        //        using (var reader = new StreamReader(stream))
        //        {
        //            var adaptiveCard = reader.ReadToEnd();
        //            return new Attachment()
        //            {
        //                ContentType = "application/vnd.microsoft.card.adaptive",
        //                Content = JsonConvert.DeserializeObject(adaptiveCard),
        //            };
        //        }
        //    }
        //}

        //public Attachment CreateAttachment(string filePath)
        //{
        //    var adaptiveCardJson = File.ReadAllText(filePath);
        //    var adaptiveCardAttachment = new Attachment()
        //    {
        //        ContentType = "application/vnd.microsoft.card.adaptive",
        //        Content = JsonConvert.DeserializeObject(adaptiveCardJson),
        //    };
        //    return adaptiveCardAttachment;
        //}

        //public Attachment CreateAttachment(int Index)
        //{
        //    var adaptiveCardJson = File.ReadAllText(_path[Index]);
        //    var adaptiveCardAttachment = new Attachment()
        //    {
        //        ContentType = "application/vnd.microsoft.card.adaptive",
        //        Content = JsonConvert.DeserializeObject(adaptiveCardJson),
        //    };

        //    return adaptiveCardAttachment;
        //}

        public Attachment CreateAttachment(int Index, string dataJson)
        {
            if (string.IsNullOrEmpty(dataJson))
            {
                //string adaptiveCardJson;

                //switch (Index)
                //{
                //    case 0:
                //        adaptiveCardJson = File.ReadAllText(https://munibotstorage.blob.core.windows.net/cards/WelcomeCard.json);
                //        break;
                //    default:
                //        adaptiveCardJson = "";
                //        break;
                //}

                var adaptiveCardJson       = File.ReadAllText(_path[Index]);
                var adaptiveCardAttachment = new Attachment()
                {
                    ContentType = "application/vnd.microsoft.card.adaptive",
                    Content     = JsonConvert.DeserializeObject(adaptiveCardJson),
                };
                return(adaptiveCardAttachment);
            }
            else
            {
                var CardJson = File.ReadAllText(_path[Index]);

                var transformer = new AdaptiveTransformer();
                var cardJson    = transformer.Transform(CardJson, dataJson);

                var adaptiveCardAttachment = new Attachment()
                {
                    ContentType = "application/vnd.microsoft.card.adaptive",
                    Content     = JsonConvert.DeserializeObject(cardJson),
                };
                return(adaptiveCardAttachment);
            }
        }