// Called when a link message handler runs (i.e. we render a preview to a link whose domain is // included in the messageHandlers in the manifest) public async Task <MessagingExtensionResponse> HandleInvokeActivityAsync(ITurnContext turnContext, AppBasedLinkQuery query) { var previewImg = new List <CardImage> { new CardImage("https://assets.pokemon.com/assets/cms2/img/pokedex/full/025.png", "Pokemon"), }; var preview = new ThumbnailCard("Preview Card", null, $"Your query URL: {query.Url}", previewImg).ToAttachment(); var heroCard = new HeroCard("Preview Card", null, $"Your query URL: <pre>{query.Url}</pre>", previewImg).ToAttachment(); var resultCards = new List <MessagingExtensionAttachment> { heroCard.ToMessagingExtensionAttachment(preview) }; return(new MessagingExtensionResponse { ComposeExtension = new MessagingExtensionResult("list", "result", resultCards), }); }
/// <summary> /// Handles messaging extension action of "submit action" asynchronously. /// </summary> /// <param name="turnContext">The turn context.</param> /// <param name="query">The query object of messaging extension action.</param> /// <returns>Task tracking operation.</returns> public override async Task <InvokeResponse> HandleMessagingExtensionSubmitActionAsync(ITurnContext turnContext, MessagingExtensionAction query) { bool done = false; JObject data = null; if (query.Data != null) { data = JObject.FromObject(query.Data); done = (bool)data["done"]; } var body = new MessagingExtensionActionResponse(); if (data != null && done) { string sharedMessage = string.Empty; if (query.CommandId.Equals("shareMessage") && query.CommandContext.Equals("message")) { sharedMessage = $"Shared message: <div style=\"background:#F0F0F0\">{JObject.FromObject(query.MessagePayload).ToString()}</div><br/>"; } var preview = new ThumbnailCard("Created Card", null, $"Your input: {data["userText"]?.ToString()}").ToAttachment(); var heroCard = new HeroCard("Created Card", null, $"{sharedMessage}Your input: {data["userText"]?.ToString()}").ToAttachment(); var resultCards = new List <MessagingExtensionAttachment> { heroCard.ToMessagingExtensionAttachment(preview) }; body.ComposeExtension = new MessagingExtensionResult("list", "result", resultCards); } else if ((query.CommandId != null && query.CommandId.Equals("createWithPreview")) || query.BotMessagePreviewAction != null) { if (query.BotMessagePreviewAction == null) { body.ComposeExtension = new MessagingExtensionResult { Type = "botMessagePreview", ActivityPreview = new Activity { Attachments = new List <Attachment> { this.TaskModuleResponseCard(query, null) }, }, }; } else { var userEditActivities = query.BotActivityPreview; var card = userEditActivities?[0]?.Attachments?[0]; if (card == null) { body.Task = new TaskModuleMessageResponse { Type = "message", Value = "Missing user edit card. Something wrong on Teams client.", }; } else if (query.BotMessagePreviewAction.Equals("send")) { Activity activity = turnContext.Activity.CreateReply(); activity.Attachments = new List <Attachment> { card }; await turnContext.SendActivityAsync(activity).ConfigureAwait(false); } else if (query.BotMessagePreviewAction.Equals("edit")) { body.Task = new TaskModuleContinueResponse { Type = "continue", Value = new TaskModuleTaskInfo { Card = card, }, }; } } } else { body.Task = this.TaskModuleResponseTask(query, false); } return(new InvokeResponse { Status = 200, Body = body, }); }