private WechatMessage ConvertMessage(IDialogContext context, IMessageActivity activity) { //The connector could handle this conversion instead... var wechatMessage = new WechatMessage { ToUserName = context.GetChannelUserId() }; var richCards = activity.Attachments?.Where(att => att.ContentType.Equals("application/vnd.microsoft.card.hero", System.StringComparison.InvariantCultureIgnoreCase)); if (richCards?.Count() > 0) { wechatMessage.MessageType = WechatMessageTypes.RICH_MEDIA; wechatMessage.Articles = richCards.Select(att => { var richCard = att.Content as HeroCard; return(new WechatArticle { Title = richCard.Title, Description = richCard.Subtitle ?? richCard.Text, PicUrl = richCard.Images?.FirstOrDefault()?.Url ?? string.Empty }); }); return(wechatMessage); } var image = activity.Attachments?.FirstOrDefault(att => att.ContentType.Contains("image")); if (image != null) { wechatMessage.MessageType = WechatMessageTypes.IMAGE; wechatMessage.MediaId = image.ContentUrl; return(wechatMessage); } wechatMessage.MessageType = WechatMessageTypes.TEXT; wechatMessage.Content = activity.Text; return(wechatMessage); }