conversation type
A conversation object contains information about a channel-like thing in Slack. It might be a public channel, a private channel, a direct message, or a multi-person direct message.
You'll find these objects in the Conversations API.
{
"ok": true,
"channel": {
"id": "C012AB3CD",
"name": "general",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1449252889,
"creator": "W012A3BCD",
"is_archived": false,
"is_general": true,
"unlinked": 0,
"name_normalized": "general",
"is_read_only": false,
"is_shared": false,
"is_ext_shared": false,
"is_org_shared": false,
"pending_shared": [],
"is_pending_ext_shared": false,
"is_member": true,
"is_private": false,
"is_mpim": false,
"last_read": "1502126650.228446",
"topic": {
"value": "For public discussion of generalities",
"creator": "W012A3BCD",
"last_set": 1449709364
},
"purpose": {
"value": "This part of the workspace is for fun. Make fun here.",
"creator": "W012A3BCD",
"last_set": 1449709364
},
"previous_names": [ "specifics", "abstractions", "etc" ],
"num_members": 23,
"locale": "en-US"
}
}
The conversational booleans
is_archived
indicates a conversation is archived. Frozen in time.is_channel
indicates whether a conversation is a public channel. Everything said in a public channel can be read by anyone else belonging to a workspace.is_private
will befalse
. Check both just to be sure, why not?is_ext_shared
represents this conversation as being part of a Shared Channel with a remote organization. Your app should make sure the data it shares in such a channel is appropriate for both workspaces.is_shared
will also betrue
.is_general
means the channel is the workspace's "general" discussion channel (even if it's not named#general
but it might be anyway). That might be important to your app because almost every user is a member.is_group
means the channel is a private channel.is_private
will also betrue
. Check yourself before you wreck yourself.is_im
means the conversation is a direct message between two distinguished individuals or a user and a bot. Yes, it's anis_private
conversation.is_member
indicates the user or bot user or Slack app associated with the token making the API call is itself a member of the conversation.is_mpim
represents an unnamed private conversation between multiple users. It's anis_private
kind of thing.is_org_shared
explains whether this shared channel is shared between Enterprise Grid workspaces within the same organization. It's a little different from (externally) Shared Channels. Yet,is_shared
will betrue
.is_pending_ext_shared
is intriguing. It means the conversation is ready to become anis_ext_shared
channel but isn't quite ready yet and needs some kind of approval or sign off. Best to treat it as if it were a shared channel, even if it traverses only one workspace.is_private
means the conversation is privileged between two or more members. Meet their privacy expectations.is_read_only
means the conversation can't be written to by typical users. Admins may have the ability.is_shared
means the conversation is in some way shared between multiple workspaces. Look foris_ext_shared
andis_org_shared
to learn which kind it is, and if that matters, act accordingly. Have we mentioned how greatis_private
is yet?
Other attributes
The name
parameter indicates the name of the channel-like thing, without a leading hash sign. Don't get too attached to that name. It might change. Don't bother storing it even. When thinking about channel-like things, think about their IDs and their type and the team/workspace they belong to.
creator
is the user ID of the member that created this channel. created
is
a unix timestamp.
conversation_host_id
appears on shared channel objects and indicates the "host" of the shared channel. The value may contain a workspace's ID (beginning with T
) or an enterprise grid organization's ID (beginning with E
).
is_archived
will be true if the channel is archived.
is_general
will be true if this channel is the "general" channel that
includes all regular team members. In most teams this is called #general
but
some teams have renamed it.
topic
and purpose
provide information about the channel topic and purpose.
is_member
will be true if the calling member is part of the channel.
Some API methods (such as conversations.join) will
include extra state information for channels when the calling user is a
member. last_read
is the timestamp for the last message the calling user has
read in this channel. unread_count
is a full count of visible messages that the calling user has yet to read. unread_count_display
is a count of messages that the calling user has yet to read that matter to them (this means it excludes things like join/leave messages). latest
is the latest message in the channel.
These channel objects are not the same object type as private channels, which are considered group objects.