Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSC4075: MatrixRTC Call Ringing #4075

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open

Conversation

toger5
Copy link

@toger5 toger5 commented Nov 8, 2023

Rendered

Implementations:
ElementWeb sending rings: matrix-org/matrix-react-sdk#11870
ElementWeb ringing: matrix-org/matrix-react-sdk#11870

Ruma notify event support: ruma/ruma#1704

ElementX android sending rings: TODO
ElementX android ringing: TODO

ElementX ios sending rings: TODO
ElementX ios ringing: TODO

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>
proposals/4075-call-notify-event.md Show resolved Hide resolved
proposals/4075-call-notify-event.md Outdated Show resolved Hide resolved
proposals/4075-call-notify-event.md Show resolved Hide resolved
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
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
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>
If the user is not part of the `m.mentions` section as defined in
[MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952)
this event can be ignored. (Push notifications are automatically filtered
so this only is important for events received via a sync)
Copy link
Member

Choose a reason for hiding this comment

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

@toger5 is this m.call.notify event encrypted when it is sent in an encrypted room?
I think it is, so the Push notification could not be filtered server side. The notification will be filtered locally by the client.
Note: If this event is encrypted, the call notification may have some trouble in encrypted mentions-only rooms, like it is described in
MSC3996: Encrypted mentions-only rooms. Indeed the encrypted event will not be pushed by the server in that case.

Copy link
Author

@toger5 toger5 Apr 12, 2024

Choose a reason for hiding this comment

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

That is good to know. I am wondering if a @room notify event should be unencrypted in that case. This would sacrifice privacy but make it more reliable.
If this is transparent to the user that could be acceptable maybe.

Copy link
Author

Choose a reason for hiding this comment

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

Thanks for also linking MSC3996.

Copy link
Author

Choose a reason for hiding this comment

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

I added a Limitations and recommendations section so this is explicitly mentioned.


### Explicitly unspecified conditions

- The duration of the ring sound is a deliberately chosen

Choose a reason for hiding this comment

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

Instead of hardcoding 10 seconds, I am assuming the clients could probably just look at the lifetime field for the invite event mapped to call_id from the notify event.

Copy link
Author

Choose a reason for hiding this comment

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

Which invite event are you referring to? The general idea is to allow the receiver to choose a ring duration and not the sender.
So reading from any event would result in someone else choosing how long you device should ring.

Choose a reason for hiding this comment

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

The general idea is to allow the receiver to choose a ring duration and not the sender.

To me that sounds a bit counter intuitive, f.ex I would not want to stop ringing the device after 10 seconds if the m.call.invite lifetime was 60 seconds and I can still pick up the call. Or does the "stop ringing after 10 seconds" also automatically send a reject then? (might be out of scope for this PR)

Copy link
Author

Choose a reason for hiding this comment

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

This is independent of the legacy call invite event. It is just what we use for matrix RTC sessions where there is no enforced call buildup procedure. (You just post your state event)
So most likely there is no call.invite event which lifetime could be used. The call notify event is the one that could include a lifetime. But we decided against that as described in the msc and the comment above.
It's also a slightly different semantic since the calling participant can stay in the call for however long they desire. Where a call invite has a Lifetime.

Signed-off-by: Timo K <toger5@hotmail.de>
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 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
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants