Udostępnij za pośrednictwem


Szybki start: zarządzanie połączeniem pokoju

Wprowadzenie

Podczas wywołania pokoju usług Azure Communication Services (ACS) można zarządzać wywołaniem przy użyciu zestawów SDK wywoływania lub zestawów SDK usługi Call Automation albo obu tych zestawów. W wywołaniu pokoju można kontrolować akcje wywołania przy użyciu obu ról przypisanych do uczestników i właściwości skonfigurowanych w pomieszczeniu. Role uczestnika kontrolują możliwości dozwolone dla każdego uczestnika, podczas gdy właściwości pokoju mają zastosowanie do połączenia pokoju jako całości.

Wywoływanie zestawów SDK

Zestaw SDK wywołujący po stronie klienta to biblioteka wywołująca klienta, która umożliwia uczestnikom wywołania pokoju wykonywanie kilku operacji w wywołaniu, takich jak udostępnianie ekranu, włączanie/wyłączanie wideo, wyciszanie/wyłączanie i tak dalej. Aby uzyskać pełną listę możliwości, zobacz Wywoływanie zestawu SDK — omówienie.

Możesz kontrolować możliwości na podstawie ról przypisanych do uczestników wywołania. Na przykład tylko prezenter może udostępniać ekran. Aby uzyskać informacje o rolach i uprawnieniach uczestników, zobacz Pojęcia dotyczące pokoi.

Zestawy SDK automatyzacji wywołań

Zestaw SDK usługi Call Automation to biblioteka po stronie serwera, która umożliwia administratorom zarządzanie trwającym wywołaniem pokoju w centralnym i kontrolowanym środowisku. W przeciwieństwie do zestawu SDK wywoływania operacje zestawu SDK usługi Call Automation są niezależne od ról. W związku z tym administrator połączeń może wykonywać kilka operacji w wywołaniu w imieniu uczestników rozmów pokojowych.

Na poniższej liście opisano typowe akcje w wywołaniu pokoju dostępne w wywołaniu pokoju.

Nawiązywanie połączenia z pokojem

Usługa Call Automation musi nawiązać połączenie z istniejącym wywołaniem pokoju przed wykonaniem dowolnych operacji wywołania. Zdarzenia CallConnected lub ConnectFailed są wywoływane przy użyciu mechanizmów wywołania zwrotnego, aby wskazać, czy operacja połączenia zakończyła się pomyślnie, czy zakończyła się niepowodzeniem.

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);

Po pomyślnym nawiązaniu połączenia z pokojem CallConnect zdarzenie jest powiadamiane za pośrednictwem identyfikatora URI wywołania zwrotnego. Możesz użyć callConnectionId polecenia , aby pobrać połączenie połączenia z pokojem zgodnie z potrzebami. Poniższe przykładowe fragmenty kodu używają elementu , callConnectionId aby zademonstrować tę funkcję.

Dodawanie uczestnika PSTN

Za pomocą usługi Call Automation możesz wybrać numer PSTN i dodać uczestnika do połączenia pokoju. Należy jednak skonfigurować pomieszczenie, aby włączyć opcję wybierania numerów PSTN (EnabledPSTNDialout ustawioną na truewartość ), a zasób usług Azure Communication Services musi mieć prawidłowy numer telefonu.

Aby uzyskać więcej informacji, zobacz Przewodnik Szybki start dotyczący pokoi.

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);

Usuwanie uczestnika 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);

Wyślij DTMF

Wyślij listę tonów DTMF do uczestnika zewnętrznego.

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);

Nagrywanie połączeń

Pokoje usług Azure Communication Services obsługują funkcje rejestrowania, w tym start, stop, pause, resumei tak dalej, udostępniane przez usługę Call Automation. Zobacz następujące fragmenty kodu, aby uruchomić/zatrzymać/wstrzymać/wznowić nagrywanie w wywołaniu pokoju. Aby uzyskać pełną listę akcji, zobacz Rejestrowanie wywołań automatyzacji.

// 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);

Kończenie połączenia

Możesz użyć akcji Zawieszanie się zestawu SDK usługi Call Automation, aby zakończyć wywołanie. Po zakończeniu akcji Zawieszanie się zestaw SDK publikuje CallDisconnected zdarzenie.

_ = await client.GetCallConnection(callConnectionId).HangUpAsync(forEveryone: true); 

Inne akcje

Następujące akcje in-call są również obsługiwane w wywołaniu pokoju.

  1. Dodawanie uczestnika (identyfikator ACS)
  2. Usuń uczestnika (identyfikator ACS)
  3. Anulowanie dodawania uczestnika (identyfikator ACS i numer PSTN)
  4. Zawieszanie połączenia
  5. Pobieranie uczestnika (identyfikator ACS i numer PSTN)
  6. Pobieranie wielu uczestników (identyfikator ACS i numer PSTN)
  7. Uzyskiwanie najnowszych informacji o połączeniu
  8. Odtwarzanie zarówno plików audio, jak i tekstu
  9. Odtwórz wszystkie pliki audio i tekst
  10. Rozpoznawanie zarówno dtMF, jak i mowy
  11. Rozpoznawanie ciągłego jednostki DTMF

Aby uzyskać więcej informacji, zobacz akcje wywołania i akcje multimedialne.

Następne kroki

W tej sekcji przedstawiono, jak wykonać następujące działania:

  • Dołączanie połączenia pokoju z aplikacji
  • Dodawanie akcji wywołania do wywołania pokoju przy użyciu zestawów SDK wywołujących
  • Dodawanie akcji wywołania do wywołania pokoju przy użyciu zestawów SDK usługi Call Automation

Możesz również wykonać następujące czynności: