old_flsystem/PCRobot/PCWechat/Wechat_Xiaoxie_QY_Analysis.cs

1159 lines
84 KiB
C#
Raw Permalink 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 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<uint, int> MT_APP_READY_MSG_BIND = new Dictionary<uint, int>();
// 接收消息回调
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<int>();
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<int>();
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<int>();
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<int>();
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<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);
}
}
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<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 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 = 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<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下载失败");
}
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<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.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<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));
}
}
}