Skip to main content

Control

The control module contains the base functionality for the conference including information like the participant list, roles and hand raise.

Commands

Join

Must be the first message to be sent when the websocket connection is established.

Fields

FieldTypeRequiredDescription
actionenumyesMust be "join"
display_namestringyesString to be displayed as the user's display name in the room
Example
{
"action": "join",
"display_name": "Test"
}

EnterRoom

Can only be sent while in the waiting room and after being accepted by a moderator.

See InWaitingRoom

Fields

FieldTypeRequiredDescription
actionenumyesMust be "enter_room"
Example
{
"action": "enter_room"
}

Raise Hand

Notify other participants that a participant's hand is raised.

Fields

FieldTypeRequiredDescription
actionenumyesMust be "raise_hand"
Example
{
"action": "raise_hand"
}

Lower Hand

Notify other participants that a participant's hand is no longer raised.

Fields

FieldTypeRequiredDescription
actionenumyesMust be "raise_hand"
Example
{
"action": "raise_hand"
}

Grant moderator role

Requires moderator role.

Grant a participant the moderator role.

Fields

FieldTypeRequiredDescription
actionenumyesMust be "grant_moderator_role"
targetstringyesId of the participant to grant the moderator role
Example
{
"action": "grant_moderator_role",
"target": "00000000-0000-0000-0000-000000000000"
}

Revoke moderator role

Requires moderator role.

Revoke the moderator role from a participant. Cannot revoke the moderator role from the creator of the room.

Fields

FieldTypeRequiredDescription
actionenumyesMust be "grant_moderator_role"
targetstringyesId of the participant to revoke the moderator role from
Example
{
"action": "revoke_moderator_role",
"target": "00000000-0000-0000-0000-000000000000"
}

Events

Data Types

Participant

Fields

Information about another participant

FieldTypeAlwaysDescription
idstringyesID of the participant
controlControlDatayesInformation about the participant provided by the control module
some_other_module...object?Not an actual field but every module can attach data about the participant under their name

ControlData

Information about another participant provided by the control module

Fields
FieldTypeAlwaysDescription
display_namestringyesDisplay name of the participant
roleenumyeseither "guest,, "user" or "moderator"
avatar_urlstringnourl to your avatar image if the participant is a logged in user
participation_kindenumyeseither "user", "guest" or "sip"
hand_is_upboolyestrue if the user is currently raising his hand
joined_atstringyestimestamp of when the participant joined
left_atstringnotimestamp of when the participant left the room
hand_updated_atstringyestimestamp of when the hand-raise status last changed
is_room_ownerboolyestrue if the user is the owner of the room

EventInfo

Fields

Information about the event associated with a room.

FieldTypeAlwaysDescription
idstringyesId of the event
titlestringyesTitle of the event
is_adhocboolyesTrue if the event was created ad-hoc

JoinSuccess

Received after joining the room. Can be triggered by either calling Join or EnterRoom.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "join_success"
idstringyesYour participant id in this session
display_namestringyesYour display name in this session
avatar_urlstringnoUrl to your avatar image if logged
roleenumyesEither "guest", "user" or "moderator"
closes_atstringnoThe point in time the room closes
tariffTariffyesTariff information, including quotas and modules
participantsParticipant[]yesList of participants in the room
event_infoEventInfonoInformation about the event associated with the meeting room. See: EventInfo
Example
{
"message": "join_success",
"id": "00000000-0000-0000-0000-000000000000",
"display_name": "My Display Name",
"avatar_url":"https://example.org/",
"role": "moderator",
"closes_at": "2023-03-10T16:52:54Z",
"is_room_owner": true,
"tariff": {
"id": "53db7cb1-12af-4715-9b17-4a5a57876085",
"name": "OpenTalkDefaultTariff",
"quotas": {},
"enabled_modules": ["core","chat"],
"disabled_features": ["core::feature1","feature1"],
"modules":{
"core": {"features": ["feature2", "feature3"]},
"chat": {}
}
},
"participants": [
{
"id": "00000000-0000-0000-0000-000000000000",
"control": {
"display_name": "Someone Else",
"hand_is_up": false,
"hand_updated_at": "2022-05-10T10:40:39Z",
"joined_at": "2022-05-10T10:40:39Z",
"left_at": "2022-05-10T10:40:42Z",
"participation_kind": "user",
"is_room_owner": false
}
}
],
"event_info": {
"id": "fa31b241-612d-4524-930e-b5b0af12acb1"
"title": "Daily",
}
}

JoinBlocked

If a tariff is configured for a room, an issued Join action may result in this event.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "join_blocked"
reasonenumyesIs "participant_limit_reached"
Example
{
"message": "join_blocked",
"reason": "participant_limit_reached"
}

Update

Received when a participant changes his state. Wraps a Participant.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "update"
Example
{
"message": "update",
"id": "00000000-0000-0000-0000-000000000000",
"control": {
"display_name": "Someone Else",
"hand_is_up": false,
"hand_updated_at": "2022-05-10T10:40:39Z",
"joined_at": "2022-05-10T10:40:39Z",
"left_at": "2022-05-10T10:40:42Z",
"participation_kind": "user"
}
}

Joined

Received when a participant joined the room. Wraps a Participant.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "joined"
Example
{
"message": "joined",
"id": "00000000-0000-0000-0000-000000000000",
"control": {
"display_name": "Someone Else",
"hand_is_up": false,
"hand_updated_at": "2022-05-10T10:40:39Z",
"joined_at": "2022-05-10T10:40:39Z",
"left_at": "2022-05-10T10:40:42Z",
"participation_kind": "user"
}
}

Left

Received when a participant left the room.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "left"
idstringyesId of the participant that has left
Example
{
"message": "left",
"id": "00000000-0000-0000-0000-000000000000"
}

TimeLimitQuotaElapsed

Received when the quota's time limit has elapsed.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "time_limit_quota_elapsed"

RoleUpdated

Received when a moderator assigned a new role to a participant.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "role_updated"
new_roleenumyeseither "guest", "user", "moderator"
Example
{
"message": "role_updated",
"new_role": "moderator"
}

RoomDeleted

Received by a participant if removed from the room because the room has been deleted. Will be the last message before server-side websocket disconnection.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "room_deleted"

Error

Received when something went wrong.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "error"
textenumyesarbitrary error text
Example
{
"message": "error",
"text": "something happened"
}