Overview
SmartSlack is a Node.JS module for Slack's 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
var SmartSlack = ;// Configure optionsvar options = token: 'xxxx-01234567890-ABCDEFGHIJKLMNOPQRSTUVWX';// Create new instancevar slackClient = options;// Listen for errors...slackClient;// Start the Slack RTM session...slackClientstart;var message = 'Hello Channel!';slackClient;slackClient;
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
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.
slackClient;
postMessage(channel, text [args, callback])
The channel argument can be the channel id or name (i.e. general).
slackClient;
Post as another bot instead of the authenticated bot user.
// Create message optionsoptions = {};optionsas_user = false;optionsusername = 'SmartSlack';optionsicon_emoji = ':bulb:';// Send the message via the APIslack;
Post with a message attachment For more information on attachments, review the Slack API documentation.
var options = {};options.as_user = false;options.username = 'SmartSlack';options.icon_emoji = ':bulb:';options.attachments = [];// Create the attachementvar 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 APIslack.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'
// Send some real time message'sclient;client;client;
License
MIT Copyright © Phillip J. Henslee II