Aracılığıyla paylaş


İstemcide arama kaydını yönetme

Önemli

Azure İletişim Hizmetleri'nin bu özelliği şu anda önizlemede. Önizlemedeki özellikler genel kullanıma açıktır ve tüm yeni ve mevcut Microsoft müşterileri tarafından kullanılabilir.

Bu önizleme sürümü hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için bu sürümü önermeyiz. Bazı özellikler desteklenmeyebilir veya özellikler kısıtlanmış olabilir.

Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Arama kaydı , kullanıcılarınızın Azure İletişim Hizmetleri ile yaptıkları aramaları kaydetmesini sağlar. Bu makalede, istemci tarafında kaydı yönetmeyi öğreneceksiniz. Başlamadan önce sunucu tarafında kaydı ayarlamanız gerekir.

Önkoşullar

Destek

Aşağıdaki tablolar Azure İletişim Hizmetleri'da kayıt desteğini tanımlar.

Kimlikler ve çağrı türleri

Aşağıdaki tablolarda belirli bir çağrı türü ve kimliği için kayıt desteği gösterilmektedir.

Kimlikler Teams toplantısı Oda bire bir görüşme Grup görüşmesi 1:1 Teams entegrasyon araması Grup Takımları birlikte çalışabilirlik çağrısı
İletişim Hizmetleri kullanıcısı ✔️ [1][2] ✔️ [3] ✔️ [3] ✔️ [2][3]
Microsoft 365 kullanıcısı ✔️ [1][2] ✔️ [2][3]

[1] Bu arama türleri Teams bulutu destekler. [2] Bu arama türleri Teams uyumluluk kaydını destekler.
[3] Bu arama türleri Azure İletişim Hizmetleri kaydını destekler.

Operasyonlar

Aşağıdaki tablolarda, SDK'nın tek tek kimlik türlerine çağrılmasında tek tek API'lerin desteği gösterilmektedir.

Operasyonlar İletişim Hizmetleri kullanıcısı Microsoft 365 kullanıcısı
Kaydın başladığı veya durduğu hakkında bildirim alın. ✔️ ✔️
Kayıt durumunu alma ✔️ ✔️
Kaydın mevcut olduğunu bildiren bildirim al ✔️ [1] ✔️ [1]
Açık onay gerekip gerekmediğini öğrenin ✔️ [2] ✔️ [2]
Kaydedilmesi için açık onay verme ✔️ [2] ✔️ [2]

[1] Kullanıcıya kaydın kullanılabilir olduğu bildirilmez. Teams bulut kaydının kullanılabilirliği hakkında bildirim almak için Microsoft Graph'in değişiklik bildirimlerine Microsoft.Communication.RecordingFileStatusUpdated abone olabilir veya Azure İletişim Hizmetleri kaydı kullanılabilir olduğunda bildirim almak üzere Azure İletişim Hizmetleri'da etkinliğe abone olabilirsiniz.

[2] Bu işlev yalnızca Teams toplantılarında ve Grup Teams birlikte çalışabilirlik çağrılarında kullanılabilir.

SDK

Aşağıdaki tablolarda tek tek Azure İletişim Hizmetleri SDK'larda kayıt desteği gösterilmektedir.

Platformlar Web kullanıcı arabirimi Ios iOS kullanıcı arabirimi Android Android kullanıcı arabirimi Windows
Destekleniyor ✔️ ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1]

[1] Bu SDK'lar açık onayı desteklemez.

SDK’yı yükleyin

Azure İletişim Hizmetleri Common ve Calling SDK'sını JavaScript için yüklemek üzere npm install komutunu kullanın.

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

Gerekli nesneleri başlatma

CallClient Çoğu çağrı işlemi için bir örnek gereklidir. Yeni bir CallClient örneği oluşturduğunuzda, bunu Logger örneği gibi özel seçeneklerle yapılandırabilirsiniz.

CallClient örneğiyle, CallAgent çağrısını yaparak bir createCallAgent örneği oluşturabilirsiniz. Bu yöntem zaman uyumsuz olarak bir CallAgent örnek nesnesi döndürür.

