You might have a small business or simply want to automate your way of controlling your home through Facebook Messenger and Node-RED is a great tool to start creating a chatbot as you can automate many things, including sending and receiving emails, creating an interface, and so on which can help you to automate responses to your customers, control your machines at home or workplace and, create specific messages using a database.
First, search and install “node-red-contrib-chatbot” from the Node-RED palette. Here you can see more details about loading RedBot and installing Node-RED: “Install the RedBot plugin in the Node-RED”.
Ngrok or port forwarding with SSL certificate
To use Facebook Messenger API, you need a valid non-self-signed certificate to use your link to the Node-RED as a webhook.
1. Create an account to ngrok using the sign-up page.
2. Install ngrok using Snapcraft or manually:
Using your console or terminal to the Raspberry Pi.
sudo apt update sudo apt install snapd sudo reboot
sudo snap install ngrok
3. Connect your ngrok client to the account:
4. Now you have to edit the ngrok config 🟧 file created above:
Nano — paste with right-click, save and exit: CTRL + S then CTRL + X.
tunnels: default: proto: http addr: 1880
5. Create a systemd service to start ngrok at boot:
sudo nano /etc/systemd/system/ngrok.service
Replace “pi” from “User=” and “Group=” if your Raspberry Pi has a different username (use whoami command).
[Unit] Description=ngrok After=network.target StartLimitIntervalSec=400 StartLimitBurst=3 [Service] User=pi Group=pi WorkingDirectory=~ ExecStart=/snap/bin/ngrok start --all ExecReload=/bin/kill -HUP $MAINPID KillMode=process IgnoreSIGPIPE=true Restart=always RestartSec=5 Type=simple [Install] WantedBy=multi-user.target
6. Next enable service to start at boot:
sudo systemctl enable ngrok.service
7. Start the service in order to check if it works:
sudo systemctl start ngrok.service
8. You should be able to see inside the “Endpoints” menu the URL 🟨 which you can use to connect to your Node-RED over the internet:
Good, now you are ready to set up a webhook for the Messenger API.
Remember this ngrok URL as it is used in the configuration below.
If you don’t already have a Facebook Page, you need to create one in order to use the Messenger API.
Create a new page using this link.
1. Navigate to “META for Developers” and 🟦 create a new app of type 🟩 “None”:
2. Set up a new 🟥 “product” of type “Messenger”:
3. Select your Facebook page to be linked with your app from the 🟧 “Access Tokens” tab, then press 🟨 “Done”:
4. Generate a token 🟦 and save it 🟩 as will be used later:
Don’t close this page yet, you still need to configure the “Webhooks”.
5.Create a configuration inside Node-RED:
In order to validate the webhook from the next step, we need to create a simple configuration inside the Node-RED.
6. Go back to the app set up and 🟪 “Add Callback URL” from the “Webhooks” tab:
7. 🟥 “Add subscriptions” to the webhook you just created of type 🟧 “messages” and “save”:
You finished the default setup for the Messenger API, now it’s time to go back to the Node-RED and put a simple text message.
You already have a simple flow for your Facebook Messenger bot, now let’s add a simple text message to make it usable.
1. Modify the 🟪 “Conversation” node to use created Messenger 🟩“Bot Configuration”:
2. Add a message 🟦 you want to see as a replay inside the 🟪 “Text” node then 🟫 “Deploy”:
3. Test if your bot works:
You can see the bot has replayed 🟩 the message we’ve picked.
Also, the message is shown inside Node-RED 🟥 debug window through the “debug” node. You can access the content through “msg.payload.content”.
Probably you want your users to make some operations easier, like sending phone, email and responding with an image, selecting from a precompiled response list, etc. .
I’ll show you how to make some of these with a few clicks using RedBot.
1.Modify flow to use the “Rules” node:
As you can see, the “Rules” node creates multiple outputs for each command you put in, in the same order.
2. Modify the settings of each new node in accordance to:
Great, now let’s make some tests to see how it looks 😀.
Send a message and you should see a list of 🟩 “Quick Replies” options inside the Messenger:
Let’s see what each option outputs:
Each time you select an option, you should receive the “Postback” button content value in the backend, at Node-RED, inside “msg.payload.content”:
You can also connect RedBot with many things like a database, firebase, send and receive emails, and so on to make it interactive and user-specific.
This is not the subject of the article, but if you want to see a custom way of using this bot, let me know in a comment and I’ll try to respond or create a specific article about anything you need.
You just created your first Facebook Messenger bot.
Stay tuned to see how you can improve it and make some complex functions work.
Check out here for a complete list of more Node-RED articles made by me: