old_flsystem/PCRobot/PCWechat/Enterprise/Wechat_Xiaoxie_QY_Analysis.cs

2194 lines
141 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Web.Caching;
using System.Windows.Forms;
using CsharpHttpHelper;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PCRobot.Entitys;
using PCRobot.Entitys.Enterprise;
using PCRobot.Pack;
using PCRobot.Utils;
using System.Collections.Concurrent;
namespace PCRobot.PCWechat.Enterprise
{
public partial class Wechat_Xiaoxie_QY
{
private static Dictionary<uint, int> MT_APP_READY_MSG_BIND = new Dictionary<uint, int>();
/// <summary>
/// 历史接收到的消息
/// </summary>
private static Dictionary<string, DateTime> HistMsg = new Dictionary<string, DateTime>();
private static ConcurrentDictionary<string, string> ServerIdCache = new ConcurrentDictionary<string, string>();
private static List<string> typelist = new List<string>() { "11041", "11042", "11043", "11044", "11045", "11046", "11047", "11048", "11049", "11050", "11051", "11066" };
// 接收消息回调
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().Info("调试企业收到文本消息", $"{dwClientid} -> {recvData}\r\n\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();
var msgMd5 = HttpExtend.GetMD5String(recvData);
if (typelist.Contains(type))
{
if (HistMsg.ContainsKey(msgMd5))
{
LogHelper.GetSingleObj().Error("调试企业收到文本消息", $"发现重复消息 => {dwClientid} -> {recvData}\r\n\r\n");
return;
}
HistMsg[msgMd5] = DateTime.Now;
if (HistMsg.Count > 2000)
{
var keys = HistMsg.Where(f => f.Value < DateTime.Now.AddMinutes(-10)).Select(f => f.Key).ToList();
if (keys.Count != 0)
{
for (int i = 0; i < keys.Count; i++)
{
try
{
HistMsg.Remove(keys[i]);
}
catch (Exception e)
{ }
}
}
}
}
var serverId = data["server_id"]?.ToString();
if (string.IsNullOrWhiteSpace(serverId) == false)
{
if (ServerIdCache.TryGetValue(serverId, out var serverIdOut))
{
return;
}
if (ServerIdCache.Count > 10000)
{
ServerIdCache = new ConcurrentDictionary<string, string>();
}
ServerIdCache.TryAdd(serverId, serverId);
}
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<int>();
f.user_id = data["user_id"].ToString();
f.username = data["username"].ToString();
user.WorkFriends[f.user_id] = 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<int>();
f.user_id = username;
f.username = item["username"]?.ToString();
user.WorkFriends[f.user_id] = 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;
var hook = WechatClient.GetApi(user);
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<int>();
f.nickname = item["nickname"]?.ToString();
f.username = item["nickname"]?.ToString();
f.remark = item["nickname"]?.ToString();
user.WorkFriends[f.user_id] = f;
var g = new WorkGroupInfo();
g.friends = new List<WorkFriendInfo>();
g.GroupNick = f.nickname;
g.conversation_id = f.user_id;
g.total = 0;
user.WorkGroups[f.user_id] = g;
var groupMember = hook.GetGroupMemberInfo(f.user_id).Result;
if (groupMember != null)
{
var workGroupInfo = (groupMember as WorkGroupInfo);
if (workGroupInfo != null)
{
g.friends = workGroupInfo.friends;
g.total = workGroupInfo.total;
}
}
else //获取失败就赋值简单的
{
var memberJarr = (JArray)item["member_list"];
for (int o = 0; o < memberJarr.Count; o++)
{
var username = memberJarr[o].ToString();
var ftmp = g.friends.FirstOrDefault(z => z.user_id == username);
if (ftmp == null)
g.friends.Add(new WorkFriendInfo() { user_id = username });
}
}
user.WorkGroups[f.user_id] = g;
}
}
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<int>();
f.user_id = data["user_id"]?.ToString();
f.username = data["username"]?.ToString();
user.WorkFriends[f.user_id] = 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.Key == conversation_id)
.Value;
if (groupTmp != null)
group = groupTmp;
group.total = member_list.Count;
group.friends = new List<WorkFriendInfo>();
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<int>();
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);
}
user.WorkGroups[conversation_id] = group;
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("机器人企业微信获取群成员列表", $@"原始数据:{recvData}
错误:{ex.Message} - {ex.StackTrace}");
}
finally
{
Thread.Sleep(100);
user.IsGetContactDic.Remove(conversation_id);
}
}
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 wmsg = new WorkWechatReceiveMsg();
#region
var sendWxid = sender;
var sendNick = sender_name;
LogHelper.GetSingleObj().Debug("", "接收##########: " + content + @"
");
if (!WechatClient.IsAuxiliaryInput(sender, receiver, content))
{
LogHelper.GetSingleObj().Debug("", "此消息被过滤,因为是机器人自己发送的:" + content + @"
");
return;
}
var ass = WechatClient.IsAssistance(sender, receiver, dwClientid, WechatType.Xiaoxie_QY);
if (ass.type == WechatClient.AssistanceType.) return;
//if (ass.type == WechatClient.AssistanceType.辅助)
// return;
wmsg.IsSend = ass.type == WechatClient.AssistanceType.;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var usernick = string.Empty;
if (receiver.IsQun())
{
wmsg.FromGroupid = receiver;
wmsg.FromGroupNick = hook.FindNick(receiver);
}
else if (wmsg.IsSend)
{
if (string.IsNullOrWhiteSpace(usernick))
usernick = hook.FindNick(ass.fromName);
}
wmsg.FromUsername = ass.fromName;
wmsg.FromUsernick = usernick;
#endregion
//wmsg.FromUsername = sender;
//wmsg.FromUsernick = sender_name;
//wmsg.IsSend = false;
wmsg.Cmd = PCRobotCMD.rcvTxt_workWeChat;
wmsg.RobotUsername = user.Wxid;
wmsg.RobotUsernick = user.Nickname;
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 socketClient = EasySoc.GetSocket();
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<int>(); //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 hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
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<string>();
var auth_key = cdn["auth_key"].ToObject<string>();
var ld_size = cdn["ld_size"].ToObject<int>();
var ld_url = cdn["ld_url"].ToObject<string>();
var md5 = cdn["md5"].ToObject<string>();
var md_size = cdn["md_size"].ToObject<int>();
var md_url = cdn["md_url"].ToObject<string>();
var size = cdn["size"].ToObject<int>();
var url = cdn["url"].ToObject<string>();
filePath = hook.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<string>();
var file_id = cdn["file_id"].ToObject<string>();
var file_name = cdn["file_name"].ToObject<string>();
var md5 = cdn["md5"].ToObject<int>();
//var preview_img_url = cdn["preview_img_url"].ToObject<string>();
var size = cdn["size"].ToObject<int>();
filePath = hook.C2cCdnDown(aes_key, file_id, size, QyCdnFileType._视频, FileSuffixType.jpg).Result;
if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath))
throw new Exception("企业接收图片消息C2cCdn下载失败");
}
wmsg.FromMessage = $"[图片={filePath}]";
wmsg.FromMessageType = 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<string>();
var auth_key = cdn["auth_key"].ToObject<string>();
var md5 = cdn["md5"].ToObject<string>();
var preview_img_size = cdn["preview_img_size"].ToObject<int>();
var preview_img_url = cdn["preview_img_url"].ToObject<string>();
var size = cdn["size"].ToObject<int>();
var url = cdn["url"].ToObject<string>();
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<string>();
var file_id = cdn["file_id"].ToObject<string>();
var file_name = cdn["file_name"].ToObject<string>();
var md5 = cdn["md5"].ToObject<int>();
//var preview_img_url = cdn["preview_img_url"].ToObject<string>();
var size = cdn["size"].ToObject<int>();
filePath = hook.C2cCdnDown(aes_key, file_id, size, QyCdnFileType._视频, FileSuffixType.mp4).Result;
if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath))
throw new Exception("企业接收视频消息C2cCdn下载失败");
}
//var filePath1 = hook.C2cCdnDown("65323164303935663365393634306639", "306902010204623060020100020483d92af902030f4241020473a3973d020462752be0042432353830373535362d613134372d343466612d613632342d38373461396539663630653302010002032cbb4004105c8576e1a816b54165c65f6fb6ccdbde0201040201000400", 2931518, QyCdnFileType.图片_视频, FileSuffixType.mp4).Result;
//if (string.IsNullOrWhiteSpace(filePath1) || !File.Exists(filePath1))
// throw new Exception("企业接收图片消息C2cCdn下载失败");
wmsg.FromMessage = $"[视频={filePath}]";
wmsg.FromMessageType = WechatMsgType.;
}
#endregion
}
#endregion
if (receiver.IsQun())
{
wmsg.FromGroupid = receiver;
wmsg.FromGroupNick = hook.FindNick(receiver);
}
wmsg.FromUsername = sender;
wmsg.FromUsernick = sender_name;
wmsg.Timestamp = send_time;
wmsg.MsgId = server_id.Trim();
wmsg.IsSend = false;
wmsg.OriMessage = JsonConvert.SerializeObject(new { data = data, filePath = filePath });
socketClient.Send(wmsg);
}
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 hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var socketClient = EasySoc.GetSocket();
var content_type = data["content_type"]?.ToString();
var conversation_id = data["conversation_id"]?.ToString(); //会话ID
var desc = data["desc"]?.ToString(); //链接描述
var image_url = data["image_url"]?.ToString(); //链接缩略图url
var is_pc = (int)data["is_pc"];
var local_id = data["local_id"]?.ToString(); //消息的本地ID
var receiver = data["receiver"]?.ToString(); //接收者的user_id
var send_time = data["send_time"].ToObject<long>(); //消息时间戳
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 cdn_type = (int)data["cdn_type"];
var isSend = false;
var filePath = string.Empty;
var cdn = data["cdn"];
if (cdn != null)
{
var aes_key = cdn["aes_key"].ToString();
var auth_key = cdn["auth_key"].ToString();
var size = cdn["size"].ToObject<int>();
var cdnUrl = cdn["url"].ToString();
filePath = hook.CdnDown(cdnUrl, auth_key, aes_key, size, FileSuffixType.jpg).Result;
if (!string.IsNullOrWhiteSpace(filePath) && File.Exists(filePath))
{ }
else
throw new Exception("企业接收链接消息Cdn下载失败");
}
var rmsg = new WorkWechatReceiveMsg();
rmsg.MsgId = server_id.Trim();
#region
//var sendWxid = sender;
//var sendNick = sender_name;
//if (!WechatClient.IsAuxiliaryInput(sender, conversation_id, url))
//{
// //LogHepler.WriteLog("此消息被过滤,因为是机器人自己发送的:" + content,LogEnum.调试);
// return;
//}
//var ass = WechatClient.IsAssistance(sender, conversation_id, dwClientid, WechatType.Xiaoxie_QY);
//if (ass.type == WechatClient.AssistanceType.终止) return;
//rmsg.IsSend = ass.type == WechatClient.AssistanceType.辅助;
//var usernick = string.Empty;
//if (conversation_id.IsQun())
//{
// rmsg.FromGroupid = conversation_id;
// rmsg.FromGroupNick = hook.FindNick(conversation_id);
//}
//else if (rmsg.IsSend)
//{
// sendWxid = receiver;
// sendNick = hook.FindNick(receiver);
//}
//rmsg.FromUsername = sendWxid;
//rmsg.FromUsernick = sendNick;
#endregion
#region 1
//#region 处理辅助
var sendWxid = sender;
var sendNick = sender_name;
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;
rmsg.IsSend = ass.type == WechatClient.AssistanceType.;
//var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var usernick = string.Empty;
if (receiver.IsQun())
{
rmsg.FromGroupid = receiver;
rmsg.FromGroupNick = hook.FindNick(receiver);
}
else if (rmsg.IsSend)
{
if (string.IsNullOrWhiteSpace(usernick))
usernick = hook.FindNick(ass.fromName);
}
rmsg.FromUsername = ass.fromName;
rmsg.FromUsernick = usernick;
#endregion
rmsg.Cmd = PCRobotCMD.rcvTxt_workWeChat;
//rmsg.IsSend = isSend;
rmsg.RobotUsername = user.Wxid;
rmsg.RobotUsernick = user.Nickname;
rmsg.RobotType = RobotType.;
rmsg.FromMessageType = WechatMsgType.;
rmsg.FromMessage = url;
socketClient.Send(rmsg);
#endregion
}
break;
case MsgType.MT_RECV_EMOTION_MSG: //收到表情
{
#region
#region
//企业微信
//{"data":{"content_type":29,"conversation_id":"R:10696053211018728","is_pc":0,"local_id":"159","name":"动画表情","receiver":"R:10696053211018728","send_time":"1610034507","sender":"1688853956558440","sender_name":"洪荒老道","server_id":"1042202","url":"http://p.qpic.cn/pic_wework/4121458178/eee874e28b58332c1f087836eecb7e06a5c3d08fa155e5e2/0"},"type":11048}
//个人微信
//{"data":{"content_type":29,"conversation_id":"R:10696053211018728","is_pc":0,"local_id":"161","name":"动画表情","receiver":"1688853956558440","send_time":"1610034880","sender":"7881302484994318","sender_name":"、","server_id":"1042206","url":"https://wework.qpic.cn/wwpic/wwwx_4e98356331438f1988a3b55a7edc7b3f/0"},"type":11048}
//企业微信
//{"data":{"cdn":{"aes_key":"","file_id":"","md5":"4e98356331438f1988a3b55a7edc7b3f","size":0},"cdn_type":1,"content_type":29,"conversation_id":"S:1688853956558440_7881302484994318","height":262,"is_pc":0,"local_id":"908","name":"动画表情","receiver":"1688853956558440","send_time":"1649232304","sender":"7881302484994318","sender_name":"派大星 。","server_id":"1064856","source_type":102,"type":1,"url":"https://wework.qpic.cn/wwpic/wwwx_4e98356331438f1988a3b55a7edc7b3f/0","width":264},"type":11048}
#endregion
if (data == null || user == null) return;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var socketClient = EasySoc.GetSocket();
var content_type = data["content_type"]?.ToString();
var conversation_id = data["conversation_id"]?.ToString(); //会话ID
var height = data["height"]?.ToString();
var is_pc = data["is_pc"]?.ToString(); //设备端 PC/移动
var local_id = data["local_id"]?.ToString(); //消息的本地ID
var name = data["name"]?.ToString(); //名称
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 source_type = data["source_type"]?.ToString();
//var type = data["type"]?.ToString();
var url = data["url"]?.ToString(); //图片地址
var width = data["width"]?.ToString();
var FromUsername = string.Empty;
var FromUsernick = string.Empty;
var rmsg = new WorkWechatReceiveMsg();
rmsg.MsgId = server_id.Trim();
rmsg.IsSend = false;
rmsg.FromMessage = url;
rmsg.FromMessageType = WechatMsgType.;
rmsg.Timestamp = send_time;
rmsg.OriMessage = JsonConvert.SerializeObject(data);
if (receiver.IsQun())
{
rmsg.FromGroupid = receiver;
rmsg.FromGroupNick = hook.FindNick(receiver);
}
rmsg.FromUsername = sender;
rmsg.FromUsernick = sender_name;
socketClient.Send(rmsg);
#endregion
}
break;
case MsgType.MT_RECV_RED_PACKET_MSG://收到红包
{
#region
#region
//企业微信红包(个人微信红包进的是文本消息)
//{"data":{"content_type":26,"conversation_id":"R:10696053211018728","desc":"来自洪荒老道的红包,请进入手机版企业微信查看","is_pc":0,"local_id":"164","money":1,"packet_id":"1800008896202101087215807323007","receiver":"R:10696053211018728","remark":"阳光普照,皆大欢喜","send_time":"1610035229","sender":"1688853956558440","sender_name":"洪荒老道","server_id":"1042219"},"type":11049}
#endregion
if (data == null || user == null) return;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var socketClient = EasySoc.GetSocket();
var content_type = data["content_type"]?.ToString(); //企业微信消息类型
var conversation_id = data["conversation_id"]?.ToString(); //会话ID
var desc = data["desc"]?.ToString(); //描述
var is_pc = data["is_pc"]?.ToString(); //pc/移动
var local_id = data["local_id"]?.ToString(); //消息的本地ID
var money = data["money"]?.ToString(); //描述
var packet_id = data["packet_id"]?.ToString(); //数据包id
var receiver = data["receiver"]?.ToString(); //接收者的user_id
var remark = data["remark"]?.ToString(); //备注
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 rmsg = new WorkWechatReceiveMsg();
rmsg.MsgId = server_id.Trim();
rmsg.IsSend = false;
rmsg.FromMessage = desc;
rmsg.FromMessageType = WechatMsgType.;
if (receiver.IsQun())
{
rmsg.FromGroupid = receiver;
rmsg.FromGroupNick = hook.FindNick(receiver);
}
rmsg.FromUsername = sender;
rmsg.FromUsernick = sender_name;
rmsg.Timestamp = send_time;
rmsg.OriMessage = JsonConvert.SerializeObject(data);
socketClient.Send(rmsg);
#endregion
}
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();
#region
#region
//收到个人微信名片
//{"data":{"avatar":"http://wx.qlogo.cn/mmhead/b2ONlmmVZRq56aA1tGTq68BofibibsBtW4wicHoXLnnM1ib0CWjnUIkD6g/0","content_type":41,"conversation_id":"R:10696053211018728","is_pc":0,"local_id":"143","nickname":"壹十叄","receiver":"1688853956558440","send_time":"1610031853","sender":"7881301536005932","sender_name":"摸鱼樊","server_id":"1042150","source":"微信","user_id":"7881302995989894"},"type":11050}
//收到企业微信名片
//{"data":{"avatar":"http://wework.qpic.cn/bizmail/AU8vqVRBac5HFiaTI2qxv3RNr8Kib0wFyicBQZkvs06ayzBhlHE7dCAmA/0","content_type":41,"conversation_id":"R:10696053211018728","is_pc":0,"local_id":"145","nickname":"白龙马","receiver":"R:10696053211018728","send_time":"1610032777","sender":"1688853956558440","sender_name":"洪荒老道","server_id":"1042158","source":"秒单客","user_id":"1688853956589484"},"type":11050}
#endregion
if (data == null || user == null) return;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var socketClient = EasySoc.GetSocket();
var content_type = data["content_type"]?.ToString();
var conversation_id = data["conversation_id"]?.ToString(); //会话ID
var avatar = data["avatar"]?.ToString(); //头像地址
var is_pc = data["is_pc"]?.ToString(); //设备端 PC/移动
var local_id = data["local_id"]?.ToString(); //消息的本地ID
var nickname = data["nickname"]?.ToString(); //名片用户昵称
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 source = data["source"]?.ToString(); //来源
var user_id = data["user_id"]?.ToString(); //用户id
var FromUsername = string.Empty;
var FromUsernick = string.Empty;
var rmsg = new WorkWechatReceiveMsg();
rmsg.MsgId = server_id.Trim();
rmsg.IsSend = false;
rmsg.FromMessage = "发送了一个名片";
rmsg.OriMessage = JsonConvert.SerializeObject(new { user_id = user_id, nickname = nickname, avatar = avatar });
rmsg.FromMessageType = WechatMsgType.;
if (receiver.IsQun())
{
rmsg.FromGroupid = receiver;
rmsg.FromGroupNick = hook.FindNick(receiver);
}
rmsg.FromUsername = sender;
rmsg.FromUsernick = sender_name;
rmsg.Timestamp = send_time;
socketClient.Send(rmsg);
#endregion
}
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 || user == null) return;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var socketClient = EasySoc.GetSocket();
var appicon = data["appicon"]?.ToString();
var appid = data["appid"]?.ToString();
var appname = data["appname"]?.ToString();
var content_type = data["content_type"]?.ToString();//内容类型 78
var conversation_id = data["conversation_id"]?.ToString();//接收者的的会话ID
var local_id = data["local_id"]?.ToString();
var page_path = data["page_path"]?.ToString();//入口点 - 链接(小程序里面的链接)
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 thumb_height = data["thumb_height"]?.ToString();
var thumb_width = data["thumb_width"]?.ToString();
var title = data["title"]?.ToString();//小程序标题
var username = data["username"]?.ToString();
var cdn_type = (int)data["cdn_type"];
var filePath = string.Empty;
var cdn = data["cdn"];
if (cdn != null)
{
var aes_key = cdn["aes_key"].ToString();
var file_id = cdn["file_id"].ToString();
var size = (int)cdn["size"];
filePath = hook.C2cCdnDown(aes_key, file_id, size, QyCdnFileType._视频, FileSuffixType.jpg).Result;
if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath))
throw new Exception("企业接收小程序消息Cdn下载失败");
}
var isSend = false;
var RobotUsername = string.Empty;
var RobotUsernick = string.Empty;
var FromUsername = string.Empty;
var FromUsernick = string.Empty;
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 (receiver.IsQun())
{
wmsg.FromGroupid = receiver;
wmsg.FromGroupNick = hook.FindNick(receiver);
wmsg.FromUsername = sender;
wmsg.FromUsernick = sender_name;
}
else
{
wmsg.FromUsername = FromUsername;
wmsg.FromUsernick = FromUsernick;
}
wmsg.FromMessage = page_path;
socketClient.Send(wmsg);
}
break;
case MsgType.MT_RECV_IMAGE_TEXT_MSG://接收图文消息
break;
case MsgType.MT_RECV_REVOKE_MSG://消息撤回
break;
case MsgType.MT_RECV_OTHER_MSG://接收其他未解析消息
break;
case MsgType.MT_SEARCH_USER_MSG: //查询联系人
{
#region
/*
{
"data":{
"contact_info":{
"acctid":"YiYi",
"alias":"",
"attr":146210880,
"bind_email":"",
"bind_email_status":1,
"birthday":"1970-01-01 00:00:00",
"bizuin":0,
"circle_language":0,
"corpid":1970325xxxxxx,
"create_source":1,
"create_time":0,
"department":"",
"display_order":0,
"emailaddr":"",
"english_name":"",
"extern_job":"",
"extern_position":"",
"external_corp_info":"",
"external_custom_info":null,
"external_pb":"",
"external_wxfinder":null,
"extra_info":null,
"gender":2,
"gid":2251800xxxxxx,
"hash":0,
"holiday_info":{
"create_time":0,
"holiday_desc":"",
"holiday_generate_src":0,
"holiday_icon_index":0,
"holiday_info_id":0,
"holiday_status":0,
"holiday_status_new":0,
"new_holiday_icon_index":0
},
"holiday_list_read_time":0,
"iconurl":"http:\/\/wework.qpic.cn\/bizmail\/W9Sqc7EPicJeeR77ibdaMesvkicibwMdjCmaY6rIcpG8aytZJMCTrtVQgw\/0",
"internation_code":"86",
"is_name_verified":true,
"job":"",
"level":0,
"main_partyid":16888xxx81,
"mobile":"",
"name":"一一xx",
"name_status":1,
"nation_code":"",
"number":"",
"openkfprofile":null,
"partyid":0,
"partymember_order":0,
"personal_work_type":0,
"phone":"",
"position":"",
"pstn_extension_number":"",
"pstn_extension_number_new":"",
"qqmail_uin":0,
"realname":"xxxxx",
"robot_profile":null,
"school_parent_openid":"",
"school_staff_relation":"",
"school_user_type":0,
"staff_attr":0,
"staff_type":0,
"staff_xid":0,
"student_number":"",
"subjectname":"",
"tencent_info":{
"work_card_image":""
},
"uin":16888xxx,
"under_verify_name":"",
"unionid":"ozynqsnJuiQexxxxbE",
"use_attr2":5898244,
"v_corp_name_full":"",
"v_corp_name_short":"",
"v_corp_use_status":1000,
"v_create_mail":"",
"v_hoster_vid":0,
"v_is_init_moder":true,
"v_recommend_info":null,
"vcode":"vce5e8f7825e87c408",
"xcx_corp_address":"",
"xcx_style":0
},
"corpinfo":{
"admin_vid":0,
"appli_info":null,
"auth_time":0,
"authed_domain":"",
"b_authed_licence":true,
"b_has_info_corp":false,
"b_hastoken":false,
"b_internet_industry":false,
"b_need_not_verify":false,
"b_need_update_name":false,
"card_url":"https:\/\/work.weixin.qq.com\/wework_admin\/xxxxp?",
"coreate_source_info":"",
"corp_desc":"",
"corp_full_name":"xxxx科技有限公司",
"corp_logo":"https:\/\/p.qlogo.cn\/bizmail\/1icHEZ7xxxx\/0",
"corp_name":"xxxxxxxxx",
"corp_stat":0,
"corp_use_status":0,
"corpid":19703250xxxxxxx,
"create_time":1532394113,
"custom_check_url":"",
"email_need_auth":"",
"internation_code":"",
"isAccepted":false,
"isTrust":true,
"is_corp_verify":false,
"is_init_moduser":false,
"is_overseas_corp":false,
"join_need_verify":false,
"language":1,
"mail":"",
"mem_appli_time":0,
"mem_create_time":0,
"mobile_need_auth":"",
"moduser_info":{
"name":"",
"vid":0
},
"ownername":"小邪",
"personal_work_info":"",
"personal_work_type":0,
"pstn_main_number":"",
"pstn_officephone_state":0,
"qyh_info":"",
"scorp_id":"wwfd561047d79e1a2d",
"staff_info":{
"attr":0,
"corp_mail":"",
"corp_mail_active":false,
"corp_position":"",
"corp_rank":"",
"custom_check_status":0,
"english_name":"",
"head_image":"http:\/\/wework.qpic.cn\/bizmail\/xxxxxxxxxxw\/0",
"internation_code":"86",
"mail":"yiyimama@lcwsl999.onexmail.com",
"name":"一一xxxx",
"phone":"",
"pstn_extension_number":"",
"real_name":""
},
"staffnum":0,
"status":0,
"unreadNum":0,
"v_init_domain_name":"",
"v_superadmin_name":"",
"v_superadmin_vid":0,
"verify_msg":"",
"verify_submit_time":0,
"vid":16888505xxxxxx,
"virtual_can_change_full_name":false,
"virtual_corp_claiming_name":"",
"work_card_back_url":"",
"work_card_face_url":""
},
"datalist":[{
"contact_info":{
"acctid":"YiYiM",
"alias":"",
"attr":146210880,
"bind_email":"",
"bind_email_status":1,
"birthday":"1970-01-01 00:00:00",
"bizuin":0,
"circle_language":0,
"corpid":1970325xxx86,
"create_source":1,
"create_time":0,
"department":"",
"display_order":0,
"emailaddr":"",
"english_name":"",
"extern_job":"",
"extern_position":"",
"external_corp_info":"",
"external_custom_info":null,
"external_pb":"",
"external_wxfinder":null,
"extra_info":null,
"gender":2,
"gid":2251800xx9,
"hash":0,
"holiday_info":{
"create_time":0,
"holiday_desc":"",
"holiday_generate_src":0,
"holiday_icon_index":0,
"holiday_info_id":0,
"holiday_status":0,
"holiday_status_new":0,
"new_holiday_icon_index":0
},
"holiday_list_read_time":0,
"iconurl":"http:\/\/wework.qpic.cn\/bizmail\/W9Sqc7EPicJeeR77ibdaMesvkicibwMdjCmaY6rIcpG8aytZJMCTrtVQgw\/0",
"internation_code":"86",
"is_name_verified":true,
"job":"",
"level":0,
"main_partyid":16888505xxx1,
"mobile":"",
"name":"一一x",
"name_status":1,
"nation_code":"",
"number":"",
"openkfprofile":null,
"partyid":0,
"partymember_order":0,
"personal_work_type":0,
"phone":"",
"position":"",
"pstn_extension_number":"",
"pstn_extension_number_new":"",
"qqmail_uin":0,
"realname":"xxxx",
"robot_profile":null,
"school_parent_openid":"",
"school_staff_relation":"",
"school_user_type":0,
"staff_attr":0,
"staff_type":0,
"staff_xid":0,
"student_number":"",
"subjectname":"",
"tencent_info":{
"work_card_image":""
},
"uin":1688850xxxx3,
"under_verify_name":"",
"unionid":"ozynqsnJuiQerUcDxxE",
"use_attr2":5898244,
"v_corp_name_full":"",
"v_corp_name_short":"",
"v_corp_use_status":1000,
"v_create_mail":"",
"v_hoster_vid":0,
"v_is_init_moder":true,
"v_recommend_info":null,
"vcode":"vce5e8f78x8",
"xcx_corp_address":"",
"xcx_style":0
},
"contact_info_wx":{
"acctid":"",
"alias":"",
"attr":0,
"bind_email":"",
"bind_email_status":0,
"birthday":"",
"bizuin":0,
"circle_language":0,
"corpid":0,
"create_source":0,
"create_time":0,
"department":"",
"display_order":0,
"emailaddr":"",
"english_name":"",
"extern_job":"",
"extern_position":"",
"external_corp_info":"",
"external_custom_info":null,
"external_pb":"",
"external_wxfinder":null,
"extra_info":null,
"gender":2,
"gid":0,
"hash":0,
"holiday_info":null,
"holiday_list_read_time":0,
"iconurl":"http:\/\/wx.qlogo.cn\/mmhead\/Q3auHgz\/0",
"internation_code":"",
"is_name_verified":false,
"job":"",
"level":0,
"main_partyid":0,
"mobile":"",
"name":"一小口", // 名称
"name_status":0,
"nation_code":"",
"number":"",
"openkfprofile":null,
"partyid":0,
"partymember_order":0,
"personal_work_type":0,
"phone":"",
"position":"",
"pstn_extension_number":"",
"pstn_extension_number_new":"",
"qqmail_uin":0,
"realname":"",
"robot_profile":null,
"school_parent_openid":"",
"school_staff_relation":"",
"school_user_type":0,
"self_info":null,
"staff_attr":0,
"staff_type":0,
"staff_xid":0,
"student_number":"",
"subjectname":"",
"tencent_info":null,
"uin":7881299xxxxxx, // 用户id
"under_verify_name":"",
"unionid":"",
"use_attr2":0,
"v_corp_name_full":"",
"v_corp_name_short":"",
"v_corp_use_status":0,
"v_create_mail":"",
"v_hoster_vid":0,
"v_is_init_moder":false,
"v_recommend_info":null,
"vcode":"",
"xcx_corp_address":"",
"xcx_style":0
},
"corpinfo":{
"admin_vid":0,
"appli_info":null,
"auth_time":0,
"authed_domain":"",
"b_authed_licence":true,
"b_has_info_corp":false,
"b_hastoken":false,
"b_internet_industry":false,
"b_need_not_verify":false,
"b_need_update_name":false,
"card_url":"https:\/\/work.weixin.qq.com\/wework_admin\/user\/h5\/corp?",
"coreate_source_info":"",
"corp_desc":"",
"corp_full_name":"xxxxxxx网络科技有限公司",
"corp_logo":"https:\/\/p.qlogo.cn\/bizmail\/1icHExxxxxxg\/0",
"corp_name":"xxxx",
"corp_stat":0,
"corp_use_status":0,
"corpid":197032xxxxx6,
"create_time":1532394113,
"custom_check_url":"",
"email_need_auth":"",
"internation_code":"",
"isAccepted":false,
"isTrust":true,
"is_corp_verify":false,
"is_init_moduser":false,
"is_overseas_corp":false,
"join_need_verify":false,
"language":1,
"mail":"",
"mem_appli_time":0,
"mem_create_time":0,
"mobile_need_auth":"",
"moduser_info":{
"name":"",
"vid":0
},
"ownername":"小邪",
"personal_work_info":"",
"personal_work_type":0,
"pstn_main_number":"",
"pstn_officephone_state":0,
"qyh_info":"",
"scorp_id":"wwfd561047d79e1a2d",
"staff_info":{
"attr":0,
"corp_mail":"",
"corp_mail_active":false,
"corp_position":"",
"corp_rank":"",
"custom_check_status":0,
"english_name":"",
"head_image":"http:\/\/wework.qpic.cn\/bizmail\/W9Sqc7EPicJeeR77ibdaMesvkicibwMdjCxxxxw\/0", // 头像
"internation_code":"86",
"mail":"yiyxxa@lxxx.onexmail.com",
"name":"一一xxx",
"phone":"",
"pstn_extension_number":"",
"real_name":""
},
"staffnum":0,
"status":0,
"unreadNum":0,
"v_init_domain_name":"",
"v_superadmin_name":"",
"v_superadmin_vid":0,
"verify_msg":"",
"verify_submit_time":0,
"vid":16888505xxxxxx,
"virtual_can_change_full_name":false,
"virtual_corp_claiming_name":"",
"work_card_back_url":"",
"work_card_face_url":""
},
"flag":0,
"item_type":1,
"name":"",
"openid":"orFrbsuSYHirGxxxxxx", // 添加为客户时要用到
"relation":1,
"search_status":1,
"wx_ticket":"6001221957E20E5D29D1E733EE712415FBE17551E97981837EFAE6FFE7C22D989C2C64ABFEFC22FB07A801B91A132985C1A360FCDEAA389547xxxDxxxxF" // 添加为客户时要用到
}],
"error_code":0,
"error_message":"",
"flag":0,
"keyword":"151xxxxxxxx", // 搜索的手机号
"name":"",
"relation":1,
"search_status":1
},
"type":11052
}
*/
#endregion
if (user == null || data == null) return;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var keyWord = string.Empty;
if (user.IsGetContactDic.ContainsKey(keyWord) && user.IsGetContactDic[keyWord])
return;
try
{
user.IsGetContactDic[keyWord] = true;
FriendInfoHandlerEnterprise friendInfo = null;
var member_list = (JArray)data["member_list"];
if (member_list == null)
return;
var result = (JArray)data["datalist"][0];
if (result != null)
{
var uin = string.Empty;
var openid = string.Empty;
var wx_ticket = string.Empty;
var corpid = string.Empty;
var flag = false;//是否赋值
var contact_info_wx = result["contact_info_wx"];
if (flag = contact_info_wx != null)
{
uin = contact_info_wx["uin"].ToString();
openid = result["openid"].ToString();
wx_ticket = result["wx_ticket "].ToString();
}
var contact_info = result["contact_info"];
if (flag = contact_info != null)
{
uin = contact_info["uin"].ToString();
corpid = contact_info["corpid"].ToString();
}
if (flag)
friendInfo = new FriendInfoHandlerEnterprise() { user_id = uin, openid = openid, wx_ticket = wx_ticket, corp_id = corpid };
}
user.FriendHandlerDic[keyWord] = friendInfo;
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("机器人企业微信通过手机号搜索用户信息", $@"原始数据:{recvData}
错误:{ex.Message} - {ex.StackTrace}");
}
finally
{
Thread.Sleep(100);
user.IsGetContactDic.Remove(keyWord);
}
}
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://创建群
{
#region
/*
{
"data":{
"createruin":168885053xx82, //创建者user_id
"createtime":1639322040, // 创建时间
"error_code":0,
"error_message":"",
"failmem":[{
"type":0,
"vid":0
}],
"msgid":109xx35,
"msgseq":8513xxx,
"roomid":1069605293xxx1944, // 群id
"roomname":"",
"sessionid":"Nm5GdS10TURTd3lGdEZ1aQ==",
"success_add_vidlist":[{
"success_add_vidlist":7881300xxx2093 // 添加成功的成员用户id
}]
},
"type":11058
}
*/
#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;
CreateGroupInfo CreateGroupInfo = null;
var keyMd5 = HttpExtend.GetMD5String($"CACHE_CREATEGROUP{_type}");
if (data["error_code"].ToObject<int>() == 0)
{
var createruin = data["createruin"].ToObject<string>();
var createtime = data["createtime"].ToObject<long>();
var roomid = data["roomid"].ToObject<string>();
var roomname = data["roomname"].ToObject<string>();
CreateGroupInfo = new CreateGroupInfo() { CreateUserName = createruin, CreateTime = createtime, GroupId = roomid, GroupNick = roomname };
}
Common.SetCache(keyMd5, CreateGroupInfo, 10);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("机器人企业微信创建群", $@"原始数据:{recvData}
错误:{ex.Message} - {ex.StackTrace}");
}
finally
{
Thread.Sleep(100);
user.IsGetDic.Remove(_type);
}
}
break;
case MsgType.MT_CREATE_NULL_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 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_ADD_ROOM_USER_MSG://添加群成员为联系人
break;
case MsgType.MT_ROOM_CREATE_NOTIFY_MSG://新群通知
break;
case MsgType.MT_ROOM_MEMBER_QUIT_NOTIFY_MSG://群成员主动退出通知
break;
case MsgType.MT_CONTACT_ADD_NOITFY_MSG://好友新增通知
{
//{"data":{"avatar":"http://wx.qlogo.cn/mmhead/Q3auHgzwzM7fVNDOBibWpoNq079a20EfXcvBZKUALpibSIyVSfRiccAtw/0","conversation_id":"S:1688853956558440_7881299738174185","corp_id":"1970325134026788","nickname":"","position":"","realname":"","remark":"","sex":1,"user_id":"7881299738174185","username":"蟹老板 。"},"type":11076}
if (data == null || user == null) return;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
var socketClient = EasySoc.GetSocket();
var user_id = data["user_id"]?.ToString();//账号
#region //如果为机器人自动通过的,等待结果的方法
var md5 = HttpExtend.GetMD5String($"accept{user_id}");
if (!(user.IsGetContactDic.ContainsKey(md5) && user.IsGetContactDic[md5]))
{
try
{
user.IsGetContactDic[md5] = true;
Common.SetCache(md5, "", 5);//通知等待返回结果的方法
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("机器人企业自动通过添加响应缓存", $@"原始数据:{recvData}
错误:{ex.Message} - {ex.StackTrace}");
}
finally
{
Thread.Sleep(100);
user.IsGetContactDic.Remove(md5);
}
}
#endregion
var acctid = data["acctid"]?.ToString();//账号
var avatar = data["avatar"]?.ToString();//头像
var conversation_id = data["conversation_id"]?.ToString();//会话ID
var corp_id = data["corp_id"]?.ToString();//公司id
var mobile = data["mobile"]?.ToString();//公司id
var nickname = data["nickname"]?.ToString();//昵称
var position = data["position"]?.ToString();//地址
var realname = data["realname"]?.ToString();//真实名称
var remark = data["remark"]?.ToString();//备注
var sex = (int)data["sex"];//性别
var unionid = data["unionid"]?.ToString();
var username = data["username"]?.ToString();//微信昵称
WechatNewFriend msg = new WechatNewFriend();
msg.FromUserName = user_id;
msg.Avatar = avatar;
msg.FromUserNick = username;
msg.Sex = sex;
socketClient.Send(msg);
}
break;
case MsgType.MT_ACCEPT_FRIEND_REQUEST://接受加好友请求
break;
case MsgType.MT_DEL_FRIEND_MSG:
case MsgType.MT_DEL_FRIEND_BY_MSG:
break;
case MsgType.MT_ROOM_MODIFY_NICK_MSG:
break;
case MsgType.MT_GET_OWN_QRIMAGE:
break;
case MsgType.MT_CDN_DOWN_MSG:
{
#region
//图片
//{"data":{"error_code":0,"save_path":"D:\\项目\\秒单客项目\\返利机器人\\3.0\\yz_client\\yz_client\\yz_client\\bin\\Debug\\Cache\\Image\\1d7a78febfb843bb8ab77fd298aba1b5.jpg"},"type":11171}
//视频
//{"data":{"error_code":0,"save_path":"D:\\项目\\秒单客项目\\返利机器人\\3.0\\yz_client\\yz_client\\yz_client\\bin\\Debug\\Cache\\Image\\291d0e4442ee46a1a6cf3af21216863f.mp4"},"type":11171}
#endregion
if (user == null || data == null)
return;
var hook = WechatClient.GetApi(user);
var md5 = string.Empty;
try
{
var error_corde = data["error_code"].ToObject<int>();
if (error_corde != 0)
throw new Exception($"Cdn下载异常:{recvData}");
var save_path = data["save_path"].ToString();
md5 = HttpExtend.GetMD5String(save_path);
try
{
user.IsGetContactDic[md5] = true;
}
catch (Exception)
{ }
Common.SetCache(md5, 1, 5);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("企业微信解析Cdn消息", ex.Message);
}
finally
{
Thread.Sleep(100);
user.IsGetContactDic.Remove(md5);
}
}
break;
case MsgType.MT_C2CCDN_DOWN_MSG:
{
#region
// {"data":{"error_code":0,"file_id":"3069020102046230600201000204bafc490e02031e903802040ac7f46d0204624ee2c20434333133373039353935305f31313832323539395f3631316535633864343430316166393935353530356432636437343665616238020100020300904004000201010201000400","save_path":"D:\\项目\\秒单客项目\\返利机器人\\3.0\\yz_client\\yz_client\\yz_client\\bin\\Debug\\Cache\\Image\\0b02274e4946420a97592bf07da6db6d.jpg"},"type":11170}
#endregion
if (user == null || data == null)
return;
var md5 = string.Empty;
try
{
var error_corde = data["error_code"].ToObject<int>();
if (error_corde != 0)
throw new Exception($"Cdn下载异常:{recvData}");
var save_path = data["save_path"].ToString();
md5 = HttpExtend.GetMD5String(save_path);
try
{
user.IsGetContactDic[md5] = true;
}
catch (Exception)
{ }
Common.SetCache(md5, 1, 5);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("企业微信解析C2cCdn消息", ex.Message);
}
finally
{
Thread.Sleep(100);
user.IsGetContactDic.Remove(md5);
}
}
break;
case MsgType.MT_GETCDN_UPLOADFILE:
{
#region
//{"data":{"error_code":0,"file_aes_key":"34336366636637353562383135383465","file_id":"3072020102046b30690201000204f4287e6802030f59b102049317fa710204625050f7042d4e45574944315f6634323837653638393331376661373136323530353133375f3136343934333037373633303002010002030107d0041000fcd55383fba8807e1510efed058c400201010201000400","file_key":"1649430840411","file_md5":"00fcd55383fba8807e1510efed058c40","file_path":"D:\\项目\\秒单客项目\\返利机器人\\3.0\\yz_client\\yz_client\\yz_client\\bin\\Debug\\Cache\\Image\\3c78ef60613e43f1b5a369d528ce50b6.jpg","file_size":67523,"file_type":1,"image_height":960,"image_width":960},"type":11115}
#endregion
if (user == null || data == null) return;
var hook = WechatClient.GetApi(user) as Wechat_Xiaoxie_QY;
//有时候接收到的数据为一下情况
//{"data":{"user_id":"7881302484994318"},"type":11039}
var file_path = data["file_path"]?.ToString();
var md5 = Path.GetFileNameWithoutExtension(file_path);//这里是之前传过来的以md5命名的文件名
if (user.IsGetContactDic.ContainsKey(md5) && user.IsGetContactDic[md5])
return;
try
{
try
{
user.IsGetContactDic[md5] = true;
}
catch (Exception)
{ }
user.FileC2cCdnInfoDic[md5] = new FileC2cCdnInfo()
{
error_code = data["error_code"].ToObject<int>(),
file_aes_key = data["file_aes_key"].ToObject<string>(),
file_id = data["file_id"].ToObject<string>(),
file_key = data["file_key"].ToObject<string>(),
file_md5 = data["file_md5"].ToObject<string>(),
file_path = data["file_path"].ToObject<string>(),
file_size = data["file_size"].ToObject<int>(),
file_type = data["file_type"].ToObject<int>(),
image_height = data["image_height"].ToObject<int>(),
image_width = data["image_width"].ToObject<int>()
};
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("机器人企业微信上传Cdn文件信息", $@"原始数据:{recvData}
错误:{ex.Message} - {ex.StackTrace}");
}
finally
{
Thread.Sleep(100);
user.IsGetContactDic.Remove(md5);
}
}
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<string, FriendInfo> FriendRequestRecord = new ConcurrentDictionary<string, FriendInfo>();
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);
}
/// <summary>
/// 启动微信
/// </summary>
/// <param name="FileName"></param>
/// <returns></returns>
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));
}
}
}