Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
                }
            }
        }
Пример #3
0
        /// <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());
            }
        }