wingbot-facebook

3.1.0 • Public • Published

Facebook Messenger plugin for wingbot

Connector plugin for wingbot chatbot framework

Advanced features

Transfering action as a metadata of handover event

You can include a full JSON Action string to run a certain interaction in your bot using metadata in a handover event.

{
  "sender":{
    "id":"<PSID>"
  },
  "recipient":{
    "id":"<PAGE_ID>"
  },
  "timestamp":1458692752478,
  "pass_thread_control":{
    "new_owner_app_id":"123456789",
    "metadata":"{\"action\":\"your-action\",\"data\":{}}"
  }
}

API

Classes

Facebook
Settings
MenuComposer

Functions

userLoader(pageToken, [logger])

User loader middleware

Typedefs

AttachmentCache : object

Facebook

Kind: global class

new Facebook(processor, options, [senderLogger])

Param Type Description
processor Processor
options object
options.pageToken string facebook page token
options.appId string facebook app id
[options.botToken] string botToken for webhook verification
[options.appSecret] string provide app secret to verify requests
[options.passThreadAction] string trigger this action for pass thread event
[options.takeThreadAction] string trigger this action for take thread event
[options.requestThreadAction] string trigger this action when thread request
[options.throwsExceptions] boolean allows processEvents method to thow exception
[options.apiUrl] string override Facebook API url
[options.attachmentStorage] AttachmentCache cache for reusing attachments
[options.requestLib] function request library replacement
[senderLogger] console optional console like chat logger

facebook.verifyWebhook(queryString) ⇒ string

Verifies Bots webhook against Facebook

Kind: instance method of Facebook
Throws:

  • Error when the request is invalid
Param Type
queryString object

facebook.verifyRequest(body, headers) ⇒ Promise

Verify Facebook webhook event

Kind: instance method of Facebook
Throws:

  • Error when x-hub-signature does not match body signature
Param Type
body Buffer | string
headers object

facebook.processMessage(message, senderId, pageId, data) ⇒ Promise.<{status:number}>

Kind: instance method of Facebook

Param Type Description
message object wingbot chat event
senderId string chat event sender identifier
pageId string channel/page identifier
data object contextual data (will be available in res.data)
[data.appId] string possibility to override appId

facebook.processEvent(body, [data]) ⇒ Promise.<Array.<{message:object, pageId:string}>>

Process Facebook request

Kind: instance method of Facebook
Returns: Promise.<Array.<{message:object, pageId:string}>> - - unprocessed events

Param Type Description
body object event body
[data] object event context data

Settings

Kind: global class

new Settings()

Utility, which helps us to set up chatbot behavior

settings.greeting([text]) ⇒ Promise

Sets or clears bot's greeting

Kind: instance method of Settings

Param Type Default Description
[text] string false leave empty to clear

settings.getStartedButton([payload]) ⇒ Promise

Sets up the Get Started Button

Kind: instance method of Settings

Param Type Default Description
[payload] string | object false leave blank to remove button, or provide the action

Example

const settings = new Settings(config.facebook.pageToken);
settings.getStartedButton('/start'); // just an action

settings.whitelistDomain(domains) ⇒ Promise

Useful for using facebook extension in webviews

Kind: instance method of Settings

Param Type
domains string | Array.<string>

settings.noMenu() ⇒ Promise

Drops the menu

Kind: instance method of Settings

settings.menu([locale], [inputDisabled]) ⇒ MenuComposer

Sets up the persistent menu

Kind: instance method of Settings

Param Type Default
[locale] string "default"
[inputDisabled] boolean false

Example

const { Settings } = require('wingbot');
 
const settings = new Settings('page-token-string');
 
settings
     .menu('fr_FR')
         .addNested('Nested Menu')
             .addUrl('Aller à google', 'https://google.com')
             .done()
         .addPostBack('Faire quelque chose', '/the/action')
     .menu() // the default menu
         .addNested('Nested Menu')
             .addUrl('Go to google', 'https://google.com')
             .done()
         .addPostBack('Do something', '/the/action')
     .done();

Settings.Settings

Kind: static class of Settings

new Settings(token, [log], [req])

Creates an instance of Settings.

Param Type Description
token string
[log] Object
[req] function request library for resting purposes

MenuComposer

Kind: global class

new MenuComposer(onDone, [isTopLevel])

Param Type Default
onDone function
[isTopLevel] boolean true

menuComposer.addPostBack(title, action, [data]) ⇒ this

Add postback to menu

Kind: instance method of MenuComposer

Param Type
title string
action string
[data] object

menuComposer.addUrl(title, url, [hasExtension], [webviewHeight]) ⇒ this

Add webview to menu

Kind: instance method of MenuComposer

Param Type Default
title string
url string
[hasExtension] boolean false
[webviewHeight] string null

menuComposer.addNested(title) ⇒ MenuComposer

Add Nested menu component

Kind: instance method of MenuComposer

Param Type
title string

menuComposer.done() ⇒ this | Promise

Finish the menu

Last call of "done" returns a promise

Kind: instance method of MenuComposer

menuComposer.menu([locale], [inputDisabled]) ⇒ MenuComposer

Finish the menu for the locale and starts a new menu

Kind: instance method of MenuComposer

Param Type Default
[locale] string "default"
[inputDisabled] boolean false

userLoader(pageToken, [logger])

User loader middleware

Kind: global function

Param Type
pageToken string
[logger] console

Example

const { userLoader } = require('wingbot-facebook');
 
bot.use(userLoader('<page token here>'));
 
bot.use((req, res) => {
    const {
        firstName,
        lastName,
        profilePic,
        locale,
        gender 
    } = req.state.user;
 
    res.text(`Hello ${firstName}!`);
});

AttachmentCache : object

Kind: global typedef
Properties

Name Type
findAttachmentByUrl function
saveAttachmentId function

Package Sidebar

Install

npm i wingbot-facebook

Weekly Downloads

50

Version

3.1.0

License

MIT

Unpacked Size

94.5 kB

Total Files

14

Last publish

Collaborators

  • wingbot.ai
  • zdehasek