Calls in Swarm
This page aims to describe how call will works with groups. This method will allow clients to provides call for multiple participants with a shared text history. The protocol must be flexible, keep compatibility with the SIP stack, adn must work in a distributed environment. This distributed environment also brings some challenges, such as possible race conditions (where multiple parties can start a call at the same time). Finally, because the Swarm can be with members only using mobiles, or by companies with dedicated servers to mix the video, it should also be able to work with the best experience possible on heterogeneous environment.
a Rendezvous will mix all authorized incoming calls in a conference.
Two new URIs will be used for this feature:
Swarm’s profile is the profile of the swarm stored in a vCard (
profile.vcf, see Conversation’s profile synchronization and Profile synchronization)
rdvUriis the default URI for a Swarm, set in the Swarm’s profile
Note: those two URIs allow the client to place a call in order to join a Rendezvous or to init a call to a swarm, resulting in the logic described in the next section.
Place a call in a Swarm
If failed, go to b:
b: else if there is a current active call:
If failed, go to c:
c: else, host a new Rendezvous and join it.
Also, ask users if they want to be the host for next calls.
TODO, when to commit and who is commiting
Incoming calls for swarm
When receiving a new incoming call, the URI MUST be parsed. If the incoming call is for a Rendezvous which is currently hosted by the device and the caller is authorized to join, the call MUST be answered and added to the current Rendezvous
Defining a host for a Swarm
To define a default URI, the member who wants to be the host should update the profile of the conversation, and this will be synced and validated by peers. However, the host MUST be able to accept or not to be the host and a member with enough permissions SHOULD be able to ask a device to be the host. This process is not decided for now.
TODO? Permissions to update, negotiation of the host
Members of the swarm that aren’t in a call SHOULD be able to know who is in the active calls.
Because conferences are still mixed SIP calls, a SIP bridge is still possible. In the Swarm’s profile it should be possible to add a SIP entry, like some popular VoIP systems)