Client: Class
The Client class is used to create a new Messenger client, enabling you to send and receive messages from the Facebook
Messenger API. Additionally, the client facilitates server initialization and plugin registration.
Usage
const { Client } = require('chat-bridge')Constructor
To create a new Client instance, use the following code:
const client = new Client(options)Options
accessToken: The access token for the Facebook Messenger API.verifyToken: The verify token for the Facebook Messenger API.appSecret: The app secret for the Facebook Messenger API.port: The port to run the server on. Defaults to3000.host: The host to run the server on. Defaults tolocalhost.
⚠️
Warning: The accessToken and verifyToken options are required.
Methods
Start the server→Register a plugin→Send an API message→Get page information→Send a text message→Send an attachment→Send an image→Send an audio file→Send a video→Send a file→
Start the server
callback: Optional callback function to execute when the server starts.
client.start(() => {
console.log('Server started!')
})Register a plugin
...args: Chat Bridge base on Fastify (opens in a new tab), you can pass any parameters that are supported by the register (opens in a new tab) method.
client.register(require('fastify-cors'), {
origin: '*',
})Send an API message
recipientId: The ID of the user to send the message to.object: The message object to send.
client.sendApiMessage('USER_ID', {
text: 'Hello, world!',
quick_replies: [
{
content_type: 'text',
title: 'Hello',
payload: 'HELLO',
},
],
})Tips: You can use the send method as a shorthand for the sendApiMessage method.
client.send('USER_ID', {
text: 'Hello, world!',
quick_replies: [
{
content_type: 'text',
title: 'Hello',
payload: 'HELLO',
},
],
})Get page information
const page = await client.getPageInfo()
console.log(page) // { name: "Page Name", id: "PAGE_ID" }Send a text message
recipientId: The ID of the user to send the message to.text: The text to send.
client.sendTextMessage('USER_ID', 'Hello, world!')Send an attachment
recipientId: The ID of the user to send the attachment to.type: The type of attachment to send. Can beimage,audio,video, orfile.url: The URL of the attachment to send.
client.sendAttachment('USER_ID', 'image', 'https://example.com/image.jpg')Send an attachment
recipientId: The ID of the user to send the attachment to.type: The type of attachment to send. Can beimage,audio,video, orfile.url: The URL of the attachment to send.
client.sendAttachment('USER_ID', 'image', 'https://example.com/image.jpg')Send an image
recipientId: The ID of the user to send the image to.url: The URL of the image to send.
client.sendImage('USER_ID', 'https://example.com/image.jpg')Send an audio file
recipientId: The ID of the user to send the audio file to.url: The URL of the audio file to send.
client.sendAudio('USER_ID', 'https://example.com/audio.mp3')Send a video
recipientId: The ID of the user to send the video to.url: The URL of the video to send.
client.sendVideo('USER_ID', 'https://example.com/video.mp4')Send a file
recipientId: The ID of the user to send the file to.url: The URL of the file to send.
client.sendFile('USER_ID', 'https://example.com/file.pdf')Set typing indicator
recipientId: The ID of the user to send the typing indicator to.typing: Whether to show the typing indicator. Defaults totrue.
client.setTyping('USER_ID', true)Events
The Client class extends the EventEmitter (opens in a new tab) class,
emitting the following events:
Message
New message received.
{
"sender": {
"id": "USER_ID"
},
"recipient": {
"id": "PAGE_ID"
},
"timestamp": 1458692752478,
"message": {
"mid": "mid.1457764197618:41d102a3e1ae206a38",
"text": "hello, world!"
}
}Quick reply
Quick reply received.
{
"sender": {
"id": "USER_ID"
},
"recipient": {
"id": "PAGE_ID"
},
"timestamp": 1458692752478,
"message": {
"mid": "mid.1458696618141:b4ef9d19ec21086067",
"quick_reply": {
"payload": "DEVELOPER_DEFINED_PAYLOAD"
}
}
}Postback
Post Back received.
{
"sender": {
"id": "USER_ID"
},
"recipient": {
"id": "PAGE_ID"
},
"timestamp": 1458692752478,
"postback": {
"payload": "USER_DEFINED_PAYLOAD"
}
}Basic Usage
Handle incoming messages:
client.on('message', (message) => {
console.log(message)
})