messaging-api-slack
Messaging API client for Slack
Table of Contents
Installation
npm i --save messaging-api-slack
or
yarn add messaging-api-slack
OAuth Client
Usage
Get your bot user OAuth access token by setup OAuth & Permissions function to your app or check the Using OAuth 2.0 document.
const { SlackOAuthClient } = require('messaging-api-slack');
const client = SlackOAuthClient.connect(
'xoxb-000000000000-xxxxxxxxxxxxxxxxxxxxxxxx'
);
API Reference
All methods return a Promise.
Call available methods
callMethod(method, body)
- Official docs
Calling any API methods which follow slack calling conventions.
Param | Type | Description |
---|
method | String | One of API Methods |
body | Object | Body that the method needs. |
Example:
client.callMethod('chat.postMessage', { channel: 'C8763', text: 'Hello!' });
Chat API
postMessage(channel, message [, options])
- Official docs
Sends a message to a channel.
Param | Type | Description |
---|
channel | String | Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. |
message | String | Object | The message to be sent, can be text message or attachment message. |
options | Object | Other optional parameters. |
Example:
client.postMessage('C8763', { text: 'Hello!' });
client.postMessage('C8763', { attachments: [someAttachments] });
client.postMessage('C8763', 'Hello!');
client.postMessage('C8763', 'Hello!', { as_user: true });
If you send message with attachments
, messaging-api-slack
will automatically stringify the attachments
field for you.
client.postMessage(
'C8763',
{
text: 'Hello!',
attachments: [
{
text: 'Choose a game to play',
fallback: 'You are unable to choose a game',
callback_id: 'wopr_game',
color: '#3AA3E3',
attachment_type: 'default',
actions: [
{
name: 'game',
text: 'Chess',
type: 'button',
value: 'chess',
},
],
},
],
},
{
as_user: true,
}
);
postEphemeral(channel, user, message [, options])
- Official docs
Sends an ephemeral message to a user in a channel.
Param | Type | Description |
---|
channel | String | Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. |
user | String | id of the user who will receive the ephemeral message. The user should be in the channel specified by the channel argument. |
message | String | Object | The message to be sent, can be text message or attachment message. |
options | Object | Other optional parameters. |
Example:
client.postEphemeral('C8763', 'U56781234', { text: 'Hello!' });
client.postEphemeral('C8763', 'U56781234', { attachments: [someAttachments] });
client.postEphemeral('C8763', 'U56781234', 'Hello!');
client.postEphemeral('C8763', 'U56781234', 'Hello!', { as_user: true });
Users API
Lists all users in a Slack team.
Param | Type | Description |
---|
cursor | String | Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata . |
Example:
client.getUserList(cursor).then(res => {
console.log(res);
});
Recursively lists all users in a Slack team using cursor.
Example:
client.getAllUserList().then(res => {
console.log(res);
});
Gets information about an user.
Param | Type | Description |
---|
userId | String | User to get info on. |
Example:
client.getUserInfo(userId).then(res => {
console.log(res);
});
Channels API
Lists all channels in a Slack team.
Example:
client.getChannelList().then(res => {
console.log(res);
});
getChannelInfo(channelId)
- Official docs
Gets information about a channel.
Param | Type | Description |
---|
channelId | String | Channel to get info on. |
Example:
client.getChannelInfo(channelId).then(res => {
console.log(res);
});
Conversasions API
getConversationInfo(channelId)
- Official docs
Retrieve information about a conversation.
Param | Type | Description |
---|
channelId | String | Channel to get info on. |
Example:
client.getConversationInfo(channelId).then(res => {
console.log(res);
});
getConversationMembers(channelId, options)
- Official docs
Retrieve members of a conversation.
Param | Type | Description |
---|
channelId | String | Channel to get info on. |
options | Object | Optional arguments. |
Example:
client.getConversationMembers(channelId, { cursor: 'xxx' });
client.getConversationMembers(channelId).then(res => {
console.log(res);
});
getAllConversationMembers(channelId)
- Official docs
Recursively retrieve members of a conversation using cursor.
Param | Type | Description |
---|
channelId | String | Channel to get info on. |
Example:
client.getAllConversationMembers(channelId).then(res => {
console.log(res);
});
getConversationList(options)
- Official docs
Lists all channels in a Slack team.
Param | Type | Description |
---|
options | Object | Optional arguments. |
Example:
client.getConversationList({ cursor: 'xxx' });
client.getConversationList().then(res => {
console.log(res);
});
getAllConversationList(options)
- Official docs
Recursively lists all channels in a Slack team using cursor.
Param | Type | Description |
---|
options | Object | Optional arguments. |
Example:
client.getAllConversationList().then(res => {
console.log(res);
});
Test
Point requests to your dummy server
To avoid sending requests to real Slack server, specify origin
option when constructing your client:
const { SlackOAuthClient } = require('messaging-api-slack');
const client = SlackOAuthClient.connect({
accessToken: ACCESS_TOKEN,
origin: 'https://mydummytestserver.com',
});
Warning: Don't do this on production server.
Webhook Client
Usage
Get your webhook url by adding a Incoming Webhooks integration to your team or setup Incoming Webhooks function to your app.
const { SlackWebhookClient } = require('messaging-api-slack');
const client = SlackWebhookClient.connect(
'https://hooks.slack.com/services/XXXXXXXX/YYYYYYYY/zzzzzZZZZZ'
);
API Reference
All methods return a Promise.
sendRawBody(body)
Param | Type | Description |
---|
body | Object | Raw data to be sent. |
Example:
client.sendRawBody({ text: 'Hello!' });
sendText(text)
Param | Type | Description |
---|
text | String | Text of the message to be sent. |
Example:
client.sendText('Hello!');
sendAttachments(attachments)
- Official docs
Send multiple attachments which let you add more context to a message.
Param | Type | Description |
---|
attachments | Array<Object> | Messages are attachments, defined as an array. Each object contains the parameters to customize the appearance of a message attachment. |
Example:
client.sendAttachments([
{
fallback: 'some text',
pretext: 'some pretext',
color: 'good',
fields: [
{
title: 'aaa',
value: 'bbb',
short: false,
},
],
},
{
fallback: 'some other text',
pretext: 'some pther pretext',
color: '#FF0000',
fields: [
{
title: 'ccc',
value: 'ddd',
short: false,
},
],
},
]);
sendAttachment(attachment)
- Official docs
Send only one attachment.
Param | Type | Description |
---|
attachments | Object | Message is an attachment. The object contains the parameters to customize the appearance of a message attachment. |
Example:
client.sendAttachment({
fallback: 'some text',
pretext: 'some pretext',
color: 'good',
fields: [
{
title: 'aaa',
value: 'bbb',
short: false,
},
],
});