다음을 통해 공유


빠른 시작: 회의실 통화 관리

소개

ACS(Azure Communication Services) 룸 호출 중에 통화 SDK 또는 통화 자동화 SDK 또는 둘 다를 사용하여 통화를 관리할 수 있습니다. 회의실 통화에서 참가자에게 할당된 역할과 회의실에 구성된 속성을 모두 사용하여 호출 내 작업을 제어할 수 있습니다. 참가자의 역할 제어 기능은 참가자별로 허용되는 반면, 회의실 속성은 전체 회의실 호출에 적용됩니다.

통화 SDK

SDK 호출은 회의실 호출의 참가자가 화면 공유, 비디오 켜기/끄기, 음소거/음소거 해제 등과 같은 여러 통화 내 작업을 수행할 수 있도록 하는 클라이언트 쪽 호출 라이브러리입니다. 기능의 전체 목록은 통화 SDK 개요를 참조하세요.

통화 참가자에게 할당된 역할에 따라 기능을 제어합니다. 예를 들어 발표자만 화면 공유를 할 수 있습니다. 참가자 역할 및 권한은 룸 개념을 참조 하세요.

Automation SDK 호출

통화 자동화 SDK는 관리자가 중앙 및 제어 환경에서 진행 중인 회의실 호출을 관리할 수 있도록 하는 서버 쪽 라이브러리입니다. 호출 SDK와 달리 호출 자동화 SDK 작업은 역할에 구애받지 않습니다. 따라서 통화 관리자는 회의실 통화 참가자를 대신하여 여러 통화 내 작업을 수행할 수 있습니다.

다음 목록에서는 회의실 통화에서 사용할 수 있는 일반적인 호출 내 작업에 대해 설명합니다.

회의실 통화에 연결

호출 자동화는 호출 내 작업을 수행하기 전에 기존 회의실 호출에 연결해야 합니다. CallConnected 또는 ConnectFailed 이벤트는 콜백 메커니즘을 사용하여 연결 작업이 각각 성공했는지 또는 실패했는지를 나타내기 위해 발생합니다.

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

회의실 호출에 성공적으로 연결되면 콜백 URI를 CallConnect 통해 이벤트 알림을 받습니다. 필요에 따라 회의실 통화에서 통화 연결을 검색하는 데 사용할 callConnectionId 수 있습니다. 다음 샘플 코드 조각은 이 함수를 callConnectionId 보여 주는 데 사용합니다.

PSTN 참가자 추가

통화 자동화를 사용하여 PSTN 번호로 전화를 걸고 참가자를 회의실 통화에 추가할 수 있습니다. 그러나 PSTN 전화 접속 옵션(EnabledPSTNDialouttrue설정)을 사용하도록 회의실을 설정해야 하며 Azure Communication Services 리소스에는 유효한 전화 번호가 프로비전되어 있어야 합니다.

자세한 내용은 룸 빠른 시작을 참조 하세요.

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

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

DTMF 보내기

외부 참가자에게 DTMF 버튼음 목록을 보냅니다.

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

통화 녹화

Azure Communication Services 룸은 통화 자동화에서 제공하는 , stoppause, resume등과 같은 start기록 기능을 지원합니다. 회의실 통화에서 녹음/중지/일시 중지/다시 시작하려면 다음 코드 조각을 참조하세요. 작업의 전체 목록은 통화 자동화 기록을 참조하세요.

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

통화 종료

통화 자동화 SDK 중단 작업을 사용하여 호출을 종료할 수 있습니다. 끊기 작업이 완료되면 SDK에서 CallDisconnected 이벤트를 게시합니다.

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

기타 작업

회의실 호출에서도 다음과 같은 호출 내 작업이 지원됩니다.

  1. 참가자 추가(ACS 식별자)
  2. 참가자 제거(ACS 식별자)
  3. 참가자 추가 취소(ACS 식별자 및 PSTN 번호)
  4. 전화 걸기
  5. 참가자 가져오기(ACS 식별자 및 PSTN 번호)
  6. 여러 참가자 가져오기(ACS 식별자 및 PSTN 번호)
  7. 통화에 대한 최신 정보 가져오기
  8. 오디오 파일과 텍스트를 모두 재생합니다.
  9. 오디오 파일과 텍스트를 모두 재생합니다.
  10. DTMF 및 음성 모두 인식
  11. 연속 DTMF 인식

자세한 내용은 통화 작업미디어 작업을 참조하세요.

다음 단계

이 섹션에서는 다음을 수행하는 방법을 학습했습니다.

  • 애플리케이션에서 회의실 통화 조인
  • 호출 SDK를 사용하여 회의실 호출에 호출 내 작업 추가
  • 통화 자동화 SDK를 사용하여 회의실 호출에 호출 내 작업 추가

다음을 수행할 수도 있습니다.