You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
matrix-spec-proposals/proposals/3417-call-room-type.md

2.4 KiB

MSC3417 Call room room type

MSC3401 defines how native Matrix group calls can work. It allows for immersive voice/video/call rooms. MSC1772 is a proposal for Matrix spaces. A part of this proposal is a way to specify a room type.

We should use the type field in the m.room.create state event to inform clients about the fact a room is a call room.

Proposal

This MSC proposes that when creating a call room the type field in the m.room.create state event should be set to m.call. This way clients can clearly distinguish between regular chat rooms and call rooms.

In the case of the m.intent field in MSC3401's m.call state event getting out of sync with the the type field in the m.room.create state event, the information from the m.room.create state event is used instead.

Example

POST /_matrix/client/r0/createRoom
{
    "preset": "private_chat",
    "name": "The Grand Duke Pub",
    "topic": "All about happy hour",
    "creation_content": {
        "m.federate": false,
        "type": "m.call",
    }
}

Potential issues

The m.intent field in the m.call state event could get out of sync with the value of type in the m.room.create state event.

Alternatives

Using the m.call state event

Clients could look for the m.call state event and its m.intent field though this feels weird as the room type feels like the place where we should put this. It also is mutable which isn't ideal (see next section).

Using the m.room.type state event

MSC1840 proposes a different way to give rooms types. While we could use the m.room.type state event, it is mutable which we'd like to avoid in the case of call rooms. Clients supporting call rooms will present the chat in those rooms as secondary or not present it at all, so it is beneficial for this to be immutable so that the chat history isn't "lost" when changing the room type.

Additional notes

MSC3088 proposes a way for room subtyping, this could be used in the future for things such as stage rooms, though that isn't the focus of this MSC.

Unstable prefix

Stable Unstable
m.call org.matrix.msc3417.call