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); }
/// <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); }