MSC4075: MatrixRTC m.rtc.notification Call Ringing and Notifications#4075
MSC4075: MatrixRTC m.rtc.notification Call Ringing and Notifications#4075
m.rtc.notification Call Ringing and Notifications#4075Conversation
Signed-off-by: Timo K <toger5@hotmail.de>
Signed-off-by: Timo K <toger5@hotmail.de>
Signed-off-by: Timo K <toger5@hotmail.de>
Signed-off-by: Timo K <toger5@hotmail.de>
Signed-off-by: Timo K <toger5@hotmail.de>
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075) Signed-off-by: Timo K <toger5@hotmail.de>
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075) Signed-off-by: Timo K <toger5@hotmail.de>
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075) Signed-off-by: Timo K <toger5@hotmail.de>
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075) Signed-off-by: Timo K <toger5@hotmail.de>
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075) Signed-off-by: Timo K <toger5@hotmail.de>
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075) Signed-off-by: Timo K <toger5@hotmail.de>
|
@toger5 You've added some implementations in the PR description. Do these implement the MSC in full, or are there parts of the MSC that are still lacking implementation? |
|
Yes it's implemented in full. At least on the platforms shown in the description (EW). There are optional configurations that are still missing. (Allowing to send a notification to a specific subset of users) but the API for this is already part of the SDK. There is no ui for this however and we are not sure we want that in EW. |
Signed-off-by: Timo K <toger5@hotmail.de>
cdc49b8 to
6362c23
Compare
m.rtc.noticiation Call Ringing and Notifications
m.rtc.noticiation Call Ringing and Notificationsm.rtc.notification Call Ringing and Notifications
- dont use custom rel_type - numerous spelling gramar issues and various more explicit explanations. Signed-off-by: Timo K <toger5@hotmail.de>
| "lifetime": 30000, | ||
| "m.mentions": {"user_ids": [], "room": true | false}, | ||
| "m.relates_to": {"rel_type":"m.reference", "event_id":"$rtc_member_event_id"}, | ||
| "notification_type": "ring | notification", |
There was a problem hiding this comment.
Noting that I'm playing around with the idea of including a media_hint field that gives a soft indication of whether the call is a "audio" or "video" (+audio) call. This is just to indicate between trusted callers that they can start with audio or video off, but the actual call semantics remain the same and they may switch at will. The intention is so that we can indicate this properly in notifications.
| "notification_type": "ring | notification", | |
| "notification_type": "ring | notification", | |
| "m.call.intent": "audio | video | something-else", |
There was a problem hiding this comment.
In practice this is now in our implementation and has certainly been proven a useful addition
There was a problem hiding this comment.
Looks like the current implementation in js-sdk uses m.call.intenthttps://github.com/matrix-org/matrix-js-sdk/blob/4d0d32307eb4f1ce1fb65080fcca704f5bdedc31/src/matrixrtc/types.ts#L150
There was a problem hiding this comment.
Also in this MSC it is never talking about calls, it is talking about rtc sessions. So maybe the naming is bad?
Maybe it should just be a rtc_intent that depends on the actual session beeing notified? like voice_call | video_call | white_board_invite ...
There was a problem hiding this comment.
Ruma currently implements this with call_intent. It's useful to be able to devide if you notify someone that there's a "call" or a "video call" incoming.
#6207) <!-- description of the changes in this PR --> Updates ruma from ruma/ruma@289bee8 to ruma/ruma@89dab44 see 4250d65 Depends on this ruma PR github.com/ruma/ruma/pull/2383 Support for reading the intent from the notification event (m.call.intent in notification event as per matrix-org/matrix-spec-proposals#4075) Parity with js-sdk implementation https://github.com/matrix-org/matrix-js-sdk/blob/bd6547c0814e11b41e79de3cc9d0d4ecf7648272/src/matrixrtc/types.ts#L150 - [ ] I've documented the public API Changes in the appropriate `CHANGELOG.md` files. - [ ] I've read [the `CONTRIBUTING.md` file](https://github.com/matrix-org/matrix-rust-sdk/blob/main/CONTRIBUTING.md), notably the sections about Pull requests, Commit message format, and AI policy. - [ ] This PR was made with the help of AI. <!-- Sign-off, if not part of the commits --> <!-- See CONTRIBUTING.md if you don't know what this is --> Signed-off-by:
|
|
||
| ### Client behaviour on receiving a `m.rtc.notification` event | ||
|
|
||
| On retrieval, the client should not render the event in the timeline. |
There was a problem hiding this comment.
I'm working on an implementation for Fractal (https://gitlab.gnome.org/World/fractal/-/issues/1720) and I believe this should be the event to anchor a rendering of the call in the timeline. If we're in a MatrixRTC world, what else would we use?
There was a problem hiding this comment.
The long term plan on no matrixRTC timeline rendering is to use the m.rtc.member events they mark join and leaves.
A time based overlap computation of join/leave intervals (member sessions) will then be used to compute a historic call.
Similar to how we currently group other timeline events in clients (e.g. UserA and 10 other users join the room)
a new item would combine all the session information (UserA and 8 others participated in a call from X.XX until Y.YY)
There was a problem hiding this comment.
But using the notification event is an acceptable stop gap. There are discussions if we want a specific notification as part of the m.call MSC instead of a general purpose m.notification event.
(mostly because that would allow a notification acknowlege response, which is needed for a reliable ring feedback UX)
So pls dont put too much time into the m.rtc.notification based approach. Make it simple.
Feel free to explore the "time based overlap computation of join/leave intervals" approach. It probably needs work in the rust sdk since this would be where the code should life.
If you look into this I would be very happy to be kept in the loop (ping me once a plan is laid out in an issue). (I already did some consideration on this topic and it would be unfortunate to waste resources due to a lack of communication)
There was a problem hiding this comment.
I think it should be added to the MSC then, since it mentions this shouldn't be rendered, that it points to an MSC that contains the part that would be rendered. Otherwise this is confusing looking at this from the application side.
|
|
||
| A new event `m.rtc.notification` is proposed which can be sent by a client that | ||
| wants to notify others about the existence of a session for a MatrixRTC application. | ||
| This event is added to the push rules for clients which |
There was a problem hiding this comment.
Just to add that, regardless of push rules, having a separate event for ringing can also allow to easily configure Power Level to decide who can ring or not in a room
|
|
||
| The client should only inform the user if all of the following conditions apply: | ||
|
|
||
| - `m.rtc.notification` content:\ |
There was a problem hiding this comment.
I think also if it's not a room mention then it should be ignored, right?
Tho I'm a bit confused by the mentions how they're used here, since they're an optional field on the message. So a client could send one with no mentions according to this spec, but every other client should ignore it then; is there a reason to allow that? I'd think m.mentions should be required with either room or have at least one user listed.
Rendered
To-do:
04635eb(#4075)m.rtc.notificationevent (depreceatem.call.notify) ruma/ruma#21997c996bb(#4075)m.rtc.notificationevent (depreceatem.call.notify) ruma/ruma#21996362c23(#4075)m.rtc.notificationevent (depreceatem.call.notify) ruma/ruma#2199lifetimeconcept makes sense. It allows the sending client to know/control when the receiver stops ringing. Additional precautions need to take place to not allow for infinite rings. This is part of6362c23(#MSC4075)Dependencies:
Implementations: