Skip to content

MSC4075: MatrixRTC notifications & call ringing#4075

Open
toger5 wants to merge 22 commits into
mainfrom
toger5/matrixrtc-call-ringing
Open

MSC4075: MatrixRTC notifications & call ringing#4075
toger5 wants to merge 22 commits into
mainfrom
toger5/matrixrtc-call-ringing

Conversation

@toger5

@toger5 toger5 commented Nov 8, 2023

Copy link
Copy Markdown

Rendered

To-do:

Dependencies:

Implementations:

Signed-off-by: Timo K <toger5@hotmail.de>
Signed-off-by: Timo K <toger5@hotmail.de>
Signed-off-by: Timo K <toger5@hotmail.de>
@turt2live turt2live changed the title MatrixRTC Call Ringing MSC4075: MatrixRTC Call Ringing Nov 8, 2023
Comment thread proposals/4075-call-notify-event.md Outdated
@turt2live turt2live added A-VOIP proposal A matrix spec change proposal. Process state. kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. labels Nov 8, 2023
Signed-off-by: Timo K <toger5@hotmail.de>
Comment thread proposals/4075-call-notify-event.md Outdated
Comment thread proposals/4075-call-notify-event.md Outdated
Comment thread proposals/4075-call-notify-event.md Outdated
Signed-off-by: Timo K <toger5@hotmail.de>
toger5 added a commit to toger5/ruma that referenced this pull request Nov 22, 2023
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075)

Signed-off-by: Timo K <toger5@hotmail.de>
toger5 added a commit to toger5/ruma that referenced this pull request Nov 22, 2023
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075)

Signed-off-by: Timo K <toger5@hotmail.de>
toger5 added a commit to toger5/ruma that referenced this pull request Nov 24, 2023
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075)

Signed-off-by: Timo K <toger5@hotmail.de>
toger5 added a commit to toger5/ruma that referenced this pull request Nov 24, 2023
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075)

Signed-off-by: Timo K <toger5@hotmail.de>
toger5 added a commit to toger5/ruma that referenced this pull request Nov 24, 2023
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075)

Signed-off-by: Timo K <toger5@hotmail.de>
toger5 added a commit to toger5/ruma that referenced this pull request Nov 24, 2023
See: [MSC4075]( matrix-org/matrix-spec-proposals#4075)

Signed-off-by: Timo K <toger5@hotmail.de>
@uhoreg

uhoreg commented Jan 24, 2024

Copy link
Copy Markdown
Member

@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?

@toger5

toger5 commented Jan 24, 2024

Copy link
Copy Markdown
Author

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.

Comment thread proposals/4075-call-notify-event.md Outdated
Signed-off-by: Timo K <toger5@hotmail.de>
Comment thread proposals/4075-call-notify-event.md Outdated
Comment thread proposals/4075-call-notify-event.md Outdated
Comment thread proposals/4075-call-notify-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
bnjbvr pushed a commit to matrix-org/matrix-rust-sdk that referenced this pull request Mar 2, 2026
#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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

@toger5 toger5 Mar 9, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
Comment thread proposals/4075-rtc-notification-event.md Outdated
… internal discussions

Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
Comment on lines +87 to +91
- `sender_ts`:\
The local timestamp on the sending device when the event was emitted. This is used in combination
with `lifetime` to evaluate if the notification event is valid. To mitigate clients lying about
the `sender_ts`, this value has to be checked against `origin_server_ts`. Receivers SHOULD use
`origin_server_ts` if `|sender_ts - origin_server_ts| > 20000 ms`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we clarify why we trust the sender's local time to be more accurate than the sending server's local time?

Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
@Johennes Johennes changed the title MSC4075: MatrixRTC m.rtc.notification Call Ringing and Notifications MSC4075: MatrixRTC notifications & call ringing Jun 1, 2026
Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
Comment thread proposals/4075-rtc-notification-event.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-VOIP kind:feature MSC for not-core and not-maintenance stuff matrix-2.0 Required for Matrix 2.0 (note: do not rename - used in reports/links) needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal. Process state.

Projects

Status: Tracking for review

Development

Successfully merging this pull request may close these issues.