It’s the summer of bots. And its hot.
We’re super excited to announce Introbot for Slack. All Slack teams that install Intro will now get Introbot. If you already have Intro installed for your Slack, then you already have Introbot. Just look for @introbot in your Direct Messages tray and say ‘hi’. If you don’t have Intro, what are you waiting for? Get Intro for your Slack here.
Feel free to do the robot dance.
What can Introbot do?
Introbot helps you reach people and companies through your team’s network. It essentially answers the question — “does someone know someone at X?”
Here are some things you can ask @introbot:
“Find people by company Uber location San Francisco”
“Find people by skill Java location New York”
Introbot shows if you have common connections within your team so you can DM teammates and ask for an intro.
You can also learn more about your teammates from Introbot. You know TFW someone is typing and you have no idea who that person is. Just ask @introbot,
“Find person @username”
Tip: best to do username lookups in a DM to Introbot 🕵🏻
Another Tip: look up your own username and fix your profile on Intro before your teammates look you up 💁🏽
You can even invite Introbot to any Slack channel (like this — /invite @introbot #general) and Introbot will welcome new team members when they join that channel.
What’s under the hood?
Intro works by creating a shared, private network for each team by consolidating team members’ individual contacts from various sources into a single shared network.
The core of our product is a data engine that collects, aggregates, and loads data from various sources. It stores millions of person and company records in a database, continuously enriches them with additional profile information, and intelligently filters/de-duplicates/merges them. The data engine powers the API service which both Introbot and our Web app can query for simple lookups or complex searches involving multiple filters and logics.
As super early developers on the Slack platform, we have experimented with both / commands and Real Time Messaging (RTM) APIs to build Introbot. We first built / commands for simple queries with /intro-person and /intro-company. This was ok but our users didn’t find it intuitive.
We set out to build something more user friendly. At the time, RTM was the only way to build a conversational bot. Unfortunately it was much more than we bargained for. RTM is like a firehose that shoots out everything, much of it irrelevant for Introbot. Another issue with RTM API was Introbot had to be connected to every Slack group at all times. We ended up creating an in-house bot infrastructure to scale out our bots to thousands, hundred of thousands of teams.
Slack Events API to the rescue
Last week, Slack introduced their new Events API and it’s exactly what we’ve been waiting for! Instead of us connecting and listening to all activities, we can selectively ask Slack to notify us of events that we are interested in.
In less than 3 days we redesigned and completely rewrote Introbot with Events API.
In the new Introbot architecture, we register a web endpoint with Slack. When Slack notifies us, we create a job for Introbot in our work queue. Asynchronously, bot worker then picks up a job and responds to an event request accordingly. Any bot worker can process a job for any Slack team. Scaler is another process that runs to dynamically spawn more bot workers based on the load (the number of jobs, and not necessarily the number of Slack teams).
Moving to Slack Events API and redesigning of the bot architecture has worked very well so far. In fact, we are currently experimenting with Facebook Messenger and are able to leverage the same backend for building a Messenger bot. Here is a quick preview of our Introbot on Facebook Messenger, which is coming very soon…
Sounds interesting? Get Introbot for your Slack and send us feedback!