smartslack
Version:
SmartSlack is a node.js module for Slack's Real Time Messaging API
156 lines (103 loc) • 4.94 kB
Markdown
[](https://github.com/philliphenslee/smartslack)
[](https://github.com/philliphenslee/smartslack)
[](https://travis-ci.org/philliphenslee/smartslack)
[](https://coveralls.io/github/philliphenslee/smartslack?branch=master)
[](https://badge.fury.io/js/smartslack)
[](https://raw.githubusercontent.com/philliphenslee/smartslack/master/LICENSE)
[](https://nodei.co/npm/smartslack/)
## Overview
***SmartSlack*** is a Node.JS module for [*Slack's*](https://slack.com) Real Time Messaging API. *SmartSlack* implements all of the *Slack* API methods available to a bot user. This module is intended to be used as a foundation for building custom *Slack* bots.
## Installation
```
npm install smartslack
```
## Basic Usage
Creating a new instance of *SmartSlack* and sending a message to *Slack*
``` javascript
var SmartSlack = require('smartslack');
// Configure options
var options = { token: 'xxxx-01234567890-ABCDEFGHIJKLMNOPQRSTUVWX'};
// Create new instance
var slackClient = new SmartSlack(options);
// Listen for errors...
slackClient.on('error',function(error) {
console.log(error);
});
// Start the Slack RTM session...
slackClient.start();
var message = 'Hello Channel!';
slackClient.on('connected',function() {
// Send a message to #general
slackClient.sendToChannel('general',message);
});
slackClient.on('message', function(message) {
console.log(message);
});
```
## Events
* **connected** : Event fired after reciept of the hello event message from the RTM API
* **error** : Emitted anytime the web socket emits an error or after https request errors
* **eventmessage** This event is emitted after receiving any RTM event message
* **message** Emitted when an event message of type message is recevied
* **open** Emmited when the websocket is open
* **close** Emitted when the websocket is closed
See the Node.JS documentation for more information on EventEmitter.
[https://nodejs.org/api/events.html](https://nodejs.org/api/events.html)
## Methods
Sending message to Slack via the API. Use these methods if you require attachments or other optional message arguments.
**postDirectMessage(user, text [args, callback])**
The user argument can be the user's id, name or email address.
``` javascript
slackClient.postDirectMessage('user@somedoman.com', 'message text');
```
**postMessage(channel, text [args, callback])**
The channel argument can be the channel id or name (i.e. general).
``` javascript
slackClient.postMessage('general', 'message text');
```
**Post as another bot instead of the authenticated bot user.**
``` javascript
// Create message options
options = {};
options.as_user = false;
options.username = 'SmartSlack';
options.icon_emoji = ':bulb:';
// Send the message via the API
slack.PostMessage('general', 'A message from SmartSlack', options);
```

**Post with a message attachment**
For more information on attachments, review the [***Slack*** API documentation](https://api.slack.com/docs/attachments).
``` javasscript
var options = {};
options.as_user = false;
options.username = 'SmartSlack';
options.icon_emoji = ':bulb:';
options.attachments = [];
// Create the attachement
var attachment = client.createAttachment('The attachment title');
attachment.text = 'This is the attachment message';
attachment.fallback = 'This is the text message of the attachment';
attachment.pretext = 'This is the attachment pretext';
attachment.color = 'good';
attachment.author_name = 'Author Name';
attachment.addField('Field 1','Field 1 Value', true);
attachment.addField('Field 2','Field 2 Value', true);
options.attachments.push(attachment);
// Send the message via the API
slack.PostMessage('general', '', options);
```

#### Use these methods to send via the RTM socket
**sendToChannel(channel, text [callback])**
**sendToGroup(group, text [callback])**
**sendToUser(username, text [callback])**
The user argument can be the user's id, name or email address'
``` javascript
// Send some real time message's
client.sendToUser('phillip', 'Hello Channel!');
client.sendToGroup('private-group', 'Hello Group!');
client.sendToChannel('general', 'Hello Channel!');
```
## License
MIT Copyright © [Phillip J. Henslee II](https://github.com/philliphenslee/smartslack/blob/master/LICENSE)