createCallAgent yöntemi, CommunicationTokenCredential bir bağımsız değişken olarak kullanır. Kullanıcı erişim belirtecini kabul eder.

getDeviceManager öğesine erişmek için CallClient örneğinde deviceManager yöntemini kullanabilirsiniz.

const { CallClient } = require('@azure/communication-calling');
const { AzureCommunicationTokenCredential} = require('@azure/communication-common');
const { AzureLogger, setLogLevel } = require("@azure/logger");

// Set the logger's log level
setLogLevel('verbose');

// Redirect log output to console, file, buffer, REST API, or whatever location you want
AzureLogger.log = (...args) => {
    console.log(...args); // Redirect log output to console
};

const userToken = '<USER_TOKEN>';
callClient = new CallClient(options);
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const callAgent = await callClient.createCallAgent(tokenCredential, {displayName: 'optional Azure Communication Services user name'});
const deviceManager = await callClient.getDeviceManager()

Microsoft altyapısına SDK bağlantısını yönetme

Örnek, Call Agent çağrıları yönetmenize yardımcı olur (aramalara katılmak veya çağrıları başlatmak için). Arama SDK'nızın çalışması için gelen aramaların bildirimlerini almak ve diğer arama ayrıntılarını koordine etmek için Microsoft altyapısına bağlanması gerekir. Call Agent'ın iki olası durumu vardır.

Bağlı - Call Agent connectionStatue değeri Connected , istemci SDK'sının bağlı olduğu ve Microsoft altyapısından bildirim alabilen olduğu anlamına gelir.

Bağlantısı kesildi - Call Agent connectionStatue değerindeki Disconnected SDK'nın düzgün bağlanmasını engelleyen bir sorun olduğunu belirtir. Call Agent yeniden oluşturulmalıdır.

  • invalidToken: Jetonun süresi dolmuşsa veya geçersizse Call Agent örneği bu hatayla bağlantıyı keser.
  • connectionIssue: İstemcinin Microsoft altyapısına bağlanmasıyla ilgili bir sorun varsa, birçok yeniden denemeden sonra Call AgentconnectionIssue hatasını ortaya çıkarır.

Yerel Call Agent'inizin Microsoft altyapısına bağlı olup olmadığını, connectionState özelliğinin geçerli değerini inceleyerek kontrol edebilirsiniz. Etkin bir çağrı sırasında, connectionStateChanged durumundan Call AgentBağlantısız duruma gelen değişikliklerin olup olmadığını belirlemek için olayı dinleyebilirsiniz.

const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'

