Skip to content

MSC4075: MatrixRTC m.rtc.notification Call Ringing and Notifications#4075

Open
toger5 wants to merge 19 commits intomainfrom
toger5/matrixrtc-call-ringing
Open

MSC4075: MatrixRTC m.rtc.notification Call Ringing and Notifications#4075
toger5 wants to merge 19 commits intomainfrom
toger5/matrixrtc-call-ringing

Conversation

@toger5
Copy link
Copy Markdown

@toger5 toger5 commented Nov 8, 2023

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
@turt2live turt2live added voip proposal A matrix spec change proposal 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>
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
Copy link
Copy Markdown
Member

uhoreg commented Jan 24, 2024

@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
Copy link
Copy Markdown
Author

toger5 commented Jan 24, 2024

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>
@ara4n ara4n mentioned this pull request Nov 25, 2024
7 tasks
@toger5 toger5 force-pushed the toger5/matrixrtc-call-ringing branch from cdc49b8 to 6362c23 Compare July 15, 2025 12:44
@toger5 toger5 changed the title MSC4075: MatrixRTC Call Ringing MSC4075: MatrixRTC m.rtc.noticiation Call Ringing and Notifications Jul 15, 2025
@toger5 toger5 changed the title MSC4075: MatrixRTC m.rtc.noticiation Call Ringing and Notifications MSC4075: MatrixRTC m.rtc.notification Call Ringing and Notifications Jul 15, 2025
toger5 added 2 commits July 18, 2025 11:48
 - 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",
Copy link
Copy Markdown
Contributor

@Half-Shot Half-Shot Sep 16, 2025

Choose a reason for hiding this comment

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

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.

Suggested change
"notification_type": "ring | notification",
"notification_type": "ring | notification",
"m.call.intent": "audio | video | something-else",

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.

In practice this is now in our implementation and has certainly been proven a useful addition

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it required?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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 ...

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

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)

Copy link
Copy Markdown
Author

@toger5 toger5 Mar 9, 2026

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.


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
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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:\
Copy link
Copy Markdown

@Susurrus Susurrus Apr 2, 2026

Choose a reason for hiding this comment

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

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind:feature MSC for not-core and not-maintenance stuff matrix-2.0 Required for Matrix 2.0 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 voip

Projects

Status: Tracking for review

Development

Successfully merging this pull request may close these issues.