Rooms and meetings
The two words often appear together but mean different things:
In day-to-day integration, you mostly work with the meeting ID: you get it when you create a meeting and use it afterward for entering, meeting controls, and recording. The room number is mainly used for sharing externally (sending the number to invitees).
Lifecycle
- You can call the meeting management APIs only after logging in
- You can call the in-meeting APIs (media control, meeting controls, messages) only after entering the meeting
- Exiting a meeting doesn’t affect the login state; you can go on to enter the next meeting
Members and roles
SMeeting has a built-in set of in-meeting roles in three tiers that cover most meeting scenarios, so you don’t need to design your own. Therole field in the APIs and in every platform’s SDK takes these three values by default:
There is also the audience (
is_audience when entering the meeting). It is not a role but a way of entering: audience members only receive streams, don’t take part in interaction, and don’t appear in the member list; this is independent of the three tiers above. It corresponds to the audience in the underlying SRTC—note that SRTC also has a role field (regular user / audience), which is not the same thing as these three meeting-layer tiers.
If your business also needs to distinguish identities such as “instructor / teaching assistant / student,” the simplest approach is: keep carrying meeting control permissions with the three tiers above, put the business identity in the member’s extension field (extend_info), and render it as needed in your own UI. When your identity system is too different to fit into three tiers, you can replace the built-in roles entirely; see “Custom roles” below.
Most meeting control actions take a request–approve form: a member raises a hand to ask to unmute, and the host approves; the host asks a member to unmute, and the member accepts or declines. It is designed this way because turning on a camera or microphone involves user privacy, so the host can’t force it on unilaterally.
Custom roles
The three built-in tiers can be disabled entirely and replaced with a role system defined completely by you. In some projects, the roles have nothing to do with “host / co-host / regular member”: a typical example is tendering and bidding, where experts, clarifying parties, witnesses, and supervisors are each a separate identity, and who can see whose video, and who hears the real voice versus an altered voice, are all decided by identity.We have already built this tendering and bidding scenario: there is a standard tendering and bidding meeting product with customized roles that you can use directly, without implementing these roles and UI yourself. For other scenarios that need custom roles, you can develop them yourself or have us develop them for you—contact us either way.
app.enable_role, off by default; it requires self-hosted deployment, contact us to enable it). role then becomes a field defined by your business:
- The values and their meanings are entirely up to you; the server only stores and passes them through, without interpreting them. Number custom values starting from
1;0means not set (treated as a regular member) - Roles come only from the member registration list: preset them with
conferee_details[].rolewhen creating / updating a meeting, and adjust them during the meeting with the “Update a member’s in-meeting role” endpoint (changes made during the meeting are also saved, and still apply after re-entering). Roles are no longer derived fromcreator/co_hosts, and anyone not registered has no role - The server no longer makes meeting control decisions based on roles: all the built-in restrictions such as “regular members can’t unmute themselves / turn on video / start sharing” are skipped, and who can do what is decided by your customized client UI
- There is no built-in host concept: the transfer host endpoint returns an error in this mode
- Disabling chat applies equally to everyone: disabling chat for everyone / for a single member works as usual, and the server no longer makes an exception for the host
role field. Differentiated listening and viewing must be implemented on the client—after getting each member’s role from the member list, decide yourself whose streams to subscribe to, whom to mute, and which video not to render; the same goes for audio processing such as voice changing, which your business implements itself.
Three types of messages
SMeeting has three kinds of “messages,” with different APIs and use cases. Developers most often confuse the last two:
An easy way to remember how the three relate: in-meeting chat is for people, custom messages are for programs, and IM finds people outside the meeting.
Under the hood, the two in-meeting message types use SRTC’s in-channel messages, and out-of-meeting messages use SRTC’s IM channel (out-of-channel messaging)—but you don’t need to deal with this layer directly when using SMeeting.
One user, multiple devices at once
SMeeting has built-in multi-device presence: when the same user enters a meeting from a phone and a computer at the same time, they are recognized as two member identities (distinguished by device type) and don’t replace each other. SMeeting handles this mapping automatically—under the hood, each device takes its own RTC identity, but in meeting terms they belong to the same user. You don’t need to build the uid yourself.How terms differ from the RTC layer
SMeeting is built on SRTC, and the terms of the two layers are not interchangeable. Mixing them up will keep tripping you up when reading the API docs:
In the SMeeting APIs, you only see names with meeting semantics.
In a few places you will see RTC-layer wording, and it is not a typo: error messages containing “频道” (channel), such as “该会话不在频道中” (“the session is not in the channel”), really come from the underlying RTC layer and are passed through to you as-is to help with troubleshooting.
Relationship to SRTC
When you use SMeeting, the underlying SRTC is still working, just wrapped inside; a normal integration doesn’t need to call it directly. If you find yourself repeatedly bypassing the meeting layer to operate the layer underneath, it usually means you should reconsider your choice—see Choosing SRTC or SMeeting.Next steps
- Token and authentication—the grant flow and secret key security
- Quickstart—an overview of the flows for the three integration options