@broid/slack

Convert Slack messages into Activity Streams 2 with Broid Integration

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@broid/slack
746302.2.07 years ago7 years agoMinified + gzip package size for @broid/slack in KB

Readme

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

Message types supported

| Simple | Image | Video | Buttons | Location | Phone number | |:------:|:-----:|:-----:|:-------:|:--------:|:------------:| | ✅ | ✅ | ✅ | ✅ | | |
Location, Phone number are platform limitations.

Getting started

Register your app/bot on Slack

  • Instructions to create bot, can be found here.

  • Instructions to create app, can be found here.

Notes: Interactive message are only supported on app (with Oauth bot token). Set Redirect URLs (in OAuth & Permissions) to http://127.0.0.1:8080, so you can catch the token.
You can generate one for test with this command: `node bin/oauth.js --new -c client_id -s secret_id`

Install

npm install --save @broid/slack

Connect to Slack

const BroidSlack = require('@broid/slack');

const slack = new BroidSlack({
  token: 'xxxxx',
  http: {
    host: '127.0.0.1',
    port: 8080
  }
});

slack.connect()
  .subscribe({
    next: data => console.log(data),
    error: err => console.error(`Something went wrong: ${err.message}`),
    complete: () => console.log('complete'),
  });

Slack can also be used with your existing express setup.
const BroidSlack = require('@broid/slack');
const express = require("express");

const slack  = new BroidSlack({
  token: 'xxxxx'
});

const app = express();
app.use("/slack", slack.getRouter());

slack.connect()
  .subscribe({
    next: data => console.log(data),
    error: err => console.error(`Something went wrong: ${err.message}`),
    complete: () => console.log('complete'),
  });

app.listen(8080);

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 access token | | http | object | | WebServer options (host, port) |

Generate the "Bot User Token"

broid-slack needs the "Bot User Token" to authenticate against the Slack RTM and Web Client. To obtain this client, you can use the script at bin/oauth.js. You will need your "Client ID" and your "Client Secret":
$ ./oauth.js --new --clientID xxxxxxxxxxxxxxxxxxxxxxxxx --clientSecret yyyyyyyyyyyyyyyyyyyyyyyyyyyy

This will open your default web browser and guide you to obtain the needeed token (easily spotted starting with: xoxp-). Alternatively you can obtain a "Legacy Token" here.

Receive a message

slack.listen()
  .subscribe({
    next: data => console.log(`Received message: ${data}`),
    error: err => console.error(`Something went wrong: ${err.message}`),
    complete: () => console.log('complete'),
  });

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": "slack"
  },
  "object": {
    "type": "Note",
    "content": "hello world"
  },
  "to": {
    "type": "Person",
    "id": "C1E3X0RRB"
  }
};

slack.send(formatted_message)
  .then(() => console.log("ok"))
  .catch(err => console.error(err));

Buttons supported

This adapter support the interactive messages

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.