Esempio n. 1
0
        internal List <IDirective> getImageResponseIfUrlLeadsToImage(String url, String title)
        {
            TemplateImage ti = new TemplateImage();

            if (supportsDisplay)
            {
                if (url.EndsWith(".png") || url.EndsWith(".jpg") || url.EndsWith(".jpeg"))
                {
                    ImageSource imageSource = new ImageSource();
                    imageSource.Url = url;

                    log.LogLine($"Image detected: ImageURL = {url}");

                    ti.ContentDescription = title;

                    List <ImageSource> imageSources = new List <ImageSource>();
                    imageSources.Add(imageSource);
                    ti.Sources = imageSources;

                    var bodytemplate = new BodyTemplate7();
                    bodytemplate.Title = title;
                    bodytemplate.Image = ti;

                    DisplayRenderTemplateDirective directive = new DisplayRenderTemplateDirective();
                    directive.Template = bodytemplate;

                    List <IDirective> directives = new List <IDirective>();
                    directives.Add(directive);
                    return(directives);
                }
            }
            return(null);
        }
        public void MessageActivityWithAlexaCardDirectiveAttachmentsConverted()
        {
            var skillRequest = SkillRequestHelper.CreateIntentRequest();
            var mapper       = new AlexaRequestMapper();

            var activity = Activity.CreateMessageActivity() as Activity;

            activity.Text = "Hello world";

            var hintDirective = new HintDirective("hint text");

            var displayDirective = new DisplayRenderTemplateDirective()
            {
                Template = new BodyTemplate1()
                {
                    BackgroundImage = new TemplateImage()
                    {
                        ContentDescription = "Test",
                        Sources            = new List <ImageSource>()
                        {
                            new ImageSource()
                            {
                                Url = "https://via.placeholder.com/576.png/09f/fff",
                            }
                        }
                    },
                    Content = new TemplateContent()
                    {
                        Primary = new TemplateText()
                        {
                            Text = "Test", Type = "PlainText"
                        }
                    },
                    Title = "Test title",
                }
            };

            var simpleCard = new SimpleCard()
            {
                Title   = "This is a simple card",
                Content = "This is the simple card content"
            };

            activity.Attachments.Add(hintDirective.ToAttachment());
            activity.Attachments.Add(displayDirective.ToAttachment());
            activity.Attachments.Add(simpleCard.ToAttachment());

            var skillResponse = ExecuteActivityToResponse(mapper, new MergedActivityResult {
                MergedActivity = activity
            }, skillRequest);

            VerifyCardAttachmentAndDirectiveResponse(skillResponse, simpleCard, new List <IDirective>()
            {
                hintDirective, displayDirective
            });
        }
        private static IList <IDirective> CreateBodyDirectives(BodyTemplate2 template)
        {
            var directive = new DisplayRenderTemplateDirective();

            directive.Template = template;
            var items = new List <IDirective>();

            items.Add(directive);

            return(items);
        }
        private static IList <IDirective> CreateListDirectives(SkillTypen typ, List <ListItem> listItems, string title)
        {
            var directive = new DisplayRenderTemplateDirective();

            directive.Template = CreateListTemplate1(typ, listItems, title);
            var items = new List <IDirective>();

            items.Add(directive);

            return(items);
        }