const connectionStateCallback = (args) => {
    console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
    // it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);

Not

Bu API, geliştiriciler için bir önizleme olarak sağlanır ve aldığımız geri bildirimlere göre değişebilir. Bu API'i üretim ortamında kullanmayın. Bu API'yi kullanmak için Azure İletişim Hizmetleri Çağrı Web SDK'sının beta sürümünü kullanın.

Bulut ve uyumluluk kaydı

Çağrı kaydı, çekirdek Çağrı API'sinin genişletilmiş bir özelliğidir. İlk olarak Arama SDK'sından arama özelliklerini içeri aktarmanız gerekir:

import { Features} from "@azure/communication-calling";

Ardından çağrı örneğinden kayıt özelliklerinin API nesnesini alabilirsiniz:

const callRecordingApi = call.feature(Features.Recording);

Çağrının kaydedilip kaydedilmediğini kontrol etmek için isRecordingActive öğesinin callRecordingApi özelliğini inceleyin. Bu Boolean döndürür.

const isRecordingActive = callRecordingApi.isRecordingActive;

Değişiklikleri kaydetmeye de abone olabilirsiniz:

const isRecordingActiveChangedHandler = () => {
    console.log(callRecordingApi.isRecordingActive);
};

callRecordingApi.on('isRecordingActiveChanged', isRecordingActiveChangedHandler);

özelliğini recordingskullanarak kayıtların callRecordingApi listesini alabilirsiniz. Bulut kaydının geçerli durumuna sahip olan değerini döndürür RecordingInfo[].

const recordings = callRecordingApi.recordings;

recordings.forEach(r => {
    console.log("State: ${r.state}");

Ayrıca, güncelleştirilmiş kayıt koleksiyonuna recordingsUpdated abone olabilir ve bu kayıtları alabilirsiniz. Bu olay, bir kayıt güncelleştirmesi olduğunda tetikleniyor.

const cloudRecordingsUpdatedHandler = (args: { added: SDK.RecordingInfo[], removed: SDK.RecordingInfo[]}) => {
                        console.log('Recording started by: ');
                        args.added?.forEach(a => {
                            console.log('State: ${a.state}');
                        });

                        console.log('Recording stopped by: ');
                        args.removed?.forEach(r => {
                            console.log('State: ${r.state}');
                        });
                    };
callRecordingApi.on('recordingsUpdated', cloudRecordingsUpdatedHandler );

Teams toplantınız veya aramanız kayıt ve transkripsiyon için açık onay gerektirecek şekilde yapılandırıldığında, bunları kaydedebilmek için önce aramadaki tüm katılımcılardan onay toplamanız gerekir. Toplantıya katılırken proaktif olarak veya kayıt başladığında reaktif olarak onay sağlayabilirsiniz. Açık onay verilene kadar, katılımcıların ses, görüntü ve ekran paylaşımı kayıt sırasında devre dışı bırakılır.

Toplantı kaydı için açık onay gerekip gerekmediğini isTeamsConsentRequired özelliğine göre kontrol edebilirsiniz. Eğer değer true olarak ayarlanırsa, call için açık onay gerekir.

const isConsentRequired = callRecordingApi.isTeamsConsentRequired;

Kullanıcının kayıt için onayını zaten aldıysanız, hizmete açık rıza göstermek için grantTeamsConsent() yöntemini çağırabilirsiniz. Bu onay yalnızca bir call oturum için geçerlidir ve kullanıcıların toplantıya yeniden katılmaları durumunda yeniden onay vermesi gerekir.

callRecordingApi.grantTeamsConsent();

Kayıt etkin olduğunda ses, video veya ekran paylaşımını etkinleştirme girişimleri başarısız oluyor, açık onay gerekiyor ancak henüz verilmedi. Bu durumu, reasonParticipantCapabilities, sınıfının turnVideoOn'ında, unmuteMic ve shareScreen özelliklerini kontrol ederek tanıyabilirsiniz. Bu özellikleri özelliğinde call.feature(Features.Capabilities)bulabilirsiniz. Kullanıcıların açık onay sağlaması gerektiğinden bu özellikler bir nedeni etkinleştirecek.

SDK’yı yükleyin

Proje düzeyi build.gradle dosyanızı bulun ve mavenCentral() altındaki depolar listesine buildscript ekleyin allprojects:

buildscript {
    repositories {
    ...
        mavenCentral()
    ...
    }
}
allprojects {
    repositories {
    ...
        mavenCentral()
    ...
    }
}

Ardından modül düzeyi build.gradle dosyanızda, dependencies bölümüne aşağıdaki satırları ekleyin.

dependencies {
    ...
    implementation 'com.azure.android:azure-communication-calling:1.0.0'
    ...
}

Gerekli nesneleri başlatma

Bir CallAgent örneğinde, createCallAgent yöntemini çağırarak bir CallClient örneği oluşturmanız gerekir. Bu çağrı zaman uyumsuz olarak bir CallAgent örnek nesnesi döndürür.

createCallAgent yöntemi, bir CommunicationUserCredential kapsülleyen bir bağımsız değişken olarak alır.

DeviceManager öğesine erişmek için önce bir callAgent örneği oluşturmanız gerekir. Ardından CallClient.getDeviceManager elde etmek için DeviceManager yöntemini kullanabilirsiniz.

String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential).get();
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();

Çağıranın görünen adını ayarlamak için şu alternatif yöntemi kullanın:

String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgentOptions callAgentOptions = new CallAgentOptions();
callAgentOptions.setDisplayName("Alice Bob");
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential, callAgentOptions).get();

Aramaları kaydetme

Not

Bu API, geliştiriciler için bir önizleme olarak sağlanır ve aldığımız geri bildirimlere göre değişebilir. Bu API'i üretim ortamında kullanmayın. Bu API'yi kullanmak için Azure İletişim Hizmetleri Çağırma Android SDK'sının beta sürümünü kullanın.

Çağrı kaydı, çekirdek Call nesnenin genişletilmiş bir özelliğidir.

Uyarı

Azure İletişim Hizmetleri Android Çağrı SDK'sının sürüm 1.1.0 ve beta sürümü 1.1.0-beta.1'e kadar, isRecordingActive ve addOnIsRecordingActiveChangedListener, Call nesnesinin bir parçasıydı. Yeni beta sürümleri için bu API'ler Call'ın genişletilmiş bir özelliği olarak taşındı.

Önce kayıt özelliği nesnesini edinmeniz gerekir:

RecordingCallFeature callRecordingFeature = call.feature(Features.RECORDING);

Ardından, çağrının kaydedilip kaydedilmediğini denetlemek için isRecordingActive ve callRecordingFeature özelliklerini inceleyin. Bu boolean döndürür.

boolean isRecordingActive = callRecordingFeature.isRecordingActive();

Değişiklikleri kaydetmeye de abone olabilirsiniz:

private void handleCallOnIsRecordingChanged(PropertyChangedEvent args) {
  boolean isRecordingActive = callRecordingFeature.isRecordingActive();
}

callRecordingFeature.addOnIsRecordingActiveChangedListener(handleCallOnIsRecordingChanged);

Kaydı uygulamanızdan başlatmak istiyorsanız, arama kaydını ayarlama adımları için önce Arama kaydına genel bakış'ı izleyin.

Sunucunuzda arama kaydını ayarladıktan sonra, Android uygulamanızdan bu değeri aramadan almanız ServerCallId ve ardından kayıt işlemini başlatmak için sunucunuza göndermeniz gerekir. ServerCallId değerini getServerCallId() sınıfından CallInfo kullanarak bulabilirsiniz. CallInfo kullanarak getInfo() sınıfını sınıf nesnesinde bulabilirsiniz.

try {
    String serverCallId = call.getInfo().getServerCallId().get();
    // Send serverCallId to your recording server to start the call recording.
} catch (ExecutionException | InterruptedException e) {

} catch (UnsupportedOperationException unsupportedOperationException) {

}

Sunucudan kaydetmeye başladığınızda, olay handleCallOnIsRecordingChanged tetiklenir ve callRecordingFeature.isRecordingActive() değerinin true olduğu belirlenir.

Arama kaydını başlatmak gibi, arama kaydını durdurmak istiyorsanız kaydı durdurabilmesi için bu kaydı alıp ServerCallId kayıt sunucunuza göndermeniz gerekir:

try {
    String serverCallId = call.getInfo().getServerCallId().get();
    // Send serverCallId to your recording server to stop the call recording.
} catch (ExecutionException | InterruptedException e) {

} catch (UnsupportedOperationException unsupportedOperationException) {

}

Sunucudan kaydı durdurduğunuzda, olay handleCallOnIsRecordingChanged tetiklenir ve callRecordingFeature.isRecordingActive() değerine sahiptir false.

Not

Bu API, geliştiriciler için bir önizleme olarak sağlanır ve aldığımız geri bildirimlere göre değişebilir. Bu API'i üretim ortamında kullanmayın. Bu API'yi kullanmak için Azure İletişim Hizmetleri Çağırma Android SDK'sının beta sürümünü kullanın.

Teams toplantınız veya aramanız kayıt ve transkripsiyon için açık onay gerektirecek şekilde yapılandırıldığında, bunları kaydedebilmek için önce aramadaki tüm katılımcılardan onay toplamanız gerekir. Toplantıya katılırken proaktif olarak veya kayıt başladığında reaktif olarak onay sağlayabilirsiniz. Açık onay verilene kadar, katılımcıların ses, görüntü ve ekran paylaşımı kayıt sırasında devre dışı bırakılır.

Toplantı kaydı için açık onay gerekip gerekmediğini isTeamsConsentRequired özelliğine göre kontrol edebilirsiniz. Eğer değer true olarak ayarlanırsa, call için açık onay gerekir.

boolean isConsentRequired = callRecordingFeature.isTeamsConsentRequired();

Kullanıcının kayıt için onayını zaten aldıysanız, hizmete açık rıza göstermek için grantTeamsConsent() yöntemini çağırabilirsiniz. Bu onay yalnızca bir call oturum için geçerlidir ve kullanıcıların toplantıya yeniden katılmaları durumunda yeniden onay vermesi gerekir.

callRecordingFeature.grantTeamsConsent();

Kayıt etkin olduğunda ses, video veya ekran paylaşımını etkinleştirme girişimleri başarısız oluyor, açık onay gerekiyor ancak henüz verilmedi. Bu durumu, reasonParticipantCapabilities, sınıfının turnVideoOn'ında, unmuteMic ve shareScreen özelliklerini kontrol ederek tanıyabilirsiniz. Bu özellikleri özelliğinde call.feature(Features.Capabilities)bulabilirsiniz. Kullanıcıların açık onay sağlaması gerektiğinden bu özellikler bir nedeni etkinleştirecek.

Sisteminizi ayarlama

Sisteminizi ayarlamak için bu adımları izleyin.

Xcode projesini oluşturma

Xcode'da yeni bir iOS projesi oluşturun ve Tek Görünüm Uygulaması şablonunu seçin. Bu makalede SwiftUI çerçevesi kullanılır, bu nedenle Dil'iSwift olarak ve Arabirim'iSwiftUI olarak ayarlamanız gerekir.

Bu makalede testler oluşturmayacaksınız. Testleri Dahil Et onay kutusunu temizleyebilirsiniz.

Xcode içinde proje oluşturma penceresini gösteren ekran görüntüsü.

CocoaPods kullanarak paketi ve bağımlılıkları yükleme

  1. Uygulamanız için aşağıdaki örnekte olduğu gibi bir Podfile oluşturun:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. pod install'i çalıştırın.

  3. Xcode kullanarak açın .xcworkspace .

Mikrofona erişim isteme

Cihazın mikrofonuna erişmek için, NSMicrophoneUsageDescription kullanarak uygulamanızın bilgi özellik listesini güncelleştirmeniz gerekir. İlişkili değeri, sistemin kullanıcıdan erişim istemek için kullandığı iletişim kutusuna eklenmiş bir dizeye ayarlayın.

Proje ağacının Info.plist girdisine sağ tıklayın ve KaynakKodu> Aç'ı seçin. Üst düzey <dict> bölüme aşağıdaki satırları ekleyin ve dosyayı kaydedin.

<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>

Uygulama çerçevesini ayarlama

Projenizin ContentView.swift dosyasını açın. Dosyanın en üstüne bir import bildirimi ekleyerek AzureCommunicationCalling kütüphanesini içe aktarın. Ayrıca, AVFoundation içeri aktarın. Koddaki ses izni istekleri için buna ihtiyacınız vardır.

import AzureCommunicationCalling
import AVFoundation

CallAgent'ı başlatma

CallAgent öğesinden bir CallClient örneği oluşturmak için, başlatıldıktan sonra zaman uyumsuz bir şekilde bir callClient.createCallAgent nesnesi döndüren bir CallAgent yöntemi kullanmanız gerekir.

Çağrı istemcisi oluşturmak için bir CommunicationTokenCredential nesne geçirin:

import AzureCommunication

let tokenString = "token_string"
var userCredential: CommunicationTokenCredential?
do {
    let options = CommunicationTokenRefreshOptions(initialToken: token, refreshProactively: true, tokenRefresher: self.fetchTokenSync)
    userCredential = try CommunicationTokenCredential(withOptions: options)
} catch {
    updates("Couldn't created Credential object", false)
    initializationDispatchGroup!.leave()
    return
}

// tokenProvider needs to be implemented by Contoso, which fetches a new token
public func fetchTokenSync(then onCompletion: TokenRefreshOnCompletion) {
    let newToken = self.tokenProvider!.fetchNewToken()
    onCompletion(newToken, nil)
}

CommunicationTokenCredential nesnesini CallClient öğesine aktarın ve görünür adı ayarlayın.

self.callClient = CallClient()
let callAgentOptions = CallAgentOptions()
options.displayName = " iOS Azure Communication Services User"

self.callClient!.createCallAgent(userCredential: userCredential!,
    options: callAgentOptions) { (callAgent, error) in
        if error == nil {
            print("Create agent succeeded")
            self.callAgent = callAgent
        } else {
            print("Create agent failed")
        }
})

