2.11.1 Team Chat — Channels
Team Chat channels provide structured, persistent spaces for internal communication within an organization. Unlike Inbox channels, which connect external sources, Team Chat channels are purely internal constructs optimized for collaboration, coordination, and operational discussion. They are designed to support long-running conversations tied to teams, projects, or functional domains without losing context over time.
Channel Purpose and Scope
A Team Chat channel represents a shared communication scope with clearly defined membership and intent. Channels may be created around departments, projects, incidents, or temporary initiatives. The channel scope determines visibility, access rights, and message retention behavior.
Core characteristics:
Explicit membership model
Persistent message history
Shared context across participants
Channels are stable entities; messages belong to the channel rather than to individual users.
Membership and Access Control
Access to Team Chat channels is governed by role-aware membership rules. Users must be explicitly added or granted access through organizational roles or groups. All access checks are enforced server-side.
Membership rules support:
Direct user assignment
Group or role-based inclusion
Read-only versus read-write access
Example access check:
if (!$channel->canAccess($user)) { abort(403); }Message Model
Messages in Team Chat channels follow a linear, chronological model optimized for readability and collaboration. Each message is immutable once persisted, with optional metadata for reactions or moderation.
Typical message attributes:
Author identity
Timestamp (server-authoritative)
Message body and attachments
Optional system flags
Example message creation:
$channel->messages()->create([ 'author_id' => $user->id, 'body' => $request->input('body'), ]);System and Service Messages
In addition to user-generated content, channels may contain system messages generated by platform events. These messages are visually distinct and excluded from user analytics where appropriate.
Examples include:
User joined or left channel
Channel renamed or archived
Permission changes
System messages preserve an auditable record of channel evolution.
Ordering, Read State, and Presence
Messages are ordered strictly by server timestamps to avoid client-side race conditions. Read state is tracked per user and per channel, enabling accurate unread counts without per-message noise.
Presence indicators reflect real-time participation but do not alter message delivery semantics.
Channel Lifecycle
Team Chat channels can be created, archived, or permanently closed. Archiving freezes new messages while retaining full history for reference and compliance.
Lifecycle actions:
Create
Archive
Reopen
Permanently close
No lifecycle action deletes messages implicitly.
Security and Isolation
All Team Chat data is tenant- and organization-scoped. Messages and membership lists are never exposed across organizational boundaries. Attachments follow the same storage and access rules as other Media Center assets.