@broid/messenger

Convert Facebook Messenger messages into Activity Streams 2 with Broid Integration

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@broid/messenger
735302.2.05 years ago5 years agoMinified + gzip package size for @broid/messenger in KB

Readme

!npmnpmnpm-url !nodenodenode-url !depsdepsdeps-url !teststeststests-url !bithoundbithoundbithound-url !bithoundscorebithoundscorebithoundscore-url !nsp-checkednsp-checkednsp-checked-url
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.

gitter slackin

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.verifytoken) | | 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 | phonenumber | 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 | typingoff | Turn typing indicators off | | typing/off | markseen | 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 | | ---------- |:--------------:| --------------------------| | | elementshare | Open a share dialog in Messenger. | | | payment | Opens a checkout dialog to enables purchases. | | | accountlink | Sync the user account. | | | accountunlink | 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.