Beispiel #1
0
        private Attachment MakeO365CardAttachmentAsync()
        {
            var card           = CardSampleHelper.CreateSampleO365ConnectorCard();
            var cardAttachment = new Attachment
            {
                Content     = card,
                ContentType = O365ConnectorCard.ContentType,
            };

            return(cardAttachment);
        }
Beispiel #2
0
        private AdaptiveCard MakeAdaptiveCard(string cardType)
        {
            var adaptiveCard = cardType switch
            {
                "botaction" => CardSampleHelper.CreateAdaptiveCardBotAction(),
                "taskmodule" => CardSampleHelper.CreateAdaptiveCardTaskModule(),
                "submitaction" => CardSampleHelper.CreateAdaptiveCardSubmit(),
                _ => throw new ArgumentException(nameof(cardType)),
            };

            return(adaptiveCard);
        }
Beispiel #3
0
        private async Task <DialogTurnResult> DisplayCardAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            if (stepContext.Context.Activity.Value != null)
            {
                await HandleSpecialActivity(stepContext, cancellationToken);
            }
            else
            {
                // Checks to see if the activity is an adaptive card update or a bot action respose
                var card     = ((FoundChoice)stepContext.Result).Value.ToLowerInvariant();
                var cardType = ParseEnum <CardOptions>(card);

                if (ChannelSupportedCards.IsCardSupported(stepContext.Context.Activity.ChannelId, cardType))
                {
                    switch (cardType)
                    {
                    case CardOptions.AdaptiveCardBotAction:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeAdaptiveCard("botaction").ToAttachment()), cancellationToken);

                        break;

                    case CardOptions.AdaptiveCardTeamsTaskModule:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeAdaptiveCard("taskmodule").ToAttachment()), cancellationToken);

                        break;

                    case CardOptions.AdaptiveCardSubmitAction:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeAdaptiveCard("submitaction").ToAttachment()), cancellationToken);

                        break;

                    case CardOptions.Hero:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(CardSampleHelper.CreateHeroCard().ToAttachment()), cancellationToken).ConfigureAwait(false);

                        break;

                    case CardOptions.Thumbnail:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(CardSampleHelper.CreateThumbnailCard().ToAttachment()), cancellationToken).ConfigureAwait(false);

                        break;

                    case CardOptions.Receipt:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(CardSampleHelper.CreateReceiptCard().ToAttachment()), cancellationToken).ConfigureAwait(false);

                        break;

                    case CardOptions.Signin:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(CardSampleHelper.CreateSigninCard().ToAttachment()), cancellationToken).ConfigureAwait(false);

                        break;

                    case CardOptions.Carousel:
                        // NOTE: if cards are NOT the same height in a carousel, Teams will instead display as AttachmentLayoutTypes.List
                        await stepContext.Context.SendActivityAsync(
                            MessageFactory.Carousel(new[]
                        {
                            CardSampleHelper.CreateHeroCard().ToAttachment(),
                            CardSampleHelper.CreateHeroCard().ToAttachment(),
                            CardSampleHelper.CreateHeroCard().ToAttachment()
                        }),
                            cancellationToken).ConfigureAwait(false);

                        break;

                    case CardOptions.List:
                        // NOTE: MessageFactory.Attachment with multiple attachments will default to AttachmentLayoutTypes.List
                        await stepContext.Context.SendActivityAsync(
                            MessageFactory.Attachment(new[]
                        {
                            CardSampleHelper.CreateHeroCard().ToAttachment(),
                            CardSampleHelper.CreateHeroCard().ToAttachment(),
                            CardSampleHelper.CreateHeroCard().ToAttachment()
                        }),
                            cancellationToken).ConfigureAwait(false);

                        break;

                    case CardOptions.O365:

                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeO365CardAttachmentAsync()), cancellationToken).ConfigureAwait(false);

                        break;

                    case CardOptions.TeamsFileConsent:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeTeamsFileConsentCard()), cancellationToken);

                        break;

                    case CardOptions.Animation:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeAnimationCard().ToAttachment()), cancellationToken);

                        break;

                    case CardOptions.Audio:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeAudioCard().ToAttachment()), cancellationToken);

                        break;

                    case CardOptions.Video:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeVideoCard().ToAttachment()), cancellationToken);

                        break;

                    case CardOptions.AdaptiveUpdate:
                        await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(MakeUpdateAdaptiveCard().ToAttachment()), cancellationToken);

                        break;

                    case CardOptions.End:
                        return(new DialogTurnResult(DialogTurnStatus.Complete));
                    }
                }
                else
                {
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text($"{cardType} cards are not supported in the {stepContext.Context.Activity.ChannelId} channel."), cancellationToken);
                }
            }

            return(await stepContext.ReplaceDialogAsync(InitialDialogId, "What card would you want?", cancellationToken));
        }