Aramaları kaydetme

Not

Bu API, geliştiriciler için bir önizleme olarak sağlanır ve aldığımız geri bildirimlere göre değişebilir. Bu API'i üretim ortamında kullanmayın. Bu API'yi kullanmak için Azure İletişim Hizmetleri Çağrı iOS SDK'sının beta sürümünü kullanın.

Çağrı kaydı, çekirdek Call nesnenin genişletilmiş bir özelliğidir.

Uyarı

Azure İletişim Hizmetleri Arama iOS SDK'sının sürüm 1.1.0 ve beta sürüm 1.1.0-beta.1'den önce, isRecordingActiveCall nesnesinin bir parçasıydı ve didChangeRecordingStateCallDelegate temsilcisinin bir parçasıydı. Yeni beta sürümleri için bu API'ler Call'ın genişletilmiş bir özelliği olarak taşındı.

Önce kayıt özelliği nesnesini edinmeniz gerekir:

let callRecordingFeature = call.feature(Features.recording)

Ardından, çağrının kaydedilip kaydedilmediğini denetlemek için isRecordingActive ve callRecordingFeature özelliklerini inceleyin. Bu Bool döndürür.

let isRecordingActive = callRecordingFeature.isRecordingActive;

Ayrıca, sınıfınızda olay ile RecordingCallFeatureDelegate delegate'i didChangeRecordingState uygulamak suretiyle değişiklikleri kaydetmeye abone olabilirsiniz.

