Slack Micro Client
The goal of this project was to build a node.js client that can be dropped into serverless functions without requiring a massive dependency tree. This client covers two main scenarios: making requests and handling responses.
Install
npm i slack-micro --save
Requests
Usage
slack('method name or url', {payload})
Examples
let slack = require('slack-micro');
let message = {
unfurl_links: true,
channel: 'C1QD223DS1',
token: 'xoxb-12345678900-ABCD1234567890',
text: "I am a test message http://slack.com",
attachments: [{
text: "And here's an attachment!"
}]
}
slack('chat.postMessage', message).then(response => {
});
slack('https://hooks.slack.com/services/T0000/B000/XXXX', message);
Defaults
let slack = require('slack-micro');
slack.defaults = {
unfurl_links: true,
channel: 'C1QD223DS1',
token: 'xoxb-12345678900-ABCD1234567890'
};
let message = {
text: "I am a test message http://slack.com",
attachments: [{
text: "And here's an attachment!"
}]
};
slack('chat.postMessage', message);
Responses
Usage
slack.on('event name', [... 'event name',] callback)
slack.listen(port, 'path')
slack.digest('JSON string' or {message})
Examples
let slack = require('slack-micro');
slack.on('/test', message => {
});
slack.on('slash_commands', message => {
});
slack.on('googlebot', message => {
});
slack.on('googlebot', '/test', 'slash_commands', message => {
});
slack.on('*', message => {
});
slack.listen(3000, '/slack/incoming');
exports.handler = (event, context, callback) => {
slack.digest(event.body);
}
RTM
let slack = require('slack-micro'),
WebSocket = require('ws'),
rtm = null;
slack.defaults = {
token: 'xoxb-12345678900-ABCD1234567890'
};
slack('rtm.start').then(data => {
rtm = new WebSocket(data.url);
rtm.on('message', slack.digest);
});
slack.on('*', message => {
});