Represents the signaling path that is established between two endpoints to set up and tear down media channels.
Assembly: Microsoft.Rtc.Collaboration (in Microsoft.Rtc.Collaboration.dll)
Call is the modality-agnostic base class from which Call implementations supporting specific media types are derived. InstantMessagingCall and AudioVideoCall are examples of such implementations for the "message" and "audio, video" media types, respectively. Call is one of the base components of the modality-extensible communication framework. Call is based on both the Session Initiation Protocol (SIP) for session establishment and termination operations and the Session Description Protocol (SDP) as Offer/Answer model. Note that Call does not generate SDP Offers or Answers itself but manages their exchange with the remote endpoint. Call operates in conjunction with a MediaProvider implementation responsible for the generation of an SDP Offer or an SDP Answer.
Although Call implementations differ from one modality to another in terms of the level of signaling functionalities they allow, they generally share a common set of modality-agnostic operations that are facilitated by the Call base class. The typical signaling operations consist of call establishment operations such as initiating an outbound call or accepting an incoming call, and of call termination by declining or forwarding an incoming call, canceling an outgoing call or simply tearing down or transferring an established call. Most of these operations allow a number of options such as supplying SIP extension headers, custom MIME parts or variations in behavior such as choosing between attended and unattended transfers.
Note that a call is always contained in a Conversation that maintains the full context of the communication the call is being part of. While Conversations are often single-mode with one remote participant and thus only contain one Call, the Conversation may also be multimodal and thus may contain multiple Call instances and be multiparty, involving more than one remote participant. When there is no call left in a Conversation, the Conversation is automatically terminated.
A call is generally used to set up one or more media channels between the local endpoint and a remote participant endpoint. In order for an Application to consume and supply Media, a Call gets paired with a Flow created during the initial SDP Offer/Answer negotiation by the MediaProvider implementation bound to the Call. In more advanced usages of Call, an Application continues using Call to set up one or more media channels but does not aim at establishing these media channels between the local endpoint and a remote endpoint, but rather between two remote media endpoints. For example, in the case of Back to Back calls, two calls are used in conjunction in order for an Application to stay in control of the signaling, while delegating the establishment of Media channels to another remote participant.