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


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

Введение

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

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

Пакет SDK для вызова — это клиентская библиотека вызовов, позволяющая участникам вызова выполнять несколько операций вызова, таких как общий доступ к экрану, включение и отключение видео, отключение или отключение звука и т. д. Полный список возможностей см. в разделе "Обзор пакета SDK для вызовов".

Вы управляете возможностями на основе ролей, назначенных участникам вызова. Например, только выступающий может использовать общий доступ к экрану. Сведения о ролях и разрешениях участников см . в разделе "Основные понятия комнат".

Пакеты SDK службы автоматизации звонков

Пакет SDK службы автоматизации вызовов — это серверная библиотека, позволяющая администраторам управлять текущим вызовом комнаты в централизованной и управляемой среде. В отличие от пакета SDK для вызова, операции пакета SDK службы автоматизации вызовов являются ролями, не зависящими от ролей. Таким образом, администратор звонков может выполнять несколько операций в вызове от имени участников вызова комнаты.

В следующих списках описаны распространенные действия в вызове, доступные в вызове комнаты.

Подключение к вызову комнаты

Служба автоматизации вызовов должна подключиться к существующему вызову комнаты перед выполнением любых операций в вызове. ConnectFailed События CallConnected вызываются с помощью механизмов обратного вызова, чтобы указать, была ли операция подключения успешной или неудачной соответственно.

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

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

// 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 службы автоматизации вызовов

Полезные ссылки