Esempio n. 5
0
        /// <summary>
        /// Creates the metosat response.
        /// </summary>
        /// <param name="infrared">if set to <c>true</c> [infrared].</param>
        /// <returns></returns>
        private static SkillResponse CreateResponse(bool infrared)
        {
            string        text     = infrared ? "Ecco le ultime immagini all' infraross dal satellite meteosàt" : "Ecco le ultime immagini dal satellite meteosàt";
            SkillResponse response = ResponseBuilder.Tell(text);
            DisplayRenderTemplateDirective display = new DisplayRenderTemplateDirective();

            var bodyTemplate = new ListTemplate2
            {
                Title      = "Immagini meteosat",
                BackButton = "HIDDEN"
            };

            foreach (KeyValuePair <string, string> info in infos)
            {
                var image = new TemplateImage()
                {
                    ContentDescription = $"Vista {info.Key}"
                };

                string url = infrared ? $"https://api.sat24.com/mostrecent/{info.Value}/infraPolair" : $"https://api.sat24.com/mostrecent/{info.Value}/visual5hdcomplete";

                image.Sources.Add(new ImageSource()
                {
                    Url    = url,
                    Height = 615,
                    Width  = 845,
                });

                ListItem item = new ListItem
                {
                    Image   = image,
                    Content = new TemplateContent
                    {
                        Primary = new TemplateText()
                        {
                            Text = $"{info.Key}",
                            Type = "PlainText"
                        }
                    }
                };

                bodyTemplate.Items.Add(item);
            }

            display.Template = bodyTemplate;
            response.Response.Directives.Add(display);
            response.Response.ShouldEndSession = false;
            return(response);
        }
        public void Creates_RenderTemplateDirective()
        {
            var actual = new DisplayRenderTemplateDirective
            {
                Template = new BodyTemplate1
                {
                    Token           = "A2079",
                    BackButton      = BackButtonVisibility.Visible,
                    BackgroundImage = new TemplateImage
                    {
                        ContentDescription = "Textured grey background",
                        Sources            = new List <ImageSource>
                        {
                            new ImageSource {
                                Url = "https://www.example.com/background-image1.png"
                            }
                        }
                    },
                    Title   = "My Favorite Car",
                    Content = new TemplateContent
                    {
                        Primary = new TemplateText {
                            Text = "See my favorite car", Type = TextType.Plain
                        },
                        Secondary = new TemplateText {
                            Text = "Custom-painted", Type = TextType.Plain
                        },
                        Tertiary = new TemplateText {
                            Text = "By me!", Type = TextType.Plain
                        }
                    }
                }
            };

            Assert.True(CompareJson(actual, "DisplayRenderTemplateDirective.json"));
        }
        /**
         * Creates and returns the visual and spoken response with shouldEndSession flag
         *
         * @param title
         *            title for the companion application home card
         * @param output
         *            output content for speech and companion application home card
         * @param shouldEndSession
         *            should the session be closed
         * @return SpeechletResponse spoken and visual response for the given input
         */
        private SpeechletResponse BuildSpeechletResponse(string title, string output, bool shouldEndSession)
        {
            // Create the Simple card content.
            SimpleCard card = new SimpleCard();

            card.Title   = String.Format("SessionSpeechlet - {0}", title);
            card.Content = String.Format("SessionSpeechlet - {0}", output);

            // Create the plain text output.
            PlainTextOutputSpeech speech = new PlainTextOutputSpeech();

            speech.Text = output;

            /* Create a directive for Echo Show (example)
             * This can be separeted so it can be easier to create
             * a Show Directive where you can only need to write
             * the important information
             */
            IList <Directive> listDirectiveTest          = new List <Directive>();
            DisplayRenderTemplateDirective directiveTest = new DisplayRenderTemplateDirective();
            DisplayTemplate templateTest   = new DisplayTemplate();
            DisplayImage    backgroundTest = new DisplayImage();
            DisplayImage    imageTest      = new DisplayImage();

            IList <DisplayImageSource> backgroundSourcesTest = new List <DisplayImageSource>();
            IList <DisplayImageSource> imageSourcesTest      = new List <DisplayImageSource>();

            DisplayImageSource backgroundSource = new DisplayImageSource();

            backgroundSource.Url = "URL for the background image - must be secure (https)";
            DisplayImageSource imageSource = new DisplayImageSource();

            imageSource.Url = "URL for the main image - must be secure (https)";

            backgroundSourcesTest.Add(backgroundSource);
            imageSourcesTest.Add(imageSource);

            backgroundTest.ContentDescription = "Description for the background image";
            backgroundTest.Sources            = backgroundSourcesTest;

            imageTest.ContentDescription = "Description for the main image";
            imageTest.Sources            = imageSourcesTest;

            TextContent textContentTest      = new TextContent();
            TextField   primaryContentTest   = new TextField();
            TextField   secondaryContentTest = new TextField();
            TextField   tertiaryContentTest  = new TextField();

            primaryContentTest.Text = "Primary Text (could be formatted)";
            primaryContentTest.Type = TextField.TextTypeEnum.RichText;

            secondaryContentTest.Text = "Secondary Text (could be formatted)";
            secondaryContentTest.Type = TextField.TextTypeEnum.RichText;

            tertiaryContentTest.Text = "Tertiary Text (could be formatted)";
            tertiaryContentTest.Type = TextField.TextTypeEnum.RichText;

            textContentTest.PrimaryText   = primaryContentTest;
            textContentTest.SecondaryText = secondaryContentTest;
            textContentTest.TertiaryText  = tertiaryContentTest;

            templateTest.Title           = "Hello, this is a Test";
            templateTest.BackButton      = DisplayTemplate.ButtonStateEnum.HIDDEN;
            templateTest.BackgroundImage = backgroundTest;
            templateTest.Image           = imageTest;
            templateTest.Type            = "BodyTemplate2";
            templateTest.Token           = "";
            templateTest.TextContent     = textContentTest;

            directiveTest.Template = templateTest;
            listDirectiveTest.Add(directiveTest);

            // Create the speechlet response.
            SpeechletResponse response = new SpeechletResponse();

            response.ShouldEndSession = shouldEndSession;
            response.OutputSpeech     = speech;
            response.Card             = card;
            response.Directives       = listDirectiveTest;

            return(response);
        }