====== joingroup ====== The joingroup message has multiple uses: ===== connect group call ===== **C → S → C {type:'joingroup', gid:..., from:..., from_dn:..., members:..., bridge_addr:..., bridge_dname:...}** joingroup - ask client to join a group call. Client wanting to initiate a group call sends joingroup messages to other clients. Clients receiving joingroup message will call voice bridge and receive information about group members from it. arguments: * gid - group call ID * from - address of client starting group call * from_dn - display name of user starting group call * members - number of clients participating in group call * bridge_addr - address of voice bridge hosting the group * bridge_dname - display name of voice bridge hosting the group ===== progress status ===== **C → S → C {type:'joingroup', gid:..., status:..., from:...}** joingroup - status message indicating group call setup progress. Client requested to make group call sends back status information to client requesting start of the group call. arguments: * gid - received group ID * status - group call progress status: * "calling": client has made requested call, [[ixnx:wrtc:rtcgate:offer|offer]] sent * "talking": the requested call has been [[ixnx:wrtc:rtcgate:answer|answered]] * "already talking": clients were already in call with each other * "hungup": the group call has been ended by this client * "gothungup": the group call has been ended by remote client, [[ixnx:wrtc:rtcgate:esc|esc]] received * "recalling": client is attempting to reenable connection by transferring call to itself = asking other end to call it again * "transferred": client reporting transfer succeeded (reported by client performing the transfer) * "reconnecting": client is attempting to reenable connection by making call again * "problems": the client has Internet connection problems * "stalled": received audio stream has stalled, no packets arriving * from - address of client reporting status optional argument: * data - additional data: * partner - other end of call, address called by client ===== group call setup error ===== **C → S → C {type:'joingroup', gid:..., error:..., from:...}** joingroup - error message indicating client can not establish group call. arguments: * gid - received group ID * error - error message: * "103: SDP fail" - SDP was not accepted by client * "104: ICE fail" - ICE failure, could not find connection between clients, could not establish real time mediastream between clients * "105: transfer failed" - attempted call transfer failed * "111: not enough resources" - client does not have resources to make more calls * "112: group call not supported" - attempted to call a client that does not support multiple simultaneous calls * "113: already in group call" - attempted to call a client who is already participating in a different group call * "114: offer rejected" - SDP offer attempted to be sent to a client already in call with someone or does not have resources to make more calls * "352: invalid group ID" - client received offer with a group ID different than the one used in this group * "353: not in group call" - client received an offer containing group ID but is not currently in any group calls * from - address of client reporting the error optional argument: * data - additional data: * partner - other end of failed call, address attempted to be called ===== leave group call ===== **C → S → C {type:'joingroup', gid:..., leave:".", from:...}** joingroup can also be used to force a participant to leave the group. If a //leave// message is received the client will hang up all its calls to other group members and the voice bridge. arguments: * gid - group call ID, must match the group's ID * leave - value is always "." * from - address of client making leave request The //preferred// way of excluding someone from a group is however to ask the voice bridge to hang up on the client, see [[ixnx:wrtc:rtcgate:mixer_io_control|mixer_io_control]]. ====== usage ====== During setup of a group call the initiating client sends joingroup messages to the other participants requesting them to connect to the voice bridge. During the group call clients can send status and error messages to each other.