Merge d8cf45b546 into e9f0f31d27
commit
b75baf99fa
@ -0,0 +1,68 @@
|
|||||||
|
# MSC3417 Call room room type
|
||||||
|
|
||||||
|
[MSC3401](https://github.com/matrix-org/matrix-doc/pull/3401) defines how native
|
||||||
|
Matrix group calls can work. It allows for immersive voice/video/call rooms.
|
||||||
|
[MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772) 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
|
||||||
|
|
||||||
|
```HTTP
|
||||||
|
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](https://github.com/matrix-org/matrix-doc/pull/1840) 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](https://github.com/matrix-org/matrix-doc/pull/3088) 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`|
|
||||||
Loading…
Reference in New Issue