The Call
Calls in the SDK are denoted with the ICall interface. Different actions on calls like joining existing calls, placing new calls, or transferring the call to another participant are provided as part of this ICall
object.
Call Properties
The call has a number of important properties.
- The LegId property is the identifier for one leg of the call. For example, if multiple instances of the bot are connected to the same conversation, each ICall instance in that conversation will have its own unique LegId. This id is generated by the SDK, or provided by the server.
- The CallLink Uri points to where this conversation is hosted. It also enables the SDK to rehydrate the call object to get all it's required internal properties.
- The CorrelationId property is the identifier for the entire conversation. Each leg of the call will share the same
CorrelationId
as long as they are part of the same conversation. This property is largely owned by the server. - The SignalingHandler property provides access to the
CallHandler
that the the call was initialized with during theCallInitializeAsync
callback. This is a convenience to be able to access the call handler through the SDK. - The MediaSession property provides access to the
IMediaSession
that the call was initialized with during theCallInitializeAsync
callback. This is a convenience to be able to access the call handler through the SDK, and is only available for calls with locally hosted media.
Important
To fetch an existing call from the SDK, or to access an existing call from the server, the SDK requires both the LegId
and the CallLink
parameters. The LegId
properly identifies the call, and the CallLink
lets the SDK know where the call is located. In the future the LegId
parameter may dissapear, and the CallLink
may serve both of these purposes.
Joining an existing call
In order to join an existing call, you require to fill in the JoinCallParameters object. Once a new Call Object is created, you can call the StartJoinCallAsync method on the ICall
object. This would start the process of joining a call. The outcome (OnJoinCallCompletedAsync) and other events on the call are raised on the ISignalingHandler
implementation for the call.