Giter VIP home page Giter VIP logo

messenger-bot's Introduction

messenger-bot

Build Status Coverage Status npm version js-standard-style

A Node client for the Facebook Messenger Platform.

Requires Node >=4.0.0.

Installation

npm install messenger-bot

Example

See more examples in the examples folder.

Run this example in the cloud: Nitrous Quickstart

  • Setup PAGE_TOKEN, VERIFY_TOKEN, APP_SECRET and start the example by Run > Start Messenger Echo Bot.
  • Your Webhook URL is available at Preview > 3000 in the IDE.
const http = require('http')
const Bot = require('messenger-bot')

let bot = new Bot({
  token: 'PAGE_TOKEN',
  verify: 'VERIFY_TOKEN',
  app_secret: 'APP_SECRET'
})

bot.on('error', (err) => {
  console.log(err.message)
})

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)
console.log('Echo bot server running at port 3000.')

Usage

Functions

let bot = new Bot(opts)

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. Optional, but will be required by Facebook when you first set up your webhook.
  • app_secret - String: Your App Secret token used for message integrity check. If specified, every POST request will be tested for spoofing. Optional.

bot.middleware()

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',
  verify: 'VERIFY_TOKEN'
})

http.createServer(bot.middleware()).listen(3000)

As well, it mounts /_status, which will return {"status": "ok"} if the middleware is running. If verify is specified in the bot options, it will mount a handler for GET requests that verifies the webhook.

bot.sendMessage(recipient, payload, callback)

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, and info contains the response from Facebook, usually with the new message's ID.

bot.sendSenderAction(recipient, senderAction, callback)

Sends the sender action senderAction to the target recipient, and calls the callback.

  • recipient - Number: The Facebook ID of the intended recipient.
  • senderAction - String: The sender action to execute. Can be one of: typing_on, 'typing_off', 'mark_seen'. See the Send API reference for more information.
  • callback - Function: Called with (err, info) once the request has completed. err contains an error, if any, and info contains the response from Facebook, usually with the new message's ID.

bot.setGetStartedButton(payload, callback)

bot.setPersistentMenu(payload, callback)

Sets settings for the Get Started Button / Persistent Menu. See the Thread Settings Reference call_to_actions sections for what to put in the payload.

bot.removeGetStartedButton(callback)

bot.removePersistentMenu(callback)

Removes the Get Started Button / Persistent Menu.

bot.getProfile(target, callback)

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, and info contains the response from Facebook, in this format:
{
  "first_name": "Zach",
  "last_name": "Bruggeman",
  "profile_pic": "<url to profile picture>",
  "locale": "en",
  "timezone": "PST",
  "gender": "M"
}

bot._handleMessage(payload)

The underlying method used by bot.middleware() to parse the message payload, and fire the appropriate events. Use this if you've already implemented your own middleware or route handlers to receive the webhook request, and just want to fire the events on the bot instance. See the echo bot implemented in Express for an example.

  • payload - Object: The payload sent by Facebook to the webhook.

bot._verify(req, res)

The underlying method used by bot.middleware() for the initial webhook verification. Use this if you've already implemented your own middleware or route handlers, and wish to handle the request without implementing bot.middleware(). See the echo bot implemented in Express for an example.

  • req - Request: The http request object.
  • res - Response: The http response object.

Events

bot.on('message', (payload, reply, actions))

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 calls bot.sendMessage, with the recipient automatically set to the message sender's Facebook ID. Example usage:
bot.on('message', (payload, reply, actions) => {
  reply({ text: 'hey!'}, (err, info) => {})
})
  • actions - Object: An object with two functions: setTyping(status: Boolean), and markRead().

bot.on('postback', (payload, reply, actions))

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 calls bot.sendMessage, with the recipient automatically set to the message sender's Facebook ID. Example usage:
  • actions - Object: An object with two functions: setTyping(status: Boolean), and markRead().
bot.on('postback', (payload, reply, actions) => {
  reply({ text: 'hey!'}, (err, info) => {})
})

bot.on('delivery', (payload, reply, actions))

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 calls bot.sendMessage, with the recipient automatically set to the message sender's Facebook ID. Example usage:
  • actions - Object: An object with two functions: setTyping(status: Boolean), and markRead().
bot.on('delivery', (payload, reply, actions) => {
  reply({ text: 'hey!'}, (err, info) => {})
})

bot.on('authentication', (payload, reply, actions))

Triggered when a user authenticates with the "Send to Messenger" plugin.

  • payload - Object: An object containing the authentication event's payload from Facebook. See Facebook's documentation for the format.
  • reply - Function: A convenience function that calls bot.sendMessage, with the recipient automatically set to the message sender's Facebook ID. Example usage:
  • actions - Object: An object with two functions: setTyping(status: Boolean), and markRead().
bot.on('authentication', (payload, reply, actions) => {
  reply({ text: 'thanks!'}, (err, info) => {})
})

messenger-bot's People

Contributors

exedk avatar greenkeeperio-bot avatar maciekmm avatar psealock avatar remixz avatar victorcotap avatar yeouchien avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.