
Apart from occasionally contributing articles to Crowdbotics, I also run Coinmonks— a Blockchain job portal and a Medium publication. We have a Facebook page where people frequently ping us for help with blockchain jobs. When I learned about the new Facebook Messenger scaffold on the Crowdbotics App Builder I thought, let’s build a bot for my company page that will automatically send jobs to those souls who are seeking them .😆 I hopped on the Crowdbotics beta App Builder and started building a bot for our Coinmonks Facebook page.
When it comes to building a new app, I love using Crowdbotics’ scaffolding. It makes my life so much easier. I’ve used the Crowdbotics App Builder to help me build several different new apps faster and cleaner than I otherwise would have been able to.
I explained this on my previous blog where I built a small cryptocurrency portfolio tracker using Crowdbotics. I’ll recap briefly:
With the Crowdbotics App Builder, you can build, deploy, and scale applications with high-quality app templates. (If you are not a developer, you can also hire domain-expert developers directly through the Crowdbotics app. Essentially, Crowdbotics takes care of the initial setup and devops that can be quite time-consuming, and sometimes tricky to get right — especially for app types and frameworks you are not particularly familiar with.
Scaffold your own Facebook Messenger bot in 30 seconds using the Crowdbotics App Builder
When you use the Facebook Messenger Bot scaffold on Crowdbotics, it gives you two things:
Prerequisite
While creating your scaffold with the Crowdbotics App Builder, it will ask for Facebook verification token (decided by you), Facebook Page token, and Wit.ai Token. The Wit.ai Team
How to get Facebook Page token?
You can read here about setting a Facebook app and getting “page token” for your app. I will add steps for simplicity If you get confused read this guide.
Getting a Webhook
Facebook send events to your application using webbooks. In this step, you will see how the Crowdbotics really saves you time. So, when you create a scaffold, Crowdbotics adds a new repository which you will clone for developing your application. This is my repository which Crwodbotics automatically created for me.
Currently, this scaffold is in Python, though, I know Crowdbotics is planing to add more languages.
When you add a Webhook on messenger platform, it sends a verify token with a challenge
string, you need to return this string back, that's how Facebook checks that Webhook is alive and valid.
The Crowdbotics scaffold already has code for this.
@app.get('/webhook')
def messenger_webhook():
"""
A webhook to return a challenge
"""
verify_token = request.query.get('hub.verify_token')
# check whether the verify tokens match
if verify_token == FB_VERIFY_TOKEN:
# respond with the challenge to confirm
challenge = request.query.get('hub.challenge')
return challenge
else:
return 'Invalid Request or Verification Token'
Running Facebook messenger Scaffold
Crowdbotics Messenger scaffold uses Bottle, A lightweight WSGI micro web-framework for Python. To run scaffold, you need to create a virtual environment and install dependencies. You can use below commands for that. Before that, you need to install [pipenv](https://pypi.org/project/pipenv/)
. Let’s run our scaffold.
pipenv --python /usr/bin/python3.5
pipenv install
python messenger.py 8080
Note: I am using ubuntu.
You should add all the tokens (WIT_TOKEN
, FB_PAGE_TOKEN
, FB_VERIFY_TOKEN
) as environment variables or for testing purpose add them directly in the messenger.py
and hello.py
. 😉 (Not a secure practice).
Note- FB_VERIFY_TOKEN
is “verify token” which you decide, In my case, it was simple coinmonks. This “verify token” will be used while adding our webhook on Facebook app console.
Using Ngrok
Webhooks must have a valid SSL certificate, signed by a certificate authority and won’t work on your localhost, so we will use [ngrok](https://ngrok.com/)
as a proxy to expose our local host for facebook webhook URL. Simply install ngrok
and run below command.
./ngrok http 8080
This will give us an Https URL which we will enter while adding our webhook.
Adding Webhook to Facebook
Now, we need to add this webhook to Facebook's app console. Go to your app and add this webhook, and subscribe for messages
and messaging_postback
events for your facebook page. While adding webhook, facebook send a get request to our app to verify our webhook.
Note: Our webhook is under YOUR_NGROK_URL/webhook
.
Interacting with our Bot
If you were able to do above setup, now we are ready to interact with our messenger bot. Just send a message from messenger app or facebook desktop to your page. On ngrok console, you will be able to see that facebook sends a post request your app. Crowdbotics scaffold already has code to handle the basic interaction too 😃.
Adding Coinmonks Jobs API
I didn’t need Wit.ai, so I didn’t use it, rather, I converted Coinmomks Jobs RSS feed into JSON and used it to send jobs to through messenger. I wrote a small NodeJs app for this, as I am having a hard time to find a good RSS to JSON library. (If you have a recommendation, let me know.)
You can check that Node app here, it’s hosted on Glitch.
Testing Our Messenger Bot
The bot is live and you can use it for getting blockchains related jobs.
To test our Bot check here.
Remember you need to use “job” Keyword to get the results, so you can just type “job” and you will get results from Coinmonks Jobs portal.
Deploying our Bot on Heroku
Crowdbotics helps you to deploy you app on Heroku. To deploy the messenger I added a new file with the name **Procfile**
(No extension) and add below ths line in the file.
web: python messenger.py $PORT
Once deployed you should change your webhook URL.
Facebook messenger platform provides a rich set of APIs. Here are some important features:
@Facebook’s integration of different technologies on messenger platform enables developers to build highly engaging applications and bots.
Building Bots is fun. If you are a developer, you should check out the Facebook messenger platform. Using Crowdbotics will make your life easier too 😃. The Crowdbotics App Builder is a very helpful free tool for developers.
Facebook is giving a lot of functionality to pages which can drive sales and marketing efforts. Every business should have a Facebook page and If you already have one, then you can engage your users/customers using messenger bots. There are thousands of Apps already integrate to Facebook messenger platform.
Facebook has more than 22 billion average monthly views and more than 2.27 Billion monthly active users. In the United States, Facebook Messenger is the most popular mobile messaging app in terms of number of users. With 103.55 million monthly active U.S. users [February 2018]. If you are business, you should leverage Facebook Messenger platform to reach a wider audience and engage your customer or get new customers.
So what are you waiting for? Build a messenger bot!
If you have questions or feedback on my Facebook messenger app, drop them in the comments.
Thanks!
Originally published:
January 30, 2019