using CsharpHttpHelper; using Newtonsoft.Json; using NM_WeChat; using PCRobot.Entitys; using PCRobot.Pack; using PCRobot.Properties; using PCRobot.Utils; using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Web; using System.Web.Caching; using System.Windows.Forms; using Newtonsoft.Json.Linq; namespace PCRobot.PCWechat { /* 接口文档:https://www.showdoc.cc/WxWorkNewHook?page_id=3846144660177490 /////密码:784615627. */ public partial class Wechat_Xiaoxie_QY { private static Dictionary MT_APP_READY_MSG_BIND = new Dictionary(); // 接收消息回调 private static void WxRecvCallback(uint _dwClient, IntPtr intPtr, uint dwSize) { try { byte[] body = new byte[dwSize]; Marshal.Copy(intPtr, body, 0, body.Length); var recvData = Encoding.UTF8.GetString(body).Replace("\0", "").Trim();//再转成UTF8 var dwClientid = _dwClient; if (WechatClient.IsDebug) LogHelper.GetSingleObj().Debug("调试企业收到文本消息", $"{dwClientid} -> {recvData}\r\n"); //var method = new Action(delegate () Task.Factory.StartNew(delegate () { try { Console.WriteLine("企业收到消息:" + recvData); var jObj = JObject.Parse(recvData); if (jObj == null) return; if (!jObj.ContainsKey("type") || jObj["type"] == null) return; var data = jObj["data"]; var type = jObj["type"].ToString(); MsgType msgType; if (!Enum.TryParse(type, out msgType)) return; //获取机器人对象 WechatUser user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie_QY); Console.WriteLine($"dwClientid = {dwClientid}"); switch (msgType) { case MsgType.MT_APP_READY_MSG: MT_APP_READY_MSG_BIND[dwClientid] = int.Parse(data["pid"].ToString()); break; case MsgType.MT_PARAMS_ERROR_MSG: { } break; case MsgType.MT_USER_LOGIN://登陆消息 { var wxid = data["user_id"].ToString(); user = WechatClient.GetUser(wxid, dwClientid, WechatType.Xiaoxie_QY); user.Nickname = data["username"].ToString(); user.HeaderUrl = data["avatar"].ToString(); //user.DBFile = data["wx_user_dir"].ToString(); user.Pid = MT_APP_READY_MSG_BIND.ContainsKey(dwClientid) ? MT_APP_READY_MSG_BIND[dwClientid] : 0; //uint.Parse(data["pid"].ToString()); user.Phone = data["mobile"].ToString(); user.Uin = wxid; WechatClient.OnRefUserEvent(user, WaitLoginResult); } break; case MsgType.MT_USER_LOGOUT: { var wxid = data["user_id"].ToString(); user = WechatClient.Users.FirstOrDefault(f => f.Key == wxid).Value; if (user != null) { LogHelper.GetSingleObj().Info("系统", $"LogOut_QY事件退出,Uin:{user.Uin},微信:{user.Nickname}({wxid})"); WechatClient.RemoveUser(user); } } break; case MsgType.MT_LOGIN_QRCODE_MSG: { //{"data":{"file":"C:\\Users\\秒单客006\\Documents\\WXWork\\Global\\Image\\089d9de9-cc40-458a-af4a-b39a04e2f95f.jpg"},"type":11028} if (data["file"] == null) return; if (MT_APP_READY_MSG_BIND.ContainsKey(dwClientid)) { var file = data["file"].ToString(); if (File.Exists(file)) { var cfBase64 = Common.ConvertImageToBase64(Image.FromFile(file)); var codeInfo = new RemoteLoginCode() { pid = MT_APP_READY_MSG_BIND[dwClientid], cImgB64 = cfBase64, b64Md5 = HttpHelper.ToMD5(cfBase64), rType = RobotType.客户端企业微信, t = HttpExtend.GetTimeStamp(DateTime.Now) }; Cache cache = HttpRuntime.Cache; //查找 md5 的缓存,不存在则返回null object item = cache[RemoteCache]; cache.Insert(RemoteCache, codeInfo, null, DateTime.Now.AddSeconds(3), Cache.NoSlidingExpiration); RemoteLoginCodes.Add(codeInfo); } } } break; case MsgType.MT_GET_OWNER_INFO_MSG:// 获取自己信息 { #region 数据结构 /* { "data": { "account": "xxxxx@xxx.onexmail.com", // 帐号 "acctid": "xxxxx", // acctid "avatar": "http://wework.qpic.cn/bizmail/xxxDM808qnyFVjQ/0", // 头像 "corp_id": "1970325032041886", // 公司id "corp_name": "xxxxxxxxx有限公司", // 公司全称 "corp_short_name": "xxxxx", // 公司简称 "email": "xxxxx@qq.com", // 邮箱 "job_name": "总经理", // 职位 "mobile": "137xxxxxxxxx", // 手机号 "nickname": "小邪212", // 昵称 "position": "总经理", // 职位 "sex": 2, // 性别 0 未知,1男,2女 "user_id": "1688xxxx353xxxx", // 用户id "username": "小邪" // 名称 }, "type": 11035 } */ #endregion if (data == null || user == null) return; var f = new WorkFriendInfo(); f.avatar = data["avatar"]?.ToString(); //f.conversation_id = data["conversation_id"]?.ToString(); //f.desc = item["desc"]?.ToString(); f.nickname = data["nickname"]?.ToString(); f.position = data["position"]?.ToString(); f.realname = data["username"]?.ToString(); f.remark = data["username"]?.ToString(); f.sex = data["sex"].ToObject(); f.user_id = data["user_id"].ToString(); f.username = data["username"].ToString(); var friend = user.WorkFriends.FirstOrDefault(z => z.user_id == f.user_id); if (friend == null) user.WorkFriends.Add(f); } break; case MsgType.MT_GET_INNER_USERS_MSG:// 获取内部联系人列表 { } break; case MsgType.MT_GET_EXTERNAL_USERS_MSG:// 获取外部联系列表 { #region 外部联系列表 #region 消息样式 //{"data":{"page_num":1,"page_size":10000,"total":44,"total_page":1,"user_list":[{"acctid":"AoQi","add_time":1594358458,"avatar":"https://wework.qpic.cn/wwhead/duc2TvpEgST9hicuyypLEKMFMfDnH4KeYskpFLBx46N4YMPdu9ibu6uvic9tRMx1O5oc1e94LvWHZI/0","conversation_id":"S:1688853884018611_1688853956558440","corp_id":"1970325130121266","mobile":"","nickname":"A46「猫七」【置顶常用】","position":"","realname":"**新","remark":"","sex":2,"unionid":"ozynqspv4YiVjaa04jYgRulxWfQ8","user_id":"1688853884018611","username":"A46🐱「猫七」【置顶常用】"},{"acctid":"","add_time":1588747919,"avatar":"http://wx.qlogo.cn/mmhead/Q3auHgzwzM4pFj4ic9BTuoseZNnibY90lvKkoAFichAcjjao0WqvzvHnQ/0","conversation_id":"S:1688853956558440_7881301062943857","corp_id":"1970325134026788","mobile":"","nickname":"","position":"","realname":"","remark":"查优惠小助手(梦瑶)","sex":2,"unionid":"ozynqsjIzu8BxAu_dcoFLWuFSVWA","user_id":"7881301062943857","username":"A查优惠小助手-梦瑶"},{"acctid":"","add_time":1588745188,"avatar":"http://wx.qlogo.cn/mmhead/GtsibMna7cCkYQ3fJffrweyEvlODDOH1SCzOtwflnBsc/0","conversation_id":"S:1688853956558440_7881301162944044","corp_id":"1970325134026788","mobile":"","nickname":"","position":"","realname":"","remark":"查优惠小助手(抹茶)","sex":2,"unionid":"ozynqsjMTV4VYwLqjcDcfcH5VFsI","user_id":"7881301162944044","username":"老妖助理15"}]},"type":11037} #endregion if (data == null || user == null) return; var _type = RobotIsRunType.获取好友列表; if (user.IsGetDic.ContainsKey(_type)) { if (user.IsGetDic[_type]) return; } try { user.IsGetDic[_type] = true; var jArr = (JArray)data["user_list"]; for (int i = 0; i < jArr.Count; i++) { var item = jArr[i]; var username = item["user_id"]?.ToString(); //if (username.IsGongZhongHao()) continue; WorkFriendInfo f = new WorkFriendInfo(); f.acctid = item["acctid"]?.ToString(); f.avatar = item["avatar"]?.ToString(); f.conversation_id = item["conversation_id"]?.ToString(); f.corp_id = item["corp_id"]?.ToString(); f.mobile = item["mobile"]?.ToString(); f.nickname = item["nickname"]?.ToString(); f.position = item["position"]?.ToString(); f.realname = item["realname"]?.ToString(); f.remark = item["remark"]?.ToString(); f.sex = item["sex"].ToObject(); f.user_id = username; f.username = item["username"]?.ToString(); var friend = user.WorkFriends.FirstOrDefault(z => z.user_id == f.user_id); if (friend == null) user.WorkFriends.Add(f); } } catch (Exception ex) { LogHelper.GetSingleObj().Error("机器人企业获取内部联系人列表", $@"原始数据:{recvData} 错误:{ex.Message} - {ex.StackTrace}"); } finally { Thread.Sleep(100); user.IsGetDic.Remove(_type); } #endregion } break; case MsgType.MT_GET_ROOMS_MSG:// 获取群聊列表 { #region 数据结构 //{"data":{"page_num":1,"page_size":100000,"room_list":[{"conversation_id":"R:10696051756073403","create_time":1587126543,"create_user_id":"7881302509911391","is_admin":0,"is_creator":0,"is_external":1,"nickname":"软件反馈群","total":21},{"conversation_id":"R:238567000711635","create_time":1644470134,"create_user_id":"1688850065257778","is_admin":0,"is_creator":0,"is_external":0,"nickname":"张谊玉、洪荒老道、祁举兵","total":5},{"conversation_id":"R:1970325073072411","create_time":1559292789,"create_user_id":"1688853956450720","is_admin":0,"is_creator":0,"is_external":0,"nickname":"成都秒单客网络科技有限公司","total":20},{"conversation_id":"R:95666354828251","create_time":1644746098,"create_user_id":"1688853956558440","is_admin":0,"is_creator":1,"is_external":0,"nickname":"..............................................","total":4},{"conversation_id":"R:10774828428256418","create_time":1644804316,"create_user_id":"1688853956558440","is_admin":0,"is_creator":1,"is_external":1,"nickname":",,,,,,,,,,","total":3},{"conversation_id":"R:289059290","create_time":1618382594,"create_user_id":"1688853956558440","is_admin":0,"is_creator":1,"is_external":0,"nickname":"转发综合群","total":4},{"conversation_id":"R:10757092148832341","create_time":1648025176,"create_user_id":"1688853956558440","is_admin":0,"is_creator":1,"is_external":1,"nickname":"企业外部群","total":41}],"total":7,"total_page":1},"type":11038} #endregion if (data == null || user == null) return; var _type = RobotIsRunType.获取群列表; if (user.IsGetDic.ContainsKey(_type)) { if (user.IsGetDic[_type]) return; } try { user.IsGetDic[_type] = true; var member_list = (JArray)data["room_list"]; if (member_list == null) return; for (int i = 0; i < member_list.Count; i++) { //{"conversation_id":"R:10696051756073403","create_time":1587126543,"create_user_id":"7881302509911391","is_admin":0,"is_creator":0,"is_external":1,"nickname":"软件反馈群","total":21} var item = member_list[i]; var f = new WorkFriendInfo(); f.avatar = string.Empty; f.user_id = item["conversation_id"]?.ToString(); f.manager_wxid = item["create_user_id"]?.ToString(); f.is_manager = item["is_admin"].ToObject(); f.nickname = item["nickname"]?.ToString(); f.username = item["nickname"]?.ToString(); f.remark = item["nickname"]?.ToString(); var friend = user.WorkFriends.FirstOrDefault(z => z.user_id == f.user_id); if (friend == null) user.WorkFriends.Add(f); } } catch (Exception ex) { LogHelper.GetSingleObj().Error("机器人企业微信解析群列表", $@"原始数据:{recvData} 错误:{ex.Message} - {ex.StackTrace}"); } finally { Thread.Sleep(100); user.IsGetDic.Remove(_type); } } break; case MsgType.MT_GET_USER_DETAIL_MSG:// 获取用户详细信息 { #region 数据结构 //{"avatar":"http://wx.qlogo.cn/mmhead/GPyw0pGicibl4KQicb5bXGu2SibrykeGOH5IicK2d8LTfbA11zNB2A2SoKg/0","conversation_id":"S:1688853956558440_7881301364988874","corp_id":"1970325134026788","desc":"","external_job":"","nickname":"","position":"","realname":"","remark":"","sex":2,"user_id":"7881301364988874","username":"18"} #endregion if (user == null || data == null) return; //有时候接收到的数据为一下情况 //{"data":{"user_id":"7881302484994318"},"type":11039} var username = data["user_id"]?.ToString(); if (user.IsGetContactDic.ContainsKey(username) && user.IsGetContactDic[username]) return; try { try { user.IsGetContactDic[username] = true; } catch (Exception) { } var f = new WorkFriendInfo(); f.corp_id = data["corp_id"]?.ToString(); f.mobile = data["mobile"]?.ToString(); f.acctid = data["acctid"].ToString(); f.avatar = data["avatar"]?.ToString(); f.conversation_id = data["conversation_id"]?.ToString(); f.desc = data["desc"]?.ToString(); f.nickname = data["nickname"]?.ToString(); f.position = data["position"]?.ToString(); f.realname = data["realname"]?.ToString(); f.remark = data["remark"]?.ToString(); f.sex = data["sex"].ToObject(); f.user_id = data["user_id"]?.ToString(); f.username = data["username"]?.ToString(); var friend = user.WorkFriends.FirstOrDefault(z => z.user_id == f.user_id); if (friend != null) if (!user.WorkFriends.TryTake(out friend)) return; user.WorkFriends.Add(f); } catch (Exception ex) { LogHelper.GetSingleObj().Error("机器人企业微信解析用户详细信息", $@"原始数据:{recvData} 错误:{ex.Message} - {ex.StackTrace}"); } finally { Thread.Sleep(100); user.IsGetContactDic.Remove(username); } } break; case MsgType.MT_GET_ROOM_MEMBERS_MSG:// 获取群成员列表 { #region 数据样式 /* {"data":{"conversation_id":"R:10696051756073403","member_list":[{"acctid":"WuJiaHua","avatar":"http://wework.qpic.cn/bizmail/FxrNrXCeEh8Kwv4ia3iahWCbkR7Y0VqoBniaJ5hrlKggVaibBXIxmOBb8A/0","corp_id":"1970325073072411","invite_user_id":"7881302509911391","nickname":"洪荒老道","position":"","realname":"吴嘉华","remark":"","sex":1,"user_id":"1688853956558440","username":"洪荒老道"},{"acctid":"YuQi","avatar":"http://wework.qpic.cn/bizmail/PN2IeoKDkmhqqH0nlh2Lm6TVZRNAtgLPyg2ick4sPBEB0kzP0hDmQmg/0","corp_id":"1970325073072411","invite_user_id":"1688853956558440","nickname":"秒单客_小鱼","position":"","realname":"虞祁","remark":"","sex":2,"user_id":"1688853956590186","username":"小鱼"},{"acctid":"ZhangYiYu","avatar":"http://wework.qpic.cn/bizmail/Yfk60WuPLgEuo6ViauAdDeqqtlOuH8EYEh0K0Cg9KGicYHGyg9gw1o2w/0","corp_id":"1970325073072411","invite_user_id":"1688853956558440","nickname":"小张","position":"","realname":"张谊玉","remark":"","sex":0,"user_id":"1688853956590187","username":"张谊玉"},{"acctid":"XiaoZhangTongXue","avatar":"https://wework.qpic.cn/wwhead/duc2TvpEgST9hicuyypLEKE4HsVWEQswCosv5s4Je9eyrmicu2cvscczGLmSmwQBEzPaZO82TA7IY/0","corp_id":"1970325073072411","invite_user_id":"1688853956558440","nickname":"秒单客-小张","position":"","realname":"张谊玉","remark":"","sex":1,"user_id":"1688853956642143","username":"张谊玉"},{"acctid":"WenQi","avatar":"http://wework.qpic.cn/bizmail/rftUYt0pUSNM9UGLVhJT8SADPRo7UUwEXc1TibElDW2b8OBbrUAibN2w/0","corp_id":"1970325073072411","invite_user_id":"1688853956558440","nickname":"","position":"","realname":"文奇","remark":"","sex":1,"user_id":"1688853956644076","username":"文奇"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/U8XnjHx15KhdibgkJ49XtGJ44Y3bH7VkpMTy2UhJicrOs/0","corp_id":"1970325134026788","invite_user_id":"7881302509911391","nickname":"","position":"","realname":"","remark":"","sex":1,"user_id":"7881299792900727","username":"小锋"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/ETNocE50L3oEX3eSEr47qkodhRfgpya2ZYt3D08Bh6k/0","corp_id":"1970325134026788","invite_user_id":"7881299792900727","nickname":"","position":"","realname":"","remark":"","sex":2,"user_id":"7881299980969589","username":"嘿"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/USH8Nb3Hz5TauZmclE9wV7qAOMo3xTf4mPG8qHWicKjfgTExgLX8MHw/0","corp_id":"1970325134026788","invite_user_id":"7881301450899709","nickname":"","position":"","realname":"","remark":"","sex":2,"user_id":"7881300660017681","username":"Suki_cc"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/PiajxSqBRaELHEV52PNTeBgDTw7WZw5zaXqC3Dx8NlxzoWbZodIV6nA/0","corp_id":"1970325134026788","invite_user_id":"7881303073899390","nickname":"","position":"","realname":"","remark":"","sex":2,"user_id":"7881301052912667","username":"管家助理"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/le1D2uwOTUNrTr97NDfcJfBibsBcv6D95v5G8WaF5pWjRxsgo8AgOqQ/0","corp_id":"1970325134026788","invite_user_id":"7881303073899390","nickname":"","position":"","realname":"","remark":"","sex":2,"user_id":"7881301334966174","username":"M."},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/Q3auHgzwzM58vIBW7iaDy1L2LnWp6bFQaZageAQ1dUAQbBhtbFEia9XQ/0","corp_id":"1970325134026788","invite_user_id":"7881302509911391","nickname":"","position":"","realname":"","remark":"","sex":1,"user_id":"7881301450899709","username":"幸运的小蔡"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/9qclib0CZpLj64d8S0eVZCgJhsF1V0wMicHrM3LRia1bq4/0","corp_id":"1970325134026788","invite_user_id":"7881301450899709","nickname":"","position":"","realname":"","remark":"","sex":1,"user_id":"7881301996898661","username":"阿羣"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/PiajxSqBRaEJUq43owiazPpKBwI044FZ6GbmOgiaHlt9TWWC7m7ajYnQQ/0","corp_id":"1970325134026788","invite_user_id":"7881302509911391","nickname":"","position":"","realname":"","remark":"阿威?? ?? ?? ?? ??","sex":1,"user_id":"7881302027905870","username":"阿威?? ?? ?? ?? ??"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/Q3auHgzwzM6CiaVp63VVTIRySkxia2KSGQ6hrYAvAkkjoMpl4wFjyhIA/0","corp_id":"1970325134026788","invite_user_id":"7881302509911391","nickname":"","position":"","realname":"","remark":"","sex":1,"user_id":"7881302509911391","username":"千年老妖"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/PiajxSqBRaEIkxibLqBfcon3IAic6a4DFICQIR7EdHM0mAuHPUXlcl5iag/0","corp_id":"1970325134026788","invite_user_id":"7881301450899709","nickname":"","position":"","realname":"","remark":"","sex":2,"user_id":"7881302973987188","username":"chan??baek"},{"acctid":"","avatar":"http://wx.qlogo.cn/mmhead/aUwBqqfR4L9uicc3e31iafC57QBG8BjVwPhmNKE77LdKo/0","corp_id":"1970325134026788","invite_user_id":"7881301450899709","nickname":"","position":"","realname":"","remark":"","sex":1,"user_id":"7881303073899390","username":"小明"}]},"type":11040} */ #endregion if (user == null || data == null) return; var conversation_id = data["conversation_id"].ToString(); if (user.IsGetContactDic.ContainsKey(conversation_id) && user.IsGetContactDic[conversation_id]) return; try { user.IsGetContactDic[conversation_id] = true; var member_list = (JArray)data["member_list"]; if (member_list == null) return; var group = new WorkGroupInfo() { conversation_id = conversation_id }; var groupTmp = user.WorkGroups.FirstOrDefault(z => z.conversation_id == conversation_id); if (groupTmp != null) group = groupTmp; group.total = member_list.Count; group.friends = new List(); for (int i = 0; i < member_list.Count; i++) { //{"acctid":"WuJiaHua","avatar":"http://wework.qpic.cn/bizmail/FxrNrXCeEh8Kwv4ia3iahWCbkR7Y0VqoBniaJ5hrlKggVaibBXIxmOBb8A/0","corp_id":"1970325073072411","invite_user_id":"7881302509911391","nickname":"洪荒老道","position":"","realname":"吴嘉华","remark":"","sex":1,"user_id":"1688853956558440","username":"洪荒老道"} var item = member_list[i]; var f = new WorkFriendInfo(); f.acctid = item["acctid"]?.ToString(); f.avatar = item["avatar"]?.ToString(); f.conversation_id = conversation_id; f.corp_id = item["corp_id"]?.ToString(); f.mobile = item["mobile"]?.ToString(); f.nickname = item["nickname"]?.ToString(); f.position = item["position"]?.ToString(); f.realname = item["realname"]?.ToString(); f.remark = item["remark"]?.ToString(); f.sex = item["sex"].ToObject(); f.nickname = item["username"]?.ToString(); f.user_id = item["user_id"]?.ToString(); var friend = group.friends.FirstOrDefault(z => z.user_id == f.user_id); if (friend == null) group.friends.Add(f); } } catch (Exception ex) { } } break; case MsgType.MT_ROOM_ADD_MEMBER_NOTIFY_MSG://群成员新增通知 { #region 数据结构 //{"data":{"member_list":[{"name":"CoCo😘","user_id":"7881299477994410"},{"name":"秒单客-小张","user_id":"7881301029989846"},{"name":"秒单客-小鱼","user_id":"7881302305959168"}],"op_user_id":"1688853956558440","op_user_name":"洪荒老道","room_conversation_id":"R:10696053211008104","room_name":"洪荒老道、CoCo😘、秒单客-小张"},"type":11072} #endregion if (data == null || user == null) return; var member_list = (JArray)data["member_list"]; if (member_list == null || member_list.Count == 0) return; var socketClient = EasySoc.GetSocket(); var roomConversationId = data["room_conversation_id"]?.ToString(); var roomName = data["room_name"]?.ToString(); var opUserId = data["op_user_id"]?.ToString();//邀请人账号 var opUserName = data["op_user_name"]?.ToString();//邀请人昵称 for (int i = 0; i < member_list.Count; i++) { var item = member_list[i]; WechatNewMemer newMember = new WechatNewMemer(); newMember.Cmd = PCRobotCMD.newMember_workWeChat; newMember.RobotType = RobotType.客户端企业微信; newMember.RobotUsername = user.Wxid; newMember.RobotUsernick = user.Nickname; newMember.SourceNick = opUserName; newMember.SourceName = opUserId; newMember.MemberNick = item["name"]?.ToString(); ; newMember.MemberName = item["user_id"]?.ToString(); ; newMember.GroupId = roomConversationId; newMember.GroupNick = roomName; newMember.TotalMember = 0; socketClient.Send(newMember); Thread.Sleep(50); } break; } case MsgType.MT_ROOM_DEL_MEMBER_NOTIFY_MSG://剔除群成员通知 break; case MsgType.MT_RECV_TEXT_MSG://收到文本 { if (data == null || user == null) return; var content_type = data["content_type"]?.ToString(); //企业微信消息类型 if (data == null) return; var socketClient = EasySoc.GetSocket(); #region 文本消息 #region 消息样式 //{"data":{"content":"我17","content_type":2,"conversation_id":"S:1688853956558440_7881301610989604","local_id":"19","receiver":"1688853956558440","send_time":"1584013142","sender":"7881301610989604","sender_name":"17","server_id":"1000481"},"type":11041} - 通过好友返回的数据 //{"data":{"content":"哦哦哦","content_type":2,"conversation_id":"S:1688853956558440_7881301610989604","local_id":"33","receiver":"1688853956558440","send_time":"1584014191","sender":"7881301610989604","sender_name":"17","server_id":"1000520"},"type":11041} - 别人给我发了条消息 //{"data":{"content":"图婆","content_type":2,"conversation_id":"S:1688853956558440_7881301610989604","local_id":"36","receiver":"1688853956558440","send_time":"1584014736","sender":"7881301610989604","sender_name":"17","server_id":"1000542"},"type":11041} //{"data":{"content":"哦哦哦","content_type":0,"conversation_id":"S:1688853956450720_1688853956558440","local_id":"22","receiver":"1688853956450720","send_time":"1584013962","sender":"1688853956558440","sender_name":"华","server_id":"1000498"},"type":11041} - 收到自己发的消息 //{"data":{"content":"给我发条消息","content_type":0,"conversation_id":"S:1688853956450720_1688853956558440","local_id":"23","receiver":"1688853956450720","send_time":"1584014066","sender":"1688853956558440","sender_name":"华","server_id":"1000500"},"type":11041} //{"data":{"content":"饿的","content_type":0,"conversation_id":"R:10696053211008104","local_id":"42","receiver":"R:10696053211008104","send_time":"1584015069","sender":"1688853956558440","sender_name":"吴嘉华","server_id":"1000574"},"type":11041} - 收到自己发送的群消息 #endregion //{"data":{"at_list":[],"content":"我是机器学习","content_type":2,"conversation_id":"S:1688853764215634_7881300713013122","local_id":"27946","receiver":"1688853764215634","send_time":"1589009390","sender":"7881300713013122","sender_name":"机器学习","server_id":"1088720"},"type":11041} //0、2 - 发送的文字 (0) //if (content_type == "0" || content_type == "2") { var content = data["content"]?.ToString(); //文本消息内容 var conversation_id = data["conversation_id"]?.ToString(); //会话ID var local_id = data["local_id"]?.ToString(); //消息的本地ID var receiver = data["receiver"]?.ToString(); //接收者的user_id var send_time = data["send_time"]?.ToString(); //消息时间戳 var sender = data["sender"]?.ToString(); //发送者的user_id var sender_name = data["sender_name"]?.ToString(); //发送者昵称 var server_id = data["server_id"]?.ToString(); //消息的服务器ID //是否为辅助 var isSend = false; var RobotUsername = string.Empty; var RobotUsernick = string.Empty; var FromUsername = string.Empty; var FromUsernick = string.Empty; var wmsg = new WorkWechatReceiveMsg(); #region 处理辅助 var sendWxid = sender; var sendNick = sender_name; if (!WechatClient.IsAuxiliaryInput(sender, conversation_id, content)) { Console.WriteLine("此消息被过滤,因为是机器人自己发送的:" + content); return; } var ass = WechatClient.IsAssistance(sender, conversation_id, dwClientid, WechatType.Xiaoxie_QY); if (ass.type == WechatClient.AssistanceType.终止) return; wmsg.IsSend = ass.type == WechatClient.AssistanceType.辅助; var usernick = string.Empty; if (conversation_id.IsQun()) { wmsg.FromGroupid = conversation_id; //wmsg.GroupNick = hook.FindNick(conversation_id); } else if (wmsg.IsSend) { sendWxid = receiver; sendNick = user.FindNick(receiver); } wmsg.FromUsername = sendWxid; wmsg.FromUsernick = sendNick; #endregion wmsg.Cmd = PCRobotCMD.rcvTxt_workWeChat; wmsg.IsSend = isSend; wmsg.RobotUsername = RobotUsername; wmsg.RobotUsernick = RobotUsernick; wmsg.RobotType = RobotType.客户端企业微信; //if (content == "[你收到了一个微信红包,暂时无法查看]") // wmsg.FromMessageType = WechatMsgType.红包; //else wmsg.FromMessageType = WechatMsgType.文本; wmsg.FromMessage = content; socketClient.Send(wmsg); } #endregion } break; //case MsgType.MT_RECV_IMG_MSG://收到图片 // { // #region 图片消息 // #region 消息样式 // //{"data":{"content_type":101,"conversation_id":"R:10696053211008104","file_name":"7305d3cd-e94f-47db-a604-ce079e6c9ac5.jpg","file_path":"C:\\Users\\先森吳\\Documents\\WXWork\\1688853956558440\\Cache\\Image\\2020-03\\7305d3cd-e94f-47db-a604-ce079e6c9ac5.jpg","file_size":19457,"local_id":"73","receiver":"1688853956558440","send_time":"1584028981","sender":"7881301364988874","sender_name":"18","server_id":"1000677"},"type":11042} - 别人在群发的图片 // //{"data":{"content_type":101,"conversation_id":"S:1688853956558440_7881301364988874","file_name":"29c9c19d-e8d7-4cb0-95b5-e1a7d385003a.jpg","file_path":"C:\\Users\\先森吳\\Documents\\WXWork\\1688853956558440\\Cache\\Image\\2020-03\\29c9c19d-e8d7-4cb0-95b5-e1a7d385003a.jpg","file_size":19457,"local_id":"74","receiver":"1688853956558440","send_time":"1584029032","sender":"7881301364988874","sender_name":"18","server_id":"1000680"},"type":11042} - 别人私聊发的图片 // //{"data":{"content_type":14,"conversation_id":"R:10696053211008104","file_name":"0f7890b8ea01f7205a76d1195dab66b0.png","file_path":"C:\\Users\\先森吳\\Documents\\WXWork\\1688853956558440\\Cache\\Image\\2020-03\\0f7890b8ea01f7205a76d1195dab66b0.png","file_size":1627,"local_id":"75","receiver":"R:10696053211008104","send_time":"1584029085","sender":"1688853956558440","sender_name":"吴嘉华","server_id":"1000685"},"type":11042} - 自己群里发的图片 // //{"data":{"content_type":14,"conversation_id":"S:1688853956558440_7881301364988874","file_name":"9c6d1a59d8f122fc85c3435ea2aa46fc.jpg","file_path":"C:\\Users\\先森吳\\Documents\\WXWork\\1688853956558440\\Cache\\Image\\2020-03\\9c6d1a59d8f122fc85c3435ea2aa46fc.jpg","file_size":178092,"local_id":"76","receiver":"7881301364988874","send_time":"1584029534","sender":"1688853956558440","sender_name":"吴嘉华","server_id":"1000689"},"type":11042} - 自己私聊发的图片 // #endregion // //14、101 (14) // if (data == null) return; // var content_type = data["content_type"]?.ToString(); //企业微信消息类型 // if (content_type == "14") return; // var socketClient = EasySoc.GetSocket(); // var conversation_id = data["conversation_id"]?.ToString(); //会话ID // var local_id = data["local_id"]?.ToString(); //消息的本地ID // var receiver = data["receiver"]?.ToString(); //接收者的user_id // var send_time = data["send_time"]?.ToString(); //消息时间戳 // var sender = data["sender"]?.ToString(); //发送者的user_id // var sender_name = data["sender_name"]?.ToString(); //发送者昵称 // var server_id = data["server_id"]?.ToString(); //消息的服务器ID // var file_path = data["file_path"]?.ToString(); //图片路径 // var wmsg = new WorkWechatReceiveMsg(); // wmsg.Cmd = PCRobotCMD.rcvImg_workWeChat; // wmsg.RobotType = RobotType.客户端企业微信; // wmsg.IsSend = false; // wmsg.RobotUsername = user.Wxid; // wmsg.RobotUsernick = user.Nickname; // wmsg.FromMessage = $"[图片={file_path}]"; // wmsg.FromMessageType = WechatMsgType.图片; // if (conversation_id.Contains("R:")) // { // wmsg.FromGroupid = conversation_id; // wmsg.FromUsername = sender; // wmsg.FromUsernick = sender_name; // } // else // { // wmsg.FromUsername = sender; // wmsg.FromUsernick = sender_name; // } // wmsg.FromMessage = string.Empty; // socketClient.Send(wmsg); // #endregion // } // break; //case MsgType.MT_RECV_VIDEO_MSG://收到视频 // { // #region 收到视频 // #region 消息样式 // //{"data":{"content_type":103,"conversation_id":"S:1688853956558440_7881301364988874","duration":1,"file_name":"video.MP4","file_path":"C:\\Users\\先森吳\\Documents\\WXWork\\1688853956558440\\Cache\\Video\\2020-03\\video.MP4","file_size":198490,"height":960,"local_id":"77","receiver":"1688853956558440","send_time":"1584031142","sender":"7881301364988874","sender_name":"18","server_id":"1000691","width":544},"type":11043} - 别人发 // //{"data":{"content_type":23,"conversation_id":"S:1688853956558440_7881301364988874","duration":1,"file_name":"video.MP4","file_path":"C:\\Users\\先森吳\\Documents\\WXWork\\1688853956558440\\Cache\\Video\\2020-03\\video.MP4","file_size":198490,"height":960,"local_id":"78","receiver":"7881301364988874","send_time":"1584031203","sender":"1688853956558440","sender_name":"吴嘉华","server_id":"1000696","width":544},"type":11043} - 自己发 // #endregion // //23、103 (23) // if (data == null) return; // var content_type = data["content_type"]?.ToString(); //企业微信消息类型 // if (content_type == "23") return; // var socketClient = EasySoc.GetSocket(); // var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie_QY); // if (user == null) // return; // var conversation_id = data["conversation_id"]?.ToString(); //会话ID // var local_id = data["local_id"]?.ToString(); //消息的本地ID // var receiver = data["receiver"]?.ToString(); //接收者的user_id // var send_time = data["send_time"]?.ToString(); //消息时间戳 // var sender = data["sender"]?.ToString(); //发送者的user_id // var sender_name = data["sender_name"]?.ToString(); //发送者昵称 // var server_id = data["server_id"]?.ToString(); //消息的服务器ID // var file_path = data["file_path"]?.ToString(); //图片路径 // var wmsg = new WorkWechatReceiveMsg(); // wmsg.Cmd = PCRobotCMD.rcvFile_workWeChat; // wmsg.RobotType = RobotType.客户端企业微信; // wmsg.IsSend = false; // wmsg.RobotUsername = user.Wxid; // wmsg.RobotUsernick = user.Nickname; // wmsg.FromMessage = $"[视频={file_path}]"; // wmsg.FromMessageType = WechatMsgType.视频; // if (conversation_id.Contains("R:")) // { // wmsg.FromGroupid = conversation_id; // wmsg.FromUsername = sender; // wmsg.FromUsernick = sender_name; // } // else // { // wmsg.FromUsername = sender; // wmsg.FromUsernick = sender_name; // } // wmsg.FromMessage = string.Empty; // socketClient.Send(wmsg); // #endregion // } // break; case MsgType.MT_RECV_IMG_MSG: //收到图片 case MsgType.MT_RECV_VIDEO_MSG: //收到视频 { if (data == null || user == null) return; var content_type = data["content_type"]?.ToString(); //企业微信消息类型 var conversation_id = data["conversation_id"]?.ToString(); //会话ID var local_id = data["local_id"]?.ToString(); //消息的本地ID var receiver = data["receiver"]?.ToString(); //接收者的user_id var send_time = (long)data["send_time"]; //消息时间戳 var sender = data["sender"]?.ToString(); //发送者的user_id var sender_name = data["sender_name"]?.ToString(); //发送者昵称 var server_id = data["server_id"]?.ToString(); //消息的服务器ID var cdn_type = data["cdn_type"].ToObject(); //Cdn类型 var wmsg = new WorkWechatReceiveMsg(); wmsg.Cmd = PCRobotCMD.rcvFile_workWeChat; wmsg.RobotType = RobotType.客户端企业微信; wmsg.IsSend = false; wmsg.RobotUsername = user.Wxid; wmsg.RobotUsernick = user.Nickname; var filePath = string.Empty; #region 下达事件 if (MsgType.MT_RECV_IMG_MSG == msgType) { #region cdn var cdn = data["cdn"]; if (cdn != null) { if (cdn_type == 1) { var aes_key = cdn["aes_key"].ToObject(); var auth_key = cdn["auth_key"].ToObject(); var ld_size = cdn["ld_size"].ToObject(); var ld_url = cdn["ld_url"].ToObject(); var md5 = cdn["md5"].ToObject(); var md_size = cdn["md_size"].ToObject(); var md_url = cdn["md_url"].ToObject(); var size = cdn["size"].ToObject(); var url = cdn["url"].ToObject(); filePath = user.CdnDown(url, auth_key, aes_key, size, FileSuffixType.jpg).Result; if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath)) throw new Exception("企业接收图片消息Cdn下载失败"); } else if (cdn_type == 2) { var aes_key = cdn["aes_key"].ToObject(); var file_id = cdn["file_id"].ToObject(); var file_name = cdn["file_name"].ToObject(); var md5 = cdn["md5"].ToObject(); //var preview_img_url = cdn["preview_img_url"].ToObject(); var size = cdn["size"].ToObject(); filePath = hook.C2cCdnDown(aes_key, file_id, size, QyCdnFileType.图片_视频, FileSuffixType.jpg).Result; if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath)) throw new Exception("企业接收图片消息C2cCdn下载失败"); } rmsg.Message = $"[图片={filePath}]"; rmsg.MessageType = WechatMsgType.图片; } #endregion } else if (MsgType.MT_RECV_VIDEO_MSG == msgType) { #region cdn var cdn = data["cdn"]; if (cdn != null) { if (cdn_type == 1) { var aes_key = cdn["aes_key"].ToObject(); var auth_key = cdn["auth_key"].ToObject(); var md5 = cdn["md5"].ToObject(); var preview_img_size = cdn["preview_img_size"].ToObject(); var preview_img_url = cdn["preview_img_url"].ToObject(); var size = cdn["size"].ToObject(); var url = cdn["url"].ToObject(); filePath = hook.CdnDown(url, auth_key, aes_key, size, FileSuffixType.mp4).Result; if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath)) throw new Exception("企业接收视频消息Cdn下载失败"); } else if (cdn_type == 2) { var aes_key = cdn["aes_key"].ToObject(); var file_id = cdn["file_id"].ToObject(); var file_name = cdn["file_name"].ToObject(); var md5 = cdn["md5"].ToObject(); //var preview_img_url = cdn["preview_img_url"].ToObject(); var size = cdn["size"].ToObject(); filePath = hook.C2cCdnDown(aes_key, file_id, size, QyCdnFileType.图片_视频, FileSuffixType.silk).Result; if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath)) throw new Exception("企业接收视频消息C2cCdn下载失败"); } rmsg.Message = $"[视频={filePath}]"; rmsg.MessageType = WechatMsgType.视频; } #endregion } if (conversation_id.IsQun()) { rmsg.GroupId = conversation_id; rmsg.GroupNick = hook.FindNick(conversation_id); } rmsg.SendUserWxid = sender; rmsg.SendUserNick = sender_name; rmsg.Timestamp = send_time; rmsg.MsgId = server_id.Trim(); rmsg.IsSend = false; rmsg.OriMessage = JsonConvert.SerializeObject(new { data = data, filePath = filePath }); RobotClient.Events.OnEvent(hook, rmsg); #endregion } break; case MsgType.MT_RECV_VOICE_MSG: //收到语音 break; case MsgType.MT_RECV_FILE_MSG://收到文件 break; case MsgType.MT_RECV_LOCATION_MSG://收到位置 break; case MsgType.MT_RECV_LINK_CARD_MSG://收到链接 { #region 链接消息 #region 消息样式 //{"data":{"content_type":13,"conversation_id":"S:1688853956558440_7881301364988874","desc":"【正品险·全国联保】听音乐、语音遥控家电的人工智能音箱","image_url":"","local_id":"82","receiver":"1688853956558440","send_time":"1584033150","sender":"7881301364988874","sender_name":"18","server_id":"1000715","title":"78元 小米(MI)小爱音箱 Play全新小爱同学升级版智能人工蓝牙WiFi音响 拼多多","url":"https://mobile.yangkeduo.com/goods1.html?goods_id=19287381820&page_from=35&share_uin=H3Z5B2UR6DQLWBIKN24YVO5XPQ_GEXDA&refer_share_id=e0d9d244358640aa853a8dcd1ff84216&refer_share_uid=4918926726&refer_share_channel=message&refer_share_form=card"},"type":11047} - 别人发送的私聊链接 //{"data":{"content_type":13,"conversation_id":"R:10696053211008104","desc":"【正品险·全国联保】听音乐、语音遥控家电的人工智能音箱","image_url":"","local_id":"85","receiver":"1688853956558440","send_time":"1584034341","sender":"7881301364988874","sender_name":"18","server_id":"1000724","title":"78元 小米(MI)小爱音箱 Play全新小爱同学升级版智能人工蓝牙WiFi音响 拼多多","url":"https://mobile.yangkeduo.com/goods1.html?goods_id=19287381820&page_from=35&share_uin=H3Z5B2UR6DQLWBIKN24YVO5XPQ_GEXDA&refer_share_id=e0d9d244358640aa853a8dcd1ff84216&refer_share_uid=4918926726&refer_share_channel=message&refer_share_form=card"},"type":11047} - 别人发送的群聊链接 //{"data":{"content_type":13,"conversation_id":"S:1688853956558440_7881301364988874","desc":"【正品险·全国联保】听音乐、语音遥控家电的人工智能音箱","image_url":"https://wework.qpic.cn/wwpic/51458_1ermIpIgTJu-_11_1584034011/0","local_id":"83","receiver":"7881301364988874","send_time":"1584034011","sender":"1688853956558440","sender_name":"吴","server_id":"1000720","title":"78元 小米(MI)小爱音箱 Play全新小爱同学升级版智能人工蓝牙WiFi音响 拼多多","url":"https://mobile.yangkeduo.com/goods1.html?goods_id=19287381820&page_from=35&share_uin=H3Z5B2UR6DQLWBIKN24YVO5XPQ_GEXDA&refer_share_id=e0d9d244358640aa853a8dcd1ff84216&refer_share_uid=4918926726&refer_share_channel=message&refer_share_form=card"},"type":11047} - 自己发送的私聊 //{"data":{"content_type":13,"conversation_id":"R:10696053211008104","desc":"【正品险·全国联保】听音乐、语音遥控家电的人工智能音箱","image_url":"https://wework.qpic.cn/wwpic/51458_1ermIpIgTJu-_11_1584034011/0","local_id":"84","receiver":"R:10696053211008104","send_time":"1584034246","sender":"1688853956558440","sender_name":"吴","server_id":"1000722","title":"78元 小米(MI)小爱音箱 Play全新小爱同学升级版智能人工蓝牙WiFi音响 拼多多","url":"https://mobile.yangkeduo.com/goods1.html?goods_id=19287381820&page_from=35&share_uin=H3Z5B2UR6DQLWBIKN24YVO5XPQ_GEXDA&refer_share_id=e0d9d244358640aa853a8dcd1ff84216&refer_share_uid=4918926726&refer_share_channel=message&refer_share_form=card"},"type":11047} - 自己发送的群聊 #endregion var content_type = data["content_type"]?.ToString(); //if (content_type != "13") return; var socketClient = EasySoc.GetSocket(); var conversation_id = data["conversation_id"]?.ToString(); //会话ID var desc = data["desc"]?.ToString(); //链接描述 var image_url = data["image_url"]?.ToString(); //链接缩略图url var local_id = data["local_id"]?.ToString(); //消息的本地ID var receiver = data["receiver"]?.ToString(); //接收者的user_id var send_time = data["send_time"]?.ToString(); //消息时间戳 var sender = data["sender"]?.ToString(); //发送者的user_id var sender_name = data["sender_name"]?.ToString(); //发送者昵称 var server_id = data["server_id"]?.ToString(); //消息的服务器ID var title = data["title"]?.ToString(); //链接标题 var url = data["url"]?.ToString(); //链接url var isSend = false; var RobotUsername = string.Empty; var RobotUsernick = string.Empty; var FromUsername = string.Empty; var FromUsernick = string.Empty; var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie_QY); if (user == null) return; if (user.Wxid == sender) //0自己发送的消息 { if (!WechatClient.IsAuxiliaryInput(sender, receiver, url)) { Console.WriteLine("此消息被过滤,因为是机器人自己发送的:" + url); return; } var ass = WechatClient.IsAssistance(sender, receiver, dwClientid, WechatType.Xiaoxie_QY); if (ass.type == WechatClient.AssistanceType.终止) return; isSend = ass.type == WechatClient.AssistanceType.辅助; RobotUsername = ass.robotName; RobotUsernick = ass.robotNick; FromUsername = ass.fromName; FromUsernick = ass.fromNick; } else { RobotUsername = user.Wxid; RobotUsernick = user.Nickname; FromUsername = sender; FromUsernick = sender_name; } var wmsg = new WorkWechatReceiveMsg(); wmsg.Cmd = PCRobotCMD.rcvTxt_workWeChat; wmsg.IsSend = isSend; wmsg.RobotUsername = RobotUsername; wmsg.RobotUsernick = RobotUsernick; wmsg.RobotType = RobotType.客户端企业微信; wmsg.FromMessageType = WechatMsgType.文本; if (conversation_id.Contains("R:")) { wmsg.FromGroupid = conversation_id; wmsg.FromUsername = sender; wmsg.FromUsernick = sender_name; } else { wmsg.FromUsername = FromUsername; wmsg.FromUsernick = FromUsernick; } wmsg.FromMessage = url; socketClient.Send(wmsg); #endregion } break; case MsgType.MT_RECV_EMOTION_MSG://收到表情 break; case MsgType.MT_RECV_RED_PACKET_MSG://收到红包 { } break; case MsgType.MT_RECV_PERSON_CARD_MSG://收到个人名片 { //{"data":{"content":"推荐噢噢噢哦哦","content_type":2,"conversation_id":"S:1688853956558440_7881301364988874","local_id":"81","receiver":"1688853956558440","send_time":"1584031525","sender":"7881301364988874","sender_name":"18","server_id":"1000703"},"type":11041} /* {"data":{"avatar":"http://wx.qlogo.cn/mmhead/PiajxSqBRaELtKaBvIBMGI7xTZdLA9mZglMaZQxPeBASJT1lCXCJnKg/0","content_type":41,"conversation_id":"S:1688853956558440_7881301364988874","local_id":"80","nickname":"??欧尼桑","receiver":"1688853956558440","send_time":"1584031525","sender":"7881301364988874","sender_name":"18","server_id":"1000700","source":"微信","user_id":"7881301516989639"},"type":11050} 收到消息:{"data":{"content":"推荐噢噢噢哦哦","content_type":2,"conversation_id":"S:1688853956558440_7881301364988874","local_id":"81","receiver":"1688853956558440","send_time":"1584031525","sender":"7881301364988874","sender_name":"18","server_id":"1000703"},"type":11041} */ //var content = data["content"]?.ToString(); //var content_type = data["content_type"]?.ToString(); //var conversation_id = data["conversation_id"]?.ToString(); //var local_id = data["local_id"]?.ToString(); //var receiver = data["receiver"]?.ToString(); //var send_time = data["send_time"]?.ToString(); //var sender = data["sender"]?.ToString(); //var sender_name = data["sender_name"]?.ToString(); //var server_id = data["server_id"]?.ToString(); } break; case MsgType.MT_RECV_MINIAPP_MSG://收到小程序 { //个人微信/企业微信 //{"data":{"content_type":78,"conversation_id":"R:10696053211018728","enterpoint":"pages/tab/home/index.html?_um_ssrc=oucfI5QRI-8SbyOTKSGYt5-ia0dk&_um_sts=1610033684099","ghid":"gh_a0d7a7672cf7@app","headimg":"http://wx.qlogo.cn/mmhead/Q3auHgzwzM43LsxpXHKd7ua7kwMZQ8WHmZlkYTzr3Tdm8sMOJ7Ypog/96","image_key1":"306b020102046430620201000204bafc490e02030f4df9020473e6607102045ff72a530436333133373039353935305f313734393433343231315f3262393764653133616335373232353633383831336564376334396563616164020100020300ab1004000201010201000400","image_key2":"61747072666A766977766D69726D6168","image_key3":"2b97de13ac57225638813ed7c49ecaad","image_size":43791,"is_pc":0,"local_id":"155","name":"啄木鸟家庭维修","receiver":"1688853956558440","send_time":"1610033747","sender":"7881302484994318","sender_name":"、","server_id":"1042188","title":"直营一口价,维修无猫腻","wxid":"wx3d6b1af0cb07fa5a"},"type":11066} if (data == null) return; var socketClient = EasySoc.GetSocket(); //var content_type = data["content_type"]?.ToString();//内容类型 78 //var conversation_id = data["conversation_id"]?.ToString();//接收者的的会话ID //var enterpoint = data["enterpoint"]?.ToString();//入口点 - 链接(小程序里面的链接) //var receiver = data["receiver"]?.ToString();// 接收者的user_id //var sender = data["sender"]?.ToString();// 发送者的user_id //var sender_name = data["sender_name"]?.ToString();//发送者昵称 //var server_id = data["server_id"]?.ToString();//消息的服务器ID var content_type = data["content_type"]?.ToString();//内容类型 78 var conversation_id = data["conversation_id"]?.ToString();//接收者的的会话ID var enterpoint = data["enterpoint"]?.ToString();//入口点 - 链接(小程序里面的链接) var headimg = data["headimg"]?.ToString();//小程序的头像 var name = data["name"]?.ToString();//小程序的名称 var receiver = data["receiver"]?.ToString();// 接收者的user_id var sender = data["sender"]?.ToString();// 发送者的user_id var sender_name = data["sender_name"]?.ToString();//发送者昵称 var title = data["title"]?.ToString();//小程序标题 var wxid = data["wxid"]?.ToString(); var server_id = data["server_id"]?.ToString();//消息的服务器ID var isSend = false; var RobotUsername = string.Empty; var RobotUsernick = string.Empty; var FromUsername = string.Empty; var FromUsernick = string.Empty; //if (content_type != "78")//0自己发送的消息 //{ // if (!WechatClient.IsAuxiliaryInput(sender, receiver, enterpoint)) // { // Console.WriteLine("此消息被过滤,因为是机器人自己发送的:" + enterpoint); // return; // } // var ass = WechatClient.IsAssistance(sender, receiver, dwClientid, WechatType.Xiaoxie_QY); // if (ass.type == WechatClient.AssistanceType.终止) return; // isSend = ass.type == WechatClient.AssistanceType.辅助; // RobotUsername = ass.robotName; // RobotUsernick = ass.robotNick; // FromUsername = ass.fromName; // FromUsernick = ass.fromNick; //} //else //{ var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie_QY); if (user == null) return; RobotUsername = user.Wxid; RobotUsernick = user.Nickname; FromUsername = sender; FromUsernick = sender_name; //} var wmsg = new WorkWechatReceiveMsg(); wmsg.Cmd = PCRobotCMD.rcvTxt_workWeChat; wmsg.IsSend = isSend; wmsg.RobotUsername = RobotUsername; wmsg.RobotUsernick = RobotUsernick; wmsg.RobotType = RobotType.客户端企业微信; wmsg.FromMessageType = WechatMsgType.文本; if (conversation_id.Contains("R:")) { wmsg.FromGroupid = conversation_id; wmsg.FromUsername = sender; wmsg.FromUsernick = sender_name; } else { wmsg.FromUsername = FromUsername; wmsg.FromUsernick = FromUsernick; } wmsg.FromMessage = enterpoint.Replace("pages/index/index.html?goods_id=", "https://mobile.yangkeduo.com/goods.html?goods_id=").Replace("pages/item/detail/detail.html?sku=", @"https://item.jd.com/"); socketClient.Send(wmsg); } break; case MsgType.MT_RECV_OTHER_MSG: break; case MsgType.MT_SEARCH_USER_MSG://查询联系人 break; case MsgType.MT_ADD_SEARCH_USER_MSG://添加查询的联系人 break; case MsgType.MT_MODIFY_USER_REMARK_MSG://修改用户备注 break; case MsgType.MT_MODIFY_USER_DESC_MSG: break; case MsgType.MT_MODIFY_EXTERNAl_USER_PHONES_MSG: break; case MsgType.MT_MODIFY_EXTERNAl_USER_COMPANY_MSG: break; case MsgType.MT_CREATE_ROOM_MSG: { } break; case MsgType.MT_MODIFY_ROOM_NAME_MSG: break; case MsgType.MT_ROOM_ADD_MEMBERS_MSG: { } break; case MsgType.MT_ROOM_DEL_MEMBERS_MSG://删除群成员 break; case MsgType.MT_RECV_FRIEND_REQUEST://接收好友请求 { //{"data":{"avatar":"http://wx.qlogo.cn/mmhead/0T8yO33zeeg33jJCQibIWobapj6GX4xFBbOECtmG9VdkYpnzyiaUr5iag/0","corp_id":"1970325134026788","nickname":"17","sex":2,"user_id":"7881301610989604","verify":"我17"},"type":11063} //{"data":{"avatar":"http://wx.qlogo.cn/mmhead/PiajxSqBRaEI8qvnXF9KjgTpvaSAzfhbE2kGoIspb7ibbEHGZEQxRibAQ/0","corp_id":"1970325134026788","nickname":"助将","sex":0,"user_id":"7881303410988876","verify":"欧珀new"},"type":11063} //{"data":{"avatar":"http://wx.qlogo.cn/mmhead/zroWGtm5tmsxaCHfI2ibibuBxtzsZc6brAIDCicIianoDYI/0","corp_id":"1970325134026788","nickname":"Boom","sex":1,"user_id":"7881303336175964","verify":"我是Boom"},"type":11063} if (data == null) return; var socketClient = EasySoc.GetSocket(); var avatar = data["avatar"]?.ToString();//头像 var corp_id = data["corp_id"]?.ToString();//公司id var nickname = data["nickname"]?.ToString();//申请人昵称 var sex = data["sex"]?.ToString();//性别 var user_id = data["user_id"]?.ToString();//用户id var verify = data["verify"]?.ToString();//申请摘要 var user = WechatClient.GetUser(dwClientid, WechatType.Xiaoxie_QY); if (user == null) return; var wXApply = new WorkWechatApplyFriend(); wXApply.Cmd = PCRobotCMD.applyFriend_workWeChat; wXApply.RobotUsername = user.Wxid; wXApply.RobotUsernick = user.Nickname; wXApply.RobotType = RobotType.客户端企业微信; wXApply.Message = verify; wXApply.NewFriendWxid = user_id; wXApply.NewFriendNick = nickname; wXApply.OldFriendWxid = string.Empty; wXApply.OldFriendNick = string.Empty; wXApply.Token = CsharpHttpHelper.HttpHelper.ObjectToJson(new { user_id = user_id, corp_id = corp_id }); //记录申请人,用于记录 if (!FriendRequestRecord.ContainsKey(user_id)) FriendRequestRecord.TryAdd(user_id, new FriendInfo() { account = user_id, avatar = avatar, nickname = nickname, sex = int.Parse(sex), wxid = user_id }); socketClient.Send(wXApply); } break; case MsgType.MT_ACCEPT_FRIEND_REQUEST://接受加好友请求 break; default: break; } } catch (Exception ex) { //Console.WriteLine("解析消息异常:" + ex.Message + "," + recvData); LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message + ".._" + recvData); } }); } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message + "_."); } } private static ConcurrentDictionary FriendRequestRecord = new ConcurrentDictionary(); private static void WxCloseCallback(uint dwClientId) { try { var v = WechatClient.Users.FirstOrDefault(f => f.Value.DwClientId == dwClientId && f.Value.Type == WechatType.Xiaoxie_QY).Value; if (v != null) { LogHelper.GetSingleObj().Info("系统", $"WxCloseCallbackQY关闭回调,Uin:{v.Uin},微信:{v.Nickname}({v.Wxid})"); WechatClient.RemoveUser(v); } } catch (Exception ex) { LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message + "_.-"); } } private static void WxAcceptCallback(uint dwClientId) { Console.WriteLine("注入成功:" + dwClientId); } /// /// 启动微信 /// /// /// public static uint StartWechat(bool isError = false) { InitPc(); var WechatWinFile = HttpExtend.MapFile("WXWork.exe", $"WXWork\\{Version}"); var md5 = Common.GetMD5Hash(WechatWinFile).ToUpper(); if (!File.Exists(WechatWinFile) || md5 != PcMd5.ToUpper()) { if (isError) throw new Exception("易转发客户端企业微信版本不支持,请登录易转发端手动处理"); var _rst = MessageBox.Show("您的企业微信版本暂时不支持,立即重新安装吗?", "版本不兼容", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (_rst == DialogResult.Yes) { var f = new WechatUpdate(Version); f.ShowDialog(); if (!f.IsOk) return 0; } else return 0; } // 注入并多开 //return InjectWxWork(Encoding.UTF8.GetBytes(DllPath), Encoding.UTF8.GetBytes("")); var path = HttpExtend.MapFile("WXWork.exe", $"WXWork\\{Version}"); LogHelper.GetSingleObj().Debug("注入前", $"DPath = {DllPath},Path = {path}"); return InjectWxWorkMultiOpen(Encoding.UTF8.GetBytes(DllPath), Encoding.UTF8.GetBytes(path)); } } }