A genie-router plugin that enables the use of Facebook Messenger as a client.
Facebook requires that your genie-router instance listens on a https URL. There are plenty of methods to achieve this, but here are two options:
- Use a proxy tool like ngrok or localtunnel to get a public endpoint that supports https
- Setup an apache or nginx webserver that will act as a reverse proxy. You can use letsencrypt to configure a URL with https/ssl.
First, make sure that your genie-router installation has the http
module enabled
and is accessible via https (facebook requires this for webhooks). One option is
to place genie-router behind a webserver (apache or nginx) via a reverse proxy. This way,
the SSL/HTTPS is handled by the webserver.
Then, follow the Getting Started guide to create your App and Page. Remember what you configure as the verifyToken.
Check messages
as the webhook subscription. Configure the webhook URL as https://<yourdomain.com>/facebook/messenger
. The verify token should be what you are
going to configure in the genie-router config.
The configuration should already be in place and genie-router restart for the verify token to be configured and Facebook to accept the webhook URL.
At the plugin location ($HOME/.genie-router), type:
npm install --save @genie-ai/genie-router-plugin-facebook-messenger
This plugin needs to be configured in the plugins
section of genie-router. There are
three properties that can be configured.
- accessToken, the pageAccessToken generated by Facebook when configuring the FB app
- verifyToken, the verifyToken you configured for the webhook
- password, an optional configuration parameter, that requires users to identify themselves with a password before they can send text to genie-router.
The password configuration attribute is optional, and can be used to require a password before someone can send commands via Telegram. A hash of the password is stored in the persistent storage, so that the user can be automatically granted access in a next session. A user has to type the password anew when the password changes in the configuration.
To not require a password, simply remove the attribute or set it to null.
{
"plugins": {
"facebook-messenger": {
"verifyToken": "genierouter",
"accessToken": "xxx",
"password": "secure-4-me"
}
}
}