You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
1.9 KiB
Python

#TODO Improve this class
'''
Basic agent for Web40
'''
import os
import sys
import time
sys.path.append('..')
import spade
from spade import Behaviour
from xmpp import Message,Protocol
host = "127.0.0.1"
tags=["presence","message","Iq"]
class ConvBehav(spade.Behaviour.Behaviour):
def __init__(self):
spade.Behaviour.Behaviour.__init__(self)
self._state = 0
def _process(self):
msg = self._receive(True)
print "--- Message Received: %s" %msg
class MainBehav(spade.Behaviour.Behaviour):
"""
#TODO
add description
"""
def _process(self):
msg = self._receive(True)
print "+Message received %s" % msg
sndr = msg.getFrom().getStripped()
if(not self.myAgent._conversations.has_key(sndr)):
print "***Adding handler"
templ=Behaviour.BehaviourTemplate(None)
for i in tags:
mess = Protocol(i)
mess.setFrom(sndr)
tmp = Behaviour.MessageTemplate(mess,regex=True)
templ= templ or tmp
b = ConvBehav()
self.myAgent._conversations[sndr]=b
self.myAgent.addBehaviour(b,templ)
print "***Added "
#print str(msg)
class Web40Agent(spade.Agent.Agent):
def __init__(self, agentjid, password, port=5222, debug=[], p2p=False):
spade.Agent.Agent.__init__(self, agentjid, password, port=port, debug=debug, p2p=p2p)
self._conversations = {}
def _setup(self):
mb = MainBehav()
self.setDefaultBehaviour(mb)
print "Agent Web40 started"
a = Web40Agent("a@"+host,"secret")
time.sleep(1)
#a.setDebugToScreen()
a.start()
alive = True
import time
while alive:
try:
time.sleep(1)
except KeyboardInterrupt:
alive=False
a.stop()
sys.exit(0)