public AramisTCPServer(ReceiveMessage receiveMessage, ArrayList allowedIP, string serverIP) { serverActive = false; NeedToUpdateIpList = new ArrayList(); if (!SetConfiguration(allowedIP, serverIP)) { return; } try { Console.WriteLine("\n\t***\tTCP Server [ {0} ] is ready.\n\n\n", IpAddress); TCPServer = new TcpListener(IPAddress.Parse(IpAddress), SERVER_PORT); } catch (Exception exp) { Console.WriteLine("Error during server creating: {0}.", exp.Message); Console.ReadLine(); Application.Exit(); return; } #region Creating CatchingConnection, Starting server try { ClientConnector = new CatchingConnections(TCPServer, AllowIpList, NeedToUpdateIpList, WriteToFileAboutUpdate, FullUpdatePath, StringConnection, receiveMessage); } catch (Exception e) { Console.WriteLine("Error CatchingConnections:" + e.Message); return; } CatchingConnectionThread = new Thread(ClientConnector.Start); CatchingConnectionThread.Name = "CatchingConnectionsThread"; CatchingConnectionThread.IsBackground = true; try { TCPServer.Start(); } catch (Exception exp) { Console.WriteLine("Error during server starting: {0}.", exp.Message); return; } CatchingConnectionThread.Start(); #endregion serverActive = true; }
public DataTerminalSession(TcpClient MyTCPClient, NetworkStream MyTCPStream, CloseConnectionDelegate MyCloseConnectionMethod, UpdateCompleteDelegate InformAboutUpdateComplete, ReceiveMessage receiveMessage, Guid sessionId) { TCPClient = MyTCPClient; TCPStream = MyTCPStream; DeleteConnection = MyCloseConnectionMethod; this.receiveMessage = receiveMessage; this.SessionId = sessionId; //Server1CAgent = new HandlingVia1CServer(@"Srvr=""localhost""; Ref=""newwms"";"); //Server1CAgent = new HandlingVia1CServer(@"Srvr=""localhost""; Ref=""iboya81""; Usr=""Оборский Д.В.""; Pwd=""123456"""); //Server1CAgent = new HandlingVia1CServer(@"File=""C:\Documents and Settings\Reshifa\My Documents\InfoBase9""; Usr=""Denis.V.O""; Pwd=""123"""); this.InformAboutUpdateComplete = InformAboutUpdateComplete; }
public CatchingConnections(TcpListener MyTCPServer, ArrayList allowIpList, ArrayList NeedToUpdateIpList, UpdateCompleteDelegate InformAboutUpdateComplete, string FullUpdatePath, string Server1CConnectionString, ReceiveMessage receiveMessage) { TCPServer = MyTCPServer; StorekeeperSessions = new List<DataTerminalSession>(); this.AllowIpList = new Dictionary<string, string>(); this.NeedToUpdateIpList = NeedToUpdateIpList; this.InformAboutUpdateComplete = InformAboutUpdateComplete; this.FullUpdatePath = FullUpdatePath; this.receiveMessage = receiveMessage; foreach (string allowIPAddress in allowIpList) { AllowIpList.Add(allowIPAddress, Guid.NewGuid().ToString()); } Console.WriteLine(); }
public BaseSendMessage Reply(ReceiveMessage message) { return(new TextSendMessage(message, Content.ToString())); }
public virtual ReplyBaseMessage On_Location_selectEvent(ReceiveMessage ReceiveMessage) { return(null); }
public ReplyBaseMessage On_DefaultEvent(ReceiveMessage ReceiveMessage) { return(null); }
public virtual ReplyBaseMessage On_CLICKEvent(ReceiveMessage ReceiveMessage) { return(null); }
public static ReceiveMessageBehavior <T> ReceiveMessage <T>(ReceiveMessage <T> onMessage) => new ReceiveMessageBehavior <T>(onMessage);
/// <summary> /// 执行消息回复 /// </summary> /// <param name="MessageHandler"></param> /// <returns></returns> public string Excute() { var Request = HttpContext.Current.Request; string signature = Request["signature"]; string timestamp = Request["timestamp"]; string nonce = Request["nonce"]; string echostr = Request["echostr"]; string encrypt_type = Request["encrypt_type"]; // aes 是安全模式。 null是明文模式 string msg_signature = Request["msg_signature"]; //消息加密后 会有这个参数 //解加密类 Utils.Tencent.WXBizMsgCrypt wxcpt = new Utils.Tencent.WXBizMsgCrypt(_token, _EncodingAESKey, _appId); //获取xml Stream xmlStream = Request.InputStream; string postData = ""; using (StreamReader sr = new StreamReader(xmlStream)) { postData = sr.ReadToEnd(); } //收到的消息 ReceiveMessage receiveMsg = null; //是否安全模式? if (encrypt_type == "aes") { string str = ""; int i = wxcpt.DecryptMsg(msg_signature, timestamp, nonce, postData, ref str); if (i == 0) { receiveMsg = XMLHelper.XMLDeserializer <ReceiveMessage>(new MemoryStream(Encoding.UTF8.GetBytes(str))); } } else { receiveMsg = XMLHelper.XMLDeserializer <ReceiveMessage>(new MemoryStream(Encoding.UTF8.GetBytes(postData))); } //避免重复接受 if (receiveMsg.MsgId != null) { if (CacheHelper.GetCache(receiveMsg.MsgId) != null) { return(""); } CacheHelper.SetCache(receiveMsg.FromUserName + receiveMsg.CreateTime, "xx", new TimeSpan(0, 0, 1, 0)); } //执行MessageHandler ReplyBaseMessage replyMsg = ExcuteMessageHandler(receiveMsg); if (replyMsg == null) { return(""); } //是否安全模式? if (encrypt_type == "aes") { string relMsg = XMLHelper.XMLSerializer <ReplyBaseMessage>(replyMsg); string EncryptMsg = ""; //加密 wxcpt.EncryptMsg(relMsg, timestamp, nonce, ref EncryptMsg); return(EncryptMsg); } else { return(XMLHelper.XMLSerializer <ReplyBaseMessage>(replyMsg)); } }
public void RegisterReceiveMessageEvent(ReceiveMessage <TResponsePacket> receiveMessage) { MessageReceivedEvent += receiveMessage; }
protected virtual Task <MessageProcessInstruction> OnReceiveMessage(string routingKeyOrQueueName, string consumerTag, long firstErrorTimestamp, string exchange, string message, string messageAdditionalInfo) { return(ReceiveMessage?.Invoke(routingKeyOrQueueName, consumerTag, firstErrorTimestamp, exchange, message, messageAdditionalInfo)); }
public void OnReceiveMessage(MessageDelegateArgs args) { ReceiveMessage?.Invoke(this, args); }
public virtual ReplyBaseMessage On_Scancode_waitmsgEvent(ReceiveMessage ReceiveMessage) { return(null); }
public virtual ReplyBaseMessage On_ShortVideoEvent(ReceiveMessage ReceiveMessage) { return(null); }
public virtual ReplyBaseMessage On_Pic_weixinEvent(ReceiveMessage ReceiveMessage) { return(null); }
public virtual ReplyBaseMessage On_Pic_sysphotoEvent(ReceiveMessage ReceiveMessage) { return(null); }
public virtual ReplyBaseMessage On_Pic_photo_or_albumEvent(ReceiveMessage ReceiveMessage) { return(null); }
static void Main(string[] args) { IniConfig ini = new IniConfig("Config.ini"); ini.Load(); try { Save.curentQQ = ini.Object["Config"]["QQ"].GetValueOrDefault((long)0); Save.url = ini.Object["Config"]["url"].GetValueOrDefault("http://127.0.0.1:8888/"); } catch { ini.Clear(); ini.Object.Add(new ISection("Config")); ini.Object["Config"].Add("QQ", 0); ini.Object["Config"].Add("url", ""); long qq; while (true) { Console.Write("请输入目前服务端挂着的QQ号:"); if (long.TryParse(Console.ReadLine(), out qq)) { break; } } Save.curentQQ = qq; Console.Write("请输入用于连接服务端的url:"); string url = Console.ReadLine(); if (url.Reverse().First() != '/') { url += '/'; } ini.Object["Config"]["QQ"] = new IValue(qq); ini.Object["Config"]["url"] = new IValue(Save.url); ini.Save(); Console.WriteLine("需要修改请在目录下的Config.ini内修改"); } socket = new Client(Save.url); socket.Opened += SocketOpened; socket.Message += SocketMessage; socket.SocketConnectionClosed += SocketConnectionClosed; socket.Error += SocketError; string QQ = Save.curentQQ.ToString();//框架在线的QQ号 pluginManagment.Load(); LogHelper.WriteLine("遍历启动事件……"); pluginManagment.CallFunction("StartUp"); pluginManagment.CallFunction("Enable"); NotifyIconHelper.ShowNotifyIcon(); LogHelper.WriteLine("插件载入完成,开始连接服务器"); socket.Connect(); // register for 'connect' event with io server socket.On("connect", (fn) => { LogHelper.WriteLine(((ConnectMessage)fn).ConnectMsg.ToString()); //重连成功 取得 在线QQ的websocket 链接connid //Ack socket.Emit("GetWebConn", QQ, null, (callback) => { //var jsonMsg = callback as string; //LogHelper.WriteLine(string.Format("callback [root].[messageAck]: {0} \r\n", jsonMsg)); LogHelper.WriteLine($"服务器连接成功,开始处理事件……"); } ); //获取已登录QQ的群列表 //socket.Emit("GetGroupList", QQ); //获取已登录QQ的好友列表 //socket.Emit("GetQQUserList", QQ); //获取已登录QQ的群123456789成员列表 // //string JSON = "{" + string.Format("\"Uid\":\"{0}\",\"Group\":{1}", QQ, 123456789) + "}"; //socket.Emit("GetGroupUserList", JSON.Replace("\"", "\\\""));//json 需要处理一下转义 //获取登录二维码 socket.Emit("GetQrcode", "", null, (callback) => { var jsonMsg = callback as string; LogHelper.WriteLine(string.Format("GetQrcode From Websocket: {0} \r\n", jsonMsg)); } ); }); //二维码检测事件 socket.On("OnCheckLoginQrcode", (fn) => { LogHelper.WriteLine("OnCheckLoginQrcode\n" + ((JSONMessage)fn).MessageText); }); //收到群消息的回调事件 socket.On("OnGroupMsgs", (fn) => { //群文件合并到此事件 //{"FileID":"/9d784a08-d918-11ea-a715-5452007bdaa4","FileName":"Log.lua","FileSize":1159,"Tips":"[群文件]"} //语音消息 //{"Tips":"[语音]","Url":"http://grouptalk.c2c.qq.com/?ver=0\u0026rkey=3062020101045b30590201010201010204b40f1411042439306a33504b526d42394567685178716f6f464c4c67676639234e5f4a42535a7734764202045f2e03de041f0000000866696c6574797065000000013100000005636f64656300000001310400\u0026filetype=1\u0026voice_codec=1"} Task task = new Task(() => { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); ReceiveMessage groupMessage = JsonConvert.DeserializeObject <ReceiveMessage>(((JSONMessage)fn).MessageText); string message = ProgressMessage.Start(groupMessage); ReceiveMessage.Data data = groupMessage.CurrentPacket.Data; if (groupMessage.CurrentPacket.Data.FromUserId == Save.curentQQ) { Dll.AddMsgToSave(new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message)); return; } LogHelper.WriteLine(CQLogLevel.InfoReceive, "[↓]收到消息", $"来源群:{data.FromGroupId}({data.FromGroupName}) 来源QQ:{data.FromUserId}({data.FromNickName}) {message}"); var c = new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message); Dll.AddMsgToSave(c); pluginManagment.CallFunction("GroupMsg", 2, Save.MsgList.Count + 1, data.FromGroupId, data.FromUserId, "", Marshal.StringToHGlobalAnsi(message), 0); stopwatch.Stop(); LogHelper.WriteLine($"耗时 {stopwatch.ElapsedMilliseconds} ms"); }); task.Start(); // new Event_GroupMessage().GroupMessage(new object(), e); }); //收到好友消息的回调事件 socket.On("OnFriendMsgs1", (fn) => { Task task = new Task(() => { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); ReceiveMessage groupMessage = JsonConvert.DeserializeObject <ReceiveMessage>(((JSONMessage)fn).MessageText); string message = ProgressMessage.Start(groupMessage); ReceiveMessage.Data data = groupMessage.CurrentPacket.Data; if (groupMessage.CurrentPacket.Data.FromUserId == Save.curentQQ) { Dll.AddMsgToSave(new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message)); return; } LogHelper.WriteLine(CQLogLevel.InfoReceive, "[↓]收到消息", $"来源群:{data.FromGroupId}({data.FromGroupName}) 来源QQ:{data.FromUserId}({data.FromNickName}) {message}"); var c = new Deserizition.Message(Save.MsgList.Count + 1, data.MsgRandom, data.MsgSeq, data.FromGroupId, data.MsgTime, message); Dll.AddMsgToSave(c); pluginManagment.CallFunction("PrivateMsg", 11, Save.MsgList.Count + 1, data.FromUserId, Marshal.StringToHGlobalAnsi(message), 0); stopwatch.Stop(); LogHelper.WriteLine($"耗时 {stopwatch.ElapsedMilliseconds} ms"); }); task.Start(); }); //统一事件管理如好友进群事件 好友请求事件 退群等事件集合 socket.On("OnEvents", (fn) => { Task task = new Task(() => { JObject events = JObject.Parse(((JSONMessage)fn).MessageText); Requests request = new Requests(); switch (events["CurrentPacket"]["Data"]["EventName"].ToString()) { case "ON_EVENT_GROUP_JOIN": //入群事件 _eventSystem_GroupMemberIncrease id=7 long GroupJoin_JoinGroup, GroupJoin_JoinUin, GroupJoin_InviteUin; string GroupJoin_JoinUserName; JToken GroupJoin_data = events["CurrentPacket"]["Data"]["EventData"]; GroupJoin_JoinGroup = Convert.ToInt64(events["CurrentPacket"]["Data"]["EventMsg"]["FromUin"].ToString()); GroupJoin_JoinUin = Convert.ToInt64(GroupJoin_data["UserID"].ToString()); GroupJoin_JoinUserName = GroupJoin_data["UserName"].ToString(); GroupJoin_InviteUin = Convert.ToInt64(GroupJoin_data["InviteUin"].ToString()); if (GroupJoin_JoinUin != Save.curentQQ) { pluginManagment.CallFunction("GroupMemberIncrease", 1, GetTimeStamp(), GroupJoin_JoinGroup, 10000, GroupJoin_JoinUin); } LogHelper.WriteLine($"入群事件 群{GroupJoin_JoinGroup}加入{GroupJoin_JoinUserName}({GroupJoin_JoinUin})"); break; case "ON_EVENT_GROUP_EXIT": //退群事件 _eventSystem_GroupMemberDecrease id=6 long GroupExit_FromUin, GroupExit_UserID; JToken GroupExit_data = events["CurrentPacket"]["Data"]; GroupExit_FromUin = Convert.ToInt64(GroupExit_data["EventMsg"]["FromUin"].ToString()); GroupExit_UserID = Convert.ToInt64(GroupExit_data["EventData"]["UserID"].ToString()); pluginManagment.CallFunction("GroupMemberDecrease", 1, GetTimeStamp(), GroupExit_FromUin, 10000, GroupExit_UserID); LogHelper.WriteLine($"退群事件 {GroupExit_UserID}退出群{GroupExit_FromUin} "); break; case "ON_EVENT_GROUP_ADMIN": //群管变动事件 _eventSystem_GroupAdmin id=5 long GroupAdmin_GroupID, GroupAdmin_UserID, GroupAdmin_Flag; JToken GroupAdmin_data = events["CurrentPacket"]["Data"]["EventData"]; GroupAdmin_GroupID = Convert.ToInt64(GroupAdmin_data["GroupID"].ToString()); GroupAdmin_UserID = Convert.ToInt64(GroupAdmin_data["UserID"].ToString()); GroupAdmin_Flag = Convert.ToInt64(GroupAdmin_data["Flag"].ToString()); pluginManagment.CallFunction("AdminChange", 1, GetTimeStamp(), GroupAdmin_GroupID, GroupAdmin_UserID); LogHelper.WriteLine($"群管理员变动事件 {GroupAdmin_UserID}{(GroupAdmin_Flag == 1 ? "升为" : "消去")}群{GroupAdmin_GroupID}的管理员"); break; case "ON_EVENT_GROUP_ADMINSYSNOTIFY": //加群请求事件 _eventRequest_AddGroup id=12 request.type = "GroupRequest"; request.json = ((JSONMessage)fn).MessageText; Dll.AddRequestToSave(request); long GroupRequest_GroupId, GroupRequest_InviteUin, GroupRequest_Who; string GroupRequest_WhoName, GroupRequest_GroupName, GroupRequest_InviteName; JToken GroupRequest_extdata = events["CurrentPacket"]["Data"]["EventData"]; GroupRequest_GroupId = Convert.ToInt64(GroupRequest_extdata["GroupId"].ToString()); GroupRequest_InviteUin = Convert.ToInt64(GroupRequest_extdata["InviteUin"].ToString()); GroupRequest_Who = Convert.ToInt64(GroupRequest_extdata["Who"].ToString()); GroupRequest_WhoName = GroupRequest_extdata["WhoName"].ToString(); GroupRequest_GroupName = GroupRequest_extdata["GroupName"].ToString(); GroupRequest_InviteName = GroupRequest_extdata["InviteName"].ToString(); pluginManagment.CallFunction("GroupAddRequest", 1, GetTimeStamp(), GroupRequest_GroupId, GroupRequest_Who, Marshal.StringToHGlobalAnsi(""), ""); LogHelper.WriteLine($"加群请求事件 {GroupRequest_WhoName}({GroupRequest_Who})" + $" {(GroupRequest_InviteUin != 0 ? $"受{GroupRequest_InviteName}({GroupRequest_InviteUin})邀请" : "")}" + $"加入群{GroupRequest_GroupName}({GroupRequest_GroupId})"); break; case "ON_EVENT_FRIEND_ADD": //好友请求事件 _eventRequest_AddFriend id=11 request.type = "FriendRequest"; request.json = ((JSONMessage)fn).MessageText; Dll.AddRequestToSave(request); string FriendRequest_Content; long FriendRequest_UserID; JToken FriendRequest_data = events["CurrentPacket"]["Data"]["EventData"]; FriendRequest_Content = FriendRequest_data["Content"].ToString(); FriendRequest_UserID = Convert.ToInt64(FriendRequest_data["UserID"].ToString()); pluginManagment.CallFunction("FriendRequest", 1, GetTimeStamp(), FriendRequest_UserID, Marshal.StringToHGlobalAnsi(FriendRequest_Content), ""); LogHelper.WriteLine($"好友请求事件 QQ号:{FriendRequest_UserID} 验证信息:{FriendRequest_Content}"); break; case "ON_EVENT_NOTIFY_PUSHADDFRD": //好友添加完成事件 _eventFriend_Add id=10 long FriendAdded_UserID; JToken FriendAdded_data = events["CurrentPacket"]["Data"]["EventData"]; FriendAdded_UserID = Convert.ToInt64(FriendAdded_data["UserID"].ToString()); pluginManagment.CallFunction("FriendAdded", 1, GetTimeStamp(), FriendAdded_UserID); LogHelper.WriteLine($"好友添加完成事件 与{FriendAdded_UserID}成为了好友"); break; case "ON_EVENT_GROUP_SHUT": //群禁言事件 _eventSystem_GroupBan id=8 long GroupShut_groupid, GroupShut_qqid, GroupShut_shuttime; JToken GroupShut_data = events["CurrentPacket"]["Data"]["EventData"]; GroupShut_groupid = Convert.ToInt64(GroupShut_data["GroupID"].ToString()); GroupShut_qqid = Convert.ToInt64(GroupShut_data["UserID"].ToString()); GroupShut_shuttime = Convert.ToInt64(GroupShut_data["ShutTime"].ToString()); pluginManagment.CallFunction("GroupBan", (GroupShut_shuttime == 0 ? 1 : 2), GetTimeStamp(), GroupShut_groupid, 0, GroupShut_qqid); LogHelper.WriteLine($"群 {GroupShut_groupid} UserID {GroupShut_qqid} 禁言时间 {GroupShut_shuttime}秒"); break; } }); task.Start(); }); // make the socket.io connection while (true) { Thread.Sleep(100); Application.DoEvents(); } }
public HttpResponseMessage GetDelivery(HttpRequestMessage request) { string strIncomingMessage = string.Empty; string element = string.Empty; StreamReader MyStreamReader = new StreamReader(request.Content.ReadAsStreamAsync().Result); strIncomingMessage = MyStreamReader.ReadToEnd(); XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = null; settings.DtdProcessing = DtdProcessing.Parse; XmlReader objXMLReader = XmlReader.Create(new StringReader(strIncomingMessage), settings); while (objXMLReader.Read()) { switch (objXMLReader.NodeType) { case XmlNodeType.Element: element = objXMLReader.Name; break; } if (!string.IsNullOrEmpty(element)) { break; } } switch (element.ToLower()) { case "smsdeliver": #region ReceiveSms ReceiveMessage receiveMessage = new ReceiveMessage(); while (objXMLReader.Read()) { switch (objXMLReader.NodeType) { case XmlNodeType.Element: element = objXMLReader.Name; if (element == "destAddrNbr") { receiveMessage.Receiver = objXMLReader.Value; } if (element == "origAddr") { receiveMessage.Sender = objXMLReader.Value; } if (element == "message") { receiveMessage.SmsText = objXMLReader.Value; } break; case XmlNodeType.Text: if (element == "destAddrNbr") { receiveMessage.Receiver = objXMLReader.Value; break; } if (element == "origAddr") { receiveMessage.Sender = objXMLReader.Value; break; } if (element == "message") { receiveMessage.SmsText = objXMLReader.Value; break; } break; case XmlNodeType.CDATA: if (element == "origAddr") { receiveMessage.Sender = objXMLReader.Value; } if (element == "message") { receiveMessage.SmsText = objXMLReader.Value; } break; } } if (strIncomingMessage.IndexOf("binary=") != -1) { int index = strIncomingMessage.IndexOf("binary=") + 8; string strLang = strIncomingMessage.Substring(index, 1); if (strLang == "t") { receiveMessage.SmsText = DecodeUCS2(receiveMessage.SmsText); receiveMessage.SmsText = Helper.PersianNumberToEnglish(receiveMessage.SmsText); } } receiveMessage.ReceiveDateTime = DateTime.Now; receiveMessage.SmsText = Helper.PersianNumberToEnglish(receiveMessage.SmsText); ManageQueue.SendMessage(Queues.ReceiveMessagesQueue, receiveMessage, receiveMessage.Sender); break; #endregion case "smsstatusnotification": #region DeliveryStatus Common.DeliveryMessage deliveryMessage = new Common.DeliveryMessage(); deliveryMessage.Agent = (int)SmsSenderAgentReference.RahyabRG; while (objXMLReader.Read()) { switch (objXMLReader.NodeType) { case XmlNodeType.Element: element = objXMLReader.Name; if (element == "batch") { deliveryMessage.BatchId = objXMLReader.GetAttribute("batchID").Split('+')[1]; } if (element == "sms") { deliveryMessage.ReturnId = objXMLReader.GetAttribute("smsId"); } if (element == "destAddr") { deliveryMessage.Mobile = objXMLReader.Value; } if (element == "status") { deliveryMessage.Status = GetDeliveryStatus(objXMLReader.Value); } if (element == "time") { deliveryMessage.Date = !string.IsNullOrEmpty(objXMLReader.Value) ? DateManager.GetChristianDateForDB(objXMLReader.Value) : DateTime.Now; } break; case XmlNodeType.CDATA: if (element == "destAddr") { deliveryMessage.Mobile = objXMLReader.Value; } break; case XmlNodeType.Text: if (element == "status") { deliveryMessage.Status = GetDeliveryStatus(objXMLReader.Value); } if (element == "time") { deliveryMessage.Date = !string.IsNullOrEmpty(objXMLReader.Value) ? DateTime.Parse(objXMLReader.Value.Replace('-', '/')) : DateTime.Now; } break; } } ManageQueue.SendMessage(Queues.SaveDelivery, deliveryMessage, deliveryMessage.ReturnId); break; #endregion } return(Request.CreateResponse(HttpStatusCode.OK)); }
private ReplyBaseMessage ExcuteMessageHandler(ReceiveMessage ReceiveMessage) { ReplyBaseMessage Reply = null; switch (ReceiveMessage.MsgType) { case "text": Reply = _MessageHandler.On_TextEvent(ReceiveMessage); break; case "image": Reply = _MessageHandler.On_ImageEvent(ReceiveMessage); break; case "voice": Reply = _MessageHandler.On_VoiceEvent(ReceiveMessage); break; case "video": Reply = _MessageHandler.On_VideoEvent(ReceiveMessage); break; case "shortvideo": Reply = _MessageHandler.On_ShortVideoEvent(ReceiveMessage); break; case "location": Reply = _MessageHandler.On_LocationEvent(ReceiveMessage); break; case "link": Reply = _MessageHandler.On_LinkEvent(ReceiveMessage); break; case "event": switch (ReceiveMessage.Event) { case "subscribe": Reply = _MessageHandler.On_SubscribeEvent(ReceiveMessage); break; case "unsubscribe": Reply = _MessageHandler.On_UnSubscribeEvent(ReceiveMessage); break; case "CLICK": Reply = _MessageHandler.On_CLICKEvent(ReceiveMessage); break; case "VIEW": Reply = _MessageHandler.On_VIEWEvent(ReceiveMessage); break; case "scancode_push": Reply = _MessageHandler.On_Scancode_pushEvent(ReceiveMessage); break; case "scancode_waitmsg": Reply = _MessageHandler.On_Scancode_waitmsgEvent(ReceiveMessage); break; case "pic_sysphoto": Reply = _MessageHandler.On_Pic_sysphotoEvent(ReceiveMessage); break; case "pic_photo_or_album": Reply = _MessageHandler.On_Pic_photo_or_albumEvent(ReceiveMessage); break; case "pic_weixin": Reply = _MessageHandler.On_Pic_weixinEvent(ReceiveMessage); break; case "location_select": Reply = _MessageHandler.On_Location_selectEvent(ReceiveMessage); break; default: Reply = _MessageHandler.On_DefaultEvent(ReceiveMessage); break; } break; default: Reply = _MessageHandler.On_DefaultEvent(ReceiveMessage); break; } if (Reply != null) { Reply.FromUserName = ReceiveMessage.ToUserName; Reply.ToUserName = ReceiveMessage.FromUserName; } return(Reply); }
public BaseSendMessage Reply(ReceiveMessage message) { BaseGlobalVariable.Current.BeginInvoke(new Action <ReceiveMessage>(SaveLocation), message); return(null); }
private void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { Model.User user; Telegram.Bot.Types.Message message = e.Message; if (message != null && message.Type == MessageType.Text) { IQueryable <Model.User> users = _db.Users.Where((u) => u.TelegramId == message.From.Id); if (users.Count() > 0) { user = users.FirstOrDefault(); user.UserName = message.From.Username; user.FirstName = message.From.FirstName; user.LastName = message.From.LastName; //lock (_lockObj) //{ // _uiContext.Send(async (obj) => // { // _db.Users.Update(user); // await _db.SaveChangesAsync(); // }, null); //} _uiContext.Send((obj) => { _db.Users.Update(user); _db.SaveChanges(); }, null); } else { user = new Model.User() { TelegramId = message.From.Id, UserName = message.From.Username, FirstName = message.From.FirstName, LastName = message.From.LastName, Date = DateTime.Now }; //lock (_lockObj) //{ // _uiContext.Send(async (obj) => // { // _db.Users.Add(user); // await _db.SaveChangesAsync(); // }, null); //} _uiContext.Send((obj) => { _db.Users.Add(user); _db.SaveChanges(); }, null); } //if (user == null) //{ // user = new Model.User() // { // TelegramId = message.From.Id, // UserName = message.From.Username, // FirstName = message.From.FirstName, // LastName = message.From.LastName, // Date = DateTime.Now // }; // await _db.Users.AddAsync(user); //} //else //{ // _db.Users.Update(user); //} Model.Message messageDb = new Model.Message() { UserId = user.Id, MessageId = message.MessageId, ChatId = message.Chat.Id, Text = message.Text, Date = message.Date }; //lock (_lockObj) //{ // _uiContext.Send(async (obj) => // { // _db.Messages.Add(messageDb); // await _db.SaveChangesAsync(); // }, null); //} _uiContext.Send((obj) => { _db.Messages.Add(messageDb); _db.SaveChanges(); }, null); ReceiveMessage?.Invoke(this, new object[] { message.Chat.Id, message.Text }); } }
public BaseSendMessage Reply(ReceiveMessage message) { return(RuleUtil.Execute(RuleUtil.ProcessCorpUser, true, message.FromUserName)); }
private void TeachCourseManageTabPage_Enter(object sender, EventArgs e) { dataTable本学期可教课程.Clear(); dataTable本学期已教课程.Clear(); dataTable以前教授课程.Clear(); dataTableBackground.Clear(); new Thread(new ThreadStart(InitializeSchoolTimeTable)).Start(); //读取本学期已教课程信息 try { //不好意思,我背叛了无产阶级.jpg,只有这个之前教的课完全不需要主键信息,因此只把这个表通过JSON传播 //裸传JSON的问题在于当select语句结果为空集时,传回的DataTable没有列头 //因此只对如下情况选择JSON: //(1)一定不会返回空集 //(2)返回空集时视为报错(比如找不到目标,用例直接终止或重新开始) #region 之前教的课 this.GetServerMessage("teach@previous," + this.textBoxLoginName.Text);//之前教的课 if (ReceiveMessage.IsJson()) { dataTable以前教授课程 = ReceiveMessage.ToDataTable(); dataGridView以前教授课程.DataSource = dataTable以前教授课程; dataGridView以前教授课程.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; foreach (DataGridViewColumn col in dataGridView以前教授课程.Columns) { col.ReadOnly = true; col.SortMode = DataGridViewColumnSortMode.NotSortable; } } else//选课结束 { throw new Exception("选课系统已关闭"); } #endregion 之前教的课 using (MySqlConnection conn = new MySqlConnection(mysqlConnectionString)) { #region 已教课程 conn.Open();//已教课程,直接选择section中id符合条件的即可 MySqlDataAdapter sda = new MySqlDataAdapter(String.Format("SELECT * FROM section where id = {0} and year = {1} and semester = '{2}';", textBoxLoginName.Text, CurrentYear, CurrentSemester), conn); sda.Fill(dataTable本学期已教课程); dataGridView本学期已教课程.DataSource = dataTable本学期已教课程; dataGridView本学期已教课程.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; foreach (DataGridViewColumn col in dataGridView本学期已教课程.Columns) { col.ReadOnly = true; col.SortMode = DataGridViewColumnSortMode.NotSortable; } #endregion 已教课程 #region 填充TimeTable foreach (DataRow sectionRow in dataTable本学期已教课程.Rows) { DataRow[] rows = dataTableTimeSlot.Select( String.Format("time_slot_id = '{0}'", sectionRow[6]));//取出已教课程的time_slot_id foreach (DataRow TimeSlotRow in rows) { int day = (int)Enum.Parse(typeof(星期枚举), (string)TimeSlotRow.ItemArray[1]); //得到课程表第二维坐标 int start_wk = Convert.ToInt32(TimeSlotRow.ItemArray[2]) - 1; //得到课程表第一维循环开始值 int end_wk = Convert.ToInt32(TimeSlotRow.ItemArray[3]) - 1; //得到课程表第一维循环结束值 int start_tm = Convert.ToInt32(TimeSlotRow.ItemArray[4]) - 1; //得到课程表第三维循环开始值 int end_tm = Convert.ToInt32(TimeSlotRow.ItemArray[5]) - 1; //得到课程表第三维循环结束值 for (int i = start_wk; i <= end_wk; i++) { for (int j = start_tm; j <= end_tm; j++) { TimeTable[i, day, j].SetCourseOccupied(); TimeTable[i, day, j].course_id = sectionRow[0].ToString(); TimeTable[i, day, j].sec_id = sectionRow[1].ToString(); TimeTable[i, day, j].semester = sectionRow[2].ToString(); TimeTable[i, day, j].year = sectionRow[3].ToString(); TimeTable[i, day, j].id = sectionRow[7].ToString(); } } } } #endregion 填充TimeTable #region 可教课程 sda = new MySqlDataAdapter(String.Format("select * from section where (course_id in (select course_id from can_teach where id = {0}) and isnull(id)) and year = {1} and semester = '{2}';", textBoxLoginName.Text, CurrentYear, CurrentSemester), conn); sda.Fill(dataTable本学期可教课程); dataGridView本学期可教课程.DataSource = dataTable本学期可教课程; dataGridView本学期可教课程.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; foreach (DataGridViewColumn col in dataGridView本学期可教课程.Columns) { col.ReadOnly = true; col.SortMode = DataGridViewColumnSortMode.NotSortable; } #endregion 可教课程 #region 后台课程 //为已教和可教课程的并集,用于提交数据库时使用 sda = new MySqlDataAdapter(String.Format("select * from section where (course_id in " + "(select course_id from can_teach where id = {0}) " + "and isnull(id)) and year = {1} and semester = '{2}' " + "union SELECT * FROM section where id = {0}" + " and year = {1} and semester = '{2}';", textBoxLoginName.Text, CurrentYear, CurrentSemester), conn); sda.Fill(dataTableBackground); dataTableBackground.PrimaryKey = new DataColumn[] { dataTableBackground.Columns["course_id"], dataTableBackground.Columns["sec_id"], dataTableBackground.Columns["semester"], dataTableBackground.Columns["year"] }; #endregion 后台课程 if (dataTableBackground.Rows.Count == 0) { throw new Exception("没有可选课程"); } sda.Dispose(); conn.Close(); } } catch (MySqlException ex) { MessageBox.Show("无法进入课程目录系统", "严重错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "严重错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public virtual ReplyBaseMessage On_UnSubscribeEvent(ReceiveMessage ReceiveMessage) { return(null); }
public static void AddRecevieGridControlItem(ReceiveMessage receviceMessage) { RecMsgDateSource.Add(receviceMessage); }
public async Task SendMessageReadAsync(ReceiveMessage receiveMessage) { var sendMessage = new SendMessage(receiveMessage.MessageId, receiveMessage.SenderId, UserId, receiveMessage.ReceiverType, MessageType.readStatusChange, ""); await WebSocketClient.SendMassage(Newtonsoft.Json.JsonConvert.SerializeObject(sendMessage)); }
public void OnAfterMessage(ReceiveMessage msg, ResponseMessage repMsg) { LogHelper.Log(msg.ToString(), repMsg.ToString()); }
private Task Publish(ReceiveMessage message) { m_publisher.Send(Translate(message)); return(Task.FromResult(message)); }
/// <summary> /// Event procedure: Called when a message from server is received. /// </summary> /// <param name="sender">Sender of the event</param> /// <param name="e">Event arguments containing the message content</param> private void OnMessage(object sender, MessageEventArgs e) { ReceiveMessage?.Invoke(e.RawData); }
public Protocol(ReceiveMessage rmsg) { _rmsg = rmsg; }
public BaseSendMessage Reply(ReceiveMessage message) { string content = Expression.Execute(Content, message); return(new TextSendMessage(message, content)); }
public override bool Match(ReceiveMessage message) { return(true); }
internal ServiceSendMessage(ReceiveMessage message) : this(message.FromUserName) { }