callRecordingFeature.delegate = self

// didChangeRecordingState is a member of RecordingCallFeatureDelegate
public func recordingCallFeature(_ recordingCallFeature: RecordingCallFeature, didChangeRecordingState args: PropertyChangedEventArgs) {
    let isRecordingActive = recordingFeature.isRecordingActive
}

Kaydı uygulamanızdan başlatmak istiyorsanız, arama kaydını ayarlama adımları için önce Arama kaydına genel bakış'ı izleyin.

Sunucunuzda, iOS uygulamanızdan arama kaydını ayarladıktan sonra, çağrıdan ServerCallId değeri almanız ve ardından kayıt işlemini başlatmak için sunucunuza göndermeniz gerekir. ServerCallId değerini getServerCallId() sınıfından CallInfo kullanarak bulabilirsiniz. CallInfo kullanarak getInfo() sınıfını sınıf nesnesinde bulabilirsiniz.

// Send serverCallId to your recording server to start the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }

Sunucudan kaydetmeye başladığınızda, olay didChangeRecordingState tetiklenir ve recordingFeature.isRecordingActive değerinin true olduğu belirlenir.

Arama kaydını başlatmak gibi, arama kaydını durdurmak istiyorsanız kaydı durdurabilmesi için bu kaydı alıp ServerCallId kayıt sunucunuza göndermeniz gerekir:

