/// <summary> /// 构造自动推送消息 /// </summary> /// <param name="push"></param> /// <param name="baseMsg"></param> /// <param name="apMsgType"></param> /// <returns></returns> private async Task <PubKfBaseMsg> GetAutoPushMsg(WxAutoPushShow push, PubKfBaseMsg baseMsg, Enum_ApMsgType apMsgType) { switch (apMsgType) { // 文本(昵称)和红包消息需要单独发送 case Enum_ApMsgType.Image: baseMsg = new PubKfImgMsg { image = new PubKfImgContent { media_id = push.MediaId } }; break; case Enum_ApMsgType.Voice: baseMsg = new PubKfVoiceMsg { voice = new PubKfVoiceContent { media_id = push.MediaId } }; break; case Enum_ApMsgType.Video: baseMsg = new PubKfVideoMsg { video = new PubKfVideoContent { media_id = push.MediaId, thumb_media_id = push.VideoThumbMediaId, title = push.VideoTitle, description = push.VideoDescription } }; break; case Enum_ApMsgType.News: baseMsg = new PubKfMpNewsMsg { mpnews = new PubKfMpnewsContent { media_id = push.MediaId } }; break; case Enum_ApMsgType.BackNews: var lstArts = await wxAutoConvertHelper.GetAutoPushBackNews(push); baseMsg = new PubKfNewsMsg { news = new PubKfNewsContent { articles = lstArts } }; break; default: break; } return(baseMsg); }
/// <summary> /// 推送消息 /// </summary> /// <param name="push"></param> /// <param name="lstWxUser"></param> /// <returns></returns> private async Task PushMsgToUser(WxAutoPushShow push, List <WxUserInfo> lstWxUser) { // 构造消息 var baseMsg = new PubKfBaseMsg(); var apMsgType = ComHelper.GetEnumValueByStr <Enum_ApMsgType>(push.ContentType); // 构造自动推送消息 baseMsg = await GetAutoPushMsg(push, baseMsg, apMsgType); logHelper.Debug("AutoPushJob:即将发送的消息为:" + baseMsg.JsonSerializeNoNull()); // 遍历发送客服消息 foreach (var user in lstWxUser) { try { await SendAutoPushMsg(push, baseMsg, apMsgType, user); } catch (Exception ex) { logHelper.Error("AutoPushJob:发送消息给用户失败:" + user.OpenId + " " + ex.Message + " " + ex.StackTrace); } } }
/// <summary> /// 定时推送消息 /// </summary> /// <param name="push"></param> /// <param name="baseMsg"></param> /// <param name="apMsgType"></param> /// <param name="user"></param> /// <returns></returns> private async Task SendAutoPushMsg(WxAutoPushShow push, PubKfBaseMsg baseMsg, Enum_ApMsgType apMsgType, WxUserInfo user) { // 文本消息 昵称赋值 if (apMsgType == Enum_ApMsgType.Text) { var txt = push.TextContent.Replace("{nickname}", user.NickName); baseMsg = new PubKfTextMsg { text = new PubKfTextContent { content = txt } }; } // 红包单独发送 if (apMsgType == Enum_ApMsgType.RedBag) { var apiRes = await wxAutoConvertHelper.SendAutoPushRedPack(push, user.OpenId); logHelper.Debug("AutoPushJob:发送红包用户:" + user.OpenId + " 结果:" + apiRes); } else { // 非红包消息发送 var apiRes = PubKfApi.SendMsg(baseMsg, user.OpenId); if (apiRes.IsSuss) { await wxAutoConvertHelper.SaveAutoPushHis(push.Id, user.OpenId); } else { logHelper.Error("AutoPushJob:发送消息给" + user.OpenId + "失败:" + apiRes.errcode + " " + apiRes.errmsg); } logHelper.Debug("AutoPushJob:发送消息用户:" + user.OpenId + " 结果:" + apiRes.JsonSerialize()); } }