Minimal framework/SDK for facebook messenger bots. BYOS (Bring Your Own Server).
npm install --save fbbot
// also works with `hapi`, `restify` and built-in `http`
var express = require('express');
var Fbbot = require('fbbot');
var app = express();
var fbbot = new Fbbot({token: '...', secret: '...'});
// plug-in fbbot
// It will also listen for GET requests to authorize fb app.
app.all('/webhook', fbbot.requestHandler);
// assuming HTTPS is terminated elsewhere,
// or you can use standard express https capabilities
app.listen(8080);
// catching messages
fbbot.on('message', function(message, send)
{
// message.type <-- type of the message (text, attachment, quick_reply, sticker, etc)
// message.user <-- user object
// message.text <-- text for text messages
// message.attachments <-- list of attachments if available
// send <-- send method with baked in user.id `send(fbbot.<message_type>, <payload>, <callback>)`
});
// handle only text messages
fbbot.on('message.text', function(message, send)
{
// message.user <-- user object
// message.text <-- text for text messages
// send <-- send method with baked in user.id `send(fbbot.<message_type>, <payload>, <callback>)`
});
fbbot.on('postback', function(postback, send)
{
// postback.user <-- user object
// postback.payload <-- parsed payload
// send <-- send method with baked in user.id `send(fbbot.<message_type>, <payload>, <callback>)`
});var express = require('express');
var Fbbot = require('fbbot');
var app = express();
var fbbot = new Fbbot({token: '...', secret: '...'});
// plug-in fbbot
app.all('/webhook', fbbot.requestHandler);
// assuming HTTPS is terminated elsewhere,
// or you can use standard express https capabilities
app.listen(8080);
fbbot.use('message', function(payload, callback)
{
// do something with the payload, async or sync
setTimeout(function()
{
payload.fooWasHere = true;
// pass it to callback
callback(null, payload);
}, 500);
});
// catching messages
fbbot.on('message', function(message, send)
{
// modified message payload
message.fooWasHere; // true
});More middleware examples could be found in incoming folder.
Here are two ways of sending messages, using per-instance fbbot.send method, or the one tailored to the user, provided to the event handlers.
var express = require('express');
var Fbbot = require('fbbot');
var app = express();
var fbbot = new Fbbot({token: '...', secret: '...'});
// plug-in fbbot
app.all('/webhook', fbbot.requestHandler);
// assuming HTTPS is terminated elsewhere,
// or you can use standard express https capabilities
app.listen(8080);
// "standalone" send function
// send reguar text message
fbbot.send(1234567890, fbbot.TEXT, 'Hi there!', function(error, response)
{
// error <!-- message composition error or transport error
// response <-- response from the remote server
});
// sending messages as reply
fbbot.on('message', function(message, send)
{
// tailored to the user
// callback is optional
send(fbbot.IMAGE, 'https://petersapparel.com/img/shirt.png');
// also message type tailored methods are available
send.image('https://petersapparel.com/img/shirt.png');
});More details could be found in test-send.js.
Check out test folder for available options.
var Fbbot = require('fbbot');
var fbbot = new Fbbot({token: '...', secret: '...', logger: myCustomLogger});
// turn on logging
// uses `bole` out of the box
Fbbot.logger.output({
level : 'info',
stream: process.stdout
});- support for
readandechonotification - add
airlinetemplates - fetch user info middleware
- initialization actions (welcome page, menu, white-listing, etc)
FBBot is released under the MIT license.