public bool Invoke(IMessage obj) { EventSessionInfo sessionInfo = obj as EventSessionInfo; bool br = false; if (sessionInfo == null) { return(false); } try { NewPartyInfo newPartyInfo = sessionInfo.ChatTranscript.ChatEventList.GetAsNewPartyInfo( sessionInfo.ChatTranscript.ChatEventList.Count - 1); if (newPartyInfo != null) { br = true; } } catch (Exception ex) { ChatLog.GetInstance().LogException(ex); } return(br); }
private void AddParty(NewPartyInfo info) { if (info == null || info.UserInfo == null) { return; } // 人员 if (!string.IsNullOrEmpty(info.UserId)) { UserInfo user = info.UserInfo; ChatParty party = this.Room.GetUser(info.UserId); if (party == null) { party = new ChatParty(user.UserType); if (user.UserType == UserType.Agent) { party = new LenovoAgent(); } this.Room.Partys.Add(party); } party.UserID = info.UserId; party.DisplayName = user.UserNickname; if (party.UserType == UserType.Agent && this.UserID == party.UserID) { this.Room.Messages.AddMessage(this.UserID, "system", "系统", "欢迎您加入聊天室。", MessageType.Alert); } // 新聊天 if (party.UserType == UserType.Client) { ChatLog.GetInstance().LogEvent(ChatEvent.NewClient, party.DisplayName); } ChatLog.GetInstance().LogEvent(ChatEvent.PartyJoin, party.DisplayName); } }
/// <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); }