views:

37

answers:

2

Hi,

I've finished my SIP client and it works, as long as it comes to one on one, or x on x if the participants are defined in the beginning of the call.

I would like to attach a caller or a callee in the middle of the call, I understand the main issue is in the media session joining implementation, but I do need to tell the new participant the details of all the participants involved, how would it be best to implement this?

Thanks, Adam.

+1  A: 

I don't think you tell the new participant the details of all the participants involved; instead, I think that you have participants talking to a media server, which mixes the media from the several call-legs:

  • Either, one of the original participants (the one which invites the 3rd party) acts as the media server: this UAC therefore has two separate calls, one to each of the other two parties, and mixes the media.

  • Or, the original participants transfer to a separate, dedicated media server: which subsequently has 3 calls (one to each of the three parties), and mixes the media.


Edit:

Here's an example of the former method: Three-Way Conference (Third Party Joins)

Here are examples of the latter method: A Framework for Conferencing with the Session Initiation Protocol (SIP)

ChrisW
RFC 4353 allows for ad hoc conferences too, where the focus remains with a participant, rather than migrating to a separate server. Look at section 6.2!
Frank Shearar
thanks for the info, will get to it as soon as I get the chance.
TacB0sS
+1  A: 

Like ChrisW says, RFC 4353 is your friend here.

Before you actually implement the logic around conferencing, you need several bits and pieces. You need to support the Join header, the REFER method (which builds on the events package. You may also need the Replaces header, and support call transfer.

The Call Control RFC will show you the actual call flows around adding/removing participants etc.

Also, take a look at the relevant section of the Hitchhiker's Guide to SIP.

And, as always, the sip-implementors list is a good source of help.

Frank Shearar
Hey, I've looked at the schemes in this RFC you specified, and I don't understand one thing, I could refer all the clients to contact each other via SIP messages, and I have a media session that allow multi-uni-cast broadcasting, why would I need a "mixer", or a "focus" to manage my transmissions?
TacB0sS
(Warning: I don't know much about SIP conferencing.) Without a focus, each of the N participants would need to make N-1 calls to the other participants, resulting in N*(N-1)/2 calls in total. The focus allows for far fewer calls, and a central conference policy. The mixer serves the same role as the focus, only on the media plane.
Frank Shearar
so it is actually a server implementation... right? I just need to know how to ask the server to connect with more then one client?
TacB0sS
I think so: a URI uniquely identifies a conference, so a UAS gets to decide all this fun stuff. But check with RFC 4579.
Frank Shearar