package jadex.bdi.planlib.messaging;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Message;
import jadex.bdi.runtime.Plan;
/**
* Send an instant message.
*/
public class SendXMPPPlan extends Plan
{
/**
* The body method is called on the
* instatiated plan instance from the scheduler.
*/
public void body()
{
// Account settings.
IMAccount account = (IMAccount)getParameter("account").getValue();
if(account==null)
fail();
// Message settings.
String content = (String)getParameter("content").getValue();
String[] receivers = (String[])getParameterSet("receivers").getValues();
try
{
XMPPConnection connection = new XMPPConnection("jabber.ccc.de");
connection.connect();
connection.login(account.getId(), account.getPassword());
for(int i=0; i<receivers.length; i++)
{
Chat chat = connection.getChatManager().createChat(receivers[i], new MessageListener()
{
public void processMessage(Chat chat, Message message)
{
System.out.println("Received message: " + message);
}
});
chat.sendMessage(content);
}
connection.disconnect();
}
catch(Exception e)
{
e.printStackTrace();
fail(e);
}
}
/**
* Main for testing.
* /
public static void main(String[] args)
{
try
{
XMPPConnection connection = new XMPPConnection("jabber.ccc.de");
connection.connect();
connection.login("jadexagent", "jadexagent");
Chat chat = connection.getChatManager().createChat("larslars@jabber.ccc.de", new MessageListener()
{
public void processMessage(Chat chat, Message message)
{
System.out.println("Received message: " + message);
}
});
chat.sendMessage("hello");
connection.disconnect();
}
catch(Exception e)
{
e.printStackTrace();
}
}*/
}