Guia de início rápido: gerenciar uma chamada de sala
Introdução
Durante uma chamada de sala dos Serviços de Comunicação do Azure (ACS), você pode gerenciar a chamada usando SDKs de Chamada ou SDKs de Automação de Chamadas ou ambos. Em uma chamada de sala, você pode controlar as ações na chamada usando as funções atribuídas aos participantes e as propriedades configuradas na sala. Os recursos de controle de funções do participante são permitidos por participante, enquanto as propriedades da sala se aplicam à chamada de sala como um todo.
Chamando SDKs
O SDK de chamada é uma biblioteca de chamadas do lado do cliente que permite que os participantes de uma chamada de sala executem várias operações na chamada, como compartilhamento de tela, ativar/desativar vídeo, silenciar/desativar o som e assim por diante. Para obter a lista completa de recursos, consulte Visão geral do SDK de chamada.
Você controla os recursos com base nas funções atribuídas aos participantes da chamada. Por exemplo, apenas o apresentador pode compartilhar a tela. Para funções e permissões de participantes, consulte Conceitos de salas.
SDKs de automação de chamadas
O SDK de Automação de Chamadas é uma biblioteca do lado do servidor que permite aos administradores gerenciar uma chamada de sala em andamento em um ambiente central e controlado. Ao contrário do SDK de Chamada, as operações do SDK de Automação de Chamadas são agnósticas de funções. Portanto, um administrador de chamada pode executar várias operações de chamada em nome dos participantes da chamada de sala.
As listas a seguir descrevem ações comuns em chamada disponíveis em uma chamada de sala.
Conectar-se a uma chamada de sala
A Automação de Chamadas deve se conectar a uma chamada de sala existente antes de executar qualquer operação de chamada. Os CallConnected
eventos or ConnectFailed
são gerados usando mecanismos de retorno de chamada para indicar se uma operação de conexão foi bem-sucedida ou falhou, 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);
Uma vez conectado com êxito a uma chamada de sala, um CallConnect
evento é notificado via URI de retorno de chamada. Você pode usar callConnectionId
para recuperar uma conexão de chamada na chamada de sala, conforme necessário. Os trechos de código de exemplo a seguir usam o callConnectionId
para demonstrar essa função.
Adicionar participante PSTN
Usando a Automação de Chamadas, você pode discar para um número PSTN e adicionar o participante a uma chamada de sala. No entanto, você deve configurar uma sala para habilitar a opção de discagem PSTN (EnabledPSTNDialout
definida como true
) e o recurso Serviços de Comunicação do Azure deve ter um número de telefone válido provisionado.
Para obter mais informações, consulte Início rápido de 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);
Remover participante PSTN
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
Envie uma lista de tons DTMF para um 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);
Gravação de chamadas
As salas dos Serviços de Comunicação do Azure oferecem suporte a recursos de gravação, incluindo start
, stop
, pause
, resume
e assim por diante, fornecidos pela Automação de Chamadas. Consulte os seguintes trechos de código para iniciar/parar/pausar/retomar uma gravação em uma chamada de sala. Para obter uma lista completa de ações, consulte Gravação de automação de chamadas.
// 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);
Encerrar uma chamada
Você pode usar a ação de desligamento do SDK de automação de chamadas para encerrar uma chamada. Quando a ação Desligar for concluída, o SDK publicará um CallDisconnected
evento.
_ = await client.GetCallConnection(callConnectionId).HangUpAsync(forEveryone: true);
Outras ações
As seguintes ações em chamada também são suportadas em uma chamada de sala.
- Adicionar participante (identificador ACS)
- Remover participante (identificador ACS)
- Cancelar adicionar participante (identificador ACS e número PSTN)
- Desligue a chamada
- Obter participante (identificador ACS e número PSTN)
- Obter vários participantes (identificador ACS e número PSTN)
- Obter as informações mais recentes sobre uma chamada
- Reproduza arquivos de áudio e texto
- Reproduza todos os arquivos de áudio e texto
- Reconhecer DTMF e fala
- Reconhecer DTMF contínuo
Para obter mais informações, consulte Ações de chamada e ações de mídia.
Próximos passos
Nesta seção, você aprendeu como:
- Participe de uma chamada de sala a partir do seu aplicativo
- Adicionar ações em chamada em uma chamada de sala usando SDKs de chamada
- Adicionar ações em chamada em uma chamada de sala usando SDKs de automação de chamada
Você também pode querer:
- Saiba mais sobre o conceito de quartos
- Saiba mais sobre os recursos de Chamando SDKs
- Saiba mais sobre os conceitos de Call Automation