示例#1
0
        protected override async Task <MessagingExtensionResponse> OnTeamsMessagingExtensionQueryAsync(ITurnContext <IInvokeActivity> turnContext, MessagingExtensionQuery query, CancellationToken cancellationToken)
        {
            var title      = string.Empty;
            var data       = turnContext.Activity.Value;
            var titleParam = query.Parameters?.FirstOrDefault(p => (p.Name == "Documents" || p.Name == "assetTitle"));

            if (titleParam != null)
            {
                title = titleParam.Value.ToString();
            }

            var assets = await MESearchHandler.Search(query.CommandId, title, this.configuration);

            if (assets.Count == 0)
            {
                return(new MessagingExtensionResponse
                {
                    ComposeExtension = new MessagingExtensionResult
                    {
                        Type = "message",
                        Text = "No match found.",
                    },
                });
            }

            // We take every row of the results and wrap them in cards wrapped in in MessagingExtensionAttachment objects.
            // The Preview is optional, if it includes a Tap, that will trigger the OnTeamsMessagingExtensionSelectItemAsync event back on this bot.
            var attachments = assets.Select(asset =>
            {
                var previewCard = new ThumbnailCard
                {
                    Title = asset.Title
                };
                previewCard.Images = new List <CardImage>()
                {
                    new CardImage(configuration["BaseUri"] + "/Images/MSC17_cloud_006.png")
                };
                CardHelper cardhelper = new CardHelper();
                var assetCard         = cardhelper.GetAssetCard(asset);
                var attachment        = new MessagingExtensionAttachment
                {
                    ContentType = AdaptiveCards.AdaptiveCard.ContentType,
                    Content     = assetCard.Content,
                    Preview     = previewCard.ToAttachment(),
                };

                return(attachment);
            }).ToList();

            return(new MessagingExtensionResponse
            {
                ComposeExtension = new MessagingExtensionResult
                {
                    Type = "result",
                    AttachmentLayout = "list",
                    Attachments = attachments,
                },
            });

            // The list of MessagingExtensionAttachments must we wrapped in a MessagingExtensionResult wrapped in a MessagingExtensionResponse.
        }