// Send serverCallId to your recording server to stop the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }

Sunucudan kaydı durdurduğunuzda, olay didChangeRecordingState tetiklenir ve recordingFeature.isRecordingActive değerine sahiptir false.

Not

Bu API, geliştiriciler için bir önizleme olarak sağlanır ve aldığımız geri bildirimlere göre değişebilir. Bu API'i üretim ortamında kullanmayın. Bu API'yi kullanmak için Azure İletişim Hizmetleri Çağrı iOS SDK'sının beta sürümünü kullanın.

Teams toplantınız veya aramanız kayıt ve transkripsiyon için açık onay gerektirecek şekilde yapılandırıldığında, bunları kaydedebilmek için önce aramadaki tüm katılımcılardan onay toplamanız gerekir. Toplantıya katılırken proaktif olarak veya kayıt başladığında reaktif olarak onay sağlayabilirsiniz. Açık onay verilene kadar, katılımcıların ses, görüntü ve ekran paylaşımı kayıt sırasında devre dışı bırakılır.

Toplantı kaydı için açık onay gerekip gerekmediğini isTeamsConsentRequired özelliğine göre kontrol edebilirsiniz. Eğer değer true olarak ayarlanırsa, call için açık onay gerekir.

let isConsentRequired = recordingFeature.isTeamsConsentRequired;

