Inicio rápido: administración de una llamada a sala
Introducción
Durante una llamada a sala de Azure Communication Services (ACS), puede administrar la llamada mediante los SDK de llamada o los SDK de automatización de llamadas o los dos. En una llamada a sala, puede controlar las acciones en llamadas mediante los roles asignados a los participantes y las propiedades configuradas en la sala. Los roles de los participantes controlan las capacidades permitidas por participante, mientras que las propiedades de la sala se aplican a la llamada a sala en su conjunto.
SDK de llamada
El SDK de llamadas es una biblioteca de llamadas del lado cliente que permite a los participantes de una llamada a sala realizar varias operaciones de llamada, como el recurso compartido de pantalla, activar o desactivar vídeo, silenciar o activar sonido, etc. Para obtener la lista completa de funcionalidades, consulte Información general de Calling SDK.
Las funcionalidades se controlan en función de los roles asignados a los participantes en la llamada. Por ejemplo, solo el moderador puede compartir la pantalla. Para ver los roles y permisos de los participantes, consulte Conceptos de salas.
SDK de automatización de llamadas
El SDK de automatización de llamadas es una biblioteca del lado servidor que permite a los administradores administrar una llamada a sala en curso en un entorno central y controlado. A diferencia del SDK de llamada, las operaciones del SDK de automatización de llamadas son independientes de los roles. Por lo tanto, un administrador de llamadas puede realizar varias operaciones en una llamada en nombre de los participantes de la llamada a sala.
En las listas siguientes se describen las acciones frecuentes en llamada disponibles en una llamada a sala.
Conexión a una llamada a sala
La automatización de llamadas debe conectarse a una llamada a sala existente antes de realizar operaciones en una llamada. Los eventos CallConnected
o ConnectFailed
se generan mediante mecanismos de devolución de llamada para indicar si una operación de conexión se realizó correctamente o produjo un error, respectivamente.
Uri callbackUri = new Uri("https://<myendpoint>/Events"); //the callback endpoint where you want to receive subsequent events
CallLocator roomCallLocator = new RoomCallLocator("<RoomId>");
ConnectCallResult response = await client.ConnectAsync(roomCallLocator, callbackUri);
Una vez que se haya conectado correctamente a una llamada a sala, se notifica un evento CallConnect
a través del URI de devolución de llamadas. Puede usar callConnectionId
para recuperar una conexión de llamada en la llamada a sala según sea necesario. En los fragmentos de código de ejemplo siguientes se usa callConnectionId
para demostrar esta función.
Agregar participante RTC
Con la automatización de llamadas puede marcar un número RTC y agregar el participante a una llamada a sala. Sin embargo, debe configurar una sala para habilitar la opción de acceso telefónico RTC (EnabledPSTNDialout
establecida en true
) y el recurso de Azure Communication Services debe tener aprovisionado un número de teléfono válido.
Para obtener más información, consulte el Inicio rápido a las salas.
var callerIdNumber = new PhoneNumberIdentifier("+16044561234"); // This is the ACS-provisioned phone number for the caller
var callThisPerson = new CallInvite(new PhoneNumberIdentifier("+16041234567"), callerIdNumber); // The target phone number to dial out to
CreateCallResult response = await client.GetCallConnection(callConnectionId).AddParticipantAsync(callThisPerson);
Quitar participante RTC
var removeThisUser = new PhoneNumberIdentifier("+16044561234");
// Remove a participant from the call with optional parameters
var removeParticipantOptions = new RemoveParticipantOptions(removeThisUser)
{
OperationContext = "operationContext",
OperationCallbackUri = new Uri("uri_endpoint"); // Sending event to a non-default endpoint
}
RemoveParticipantsResult result = await client.GetCallConnection(callConnectionId).RemoveParticipantAsync(removeParticipantOptions);
Enviar DTMF
Envíe una lista de tonos DTMF a un participante externo.
var tones = new DtmfTone[] { DtmfTone.One, DtmfTone.Two, DtmfTone.Three, DtmfTone.Pound };
var sendDtmfTonesOptions = new SendDtmfTonesOptions(tones, new PhoneNumberIdentifier(calleePhonenumber))
{
OperationContext = "dtmfs-to-ivr"
};
var sendDtmfAsyncResult = await callAutomationClient.GetCallConnection(callConnectionId).GetCallMedia().SendDtmfTonesAsync(sendDtmfTonesOptions);
Grabación de llamadas
Las salas de Azure Communication Services admiten funcionalidades de grabación como start
, stop
, pause
, resume
, etc., proporcionadas por Automatización de llamadas. Consulte los siguientes fragmentos de código para iniciar, detener, pausar o reanudar una grabación en una llamada a sala. Para obtener una lista completa de las acciones, consulte Grabación de automatización de llamadas.
// Start recording
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>"),
RecordingStorage = RecordingStorage.CreateAzureBlobContainerRecordingStorage(new Uri("<YOUR_STORAGE_CONTAINER_URL>"))
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
.StartAsync(recordingOptions);
// Pause recording using recordingId received in response of start recording.
var pauseRecording = await callAutomationClient.GetCallRecording ().PauseAsync(recordingId);
// Resume recording using recordingId received in response of start recording.
var resumeRecording = await callAutomationClient.GetCallRecording().ResumeAsync(recordingId);
// Stop recording using recordingId received in response of start recording.
var stopRecording = await callAutomationClient.GetCallRecording().StopAsync(recordingId);
Finalizar una llamada
Puede usar la acción Bloqueo del SDK de automatización de llamadas para finalizarla. Cuando se complete la acción Bloquear, el SDK publica un evento CallDisconnected
.
_ = await client.GetCallConnection(callConnectionId).HangUpAsync(forEveryone: true);
Otras acciones
Las siguientes acciones en llamadas también se admiten en una llamada de sala.
- Agregar un participante (identificador de ACS)
- Quitar un participante (identificador de ACS)
- Cancelar la función agregar participante (identificador de ACS y número RTC)
- Colgar la llamada
- Recibir participante (identificador de ACS y número RTC)
- Recibir varios participantes (identificador de ACS y número RTC)
- Obtención de la información más reciente sobre una llamada
- Reproducir archivos de audio y texto
- Reproducir todos los archivos de audio y texto
- Reconocer DTMF y voz
- Reconocer de forma continua DTMF
Para obtener más información, consulte acciones de llamada y acciones multimedia.
Pasos siguientes
En esta sección ha aprendido a hacer lo siguiente:
- Unirse a una llamada de sala desde la aplicación
- Agregar acciones de llamada a una llamada de sala mediante SDK de llamada
- Agregar acciones de llamada a una llamada de sala mediante SDK de automatización de llamadas
Puede que también le interese:
- Más información sobre los conceptos de salas
- Más información sobre las características del SDK de llamadas
- Más información sobre los conceptos de automatización de llamadas