Convert Facebook Messenger messages into Activity Streams 2 with Broid Integration
npm install @sava.team/broid-messenger[npm]: https://img.shields.io/badge/npm-sava.team-green.svg?style=flat
[npm-url]: https://www.npmjs.com/org/sava.team
[node]: https://img.shields.io/node/v/@sava.team/broid-messenger.svg
[node-url]: https://nodejs.org
[deps]: https://img.shields.io/badge/dependencies-checked-green.svg?style=flat
[deps-url]: #integrations
[tests]: https://img.shields.io/travis/xakep-sava/integrations/master.svg
[tests-url]: https://travis-ci.org/xakep-sava/integrations
[nsp-checked]: https://img.shields.io/badge/nsp-checked-green.svg?style=flat
[nsp-checked-url]: https://nodesecurity.io
[![npm][npm]][npm-url]
[![node][node]][node-url]
[![deps][deps]][deps-url]
[![tests][tests]][tests-url]
[![nsp-checked][nsp-checked]][nsp-checked-url]

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.


| Simple | Image | Video | Buttons | Document | Location |
|:------:|:-----:|:-----:|:-------:|:--------:|:--------:|
| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Activity | Phone number | Collection |
|:--------:|:------------:|:----------:|
| ✅ | | ✅ |
_Phone number is platform limitation._
``bash`
npm install --save @sava.team/broid-messenger
`javascript
const BroidMessenger = require('@sava.team/broid-messenger');
const messenger = new broidMessenger({
token: "
tokenSecret: "
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 |host
| 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 (, port) |
`javascriptReceived message: ${data}
messenger.listen()
.subscribe({
next: data => console.log(),Something went wrong: ${err.message}
error: err => console.error(),`
complete: () => console.log('complete'),
});
| 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. |
To send quick replies, button need to contains mediaType value "text/plain"
Example:
`json`
{
"@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"
}
}
| 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
`json`
{
"@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"
}
}$3
| | 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. |
To send a message, the format should use the broid-schemas.
`javascript
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));
``
You can find examples of sent and received messages at Broid-Schemas.
See CONTRIBUTE.md
Copyright (c) 2020 SaVa.Team
This project is licensed under the AGPL 3, which can be
found here.