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

MSC2747: VoIP call transfers #2747

Open
wants to merge 12 commits into
base: old_master
Choose a base branch
from
Open

MSC2747: VoIP call transfers #2747

wants to merge 12 commits into from

Conversation

dbkr
Copy link
Member

@dbkr dbkr commented Aug 21, 2020

Defines a mechanism for transferring a party in a VoIP call to a different party.

Rendered

@anoadragon453 anoadragon453 changed the title VoIP call transfers MSC2747: VoIP call transfers Aug 24, 2020
@dbkr dbkr added proposal A matrix spec change proposal voip labels Aug 26, 2020
@dbkr dbkr marked this pull request as ready for review August 26, 2020 16:58
@dbkr
Copy link
Member Author

dbkr commented Aug 26, 2020

No implementation exists yet: submitting for early review in advance of starting impl.

@turt2live turt2live self-requested a review August 26, 2020 20:07
@turt2live turt2live added kind:feature MSC for not-core and not-maintenance stuff proposal-in-review labels Aug 26, 2020
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
proposals/2747-voip-call-transfer.md Outdated Show resolved Hide resolved
It continues to do so until the original call has either been replaced by the new call or the
replacement has failed.
* If the replace event has a `target_room` specified and the user is not already in the specified
room, it waits for an invite to that room to arrive, then accepts the invite. Once in the room,
Copy link
Contributor

Choose a reason for hiding this comment

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

What happens if the invite never arrives (e.g. federation/networking/implementation bug)? Should we specify a lifetime in m.call.replaces as well or should we just advise clients to stop waiting after a "reasonable" amount of time?

Copy link
Member Author

Choose a reason for hiding this comment

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

Hmm - a lifetime field feels more like the time that specific event is valid for (eg. if an invite exceeds its lifetime after you've sent an answer but before the call's connected, you'd continue with the call). Feels OK to let clients decide how long to wait, although we might need to add a way for the transferee to say, "I tried, but it didn't work".

dbkr and others added 5 commits September 4, 2020 10:29
Variety of typo fixes & clarifications

Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
a normal incoming call from the transferor rather than being presented as a call to the
transfer target.

Consideration was given to using a more generic event to refer conversations in general
Copy link
Member

@ara4n ara4n Oct 21, 2020

Choose a reason for hiding this comment

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

"Breakout rooms" are becoming a more and more requested feature thanks to COVID and how useful they are in Zoom and BBB. I continue to wonder if it would be better to have a generic "please take this room somewhere else" mechanism rather than having it VoIP specific. What are the specific VoIP semantics that justify making this VoIP specific?

Copy link
Member Author

Choose a reason for hiding this comment

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

Mostly that we specify call IDs for the call to create or wait for, plus party IDs.

dbkr added a commit to matrix-org/matrix-js-sdk that referenced this pull request Dec 15, 2020
Sends an m.call.replaces event and flag for whether to advertise
support.

MSC2747 (matrix-org/matrix-spec-proposals#2747)
dbkr added a commit to matrix-org/matrix-react-sdk that referenced this pull request Dec 15, 2020
Adapt the InviteDialog to select a transfer target

Doesn't support supplying a roo mID fr the transfer: just leaves
the transferee to work out how to contact the target themselves.

MSC2747 (matrix-org/matrix-spec-proposals#2747)
Requires matrix-org/matrix-js-sdk#1558
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
Comment on lines +37 to +40
* `target_room`: Optional. If specified, the transferee client waits for an invite
to this room and joins it (possibly waiting for user confirmation) and then continues
the transfer in this room. If absent, the transferee contacts the Matrix User ID
given in the `target_user` field in a room of its choosing.
Copy link
Contributor

Choose a reason for hiding this comment

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

A room may not always be joinable by ID, i.e. if the room was created on a server, that doesn't exist anymore. In general, I don't think you should join a room by the server part from the ID. I suggest adding an additional via field here, so that the room will be joined via one of the servers in that list. You should probably put the server of the target user there. Alternatively, the server to join via could be extracted from the target users mxid.

If this is not present and the users don't share a room, should a new one be created? Then you probably need to wait for them to join the room to send the call events?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yep - hence them having to wait for an invite to the room. There shouldn't be any need to wait for them to join the room before calling: in fact in future we'll probably need to include metadata in the invite to say the inviter is trying to call, so the invitee has some way of knowing someone's trying to call them, which right now they don't.

Copy link
Contributor

Choose a reason for hiding this comment

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

Oh, right, I missed that part, my bad, sorry about the noise :D

@turt2live turt2live removed their request for review March 22, 2021 03:01
@turt2live turt2live moved this from Awaiting SCT input to Temp column 001 in Spec Core Team Backlog Jun 8, 2021
@turt2live turt2live added the needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. label Jun 8, 2021
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

5 participants