@sava.team/broid-messenger
Version:
Convert Facebook Messenger messages into Activity Streams 2 with Broid Integration
221 lines (173 loc) • 6.65 kB
Markdown
[]: https://img.shields.io/badge/npm-sava.team-green.svg?style=flat
[]: https://www.npmjs.com/org/sava.team
[]: https://img.shields.io/node/v/@sava.team/broid-messenger.svg
[]: https://nodejs.org
[]: https://img.shields.io/badge/dependencies-checked-green.svg?style=flat
[]:
[]: https://img.shields.io/travis/xakep-sava/integrations/master.svg
[]: https://travis-ci.org/xakep-sava/integrations
[]: https://img.shields.io/badge/nsp-checked-green.svg?style=flat
[]: 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]
[](https://www.buymeacoffee.com/sava)
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.
[](https://gitter.im/savateam/community)
[](https://sava.team?utm_source=github&utm_medium=readme&utm_campaign=top&link=site)
| 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: "<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
```javascript
messenger.listen()
.subscribe({
next: data => console.log(`Received message: ${data}`),
error: err => console.error(`Something went wrong: ${err.message}`),
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"
}
}
```
| | 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](https://github.com/xakep-sava/integrations/tree/master/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](https://github.com/xakep-sava/integrations/tree/master/broid-schemas).
See [CONTRIBUTE.md](../CONTRIBUTE.md)
Copyright (c) 2020 SaVa.Team
This project is licensed under the AGPL 3, which can be
[](https://www.gnu.org/licenses/agpl-3.0.en.html).