wording changes

dbkr/msc2746
Andrew Morgan 1 year ago committed by GitHub
parent 7d8d5274fb
commit 3925586df0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -20,8 +20,9 @@ The version property is changed to `"1"` in all existing VoIP events
([`m.call.answer`](https://spec.matrix.org/v1.5/client-server-api/#mcallanswer),
[`m.call.candidates`](https://spec.matrix.org/v1.5/client-server-api/#mcallcandidates),
[`m.call.hangup`](https://spec.matrix.org/v1.5/client-server-api/#mcallhangup)
[`m.call.invite`](https://spec.matrix.org/v1.5/client-server-api/#mcallinvite)).
This will be used to determine whether devices support this new version of the protocol.
[`m.call.invite`](https://spec.matrix.org/v1.5/client-server-api/#mcallinvite)). Note
that this changes the type of the `version` field from an integer to a string, as
described in the [Unstable Prefix](#unstable-prefix) section.
This will be used to determine whether devices support this new version of the protocol. For example,
clients can use this field to know whether to expect an `m.call.select_answer` event from their
@ -51,7 +52,7 @@ This follows the existing known implementations of v0 VoIP.
### Add `invitee` field to [`m.call.invite`](https://spec.matrix.org/v1.5/client-server-api/#mcallinvite)
This allows for the following use cases:
* Placing a call to a specifc user in a room where other users are also present.
* Placing a call to a specific user in a room where other users are also present.
* Placing a call to oneself.
The field should be added for all invites where the target is a specific user, and should be set
@ -80,15 +81,16 @@ events to their respective answer/invite.
A client implementation may choose to use the device ID used in end-to-end cryptography for this purpose,
or it may choose, for example, to use a different one for each call to avoid leaking information on which
devices were used in a call (in an unencrypted room) or if a single device (ie. access token were used to
devices were used in a call (in an unencrypted room) or if a single device (ie. access token) were used to
send signalling for more than one call party.
A grammar for `party_id` is defined [below](#specify-exact-grammar-for-voip-ids).
### Introduce `m.call.select_answer`
This event is sent by the caller's client once it has chosen an answer. Its
`selected_party_id` field indicates the answer it's chosen (and has `call_id`
and its own `party_id` too). If the callee's client sees a `select_answer` for an answer
This event is sent by the caller's client once it has decided which other
client to talk to, by selecting one of multiple possible incoming `m.call.answer`
events. Its `selected_party_id` field indicates the answer it's chosen. The `call_id`
and `party_id` of the caller is also included. If the callee's client sees a `select_answer` for an answer
with party ID other than the one it sent, it ends the call and informs the user the call
was answered elsewhere. It does not send any events. Media can start flowing
before this event is seen or even sent. Clients that implement previous
@ -116,8 +118,7 @@ Example:
`party_id` just like an answer, and the caller sends a `select_answer` for it just like an
answer. If another client had already sent an answer and sees the caller select the
reject response instead of its answer, it ends the call.
* If the `m.call.invite` event has `version` `0`, the callee sends an `m.call.hangup` event
as in spec version 0.
* If the `m.call.invite` event has `version` `0`, the callee sends an `m.call.hangup` event.
Example:
```
@ -175,7 +176,7 @@ own negotiate events.
This has a `lifetime` field as in `m.call.invite`, after which the sender of the negotiate event
should consider the negotiation failed (timed out) and the recipient should ignore it.
The `description` field is the same as the `offer` field in in `m.call.invite` and `answer`
The `description` field is the same as the `offer` field in `m.call.invite` and `answer`
field in `m.call.answer` and is an `RTCSessionDescriptionInit` object as per
https://www.w3.org/TR/webrtc/#dom-rtcsessiondescriptioninit.
@ -241,7 +242,7 @@ Clients should aim to send a small number of candidate events, with guidelines:
suggested as a starting point.
* The client should then allow some time for further candidates to be gathered in order to batch them,
rather than sending each candidate as it arrives. A starting point of 2 seconds after sending the
invite or 500ms after sending the answer is suggested as starting point (since a delay is natural
invite or 500ms after sending the answer is suggested as a starting point (since a delay is natural
anyway after the invite whilst the client waits for the user to accept it).
### Mandate the end-of-candidates candidate
@ -307,7 +308,7 @@ or not there have been any changes to the Matrix spec.
* This MSC elects to allow invites without an `invitee` field to mean a call for anyone in the room.
This could be useful for hunt group style semantics where an incoming call causes many different
users' phones to ring and any one of them may pick up the call. This does mean clients will need
to not blindly ring for any call invites in any room, since this would make unsolicited calls in
to not blindly ring for any call invites in any room, since this would make unsolicited calls
easy in public rooms. We could opt to leave this out, or make it more explicit with a specific value
for the `invitee` field.
* `party_id` is one of many potential solutions: callees could add `answer_id`s to their events and

Loading…
Cancel
Save