Wednesday, December 2, 2009

XMPP Bots - XMPPGuru

xmppguru@appspot.com

XMPP Provides easy and clean ways to build XMPP Bots, as I showed on the previous post, we can use Google AppEngine to create 24h online, zero-maintenance Bots.


One interesting Bot is a Guru One, the main objective of this Bot is to clarify topics, answer general knowledge questions and retrieve hints for general opinion.
You can add it to your GTalk's / Jabber Contacts: xmppguru@appspot.com


Examples of general knowledge:
Question: What is Aerosmith?
xmppguru: Aerosmith is an American hard rock band, sometimes referred to as "The Bad Boys from Boston" and "America's Greatest Rock and Roll Band".

Question: What is an atomic bomb?
xmppguru: nuclear weapon: an explosive device whose destructive power is due to the uncontrollable release of energy from the fission of heavy nuclei, usually uranium-235 or plutonium-239, by neutrons sustaining a rapid chain reaction

Question:  Who invented the harpoon?
xmppguru: Endangered Species question: Who invented the harpoon cannon? Sven (or Svend) Foyn (1809-1894) was a whaler born in Tønsberg in southeast Norway. In 1856, he invented the bow ... 

Examples of general opinion:
Question: What is a good song?
xmppguru: What is a good song to "give" someone who you are …


Question: Do you trust god?
xmppguru: The Bible tells us to have faith: (Hebrews 11:6 NIV) And without faith it is impossible to please God, because anyone who comes to him must believe that he exists and that he ...


The Bot is not meant to have conscience neither deep lexical interpretation, the goal is to answer your question when possible, something directly with a straight answer, but something also vague hints.
For unknown answers the principe is the same of Horoscope, but in a scientific way. 
the best way of discovering how it works, purpose and functionality is by testing it.

Sometimes you will be surprised even asking by your full name. In the same way you will be surprised by crappy answers. Enjoy!

Sunday, November 29, 2009

Google App Engine XMPP Services Example



Google App Engine released the XMPP Services a while ago. The service started very basic and bad, but since then, it is improving a lot and have potential to be really worthy to build XMPP Services over it.
Unfortunately currently you might only be able to write bots. Which is not that bad specially for developers that are starting with XMPP and App Engine.

The documentation is not that good so far, but it was enough to create an EchoBot Demo App, you can download the full source here.
To use it, just explode the folder, make sure you have Google App Engine SDK configured, set your application ID, and deploy.
I strongly recommend to use Eclipse AppEngine Plugin for those tasks.

Quick Tutorial

Receiving Messages are handled by your application like an HTTP Post Request:
@SuppressWarnings("serial")
public class XmppbotServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException {


Parsing Received Messages is piece of cake. AppEngine API is handy in that sense:
XMPPService xmpp = XMPPServiceFactory.getXMPPService();
        Message message = xmpp.parseMessage(req);


Creating a Response Message is also very simple:
JID fromJid = message.getFromJid();
String body = message.getBody();

// Create an Echo Message
Message response = new MessageBuilder().withMessageType(
message.getMessageType()).withBody(body)
.withRecipientJids(fromJid).build();


Now we send it back, without any specialist XMPP Knowledge required.
boolean messageSent = false;
SendResponse status = xmpp.sendMessage(response);
messageSent = (status.getStatusMap().get(fromJid) == SendResponse.Status.SUCCESS);

if (!messageSent) {
// An Error Occurred
}


Now you can create an XMPP Bot with just a few line of simple Java code.
Remarks:

  • Your Bot will auto accept every XMPP contact add request, which is quite handy too. To test your Bot, just open your XMPP Account in your preferred Client. And add the contact: YourAppName@appspotchat.com
  • It will auto-accept your request, and if your service is running, it will be shown as available.
  • You can also use aliases like: Whatever@YourAppName.appspotchat.com

Friday, November 20, 2009

Erlang Version of Jingle Nodes Services is Working!

We are moving very fast with the Erlang version of the Jingle Nodes Services API, after 2 weeks of finishing the Pure Java Version, with great help from contributors, we have a working Erlang Version.
I invite you to check the code at: Jingle Nodes Source
It is based on the excellent exmpp library which besides being rich featured, is also pretty straight forward to use and reliable.

The current version can provide fully working relay channels, but still lacking some features:

  • Detect Inactive Channels
  • Purge Inactive Channels
  • Tracker Services Provider
And indeed we have some bugs to be catch.

Contributions are really welcome!


How to Contribute?
Check the current opened issues: Jingle Node Issues
Send me an email with your intentions or if you wanna go one step ahead, patches are also accepted.