public bool Invoke(IMessage obj) { EventSessionInfo sessionInfo = obj as EventSessionInfo; bool br = false; if (sessionInfo == null) { return(false); } try { PartyLeftInfo partyLeftInfo = sessionInfo.ChatTranscript.ChatEventList.GetAsPartyLeftInfo( sessionInfo.ChatTranscript.ChatEventList.Count - 1); if (partyLeftInfo != null) { br = true; } } catch (Exception ex) { ChatLog.GetInstance().LogException(ex); } return(br); }
/// <summary> /// 添加消息到聊天室消息集合 /// </summary> /// <param name="item"></param> protected void AddMessage(object item, string StartAt) { if (item == null) { return; } ChatMessage msg = new ChatMessage(); msg.ReceiverID = this.UserID; msg.MessageType = MessageType.Alert; msg.CreateData = DateTime.Now; msg.UserID = "system"; msg.NickName = "系统"; #region switch message type ChatParty party = null; string typeName = item.GetType().Name; switch (typeName) { case "MessageInfoData": // 消息事件 MessageInfo chatInfo = (MessageInfo)item; msg.TimeShift = chatInfo.TimeShift; if (chatInfo.MessageText != null) { msg.Message = chatInfo.MessageText.Text; } msg.UserID = chatInfo.UserId; party = this.Room.Partys.Find(user => user.UserID == msg.UserID); if (party != null) { msg.NickName = party.DisplayName; if (party.UserType == UserType.Agent) { msg.MessageType = MessageType.AgentMessage; } else if (party.UserType == UserType.Client) { msg.MessageType = MessageType.ClientMessage; } MessageFilter(party, msg); } break; case "NewPartyInfoData": // 新聊天事件 NewPartyInfo joinInfo = (NewPartyInfo)item; msg.TimeShift = joinInfo.TimeShift; if (joinInfo.MessageText != null) { msg.Message = joinInfo.MessageText.Text; } this.InitRoom(); this.AddParty(joinInfo); break; //case "NoticeInfoData": // 通知事件 8.0以前版本不支持通知 // NoticeInfo noticeInfo = (NoticeInfo)item; // msg.Message = noticeInfo.NoticeText.Text; // msg.MessageType = MessageType.Notice; // break; case "PartyLeftInfoData": // 离开事件 PartyLeftInfo leftInfo = (PartyLeftInfo)item; msg.TimeShift = leftInfo.TimeShift; if (leftInfo.MessageText != null) { msg.Message = leftInfo.MessageText.Text; } party = this.Room.GetUser(leftInfo.UserId); PartyLeftFilter(msg, party); this.RemoveParty(leftInfo.UserId); break; } #endregion if (!string.IsNullOrEmpty(StartAt)) { msg.StartAt = DateTime.Parse(StartAt).AddSeconds(msg.TimeShift); } AfterReceivedMessage(typeName, msg); }