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 de chamada usando as funções atribuídas aos participantes e as propriedades configuradas na sala. As funções do participante controlam os recursos permitidos por participante, enquanto as propriedades de sala se aplicam à chamada de sala como um todo.
SDKs de chamada
Chamar o SDK é uma biblioteca de chamadas do lado do cliente, permitindo que os participantes em uma chamada de sala executem várias operações de chamada, como compartilhamento de tela, ativar/desativar vídeo, ativar/desativar mudo 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 na chamada. Por exemplo, somente o apresentador pode compartilhar a tela. Para obter funções e permissões de participante, consulte Conceitos de Salas.
SDK de Automação de Chamada
O SDK de Automação de Chamadas é uma biblioteca do lado do servidor que permite que os administradores gerenciem uma chamada de sala contínua 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 funções independentes. Portanto, um administrador de chamadas 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 eventos CallConnected
ou 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 evento CallConnect
é notificado por meio do URI de retorno de chamada. Você pode usar callConnectionId
para recuperar uma conexão de chamada na chamada de sala, conforme necessário. Os snippets 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 dos 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 chamada
As salas dos Serviços de Comunicação do Azure dão suporte a recursos de gravação, incluindo start
, stop
, pause
, resume
e assim por diante, fornecidos pela Automação de Chamadas. Consulte os snippets de código a seguir para iniciar/parar/pausar/retomar uma gravação em uma chamada de sala. Para obter uma lista completa de ações, consulte a gravação da 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 Desligar do SDK de Automação de Chamadas para encerrar uma chamada. Quando a ação Desligar for concluída, o SDK publicará um evento CallDisconnected
.
_ = await client.GetCallConnection(callConnectionId).HangUpAsync(forEveryone: true);
Outras ações
As seguintes ações de chamada também têm suporte em uma chamada de sala.
- Adicionar participante (identificador ACS)
- Remover participante (identificador ACS)
- Cancelar a adição de participante (identificador ACS e número PSTN)
- Desligar 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
- Reproduzir arquivos de áudio e texto
- Reproduzir todos os arquivos de áudio e texto
- Reconhecer DTMF e fala
- Reconhecer DTMF contínua
Para obter mais informações, consulte ações de chamada e ações de mídia.
Próximas etapas
Nesta seção, você aprendeu a:
- Ingressar em uma chamada de sala no aplicativo
- Adicionar ações de 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 Chamadas
Você também pode querer:
- Saiba mais sobre o conceito de salas
- Saiba mais sobre como chamar recursos de SDKs
- Saiba mais sobre conceitos de Automação de Chamadas