Kullanıcının kayıt için onayını zaten aldıysanız, hizmete açık rıza göstermek için grantTeamsConsent() yöntemini çağırabilirsiniz. Bu onay yalnızca bir call oturum için geçerlidir ve kullanıcıların toplantıya yeniden katılmaları durumunda yeniden onay vermesi gerekir.

recordingFeature.grantTeamsConsent();

Kayıt etkin olduğunda ses, video veya ekran paylaşımını etkinleştirme girişimleri başarısız oluyor, açık onay gerekiyor ancak henüz verilmedi. Bu durumu, reasonParticipantCapabilities, sınıfının turnVideoOn'ında, unmuteMic ve shareScreen özelliklerini kontrol ederek tanıyabilirsiniz. Bu özellikleri özelliğinde call.feature(Features.Capabilities)bulabilirsiniz. Kullanıcıların açık onay sağlaması gerektiğinden bu özellikler bir nedeni etkinleştirecek.

Sisteminizi ayarlama

Sisteminizi ayarlamak için bu adımları izleyin.

Visual Studio projesini oluşturma

Evrensel Windows Platformu uygulaması için Visual Studio 2022'de yeni bir Boş Uygulama (Evrensel Windows) projesi oluşturun. Proje adını girdikten sonra, 10.0.17763.0'dan sonraki bir Windows SDK'sını seçebilirsiniz.

WinUI 3 uygulaması geliştirmek için, Boş Uygulama, Paketlenmiş (Masaüstü için WinUI 3) şablonunu kullanarak tek sayfalık bir WinUI 3 uygulaması ayarlamak amacıyla yeni bir proje oluşturun. Windows Uygulama SDK'sı sürüm 1.3 veya üzeri gereklidir.

NuGet Paket Yöneticisi kullanarak paketi ve bağımlılıkları yükleme

Arama SDK'sı API'leri ve kitaplıkları bir NuGet paketi aracılığıyla genel kullanıma sunulur.

Arama SDK'sı NuGet paketini bulmak, indirmek ve yüklemek için:

  1. Araçlar, NuGet Paket Yöneticisi, Çözüm için NuGet Paketlerini Yönet'i seçerek NuGet Paket Yöneticisi'ni açın.
  2. Gözat'ı seçin ve arama kutusuna Azure.Communication.Calling.WindowsClient yazın.
  3. Ön sürümü dahil et onay kutusunun seçili olduğundan emin olun.
  4. Azure.Communication.Calling.WindowsClient paketini ve ardından Azure.Communication.Calling.WindowsClient1.4.0-beta.1 veya daha yeni bir sürümü seçin.
  5. Sağ bölmedeki Azure İletişim Hizmetleri projeye karşılık gelen onay kutusunu seçin.
  6. Yükle'yi seçin.

Aramaları kaydetme

Çağrı kaydı, çekirdek Call nesnenin genişletilmiş bir özelliğidir. Önce kayıt özelliği nesnesini edinmeniz gerekir:

RecordingCallFeature recordingFeature = call.Features.Recording;

