Call Class

Definition

Represents the signaling path that is established between two endpoints to set up and tear down media channels.

public ref class Call abstract
public abstract class Call
type Call = class
Public MustInherit Class Call
Inheritance
Call
Derived

Remarks

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.

Constructors

Call(Conversation)

Creates a new instance of the Call class.

Properties

ActiveMediaTypes
Obsolete.

Gets the list of active media types for the call.

ApplicationContext

Gets or sets an application-defined context.

CallId

Gets the CallId of the primary SIP session used by the call.

CanBeDeflected

Gets whether this call can be deflected to a destination URI other than given destination URI.

CanHandleTransferReceived

Gets whether the application supports handling of incoming transfer requests.

Conversation

Gets the conversation that contains this call.

DefaultMediaType

Gets or sets the default media type that will be used to establish an outbound call.

IsEarlyMediaSupported

Gets whether the call supports the reliable provisional response for early media.

IsReplacesSupported

Gets whether the local endpoint supports the call replacement feature.

IsThirdPartyCallControl

Gets whether the call is used in a third-party call control scenario.

IsUsingGeneratedIdentity

Gets whether the call should use a generated identity during call establishment to a trusted conference.

LocalTag

Gets the local tag of the primary session.

OriginalDestinationUri

Gets the original destination URI of the call.

RemoteEndpoint

Gets the remote endpoint of the call.

RemoteEndpointProperties

Gets the call-specific properties of the remote participant endpoint of this call.

RemoteTag

Gets the remote tag of the primary session.

RouteSetStatus

Gets the status of the dialog's route set.

State

Gets the current state of the call.

SupportedMediaTypes

Gets the collection of media types supported by the call.

Methods

BeginAccept(AsyncCallback, Object)

Accepts an incoming call.

BeginAccept(CallAcceptOptions, AsyncCallback, Object)

Accepts an incoming call with given options.

BeginEstablish(AsyncCallback, Object)

Establishes an outgoing call.

BeginEstablish(CallEstablishOptions, AsyncCallback, Object)

Establishes an outgoing call with given options.

BeginEstablish(String, CallEstablishOptions, AsyncCallback, Object)

Establishes an outgoing call.

BeginHandleTermination(AsyncCallback, Object)

Handles termination in a class derived from the call class.

BeginSendInfo(ContentType, Byte[], IEnumerable<SignalingHeader>, AsyncCallback, Object)
Obsolete.

Sends an INFO message to the remote participant of this call.

BeginSendMessage(MessageType, ContentType, Byte[], IEnumerable<SignalingHeader>, AsyncCallback, Object)

Send a message to the remote participant specified.

BeginSendReliableProvisionalResponse(Int32, Boolean, CallProvisionalResponseOptions, AsyncCallback, Object)

This method can be used to send a reliable provisional response with option to send answer for early media. If the inviter supports 100rel and the local policy is not unsupported, this method will wait for the PRACK. Otherwise, this method will not require 100rel. Any application that supports 100rel is recommended to use this method for sending provisional response. SendProvisional method can be used only when the application knows for sure that the remote does not require 100rel.

BeginTerminate(AsyncCallback, Object)

Terminates the call. After the call is terminated it is no longer usable.

BeginTerminate(CallTerminateOptions, AsyncCallback, Object)

Terminates the call. After the call is terminated it is no longer usable.

BeginTerminate(IEnumerable<SignalingHeader>, AsyncCallback, Object)

Terminates the call. After the call is terminated it is no longer usable.

BeginTransfer(Call, CallTransferOptions, AsyncCallback, Object)

Initiates a transfer request to the remote participant of the current call to replace another existing call in Attended type.

BeginTransfer(String, CallTransferOptions, AsyncCallback, Object)

Initiates a transfer request to the remote participant to transfer the current call to the given transfer target in Attended or Unattended type.

BindMediaProvider(MediaProvider)

Binds a user-specified media provider to the call.

Decline()

Declines an incoming call with a 603 response code (DeclineEverywhere).

Decline(CallDeclineOptions)

Declines an incoming call with options.

EndAccept(IAsyncResult)

Determines whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed

EndEstablish(IAsyncResult)

Determines whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed.

EndHandleTermination(IAsyncResult)

This method is used to determine whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed.

EndSendInfo(IAsyncResult)
Obsolete.

Determines whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed.

EndSendMessage(IAsyncResult)

This method is used to determine whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed

EndSendReliableProvisionalResponse(IAsyncResult)

This method is used to determine whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed

EndTerminate(IAsyncResult)

Determines whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed.

EndTransfer(IAsyncResult)

This method is used to determine whether the corresponding operation completed successfully. This method will wait if the operation has not yet completed

Forward(String)

Forwards the call to the specified target URI with a response code of 303.

Forward(String, CallForwardOptions)

Forwards the call to a different target URI with given options.

GetActiveMediaTypes()

Gets the active media types for the call.

GetMediaForDialReplaces()

Gets the enumeration of media types that MCU should offer when dialing or replacing this call.

GetNewEarlyDialog()

Returns the dialog context for the new early dialog.

GetTraceCorrelationID()

Gets the trace correlation id for this instance.

HandleCallMessageReceived(CallMessageReceivedEventArgs)

Handles a message received event in a class derived from the call class.

HandleFlowConfigurationRequested(MediaFlow)

Synchronously raises the flow to the application.

HandleForwardReceived(CallForwardReceivedEventArgs)

Handles a forwarding event in a class derived from the call class.

HandleMessageReceived(MessageReceivedEventArgs)
Obsolete.

Handles a message received event in a class derived from the call class.

HandleStateChange(CallStateChangedEventArgs)

Indicates a state change in an instance of a class derived from the Call class.

HandleTransferNotificationReceived(TransferStateChangedEventArgs)

Handles a transfer notification received event in a class derived from the call class.

HandleTransferReceived(CallTransferReceivedEventArgs)

Handles a transfer received event in a class derived from the call class.

IsSupportedMediaType(String)

Determines whether the given media type is present in the list of supported media types.

MakeCallback(AsyncCallback, IAsyncResult)

Invokes a specified call using the application's queue for the events.

ProcessIncomingInviteHeaders(IEnumerable<SignalingHeader>)

Processes signaling headers present on the incoming call.

RaiseEvent<TEventArg>(EventHandler<TEventArg>, Object, TEventArg)

Raises a generic event with a specific event argument type to the application

SendProvisionalResponse(Int32, CallProvisionalResponseOptions)

Sends a provisional response synchronously.

UnbindMediaProvider()

Removes the currently bound media provider. BindMediaProvider(MediaProvider)

Events

ConversationChanged

Raised when this call is moved to a derived conversation.

InfoReceived
Obsolete.

Raised when an INFO message is received on this call.

ProvisionalResponseReceived

Raised when a provisional response is received for an outgoing INVITE.

RemoteParticipantChanged

Raised when the remote participant that accepted this call cannot be verified as matching the original participant invited.

RouteSetStatusChanged

Raised when the state of the route set of the call changes.

StateChanged

Raised when the state of the call changes.

Extension Methods

GetRemoteParticipant(Call)
CreateSessionErrorReport(Call, DiagnosticsInformation)
GeneratePrimarySessionCallId(Call)
GetConferenceQoeServerAddress(Call)
GetIfCallFromVerifiedSource(Call)
GetMcuReplacesInformation(Call)
Redeliver(Call)
SetMissedCallStatus(Call, Boolean)

Applies to