Siili Solutions

How to build a visual recognition bot in a few simple steps

IBM invited Siili to participate in a half-day workshop where we were going to create a Slack Bot in their Bluemix cloud platform. I had never done anything with either of those, no slack bots, no Bluemix and no node-RED, so my expectations were high and I was looking forward to it a lot!

What is Bluemix?

Bluemix is IBM's cloud platform, similar to Amazon Web Services. It has a lot of out-of-the-box features like machine learning etc. Node-RED is a tool for wiring together hardware devices, APIs and online services and it is not tied to Bluemix.

First I had to create myself a Bluemix account (daa!) and get started. The Bluemix dashboard is simple and easy on the eyes. There are plenty of boilerplate projects to choose from to help you fire up your project. 

Bluemix automatically creates the CI pipeline for the chosen boilerplate. With node-RED all I had to do was to make sure package.json had all the required dependencies, and since it didn’t, I just added the ones I needed. Build and deploy and my node-RED application (node.js) for my bot was up and running. The dependencies I had added (Slack Bot In and Slack Bot Out) were there for me to wire.




My bot was connected to Slack by dedicated nodes with a token created in my chosen slack account. And I had all the Bluemix goodies available (like Watson's visual recognition).

Function nodes are programmed with javascript. Node-RED has pretty good tools for debugging your flow, like "inject" and "debug" nodes that you can wire in before or after any other node. Pro-tip: if your debugging dies, go to CI and re-deploy your node-RED application.



Below you can see a bot using Watson visual recognition in action.


Well done Mr. Watson!


We are technology independent and have partnered with all major technology vendors such as IBM, Microsoft, Amazon and Oracle. In case you need a bot or any other type of digital solution built on top of these fine platforms, we’re more than happy to help.