Chat
The chat module allows users to send messages to either the whole conference room, or to individual users.
Joining the room
JoinSuccess
When joining a room, the join_success control event contains the module-specific fields described below.
Fields
| Field | Type | Always | Description |
|---|---|---|---|
enabled |
bool |
yes | When true, the chat is enabled |
room_history |
StoredMessage[] |
yes | Chat history for the room |
groups_history |
GroupHistory[] |
yes | Chat history for each group |
private_history |
PrivateHistory[] |
yes | Chat history for a participant's private conversations |
last_seen_timestamp_global |
string |
no | Last seen timestamp for the global chat |
last_seen_timestamps_private |
map |
no | Last seen timestamps for private chats. Map key is the participant id. |
last_seen_timestamps_group |
map |
no | Last seen timestamps for group chats. Map key is the group name. |
Example
...
"room_history": [
{
"source": "00000000-0000-0000-0000-000000000000",
"scope": "global",
"content": "Hello all!",
"timestamp": "2023-01-13T12:37:08Z"
},
...
],
"groups_history": [
{
"history": [
{
"source": "00000000-0000-0000-0000-000000000000",
"scope": "group",
"target": "management",
"content": "Hello managers!",
"timestamp": "2023-01-13T12:37:08Z"
}
],
"name": "/OpenTalk/OU/Backend"
},
...
],
"private_history": [
{
"history": [
{
"source": "00000000-0000-0000-0000-000000000000",
"scope": "private",
"target": "00000000-0000-0000-0000-000000000001",
"content": "Hello private chat correspondent!",
"timestamp": "2023-01-13T12:37:08Z"
}
],
"correspondent": "00000000-0000-0000-0000-000000000000"
},
...
],
"last_seen_timestamp_global": "2023-01-03T12:34:56Z",
"last_seen_timestamps_private": {
"00000000-0000-0000-0000-000000000000": "2023-01-02T11:22:33Z"
},
"last_seen_timestamps_group": {
"/OpenTalk/OU/Backend": "2023-01-02T12:11:11Z",
"/OpenTalk/Role/Developer": "2023-01-02T12:10:23Z"
}
...
Joined
When joining a room, the joined control event sent to all other participants contains the module-specific fields described below.
Fields
| Field | Type | Always | Description |
|---|---|---|---|
groups |
string[] |
yes | Groups belonging to the participant |
Example
...
"groups": [
"/OpenTalk/OU/Backend",
"/OpenTalk/Role/Developer",
...
]
...
Commands
EnableChat
Allows a moderator to enable the chat if it is currently disabled.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
action |
enum |
yes | Must be "enable_chat" |
Example
{
"action": "enable_chat"
}
DisableChat
Allows a moderator to disable the chat if it is currently enabled.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
action |
enum |
yes | Must be "disable_chat" |
Example
{
"action": "disable_chat"
}
SendMessage
Send a message to either the conference room (global message), a group or a specific user (direct message).
Fields
| Field | Type | Required | Description |
|---|---|---|---|
action |
enum |
yes | Must be "send_message" |
scope |
enum |
yes | Either "global", "group" or "private" |
target |
string |
no | Needed if scope is "group" or "private". Participant id or group |
content |
string |
yes | The message content |
Example
{
"action": "send_message",
"scope": "global",
"content": "Hello all!"
}
{
"action": "send_message",
"scope": "group",
"target": "management",
"content": "Hello managers!"
}
{
"action": "send_message",
"scope": "private",
"target": "00000000-0000-0000-0000-000000000000",
"content": "Hello Bob!"
}
ClearHistory
Allows a moderator to clear the global chat history of the conference room.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
action |
enum |
yes | Must be "clear_history" |
Example
{
"action": "clear_history"
}
SetLastSeenTimestamp
Set the last seen timestamp for either global chat messages, group or private messages with a specific participant.
The values that are set in SetLastSeenTimestamp, will be included in the chat field of
module_data inside the JoinSuccess message when
reconnecting to the same room after leaving.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
action |
enum |
yes | Must be "set_last_seen_timestamp" |
scope |
enum |
yes | Either "global", "group" or "private" |
target |
string |
If scope is "group" or "private" |
Participant id or group |
timestamp |
string |
yes | The timestamp when the messages in the chat were last read |
Example
{
"action": "set_last_seen_timestamp",
"scope": "global",
"timestamp": "2022-10-22T11:22:33Z"
}
{
"action": "set_last_seen_timestamp",
"scope": "group",
"target": "/OpenTalk/OU/Backend",
"timestamp": "2022-10-22T11:22:33Z"
}
{
"action": "set_last_seen_timestamp",
"scope": "private",
"target": "00000000-0000-0000-0000-000000000000",
"timestamp": "2022-10-22T11:22:33Z"
}
Events
MessageSent
A message has been sent to either the global chat or directly to the participant.
Fields
| Field | Type | Always | Description |
|---|---|---|---|
message |
enum |
yes | Is "message_sent" |
source |
string |
yes | Id of the participant who sent the message |
scope |
enum |
yes | Either "global", "group" or "private" |
target |
string |
no | Only if scope is "group" or "private". Participant id or group |
content |
string |
yes | The message content |
Example
{
"message": "message_sent",
"source": "00000000-0000-0000-0000-000000000000",
"scope": "global",
"content": "Hello all!"
}
{
"message": "message_sent",
"source": "00000000-0000-0000-0000-000000000000",
"scope": "group",
"target": "management",
"content": "Hello managers!"
}
{
"message": "message_sent",
"source": "00000000-0000-0000-0000-000000000000",
"scope": "private",
"target": "00000000-0000-0000-0000-0000deadbeef",
"content": "Hello Bob!"
}
Error
Received when something went wrong processing messages sent to the server.
Fields
| Field | Type | Always | Description |
|---|---|---|---|
message |
enum |
yes | Is "error" |
error |
enum |
yes | Exhaustive list of error strings, see table below |
| Error | Description |
|---|---|
chat_disabled |
A message was sent while the chat was disabled |
insufficient_permissions |
A moderator action was attempted by a non-moderator participant |
{
"message": "error",
"error": "chat_disabled"
}