Exemplo n.º 1
0
        public void listen(ChatMessage message)
        {
            string response;

            //New Chat Sender?
            if (message.Sender.Owner != null)
            {
                if (!Users.ContainsKey(message.Sender.Owner.Profile.Name))
                {
                    Users.Add(message.Sender.Owner.Profile.Name, new User(message.Sender.Owner.Profile.Name, this));
                }
                response = currentState.getAIMLResponse(message.Content.Message, Users[message.Sender.Owner.Profile.Name], this);
            }
            else
            {
                if (!Users.ContainsKey(message.Sender.Username))
                {
                    Users.Add(message.Sender.Username, new User(message.Sender.Username, this));
                }
                response = currentState.getAIMLResponse(message.Content.Message, Users[message.Sender.Username], this);
            }

            if (!response.Equals(""))
            {
                lock (OutgoingMessage)
                {
                    OutgoingMessage.Enqueue(new ChatMessage(message.Source, message.Recipient, message.Sender, new TextMessage(response)));
                }
            }
        }
Exemplo n.º 2
0
        public override void write(LogMessage message)
        {
            List <ChatMessage> messages = SystemLogFilter.filter(message);

            lock (OutgoingMessage)
            {
                foreach (ChatMessage m in messages)
                {
                    OutgoingMessage.Enqueue(m);
                }
            }
        }
Exemplo n.º 3
0
        public void receive(ChatMessage message)
        {
            if (Status != BotStatus.Sleep)
            {
                string response;

                //New Chat Sender?
                if (message.Sender.Owner != null)
                {
                    if (!Users.ContainsKey(message.Sender.Owner.Profile.Name))
                    {
                        Users.Add(message.Sender.Owner.Profile.Name, new User(message.Sender.Owner.Profile.Name, this));
                    }
                    response = currentState.getAIMLResponse(message.Content.Message, Users[message.Sender.Owner.Profile.Name], this);
                }
                else
                {
                    if (!Users.ContainsKey(message.Sender.Username))
                    {
                        Users.Add(message.Sender.Username, new User(message.Sender.Username, this));
                    }
                    response = currentState.getAIMLResponse(message.Content.Message, Users[message.Sender.Username], this);
                }

                if (!response.Equals(""))
                {
                    lock (OutgoingMessage)
                    {
                        OutgoingMessage.Enqueue(new ChatMessage(message.Source, message.Recipient, message.Sender, new TextMessage(response)));
                    }
                }

                if (!(currentState is AvailableState))
                {
                    nextState = BotState.StateFactory.getBotState("Available", this);
                }
                else
                {
                    ((AvailableState)currentState).resetAttentionCounter();
                }
            }
        }
Exemplo n.º 4
0
        public void receive(ChatMessage message)
        {
            if (message.Content.Message.ToLower().IndexOf("what time is it") >= 0)
            {
                lock (OutgoingMessage)
                {
                    OutgoingMessage.Enqueue(new ChatMessage(message.Source, message.Recipient, message.Sender, new TextMessage("It is now " + DateTime.Now.ToString("h:mm tt") + ".")));
                }
            }
            else if (message.Content.Message.ToLower().IndexOf("what date is today") >= 0)
            {
                lock (OutgoingMessage)
                {
                    OutgoingMessage.Enqueue(new ChatMessage(message.Source, message.Recipient, message.Sender, new TextMessage("Today is " + DateTime.Today.ToString("dddd, MMMM dd, yyyy") + ".")));
                }
            }
            else if (message.Content is CommandMessage)
            {
                ICommand receivedCommand = ((CommandMessage)message.Content).Command;

                if (receivedCommand is ChatCommand)
                {
                    if (!chatHandler.execute(receivedCommand))
                    {
                        lock (OutgoingMessage)
                        {
                            OutgoingMessage.Enqueue(new ChatMessage(message.Source, message.Recipient, message.Sender, new TextMessage("The received command can not be successfully executed.")));
                        }
                    }
                }
                else
                {
                    if (!CommandHandler.enqueue(receivedCommand))
                    {
                        lock (OutgoingMessage)
                        {
                            OutgoingMessage.Enqueue(new ChatMessage(message.Source, message.Recipient, message.Sender, new TextMessage("The received command is not supported.")));
                        }
                    }
                }
            }
        }