Ardından, çağrının kaydedilip kaydedilmediğini denetlemek için IsRecordingActive ve recordingFeature özelliklerini inceleyin. Bu boolean döndürür.

boolean isRecordingActive = recordingFeature.IsRecordingActive;

Değişiklikleri kaydetmeye de abone olabilirsiniz:

private async void Call__OnIsRecordingActiveChanged(object sender, PropertyChangedEventArgs args)
  boolean isRecordingActive = recordingFeature.IsRecordingActive;
}

recordingFeature.IsRecordingActiveChanged += Call__OnIsRecordingActiveChanged;

Not

Bu API, geliştiriciler için bir önizleme olarak sağlanır ve aldığımız geri bildirimlere göre değişebilir. Bu API'i üretim ortamında kullanmayın. Bu API'yi kullanmak için Azure İletişim Hizmetleri'nin Windows SDK'sını çağıran beta sürümünü kullanın.

Teams toplantınız veya aramanız kayıt ve transkripsiyon için açık onay gerektirecek şekilde yapılandırıldığında, bunları kaydedebilmek için önce aramadaki tüm katılımcılardan onay toplamanız gerekir. Toplantıya katılırken proaktif olarak veya kayıt başladığında reaktif olarak onay sağlayabilirsiniz. Açık onay verilene kadar, katılımcıların ses, görüntü ve ekran paylaşımı kayıt sırasında devre dışı bırakılır.

Toplantı kaydı için açık onay gerekip gerekmediğini isTeamsConsentRequired özelliğine göre kontrol edebilirsiniz. Eğer değer true olarak ayarlanırsa, call için açık onay gerekir.

boolean isConsentRequired = recordingFeature.isTeamsConsentRequired;

Kullanıcının kayıt için onayını zaten aldıysanız, hizmete açık rıza göstermek için grantTeamsConsent() yöntemini çağırabilirsiniz. Bu onay yalnızca bir call oturum için geçerlidir ve kullanıcıların toplantıya yeniden katılmaları durumunda yeniden onay vermesi gerekir.

recordingFeature.grantTeamsConsent();

Kayıt etkin olduğunda ses, video veya ekran paylaşımını etkinleştirme girişimleri başarısız oluyor, açık onay gerekiyor ancak henüz verilmedi. Bu durumu, reasonParticipantCapabilities, sınıfının turnVideoOn'ında, unmuteMic ve shareScreen özelliklerini kontrol ederek tanıyabilirsiniz. Bu özellikleri özelliğinde call.feature(Features.Capabilities)bulabilirsiniz. Kullanıcıların açık onay sağlaması gerektiğinden bu özellikler bir nedeni etkinleştirecek.

SDK uyumluluğu

Aşağıdaki tabloda, tek tek API'leri destekleyen SDK'ların en düşük sürümü gösterilmektedir.

Operasyonlar Web kullanıcı arabirimi Ios iOS kullanıcı arabirimi Android Android kullanıcı arabirimi Windows
Kaydın başladığı veya durduğu hakkında bildirim alın. 1.0.0, 1.25.3-beta.1 1.0.0, 1.15.0-beta.1 2.0.0, 2.1.0-beta.1 1.0.0, 1.15.0-beta.1 2.0.0, 1.2.0-beta.1 1.0.0, 1.15.0-beta.1 1.0.0, 1.0.0-beta.31
Kayıt durumunu alma 1.0.0, 1.25.3-beta.1 1.0.0, 1.15.0-beta.1 2.0.0, 2.1.0-beta.1 1.0.0, 1.15.0-beta.1 2.0.0, 1.2.0-beta.1 1.0.0, 1.15.0-beta.1 1.0.0, 1.0.0-beta.31
Açık onay gerekip gerekmediğini öğrenin 1.31.2, 1.32.1-beta.1 2.16.0-beta.1 2.14.0-beta.1 1.12.0-beta.1
Kaydedilmesi için açık onay verme 1.31.2, 1.32.1-beta.1 2.16.0-beta.1 2.14.0-beta.1 1.12.0-beta.1

Sonraki adımlar