Example #1
0
        /// <summary>
        /// 处理企业号推送事件
        /// </summary>
        /// <param name="recMsg"></param>
        /// <returns></returns>
        public async Task <string> DealQyEvent(PubReceiveMsgCData recMsg)
        {
            try
            {
                switch (recMsg.Event)
                {
                case PubEventType.subscribe:
                    await DealWxSubscribe(recMsg);

                    // 关注后判断扫码事件处理
                    await DealWxscan(recMsg);

                    break;

                case PubEventType.unsubscribe:
                    await DealWxUnsubscribe(recMsg);

                    break;

                case PubEventType.scan:
                    await DealWxscan(recMsg);

                    break;

                case PubEventType.location:
                    logHelper.Debug("location");
                    break;

                case PubEventType.location_select:
                    logHelper.Debug("location");
                    break;

                case PubEventType.click:
                    await DealWxClick(recMsg);

                    break;

                case PubEventType.view:
                    logHelper.Debug("view");
                    break;

                case PubEventType.poi_check_notify:
                    logHelper.Debug("poi_check_notify");
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                logHelper.Error("DealQyEvent:处理企业号推送事件失败:" + ex.Message + "        " + ex.StackTrace);
            }

            return(wxAutoComResponse.ResponseOK());;
        }
Example #2
0
        /// <summary>
        /// 处理关键字
        /// </summary>
        /// <param name="gzhClient"></param>
        /// <param name="gzhServer"></param>
        /// <param name="keyword"></param>
        /// <returns></returns>
        public async Task <string> DealWithKeyWord(string gzhClient, string gzhServer, string keyword)
        {
            // 当前时间
            var dtNow     = DateTime.Now;
            var timeStamp = ComHelper.ConvertDateTimeInt(dtNow);
            // 当前微信用户信息
            var wxUser = await repo.FirstOrDefaultAsync <WxUserInfo>(x => x.OpenId == gzhClient);

            // 自动应答的内容
            WxAutoKeywordShow autoKeyword = null;
            // 超过1条的相同关键字的自动回复 改用客服消息发送
            var lstOthers = new List <WxAutoKeywordShow> {
            };

            if (keyword == "openid")
            {
                return(await wxAutoComResponse.SendWxText(gzhClient, gzhServer, timeStamp, "您的OpenId为:" + gzhClient));
            }
            else
            {
                var sql         = string.Format(@" SELECT * FROM WxAutoKeyword WHERE IsDel = 0 AND CONCAT('、',KeyWords,'、') LIKE '%、{0}、%' ORDER BY CreateTime DESC LIMIT 5 ", keyword);
                var lstKeywords = await repo.SqlQueryAsync <WxAutoKeywordShow>(sql);

                if (lstKeywords.Count > 0)
                {
                    autoKeyword = lstKeywords[0];
                }

                // 发送客服消息
                if (lstKeywords.Count > 1)
                {
                    lstOthers = lstKeywords.Skip(1).Take(4).ToList();
                }
            }

            // 公众号自动应答回复第一条关键字消息
            if (autoKeyword == null)
            {
                var msg = "DealQyText:无法找到对应关键字活动:" + keyword;
                logHelper.Debug(msg);
                return(wxAutoComResponse.ResponseOK());
            }

            // 其他发送客服消息(不等待)
            SendKfAutoKeyword(wxUser, lstOthers);

            // 根据不同类型推送消息
            return(await SendMsgByPush(gzhClient, gzhServer, autoKeyword, wxUser));
        }
        /// <summary>
        /// 联系客服(菜单)
        /// </summary>
        /// <param name="recMsg"></param>
        /// <returns></returns>
        public async Task <string> ContactKf(PubReceiveMsg recMsg)
        {
            try
            {
                var timeStamp = ComHelper.ConvertDateTimeInt(DateTime.Now);
                if (!IsWorkTime())
                {
                    var msg = "您好!现在非客服上班时间,请您在每天9-22点联系我们的客服美眉!";
                    return(await wxAutoComResponse.SendWxText(recMsg.FromUserName, recMsg.ToUserName, timeStamp, msg));
                }
                else
                {
                    PubKfApi.SendTextMsg(recMsg.FromUserName, "正在为你转接在线客服,请稍后.....");
                    var msg = PubMsgApi.BuildKfTransferMsg(recMsg.FromUserName, recMsg.ToUserName, timeStamp);
                    logHelper.Debug("ContactKf:msg:" + msg.JsonSerialize());
                    // 发送客服消息提醒
                    return(await wxAutoComResponse.AutoMsgResponse(msg));
                }
            }
            catch (Exception ex)
            {
                logHelper.Error("ContactKf:联系客服失败:" + ex.Message + "        " + ex.StackTrace);
            }

            return(wxAutoComResponse.ResponseOK());;
        }
        /// <summary>
        /// 公众号推送Text处理
        /// </summary>
        /// <param name="recMsg"></param>
        /// <returns></returns>
        public async Task <string> DealQyText(PubReceiveMsgCData recMsg)
        {
            try
            {
                // 用户
                var gzhClient = recMsg.FromUserName;
                // 公众号
                var gzhServer = recMsg.ToUserName;
                // 文本内容
                var keyword = recMsg.Content.ToLower();
                return(await wxAutoResponseHelper.DealWithKeyWord(gzhClient, gzhServer, keyword));
            }
            catch (Exception ex)
            {
                logHelper.Error("DealQyText:处理Text出错:" + ex.Message + "     " + ex.StackTrace);
            }

            return(wxAutoComResponse.ResponseOK());
        }
Example #5
0
        /// <summary>
        /// 微信推送菜单点击事件处理
        /// </summary>
        /// <param name="recMsg"></param>
        /// <returns></returns>
        public async Task <string> Deal(PubReceiveMsgCData recMsg)
        {
            if (!string.IsNullOrEmpty(recMsg.EventKey))
            {
                var keyWord = recMsg.EventKey.Trim().ToLower();
                logHelper.Debug("WxEventClick:EventKey:" + keyWord);
                switch (keyWord)
                {
                // 联系客服
                case "gotoservices":
                    return(await wxKfTransferHelper.ContactKf(recMsg));

                // surprise 或者 其他文本
                default:
                    return(await wxAutoResponseHelper.DealWithKeyWord(recMsg.FromUserName, recMsg.ToUserName, keyWord));
                }
            }

            return(wxAutoComResponse.ResponseOK());;
        }
        /// <summary>
        /// 微信推送扫码事件处理
        /// </summary>
        /// <param name="recMsg"></param>
        /// <returns></returns>
        public async Task <string> Deal(PubReceiveMsgCData recMsg)
        {
            await Task.CompletedTask;

            return(wxAutoComResponse.ResponseOK());;
        }