public void MessageActivityWithSignInCard()
        {
            var skillRequest = SkillRequestHelper.CreateIntentRequest();
            var mapper       = new AlexaRequestMapper();

            var signinCard = new SigninCard
            {
                Text    = "sign in text",
                Buttons = new List <CardAction>()
                {
                    new CardAction
                    {
                        Title = "sign in",
                        Type  = ActionTypes.OpenUrl,
                        Image = "https://image",
                        Value = "https://value"
                    }
                }
            };

            var activity = Activity.CreateMessageActivity() as Activity;

            activity.Attachments.Add(new Attachment()
            {
                ContentType = SigninCard.ContentType, Content = signinCard
            });

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

            Assert.NotNull(skillResponse.Response.Card);
            Assert.Equal(typeof(LinkAccountCard), skillResponse.Response.Card.GetType());
        }
        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
            });
        }
        public void NonMessageActivityConverted()
        {
            var skillRequest = SkillRequestHelper.CreateIntentRequest();
            var mapper       = new AlexaRequestMapper();

            var activity = Activity.CreateTraceActivity("This is a trace") as Activity;

            var skillResponse = ExecuteActivityToResponse(mapper, activity, skillRequest);

            VerifyPlainTextResponse(skillResponse, string.Empty);
        }
        public void MessageActivityWithHeroCardConverted()
        {
            var skillRequest = SkillRequestHelper.CreateIntentRequest();
            var mapper       = new AlexaRequestMapper();

            var heroCard = new HeroCard
            {
                Title  = "Card title",
                Text   = "Card text",
                Images = new List <Microsoft.Bot.Schema.CardImage>
                {
                    new Microsoft.Bot.Schema.CardImage()
                    {
                        Url = "https://url"
                    }
                },
                Buttons = new List <CardAction>()
                {
                    new CardAction {
                        Title = "Places to buy", Type = ActionTypes.ImBack, Value = "Places To Buy"
                    },
                    new CardAction
                    {
                        Title = "I feel lucky",
                        Type  = ActionTypes.OpenUrl,
                        Image = "https://image",
                        Value = "https://value"
                    }
                }
            };

            var activity = Activity.CreateMessageActivity() as Activity;

            activity.Attachments.Add(new Attachment()
            {
                ContentType = HeroCard.ContentType, Content = heroCard
            });

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

            Assert.NotNull(skillResponse.Response.Card);
            Assert.Equal(typeof(StandardCard), skillResponse.Response.Card.GetType());
            var card = skillResponse.Response.Card as StandardCard;

            Assert.Equal(heroCard.Text, card.Content);
            Assert.Equal(heroCard.Title, card.Title);
            Assert.Equal(heroCard.Images[0].Url, heroCard.Images[0].Url);
        }
        public void SimpleIntentRequestConverted()
        {
            var skillRequest  = SkillRequestHelper.CreateIntentRequest();
            var mapperOptions = new AlexaRequestMapperOptions {
                ServiceUrl = "service url"
            };
            var mapper = new AlexaRequestMapper(mapperOptions);

            ((IntentRequest)skillRequest.Request).Intent.Slots[mapperOptions.DefaultIntentSlotName].Value = "hello world";

            var convertedActivity = mapper.RequestToActivity(skillRequest);

            VerifyIntentRequest(skillRequest, convertedActivity, mapperOptions);
        }
        public void PlainTextMessageActivityConverted()
        {
            var skillRequest = SkillRequestHelper.CreateIntentRequest();
            var mapper       = new AlexaRequestMapper();

            var activity = Activity.CreateMessageActivity() as Activity;

            activity.Text       = "Hello world";
            activity.TextFormat = TextFormatTypes.Plain;

            var skillResponse = ExecuteActivityToResponse(mapper, activity, skillRequest);

            VerifyPlainTextResponse(skillResponse, activity.Text);
        }
        public void AppostrophiesNotConvertedNonSsml()
        {
            const string text         = "It's amazing <xml />";
            var          alexaAdapter = new AlexaRequestMapper();

            var skillRequest = SkillRequestHelper.CreateIntentRequest();
            var mapper       = new AlexaRequestMapper();

            var activity = Activity.CreateMessageActivity() as Activity;

            activity.Text = text;

            var processActivityResult = alexaAdapter.MergeActivities(new List <Activity>()
            {
                activity
            });

            var skillResponse = ExecuteActivityToResponse(mapper, processActivityResult, skillRequest);

            VerifyPlainTextResponse(skillResponse, text);
        }
        public void AppostrophiesNotConvertedSsml()
        {
            const string text         = "It's amazing <break /> really";
            var          alexaAdapter = new AlexaRequestMapper();

            var skillRequest = SkillRequestHelper.CreateIntentRequest();
            var mapper       = new AlexaRequestMapper();

            var activity = Activity.CreateMessageActivity() as Activity;

            activity.Speak = text;

            var processActivityResult = alexaAdapter.MergeActivities(new List <Activity>()
            {
                activity
            });

            var skillResponse = ExecuteActivityToResponse(mapper, processActivityResult, skillRequest);
            var outputSpeech  = skillResponse.Response.OutputSpeech as SsmlOutputSpeech;

            Assert.Equal($"<speak>{text}</speak>", outputSpeech.Ssml);
        }