public ActionResult WechatServiceSendMessage(List <NewsInfoView> newsList, bool isPreview = false) { SysWechatConfig wechat = WeChatCommonService.lstSysWeChatConfig.Find(p => p.AccountManageId == AccountManageID && !p.IsCorp.Value); if (wechat == null) { return(Json(new { results = new { Data = 500 } })); } try { NewsInfoView news = newsList[0]; if ("video".Equals(news.NewsCate)) { news.ImageContent = SaveBase64ImageToServer(news.ImageContent); } string strSendType = string.Empty; SearchUserMPView searchCondition = new SearchUserMPView { Group = news.Group, Province = news.Province, City = news.City, Sex = news.Sex }; using (var transactionScope = new TransactionScope(TransactionScopeOption.Suppress, new TransactionOptions { IsolationLevel = IsolationLevel.RepeatableRead })) { SendResult returnResult = null; List <NewsModel> articles = new List <NewsModel>(); var lstArticles = GetArticleList(newsList, isPreview, strSendType, searchCondition); if (!isPreview && news.PostType == (int)MessagePostTypeEnum.定时推送) { transactionScope.Complete(); } else { string[] openids = null; if (isPreview) { openids = news.SendToPerson; } //发送消息 returnResult = WechatCommonMP.SendMsgMP(lstArticles, searchCondition, openids); if (returnResult.errcode == Weixin.ReturnCode.请求成功) { transactionScope.Complete(); } } } } catch (Exception e) { _Logger.Error(e, "An error occurred while sending mp news."); // _Logger.Error(e.ToString()); return(Json(new { results = new { Data = 500 } })); } return(Json(new { results = new { Data = 200 } })); }
public ActionResult PostQuickResponse(string openId, List <NewsInfoView> newsList) { try { var news = newsList[0]; if ("video".Equals(news.NewsCate)) { news.ImageContent = SaveBase64ImageToServer(news.ImageContent); } SysWechatConfig wechat = WeChatCommonService.lstSysWeChatConfig.Find(p => p.Id == news.AppId && !p.IsCorp.Value); if (wechat == null) { return(Json(new { results = new { Data = 500 } })); } ResponseMessageBase response = null; var lstArticles = GetArticleList(newsList, false, news.NewsCate, null, false); //发送消息 WechatCommonMP.SendMsg(news.NewsCate, "", lstArticles, "", new string[] { openId }, null, true); switch (news.NewsCate) { case "text": response = new ResponseMessageText() { Content = news.NewsContent }; //returnResult = CustomApi.SendText(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, news.NewsContent); break; case "news": //var lstArticles = GetArticleList(newsList, false); //List<NewsModel> articles = new List<NewsModel>(); //string host = CommonService.GetSysConfig("Content Server", ""); //if (host.EndsWith("/")) //{ // host = host.Substring(0, host.Length - 1); //} //for (int i = 0; i < lstArticles.Count; i++) //{ // var item = lstArticles[i]; // var filePath = Server.MapPath("~/") + item.ImageCoverUrl.Insert(item.ImageCoverUrl.LastIndexOf('.'), "_T"); // if (0 == i) // { // filePath = filePath.Replace("_T", "_B"); // } // var ret0 = Innocellence.Weixin.MP.AdvancedAPIs.MediaApi.UploadTemporaryMedia(wechat.WeixinAppId, wechat.WeixinCorpSecret, Weixin.MP.UploadMediaFileType.thumb, filePath); // var picUrl = (host + item.ImageCoverUrl).Replace("\\", "/"); // var url = string.Format("{0}/MPNews/ArticleInfo/WxDetail/{1}?wechatid={2}&isPreview={3}", host, item.Id, item.AppId, false); // articles.Add(new NewsModel() { title = item.ArticleTitle, content = WechatCommonMP.ImageConvert(item.ArticleContent, wechat.Id), thumb_url = picUrl, thumb_media_id = ret0.thumb_media_id, content_source_url = url }); //} //var ret = Innocellence.Weixin.MP.AdvancedAPIs.MediaApi.UploadTemporaryNews(wechat.WeixinAppId, wechat.WeixinCorpSecret, 10000, articles.ToArray()); //returnResult = CustomApi.SendMpNews(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, ret.media_id); string _newsHost = Infrastructure.Web.Domain.Service.CommonService.GetSysConfig("WeChatUrl", ""); response = new ResponseMessageNews() { Articles = lstArticles.Select(a => new Article() { Title = a.ArticleTitle, Url = string.Format("{0}/{3}/ArticleInfo/wxdetail/{1}?wechatid={2}&isAutoReply={4}", _newsHost, a.Id, news.AppId, "mpnews", 0),// _newsHost + "/News/ArticleInfo/wxdetail/" + a.Id + "?wechatid=" + appId, PicUrl = _newsHost + a.ImageCoverUrl, Description = a.ArticleComment }).ToList() }; break; case "image": //WechatCommon.GetMediaInfo(AutoReplyContentEnum.IMAGE, news, news.AppId); //returnResult = CustomApi.SendImage(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, news.MediaId); response = new ResponseMessageImage() { Image = new Weixin.Entities.Image() { MediaId = news.MediaId } }; break; case "video": //WechatCommon.GetMediaInfo(AutoReplyContentEnum.VIDEO, news, news.AppId); ////var ret1 = Innocellence.Weixin.MP.AdvancedAPIs.GroupMessageApi.GetOpenIdVideoMediaIdResult(wechat.WeixinAppId, wechat.WeixinCorpSecret, news.MediaId, news.NewsTitle, news.NewsComment); ////news.MediaId = ret1.media_id; ////news.MediaCreateTime = ret1.created_at; //returnResult = CustomApi.SendVideo(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, news.MediaId, news.NewsTitle, news.NewsComment); response = new ResponseMessageVideo() { Video = new Video() { MediaId = news.MediaId } }; break; case "voice": //WechatCommon.GetMediaInfo(AutoReplyContentEnum.VOICE, news, news.AppId); //returnResult = CustomApi.SendVoice(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, news.MediaId); response = new ResponseMessageVoice() { Voice = new Voice() { MediaId = news.MediaId } }; break; default: throw new Exception("Invalid media type."); } //var user = _WechatMPUserService.GetUserByOpenId(openId); response.ToUserName = openId; var task = _WeChatUserRequestMessageLogHandler.WriteResponseLogMP(new List <Innocellence.Weixin.Entities.IResponseMessageBase> { response }, news.AppId.ToString(), false); return(Json(new { results = new { Data = 200, Object = task.Result } })); } catch (Exception e) { _Logger.Error(e, "An error occurred while PostQuickResponse."); return(Json(new { results = new { Data = 500, Message = e.Message } })); } }