benjiPosted under Java.

Jammer is a quick 1hr project that clones IRC discussion on Yammer.

Yammer is a social network for internal use by organisations. It’s a great way to broadcast information and have asynchronous discussion, and simple enough for anyone to use.

Developers already have a great forum for asynchronous discussion – IRC. IRC is great for developers to use, but most irc client software is not particularly user friendly. Unless you idle in the channel all the time you will miss scrollback.

I haven’t used Yammer for some time so I thought I’d remind myself how to use the API by building a bridge between IRC and Yammer. Here’s the result of just over an hour’s work:

Jammer is a quick proof of concept IRC bot that will sit in an IRC channel and clone messages from authorised users to a specified group in Yammer. It lets you keep a record and publish discussion for others in the organisation to see.

The code is on github at https://github.com/benjiman/jammer

It might be useful to someone else as a tutorial for getting started with the Yammer API and how to authenticate with oauth. There are only 3 short Java files.

Jammer

Here’s how you run Jammer:

 $ git clone https://github.com/benjiman/jammer.github
 $ cd jammer
 $ mvn compile
 $ mvn assembly:single
 $ java -jar ./target/jammer-0.0.1-SNAPSHOT-jar-with-dependencies.jar <irc server (in quotes)> <channel> <yammer group id> <yammer client id> <yammer client secret>

Then in your IRC client:

 /msg jammer auth

Click the link provided, approve the app, and copy the authentication token back with

 /msg jammer auth <token>

Now simply join the channel the bot is in and start talking and all messages will be cross-posted to Yammer.

You can get a client id and client secret in Yammer by registering a new application.

You can get a group id by visiting the group on Yammer.com and copying the id at the end of the URL

For more information read

The Yammer API documentation
There’s a tutorial for PircBot (Easily write IRC bots in Java)

Leave a Reply

  • (will not be published)