A Node client for the Facebook Messenger Platform. Note: Still a WIP! Fully functional, but needs some proper testing.
Requires Node >=4.0.0.
npm install messenger-bot
See more examples in the examples folder.
const http = require('http')
const Bot = require('messenger-bot')
let bot = new Bot({
token: 'PAGE_TOKEN'
})
bot.on('message', (payload, reply) => {
let text = payload.message.text
bot.getProfile(payload.sender.id, (err, profile) => {
if (err) throw err
reply({ text }, (err) => {
if (err) throw err
console.log(`Echoed back to ${profile.first_name} ${profile.last_name}: ${text}`)
})
})
})
http.createServer(bot.middleware()).listen(3000)
Returns a new Bot instance.
opts
- Object
token
- String: Your Page Access Token, found in your App settings. Required.verify
- String: A verification token for the first-time setup of your webhook. If specified,bot.middleware()
will also mount thebot.verify()
middleware, as seen below. Optional.
A middleware for verifying your bot's webhook. Returns a function.
When creating your bot, Facebook requires you to do a one-time verification with a secret string. You'll need to have the app running with this middleware when setting up your webhook. I recommend deploying a boilerplate app with something like this:
const http = require('http')
const Bot = require('messenger-bot')
let bot = new Bot({
token: 'PAGE_TOKEN'
})
http.createServer(bot.verify('YOUR_SECRET_HERE')).listen(3000)
Then set up your webhook, and once it's verified, you can deploy your actual bot.
The main middleware for your bot's webhook. Returns a function. Usage:
const http = require('http')
const Bot = require('messenger-bot')
let bot = new Bot({
token: 'PAGE_TOKEN'
})
http.createServer(bot.middleware()).listen(3000)
As well, it mounts /_status
, which will return {"status": "ok"}
if the middleware is running.
Sends a message with the payload
to the target recipient
, and calls the callback. See Send API.
recipient
- Number: The Facebook ID of the intended recipient.payload
- Object: The message payload. Should follow the Send API format.callback
- Function: Called with(err, info)
once the request has completed.err
contains an error, if any, andinfo
contains the response from Facebook, usually with the new message's ID.
Returns profile information of the target
, called in the callback
. See User Profile API.
target
- Number: The Facebook ID of the intended target.callback
- Function: Called with(err, profile)
once the request has completed.err
contains an error, if any, andinfo
contains the response from Facebook, in this format:
{
"first_name": "Zach",
"last_name": "Bruggeman",
"profile_pic": "<url to profile picture>"
}
Triggered when a message is sent to the bot.
payload
- Object: An object containing the message event's payload from Facebook. See Facebook's documentation for the format.reply
- Function: A convenience function that callsbot.sendMessage
, with the recipient automatically set to the message sender's Facebook ID. Example usage:
bot.on('message', (payload, reply) => {
reply({ text: 'hey!'}, (err, info) => {})
})
Triggered when a postback is triggered by the sender in Messenger.
payload
- Object: An object containing the postback event's payload from Facebook. See Facebook's documentation for the format.reply
- Function: A convenience function that callsbot.sendMessage
, with the recipient automatically set to the message sender's Facebook ID. Example usage:
bot.on('postback', (payload, reply) => {
reply({ text: 'hey!'}, (err, info) => {})
})
Triggered when a message has been successfully delivered.
payload
- Object: An object containing the delivery event's payload from Facebook. See Facebook's documentation for the format.reply
- Function: A convenience function that callsbot.sendMessage
, with the recipient automatically set to the message sender's Facebook ID. Example usage:
bot.on('delivery', (payload, reply) => {
reply({ text: 'hey!'}, (err, info) => {})
})