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