コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        /// <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);
        }