Shannon here wearing my communication’s hat today. One of the big goals recently has been the streamlining of communication both within the foundation but as well as communicating with the community. Since that time I have been working to pull many of our channels of communication into one location and working with David and Adam to make the channels we do have be easier to search and consume. I’m releasing some of those tools now and want to take a few minutes to explain what we are currently doing and my goals moving forward.
In a post by David he mentioned a program developed I think for GitHub called HUBOT which was an automated interactive agent that a team can communicate with to do various tasks, like answering queries or relaying messages. The project is widely used and respected. I back-burnered the addition of this software into our internal stack early on. About a month and a half ago I was reading an article about the executive who created flickr as an internal project for a video game project that eventually went belly up (Read more here). The article went on to talk about a new piece of software “Slack” that his current team developed to handle internal communication and I was intrigued. I promptly installed and started trying to understand the pull power of what it could do.
Slack on the surface looks much like a web based IRC implementation, complete with rooms prefixed with a # (#general, #random) that are easily created by any user using the system. But looking a little deeper at the concept of integration, the true of power of slack slowly starts to creep in. At it’s heart the Slack environment encourages adding integrations to your system. An integration is essentially an API connected to the slack infrastructure.
They offer roughly 60 connections to various API’s, some of which open up other APi lists. They also offer simple web hooks and event based scripting. This opens the door for nearly unlimited combination of actions that can be scripted. You can have external forces or events trigger things to happen in one or all of your slack “rooms” you can have events that happen in a slack room trigger something to happen externally. The options are really quite amazing. But as with most things that have such a powerful capability, it’s up to the user to decide how best to harness this.
Quickly an example of a task that I was able to automate in a matter of minutes without writing any code is as follows: The reminding of team members, publicly about their blog posting schedule.
First I created a calendar specifically to keep events that correlate with each member’s blog posting day.
I created an event that fires a few minute before each event.
when this event fires it triggers an HTTP POST call that takes the details of the calendar event and passes the values into the “slackbot” api
Slackbot APi takes the values and sends a message to the #general channel: This automation will run until I turn it off and took literally minutes to create. This was sort of a whimsical automation because I could and I needed a way to gently remind people of what’s being published today and by who.
Part of our goal of transparency was making our Skype group chats more easily accessible, stage 1 of this is complete and we now have 4 skype channels that are logged and the messages pumped into a slack channel representation of the skype group. Stage 2 will be to relay these same messages to http://mastercointalk.org to allow people without skype to be able to see what’s going happening. I’ll issue another update when the skype=>forum integration is complete. Here is the github repository that contains the application I wrote to help log the Skype group chats. It requires only your slack api endpoint and api key along with the groups you are interested in logging and the matching slack channel.
Another feature we are working on is a singular publishing point from within slack. We created plugins for both Facebook and Twitter that interface with slack through a project very similar to HUBOT called MMBOT, a C# port of HUBOT, I’m at heart a .Net and Java developer so I jumped at a C# bot that I can use to tie together the missing pieces.
Here are the plugins I wrote to facilitate the publishing of tweets and facebook posts. This particular integration uses the Zapier API which brings with it over 80 additional API connections that can be consumed using slack, hubot, mmbot, etc.