CallConnection.java
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.communication.callingserver;
import com.azure.communication.callingserver.models.AddParticipantResult;
import com.azure.communication.callingserver.models.CallingServerErrorException;
import com.azure.communication.callingserver.models.CancelAllMediaOperationsResult;
import com.azure.communication.callingserver.models.PlayAudioOptions;
import com.azure.communication.callingserver.models.PlayAudioResult;
import com.azure.communication.common.CommunicationIdentifier;
import com.azure.core.annotation.ReturnType;
import com.azure.core.annotation.ServiceMethod;
import com.azure.core.http.rest.Response;
import com.azure.core.util.Context;
import com.azure.core.util.logging.ClientLogger;
/**
* Synchronous Client that supports call connection operations.
*/
public final class CallConnection {
private final CallConnectionAsync callConnectionAsync;
private final ClientLogger logger = new ClientLogger(CallConnection.class);
CallConnection(CallConnectionAsync callConnectionAsync) {
this.callConnectionAsync = callConnectionAsync;
}
/**
* Get the call connection id property.
*
* @return Call connection id value.
*/
public String getCallConnectionId() {
return callConnectionAsync.getCallConnectionId();
}
/**
* Play audio in the call.
*
* @param audioFileUri The media resource uri of the play audio request. Currently only Wave file (.wav) format
* audio prompts are supported. More specifically, the audio content in the wave file must
* be mono (single-channel), 16-bit samples with a 16,000 (16KHz) sampling rate.
* @param loop The flag indicating whether audio file needs to be played in loop or not.
* @param audioFileId An id for the media in the AudioFileUri, using which we cache the media.
* @param callbackUri call back uri to receive notifications.
* @param operationContext The value to identify context of the operation. This is used to co-relate other
* communications related to this operation
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response payload for play audio operation.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public PlayAudioResult playAudio(
String audioFileUri,
boolean loop,
String audioFileId,
String callbackUri,
String operationContext) {
return callConnectionAsync
.playAudioInternal(audioFileUri, loop, audioFileId, callbackUri, operationContext).block();
}
/**
* Play audio in the call.
*
* @param audioFileUri The media resource uri of the play audio request. Currently only Wave file (.wav) format
* audio prompts are supported. More specifically, the audio content in the wave file must
* be mono (single-channel), 16-bit samples with a 16,000 (16KHz) sampling rate.
* @param playAudioOptions Options for play audio.
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response payload for play audio operation.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public PlayAudioResult playAudio(String audioFileUri, PlayAudioOptions playAudioOptions) {
return callConnectionAsync.playAudioInternal(audioFileUri, playAudioOptions).block();
}
/**
* Play audio in the call.
*
* @param audioFileUri The media resource uri of the play audio request. Currently only Wave file (.wav) format
* audio prompts are supported. More specifically, the audio content in the wave file must
* be mono (single-channel), 16-bit samples with a 16,000 (16KHz) sampling rate.
* @param playAudioOptions Options for play audio.
* @param context A {@link Context} representing the request context.
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response payload for play audio operation.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<PlayAudioResult> playAudioWithResponse(
String audioFileUri,
PlayAudioOptions playAudioOptions,
final Context context) {
return callConnectionAsync
.playAudioWithResponseInternal(audioFileUri, playAudioOptions, context)
.block();
}
/**
* Disconnect from a call.
*
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public void hangup() {
callConnectionAsync.hangup().block();
}
/**
* Disconnect from a call.
*
* @param context A {@link Context} representing the request context.
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response for a successful hangup request.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> hangupWithResponse(final Context context) {
return callConnectionAsync.hangupWithResponse(context).block();
}
/**
* Cancel all media operations in the call.
*
* @param operationContext The value to identify context of the operation. This is used to co-relate other
* communications related to this operation
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response for a successful cancel all media operations request.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public CancelAllMediaOperationsResult cancelAllMediaOperations(String operationContext) {
return callConnectionAsync.cancelAllMediaOperations(operationContext).block();
}
/**
* Cancel all media operations in the call.
*
* @param operationContext The value to identify context of the operation. This is used to co-relate other
* communications related to this operation
* @param context A {@link Context} representing the request context.
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response for a successful cancel all media operations request.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<CancelAllMediaOperationsResult> cancelAllMediaOperationsWithResponse(
String operationContext,
final Context context) {
return callConnectionAsync.cancelAllMediaOperationsWithResponse(operationContext, context).block();
}
/**
* Add a participant to the call.
*
* @param participant Added participant.
* @param alternateCallerId Phone number to use when adding a phone number participant.
* @param operationContext Value to identify context of the operation. This is used to co-relate other
* communications related to this operation
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response for a successful add participant request.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public AddParticipantResult addParticipant(
CommunicationIdentifier participant,
String alternateCallerId,
String operationContext) {
return callConnectionAsync.addParticipant(participant, alternateCallerId, operationContext).block();
}
/**
* Add a participant to the call.
*
* @param participant Added participant.
* @param alternateCallerId Phone number to use when adding a phone number participant.
* @param operationContext Value to identify context of the operation. This is used to co-relate other
* communications related to this operation
* @param context {@link Context} representing the request context.
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response for a successful add participant request.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<AddParticipantResult> addParticipantWithResponse(
CommunicationIdentifier participant,
String alternateCallerId,
String operationContext,
final Context context) {
return callConnectionAsync
.addParticipantWithResponse(participant, alternateCallerId, operationContext, context).block();
}
/**
* Remove a participant from the call.
*
* @param participantId Participant id.
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public void removeParticipant(String participantId) {
callConnectionAsync.removeParticipant(participantId).block();
}
/**
* Remove a participant from the call.
*
* @param participantId Participant id.
* @param context {@link Context} representing the request context.
* @throws CallingServerErrorException thrown if the request is rejected by server.
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
* @return Response for a successful remove participant request.
*/
@ServiceMethod(returns = ReturnType.SINGLE)
public Response<Void> removeParticipantWithResponse(String participantId, final Context context) {
return callConnectionAsync.removeParticipantWithResponse(participantId, context).block();
}
}