/// <summary> /// Process adaptive card and convert it into WeChat response messages. /// </summary> /// <param name="activity">Message activity from bot.</param> /// <param name="attachment">An <see cref="Attachment"/> contains adaptive card content.</param> /// <returns>List of WeChat response message.</returns> private async Task <IList <IResponseMessageBase> > ProcessAdaptiveCardAsync(IMessageActivity activity, Attachment attachment) { var messages = new List <IResponseMessageBase>(); var adaptiveCard = attachment.ContentAs <AdaptiveCard>(); try { var news = await CreateNewsFromAdaptiveCard(activity, adaptiveCard, attachment.Name).ConfigureAwait(false); // TODO: Upload news image must be persistent media. var uploadResult = await _wechatClient.UploadNewsAsync(new News[] { news }, false).ConfigureAwait(false); var mpnews = new MPNewsResponse(activity.From.Id, activity.Recipient.Id, uploadResult.MediaId); messages.Add(mpnews); } #pragma warning disable CA1031 // Do not catch general exception types, use fallback text instead. catch #pragma warning disable CA1031 // Do not catch general exception types, use fallback text instead. { _logger.LogInformation("Convert adaptive card failed."); messages.AddRange(GetFixedMessages(activity, adaptiveCard.FallbackText)); } return(messages); }
/// <summary> /// Convert hero card to WeChat response message. /// </summary> /// <param name="activity">Message activity from bot.</param> /// <param name="attachment">An <see cref="Attachment"/> contains hero card content.</param> /// <returns>List of WeChat response message.</returns> private async Task <IList <IResponseMessageBase> > ProcessHeroCardAsync(IMessageActivity activity, Attachment attachment) { var messages = new List <IResponseMessageBase>(); var heroCard = attachment.ContentAs <HeroCard>(); var news = await CreateNewsFromHeroCard(activity, heroCard).ConfigureAwait(false); var uploadResult = await _wechatClient.UploadNewsAsync(new News[] { news }, _uploadTemporaryMedia).ConfigureAwait(false); var mpnews = new MPNewsResponse(activity.From.Id, activity.Recipient.Id, uploadResult.MediaId); messages.Add(mpnews); messages.AddRange(ProcessCardActions(activity, heroCard.Buttons)); return(messages); }