3.1.2 • Published 1 year ago

@cs-chatbots/wingbot-facebook v3.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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

Functions

Typedefs

Facebook

Kind: global class

new Facebook(processor, options, senderLogger)

ParamTypeDescription
processorProcessor
optionsobject
options.pageTokenstringfacebook page token
options.appIdstringfacebook app id
options.botTokenstringbotToken for webhook verification
options.appSecretstringprovide app secret to verify requests
options.passThreadActionstringtrigger this action for pass thread event
options.takeThreadActionstringtrigger this action for take thread event
options.requestThreadActionstringtrigger this action when thread request
options.allowEventKeysArray.<string>list of keys, allowed to process
options.throwsExceptionsbooleanallows processEvents method to thow exception
options.apiUrlstringoverride Facebook API url
options.attachmentStorageAttachmentCachecache for reusing attachments
options.requestLibfunctionrequest library replacement
senderLoggerconsoleoptional console like chat logger

facebook.DEFAULT_EVENT_KEYS

Kind: instance property of Facebook
Properties

NameTypeDescription
DefaultArray.<string>keys allowed to process

facebook.verifyWebhook(queryString) ⇒ string

Verifies Bots webhook against Facebook

Kind: instance method of Facebook
Throws:

  • Error when the request is invalid
ParamType
queryStringobject

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
ParamType
bodyBuffer | string
headersobject

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

Kind: instance method of Facebook

ParamTypeDescription
messageobjectwingbot chat event
senderIdstringchat event sender identifier
pageIdstringchannel/page identifier
dataobjectcontextual data (will be available in res.data)
data.appIdstringpossibility 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

ParamTypeDescription
bodyobjectevent body
dataobjectevent 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

ParamTypeDefaultDescription
textstringfalseleave empty to clear

settings.getStartedButton(payload) ⇒ Promise

Sets up the Get Started Button

Kind: instance method of Settings

ParamTypeDefaultDescription
payloadstring | objectfalseleave 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

ParamType
domainsstring | 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

ParamTypeDefault
localestring"default"
inputDisabledbooleanfalse

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.

ParamTypeDescription
tokenstring
logObject
reqfunctionrequest library for resting purposes

MenuComposer

Kind: global class

new MenuComposer(onDone, isTopLevel)

ParamTypeDefault
onDonefunction
isTopLevelbooleantrue

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

Add postback to menu

Kind: instance method of MenuComposer

ParamType
titlestring
actionstring
dataobject

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

Add webview to menu

Kind: instance method of MenuComposer

ParamTypeDefault
titlestring
urlstring
hasExtensionbooleanfalse
webviewHeightstringnull

menuComposer.addNested(title) ⇒ MenuComposer

Add Nested menu component

Kind: instance method of MenuComposer

ParamType
titlestring

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

ParamTypeDefault
localestring"default"
inputDisabledbooleanfalse

userLoader(pageToken, logger)

User loader middleware

Kind: global function

ParamType
pageTokenstring
loggerconsole

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

NameType
findAttachmentByUrlfunction
saveAttachmentIdfunction