Краткое руководство. Управление вызовом комнаты
Введение
Во время вызова комнаты Службы коммуникации 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
и 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);
Другие действия
Следующие действия в вызове также поддерживаются в вызове комнаты.
- Добавление участника (идентификатор ACS)
- Удаление участника (идентификатор ACS)
- Отмена добавления участника (идентификатор ACS и номер ТСОП)
- Повесить звонок
- Получение участника (идентификатор ACS и номер ТСОП)
- Получение нескольких участников (идентификатор ACS и номер ТСОП)
- Получение последних сведений о вызове
- Воспроизведение аудиофайлов и текста
- Воспроизведение всех аудиофайлов и текста
- Распознавание как DTMF, так и речи
- Распознавание непрерывного DTMF
Дополнительные сведения см. в разделе "Действия вызова" и действия мультимедиа.
Следующие шаги
В этом разделе вы узнали, как:
- Присоединение звонка к помещению из приложения
- Добавление действий в вызов комнаты с помощью вызовов пакетов SDK
- Добавление действий в вызов комнаты с помощью пакетов SDK службы автоматизации вызовов
Полезные ссылки
- Общие сведения о концепциях комнат
- Узнайте о функциях вызовов пакетов SDK
- Сведения о концепциях автоматизации вызовов