Monday, December 11, 2017

Identifying DIRECT_MESSAGE, CHANNEL_MESSAGE, & GROUP_MESSAGE in Slack API Event

A simply way to determine if a message is a DM or not; if a channel ID begins with a:
  • C, it's a public channel
  • D, it's a DM with the user
  • G, it's either a private channel or multi-person DM
However, these values aren't set in stone and could change at some point, or be added to.
So if that syntax goes away, another way to detect a DM to use both channels.info and groups.info. If they both return “false” for the “ok” field, then you know it’s a DM.
Note:
  • channels.info is for public channels only
  • groups.info is for private channels and multi-person DMs only
Bonus info: Once you detect a that a message is a DM, use either the user ID or channel ID and search for it in the results of im.list; if you find it, then you’ll know it’s a DM to the bot.
  • “id” from im.list is the channel ID
  • “user” from im.list is the user ID from the person DM’ing with the bot
  • You don’t pass in the bot’s user ID, because it’s extracted from the token
Note :
Private channel is 'W

Source :
https://stackoverflow.com/questions/41111227/how-can-a-slack-bot-detect-a-direct-message-vs-a-message-in-a-channel

Saturday, December 9, 2017

Slack USERS.LIST api test using nodejs

Official documentation :
https://api.slack.com/methods/users.list

Here's mine using node js


Full source code :
https://github.com/HyosokaPoipo/slack_api_test/blob/master/poipo_request.js.
Look at function named poipo_request_slack_users_list