/// Join the call using conversation id. /// <param name="conversationId"> The conversation id that can be a group id or a encoded conversation url retrieve from client. </param> /// <param name="source"> The source identity. </param> /// <param name="callOptions"> The call Options. </param> /// <param name="cancellationToken"> The cancellation token. </param> /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> for details returned from the server.</exception> /// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="conversationId"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="callOptions"/> is null.</exception> public virtual Response <JoinCallResponse> JoinCall(string conversationId, CommunicationIdentifier source, JoinCallOptions callOptions, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallClient)}.{nameof(JoinCall)}"); scope.Start(); try { Argument.AssertNotNull(source, nameof(source)); Argument.AssertNotNull(callOptions, nameof(callOptions)); return(RestClient.JoinCall( conversationId: conversationId, source: CommunicationIdentifierSerializer.Serialize(source), callbackUri: callOptions.CallbackUri?.AbsoluteUri, requestedModalities: callOptions.RequestedModalities, requestedCallEvents: callOptions.RequestedCallEvents, subject: null, cancellationToken: cancellationToken )); } catch (Exception ex) { scope.Failed(ex); throw; } }
/// Join the call using server call id. /// <param name="serverCallId"> The server call id. </param> /// <param name="source"> The source identity. </param> /// <param name="callOptions"> The call Options. </param> /// <param name="cancellationToken"> The cancellation token. </param> /// <exception cref="RequestFailedException">The server returned an error. See <see cref="Exception.Message"/> for details returned from the server.</exception> /// <exception cref="ArgumentNullException"><paramref name="source"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="serverCallId"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="callOptions"/> is null.</exception> public virtual Response <CallConnection> JoinCall(string serverCallId, CommunicationIdentifier source, JoinCallOptions callOptions, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(CallingServerClient)}.{nameof(JoinCall)}"); scope.Start(); try { Argument.AssertNotNull(source, nameof(source)); Argument.AssertNotNull(callOptions, nameof(callOptions)); var joinCallResponse = ServerCallRestClient.JoinCall( serverCallId: serverCallId, source: CommunicationIdentifierSerializer.Serialize(source), callbackUri: callOptions.CallbackUri?.AbsoluteUri, requestedMediaTypes: callOptions.RequestedMediaTypes, requestedCallEvents: callOptions.RequestedCallEvents, subject: null, cancellationToken: cancellationToken ); return(Response.FromValue( new CallConnection(joinCallResponse.Value.CallConnectionId, CallConnectionRestClient, _clientDiagnostics), joinCallResponse.GetRawResponse())); } catch (Exception ex) { scope.Failed(ex); throw; } }