/// <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());; }
/// <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()); }
/// <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());; }