Поделиться через


Краткое руководство: Управление звонком в комнате.

Введение

Во время сеанса в комнате Azure Communication Services (ACS) можно управлять сеансом с помощью SDK для вызовов, Call Automation SDK или обоих. В звонке в комнате можно управлять действиями во время звонка с помощью ролей, назначенных участникам, и свойствам, настроенных в комнате. Возможности управления ролями участника разрешены для каждого участника, а свойства комнаты применяются к вызову комнаты в целом.

Вызов пакетов SDK

Пакет SDK для вызова — это клиентская библиотека вызовов, позволяющая участникам вызова выполнять несколько операций вызова, таких как общий доступ к экрану, включение и отключение видео, отключение или отключение звука и т. д. Полный список возможностей см. в разделе "Обзор пакета 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 обратного вызова. При необходимости можно восстановить соединение с вызовом в комнате, используя callConnectionId. В приведенных ниже фрагментах кода используется callConnectionId, чтобы продемонстрировать эту функцию.

Добавление участника ТСОП

С помощью автоматизации вызовов можно вызвать номер ТСОП и добавить участника в групповой разговор. Однако необходимо настроить комнату, чтобы включить опцию исходящих вызовов через ТСОП (EnabledPSTNDialout установлено на true): и ресурс Служб коммуникации Azure должен иметь действующий номер телефона.

Дополнительные сведения см. в кратком руководстве по комнатам.

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

Удалить участника ТСОП


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 поддерживают возможности записи, включая start, stop, pause, resume и т. д., предоставляемые службой автоматизации вызовов. Ознакомьтесь со следующими фрагментами кода для запуска, остановки, приостановки или возобновления записи в групповом звонке. Полный список действий см. в разделе Запись автоматизации вызовов.

// 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 и номер ТСОП)
  4. Завершить звонок
  5. Получение участника (идентификатор ACS и номер ТСОП)
  6. Получите нескольких участников (идентификатор ACS и номер ТСОП)
  7. Получение последних сведений о вызове
  8. Воспроизведение аудиофайлов и текста
  9. Воспроизведение всех аудиофайлов и текста
  10. Распознавайте как DTMF, так и речь
  11. Распознавайте непрерывный DTMF

Дополнительные сведения см. в разделе "Действия вызова " и действия мультимедиа.

Дальнейшие действия

В этом разделе вы узнали, как:

  • Присоединяйтесь к звонку в комнате из вашего приложения.
  • Добавление действий во время вызова в комнату с использованием SDK для звонков
  • Добавление действий во время звонка в комнату с помощью SDK для автоматизации вызовов

Возможно, вы также захотите: