How to test Messenger Bots offline? Local webhooks

Piotrek picture Piotrek · Apr 18, 2016 · Viewed 9.6k times · Source

I'm starting with Messenger Platform API. I want to make simple Messenger Chatbot. Here is tutorial I follow.

As you see, to start I need to set up webhook (step 2). So basically: web server that provides some REST API and posts some data back. The problem is: facebook requires me to provide some real, existing app URL that works currently in internet. So, do I need to upload my code to server each time I change something? Can I somehow test it locally (on my localhost)? How can I test behavior of my bot?

Answer

mguida picture mguida · Apr 19, 2016

There's a few services you can use to expose your webserver running on localhost to the public. Two options are localtunnel and ngrok.

An example (from localtunnel's quickstart) of how you might do this, given that your webserver is running at http://localhost:8000/ would look like this:

Install localtunnel from npm:

npm install -g localtunnel

Request a tunnel to your local server:

lt --port 8000

This will generate a link, of the form https://foo.localtunnel.me you can use to access your localhost from the web. One nice feature is that you automatically get https so Facebook won't give you a 'SSL certificate problem' error. Localtunnel or ngrok are also nice for sharing work running locally with others.

Note that the localtunnel url is only valid as long as the connection lives, so you will have to update the url Facebook has if the connection ends.