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 their 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
room_idstringyesId of the room belonging to the event. (deprecated! use the room_info field from the JoinSuccess message instead)
titlestringyesTitle of the event
is_adhocboolyesTrue if the event was created ad-hoc
meeting_detailsMeetingDetailsnoMeeting for an event associated with a room. See: MeetingDetails

MeetingDetails

Fields

Meeting details for an event associated with a room.

FieldTypeAlwaysDescription
invite_code_idstringnoInvite code id of the event
call_inCallInnoDial-in information for the event. See: CallIn
streaming_linksStreamingLink[]yesLinks for accessing the stream. See: StreamingLink

CallIn

Fields

Meeting details for an event associated with a room.

FieldTypeAlwaysDescription
telstringyesSIP call-in phone number which must be used to reach the room
idstringyesSIP ID which must transmitted via DTMF
passwordstringyesSIP password which must be transmitted via DTMF
Fields

Meeting details for an event associated with a room.

FieldTypeAlwaysDescription
namestringyesName of the streaming link
urlstringyesUrl of the streaming link

RoomInfo

Fields

Information about the current room.

FieldTypeAlwaysDescription
idstringyesId of the room
passwordstringnoThe room password, if one is configured
created_byCreatorInfoyesInformation about the user that created the room. SeeCreatorInfo

CreatorInfo

Fields

Information about the creator of the current room.

FieldTypeAlwaysDescription
titlestringyesThe users title
firstnamestringyesThe users first name
lastnamestringyesThe users last name
display_namestringyesThe users configured display name
avatar_urlstringyesThe url to the users avatar

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
room_infoRoomInfoyesInformation about the current room. See: RoomInfo
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"
},
"room_info": {
"id": "00000000-0000-0000-0000-000000000000",
"password": "secret123",
"created_by": {
"title": "Dr.",
"firstname": "Firstname",
"lastname": "Lastname",
"display_name": "The Creator",
"avatar_url": "https://example.org/",
}
}
}

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 their 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
reasonenumyesThe reason as to why the participant left either "quit", "timeout" or "sent_to_waiting_room"
Example
{
"message": "left",
"id": "00000000-0000-0000-0000-000000000000",
"reason": "quit"
}

TimeLimitQuotaElapsed

Received when the quota's time limit has elapsed.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "time_limit_quota_elapsed"

HandRaised

Received by a participant after they have raised their hand.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "hand_raised"

HandLowered

Received by a participant after they have lowered their hand.

Fields

FieldTypeAlwaysDescription
messageenumyesIs "hand_lowered"

RoleUpdated

Received when a moderator assigned a new role to a participant. This message is sent to the affected participants

Fields

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

ModeratorRoleGranted

Moderator rights have been granted to the specified participant. This message is sent to the participant who has executed the grant_moderator_rolecommand

Fields

FieldTypeAlwaysDescription
messageenumyesIs "moderator_role_granted"
targetstringyesParticipant id to grant the presenter role to
Example
{
"message": "moderator_role_granted",
"target": "84a2c872-94fb-4b41-aca7-13d784c92a72"
}

ModeratorRoleRevoked

Moderator rights have been revoked from the specified participant. This message is sent to the participant who has executed the revoke_moderator_rolecommand

Fields

FieldTypeAlwaysDescription
messageenumyesIs "moderator_role_revoked"
targetstringyesParticipant id to revoke the presenter role from
Example
{
"message": "moderator_role_revoked",
"target": "84a2c872-94fb-4b41-aca7-13d784c92a72"
}

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"
}