@broid/messenger
v2.2.0
Published
Convert Facebook Messenger messages into Activity Streams 2 with Broid Integration
Downloads
15
Readme
Broid Messenger Integration
Broid Integrations is an open source project providing a suite of Activity Streams 2 libraries for unified communications among a vast number of communication platforms.
Connect your App to Multiple Messaging Channels with One OpenSource Language.
Message types supported
| Simple | Image | Video | Buttons | Location | Activity | Phone number | |:------:|:-----:|:-----:|:-------:|:--------:|:------------:|:------------:| | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
Phone number is platform limitation.
Getting started
Install
npm install --save @broid/messenger
Connect to Messenger
const BroidMessenger = require('@broid/messenger');
const messenger = new broidMessenger({
token: "<oauth_token>",
tokenSecret: "<verify_token>",
http: {
port: 8080,
host: "0.0.0.0"
}
});
messenger.connect()
.subscribe({
next: data => console.log(data),
error: err => console.error(`Something went wrong: ${err.message}`),
complete: () => console.log('complete'),
});
Options available
| name | Type | default | Description |
| ---------------- |:--------:| :--------: | --------------------------|
| serviceID | string | random | Arbitrary identifier of the running instance |
| logLevel | string | info
| Can be : fatal
, error
, warn
, info
, debug
, trace
|
| token | string | | Your application token |
| tokenSecret | string | | Your auth verify token (hub.verify_token) |
| consumerSecret | string | | You App Secret to validate all requests |
| http | object | | WebServer options (host
, port
) |
Receive a message
messenger.listen()
.subscribe({
next: data => console.log(`Received message: ${data}`),
error: err => console.error(`Something went wrong: ${err.message}`),
complete: () => console.log('complete'),
});
Buttons supported
| mediaType | Action types | Content of value property | | --------------------- |:-------------:| --------------------------| | text/html | web_url | URL to be opened in the built-in browser. | | application/vnd.geo+json | location | Ask for the user location. | | audio/telephone-event | phone_number | Destination for a call in following format: "tel:123123123123". | | | postback | Text of message which client will sent back as ordinary chat message. |
Quick replies
To send quick replies, button need to contains mediaType value "text/plain"
Example:
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"generator": {
"id": "f6e92eb6-f69e-4eae-8158-06613461cf3a",
"type": "Service",
"name": "messenger"
},
"object": {
"type": "Note",
"content": "Simple example with quickreplies",
"attachment": [
{
"content": "Broid",
"mediaType": "text/plain",
"name": "broid",
"type": "Button",
"url": "broid_payload",
}
]
},
"to": {
"type": "Person",
"id": "1396343657196792"
}
}
Sender Actions or Activity
| content | Action types | | | ------------- |:-------------:| --------------------------| | typing/on | typing_on | Turn typing indicators on | | typing/off | typing_off | Turn typing indicators off | | typing/off | mark_seen | Mark last message as read |
Example of turning typing indicators on with
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"generator": {
"id": "f6e92eb6-f69e-4eae-8158-06613461cf3a",
"type": "Service",
"name": "messenger"
},
"object": {
"type": "Activity",
"content": "typing/on",
},
"to": {
"type": "Person",
"id": "1396343657196792"
}
}
Not supported yet
| | Action types | Content of value property | | ---------- |:--------------:| --------------------------| | | element_share | Open a share dialog in Messenger. | | | payment | Opens a checkout dialog to enables purchases. | | | account_link | Sync the user account. | | | account_unlink | Un sync the user account. |
Post a message
To send a message, the format should use the broid-schemas.
const formatted_message = {
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"generator": {
"id": "f6e92eb6-f69e-4eae-8158-06613461cf3a",
"type": "Service",
"name": "messenger"
},
"object": {
"type": "Note",
"content": "hello world"
},
"to": {
"type": "Person",
"id": "1396343657196792"
}
};
messenger.send(formatted_message)
.then(() => console.log("ok"))
.catch(err => console.error(err));
Examples of messages
You can find examples of sent and received messages at Broid-Schemas.
Contributing to Broid
See CONTRIBUTE.md
Copyright & License
Copyright (c) 2016-2017 Broid.ai
This project is licensed under the AGPL 3, which can be found here.