Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Dieses Feature von Azure Communication Services befindet sich derzeit in der Vorschau. Features in der Vorschau sind öffentlich verfügbar und können von allen neuen und vorhandenen Microsoft-Kunden verwendet werden.
Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Bestimmte Features werden möglicherweise nicht unterstützt oder Funktionen sind eingeschränkt.
Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Wichtig
Dieses Feature von Azure Communication Services befindet sich derzeit in der Vorschau. Features in der Vorschau sind öffentlich verfügbar und können von allen neuen und vorhandenen Microsoft-Kunden verwendet werden.
Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Bestimmte Features werden möglicherweise nicht unterstützt oder Funktionen sind eingeschränkt.
Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Wichtig
Dieses Feature von Azure Communication Services befindet sich derzeit in der Vorschau. Features in der Vorschau sind öffentlich verfügbar und können von allen neuen und vorhandenen Microsoft-Kunden verwendet werden.
Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Bestimmte Features werden möglicherweise nicht unterstützt oder Funktionen sind eingeschränkt.
Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Während eines aktiven Anrufs empfehlen wir, den Status anderer Teilnehmer zu senden und zu empfangen. Hier erfahren Sie, wie Sie dazu vorgehen.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine bereitgestellte Communication Services-Ressource. Erstellen Sie eine Communication Services-Ressource.
- Ein Benutzerzugriffstoken zum Aktivieren des Anrufclients. Weitere Informationen finden Sie unter Erstellen und Verwalten von Zugriffstoken.
- Optional: Arbeiten Sie den Schnellstart zum Hinzufügen von Sprachanrufen zu Ihrer Anwendung durch.
Das SDK installieren
Verwenden Sie den Befehl npm install
, um die Common und Calling SDKs von Azure Communication Services für JavaScript zu installieren:
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Initialisieren erforderlicher Objekte
Für die meisten Anrufvorgänge ist eine CallClient
-Instanz erforderlich. Wenn Sie eine neue CallClient
-Instanz erstellen, können Sie diese mit benutzerdefinierten Optionen wie einer Logger
-Instanz konfigurieren.
Mit der CallClient
-Instanz können Sie eine CallAgent
-Instanz erstellen, indem Sie die createCallAgent
aufrufen. Durch diese Methode wird ein CallAgent
-Instanzobjekt asynchron zurückgegeben.
Die Methode createCallAgent
verwendet CommunicationTokenCredential
als Argument, welches ein Benutzerzugriffstoken akzeptiert.
Sie können die Methode getDeviceManager
für die Instanz CallClient
verwenden, um auf deviceManager
zuzugreifen.
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()
Verwalten der SDK-Konnektivität mit der Microsoft-Infrastruktur
Die Call Agent
-Instanz unterstützt Sie bei der Verwaltung von Anrufen (Annehmen oder Starten von Anrufen). Damit Ihr Calling SDK funktioniert, muss eine Verbindung mit der Microsoft-Infrastruktur hergestellt werden, um Benachrichtigungen über eingehende Anrufe zu erhalten und andere Anrufdetails zu koordinieren. Ihre Call Agent
-Instanz kann zwei Status haben:
Connected (Verbunden) – Der connectionState-Wert Call Agent
für Connected
bedeutet, dass das Client-SDK verbunden ist und Benachrichtigungen von der Microsoft-Infrastruktur empfangen kann.
Disconnected (Getrennt) – Der connectionState-Wert Call Agent
für Disconnected
weist darauf hin, dass das SDK nicht ordnungsgemäß verbunden werden kann.
Call Agent
muss neu erstellt werden.
-
invalidToken
: Wenn ein Token abgelaufen oder ungültig ist, wird dieCall Agent
-Instanz mit diesem Fehler getrennt. -
connectionIssue
: Wenn ein Problem mit der Verbindung zwischen dem Client und der Microsoft-Infrastruktur auftritt, gibtCall Agent
nach mehreren Versuchen denconnectionIssue
-Fehler zurück.
Sie können überprüfen, ob Ihre lokale Call Agent
-Instanz mit der Microsoft-Infrastruktur verbunden ist, indem Sie den aktuellen Wert der connectionState
-Eigenschaft prüfen. Während eines aktiven Anrufs können Sie auf das connectionStateChanged
-Ereignis lauschen, um zu bestimmen, ob sich der Call Agent
-Status von Connected in Disconnected ändert.
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);
Mit der Funktion "Hand heben" können Teilnehmer in einem Anruf angeben, dass sie eine Frage, einen Kommentar oder eine Sorge haben, ohne den Sprecher oder andere Teilnehmer zu unterbrechen. Sie können dieses Feature in jedem Anruftyp verwenden, einschließlich 1:1-Anrufen und Anrufen mit vielen Teilnehmern, in Azure Communication Service und in Teams-Anrufen.
Zuerst müssen Sie Anruffunktionen aus dem Calling SDK importieren.
import { Features} from "@azure/communication-calling";
Anschließend können Sie das API-Objekt für das Feature aus der Anrufinstanz abrufen:
const raiseHandFeature = call.feature(Features.RaiseHand );
Hand heben und senken für aktuelle Teilnehmende
Wenn Sie den Zustand "Hand heben" für den aktuellen Teilnehmer ändern möchten, können Sie die Methoden raiseHand()
und lowerHand()
verwenden.
Diese Methoden sind asynchron. Verwenden Sie raisedHandChanged
und loweredHandChanged
Listener, um Ergebnisse zu überprüfen.
const raiseHandFeature = call.feature(Features.RaiseHand );
//raise
raiseHandFeature.raiseHand();
//lower
raiseHandFeature.lowerHand();
Hände senken für andere Teilnehmer
Mit diesem Feature können Benutzende mit den Rollen „Organisator“ und „Referent“ alle Hände für andere Teilnehmende in Teams-Anrufen senken. In Azure Communication-Anrufen können Sie den Status anderer Teilnehmer nur ändern, wenn Sie die Rollen zuerst hinzufügen.
Um dieses Feature zu verwenden, implementieren Sie den folgenden Code:
const raiseHandFeature = call.feature(Features.RaiseHand );
//lower all hands on the call
raiseHandFeature.lowerAllHands();
//or we can provide array of CommunicationIdentifier to specify list of participants
CommunicationUserIdentifier acsUser = new CommunicationUserIdentifier(<USER_ID>);
MicrosoftTeamsUserIdentifier teamsUser = new MicrosoftTeamsUserIdentifier(<USER_ID>)
CommunicationIdentifier participants[] = new CommunicationIdentifier[]{ acsUser, teamsUser };
raiseHandFeature.lowerHands(participants);
Behandlung von geänderten Zuständen
Mit der Raise-Hand-API können Sie die Ereignisse raisedHandChanged
und loweredHandChanged
abonnieren, um Änderungen im Status der Teilnehmer bei einem Anruf zu verarbeiten. Die Anrufinstanz löst diese Ereignisse aus und stellt Informationen zu dem Teilnehmer bereit, dessen Status sich geändert hat.
Verwenden Sie den folgenden Code, um diese Ereignisse zu abonnieren:
const raiseHandFeature = call.feature(Features.RaiseHand );
// event : {identifier: CommunicationIdentifier}
const raisedHandChangedHandler = (event) => {
console.log(`Participant ${event.identifier} raised hand`);
};
const loweredHandChangedHandler = (event) => {
console.log(`Participant ${event.identifier} lowered hand`);
};
raiseHandFeature.on('raisedHandEvent', raisedHandChangedHandler):
raiseHandFeature.on('loweredHandEvent', loweredHandChangedHandler):
Die Ereignisse raisedHandChanged
und loweredHandChanged
enthalten ein Objekt mit der identifier
-Eigenschaft, das den Kommunikationsbezeichner des Teilnehmers darstellt. Im vorherigen Beispiel protokollieren wir eine Meldung an der Konsole, die angibt, dass ein Teilnehmer seine Hand ausgelöst hat.
Verwenden Sie die off
Methode, um das Abonnement von den Ereignissen abbestellen zu können.
Liste aller Teilnehmer mit aktivem Zustand
Um Informationen zu allen Teilnehmenden mit „Hand heben“-Status beim aktuellen Anruf abzurufen, können Sie getRaisedHands
verwenden. Das zurückgegebene Array ist nach dem Feld Reihenfolge sortiert.
Hier ein Verwendungsbeispiel für getRaisedHands
:
const raiseHandFeature = call.feature(Features.RaiseHand );
let participantsWithRaisedHands = raiseHandFeature.getRaisedHands();
Reihenfolge der gehobenen Hände
Die participantsWithRaisedHands
Variable enthält ein Array von Teilnehmerobjekten, wobei jedes Objekt die folgenden Eigenschaften aufweist:
-
identifier
: der Kommunikationsbezeichner des Teilnehmers. -
order
: die Reihenfolge, in der der Teilnehmer ihre Hand erhoben hat.
Sie können diese Informationen verwenden, um eine Liste der Teilnehmer mit dem Zustand "Hand heben" und deren Reihenfolge in der Warteschlange anzuzeigen.
Das SDK installieren
Wählen Sie Ihre Datei build.gradle
auf Projektebene aus, und fügen Sie mavenCentral()
der Liste der Repositorys unter buildscript
und allprojects
hinzu:
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojects {
repositories {
...
mavenCentral()
...
}
}
Fügen Sie anschließend in der Datei build.gradle
auf Modulebene die folgenden Zeilen im Abschnitt dependencies
hinzu:
dependencies {
...
implementation 'com.azure.android:azure-communication-calling:1.0.0'
...
}
Initialisieren der erforderlichen Objekte
Zum Erstellen einer CallAgent
-Instanz müssen Sie die createCallAgent
-Methode für eine CallClient
-Instanz aufrufen. Dieser Aufruf gibt asynchron ein CallAgent
-Instanzobjekt zurück.
Die createCallAgent
-Methode verwendet CommunicationUserCredential
als Argument, womit ein Zugriffstoken gekapselt wird.
Um auf DeviceManager
zuzugreifen, müssen Sie zuerst eine callAgent
-Instanz erstellen. Anschließend können Sie die CallClient.getDeviceManager
-Methode zum Abrufen von DeviceManager
verwenden.
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();
Zum Festlegen eines Anzeigenamens für den Anrufer verwenden Sie diese alternative Methode:
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();
Mit der Funktion "Hand heben" können Teilnehmer in einem Anruf angeben, dass sie eine Frage, einen Kommentar oder eine Sorge haben, ohne den Sprecher oder andere Teilnehmer zu unterbrechen. Sie können dieses Feature in jedem Anruftyp verwenden, einschließlich 1:1-Anrufen und Anrufen mit vielen Teilnehmern, in Azure Communication Service und in Teams-Anrufen.
Zuerst müssen Sie Anruffunktionen aus dem Calling SDK importieren.
import com.azure.android.communication.calling.RaiseHandFeature;
Anschließend können Sie das API-Objekt für das Feature aus der Anrufinstanz abrufen:
RaiseHandFeature raiseHandFeature = call.feature(Features.RAISE_HAND);
Hand heben und senken für aktuelle Teilnehmende
Wenn Sie den Zustand "Hand heben" für den aktuellen Teilnehmer ändern möchten, können Sie die Methoden raiseHand()
und lowerHand()
verwenden.
Diese Methoden sind asynchron. Verwenden Sie RaisedHandReceived
und LoweredHandReceived
Listener, um Ergebnisse zu überprüfen.
RaiseHandFeature raiseHandFeature = call.feature(Features.RAISE_HAND);
//raise
raiseHandFeature.raiseHand();
//lower
raiseHandFeature.lowerHand();
Hände senken für andere Teilnehmer
Mit diesem Feature können Benutzende mit den Rollen „Organisator“ und „Referent“ alle Hände für andere Teilnehmende in Teams-Anrufen senken. In Azure Communication-Anrufen können Sie den Status anderer Teilnehmer nur ändern, wenn Sie die Rollen zuerst hinzufügen.
Um dieses Feature zu verwenden, implementieren Sie den folgenden Code:
RaiseHandFeature raiseHandFeature = call.feature(Features.RAISE_HAND);
//lower all hands on the call
raiseHandFeature.lowerAllHands();
//or we can provide array of CommunicationIdentifier to specify list of participants
List<CommunicationIdentifier> identifiers = new ArrayList<>();
CommunicationUserIdentifier acsUser = new CommunicationUserIdentifier(<USER_ID>);
MicrosoftTeamsUserIdentifier teamsUser = new MicrosoftTeamsUserIdentifier(<USER_ID>);
identifiers.add(new CommunicationUserIdentifier("<USER_ID>"));
identifiers.add(new MicrosoftTeamsUserIdentifier("<USER_ID>"));
raiseHandFeature.lowerHands(identifiers);
Behandlung von geänderten Zuständen
Mithilfe der Raise Hand-API können Sie die RaisedHandReceived
- und LoweredHandReceived
-Ereignisse abonnieren, um Änderungen am Status der Teilnehmer bei einem Anruf zu behandeln. Die Anrufinstanz löst diese Ereignisse aus und stellt Informationen zu dem Teilnehmer bereit, dessen Status sich geändert hat.
Verwenden Sie den folgenden Code, um diese Ereignisse zu abonnieren:
RaiseHandFeature raiseHandFeature = call.feature(Features.RAISE_HAND)
// event example : {identifier: CommunicationIdentifier, isRaised: true, order:1}
call.feature(Features.RAISE_HAND).addOnRaisedHandReceivedListener(raiseHandEvent -> {
Log.i(TAG, String.format("Raise Hand: %s : %s", Utilities.toMRI(raiseHandEvent.getIdentifier()), raiseHandEvent.isRaised()));
});
Die Ereignisse RaisedHandReceived
und LoweredHandReceived
enthalten ein Objekt mit der identifier
-Eigenschaft, das den Kommunikationsbezeichner des Teilnehmers darstellt. Im vorherigen Beispiel protokollieren wir eine Meldung an der Konsole, die angibt, dass ein Teilnehmer seine Hand ausgelöst hat.
Um die Ereignisse abbestellen zu können, können Sie die off
-Methode verwenden.
Liste aller Teilnehmer mit aktivem Zustand
Um Informationen zu allen Teilnehmenden mit „Hand heben“-Status beim aktuellen Anruf abzurufen, können Sie getRaisedHands
verwenden. Das zurückgegebene Array ist nach dem Feld Reihenfolge sortiert.
Hier ein Verwendungsbeispiel für getRaisedHands
:
RaiseHandFeature raiseHandFeature = call.feature(Features.RAISE_HAND);
List<RaiseHand> participantsWithRaisedHands = raiseHandFeature.getRaisedHands();
Reihenfolge der gehobenen Hände
Die participantsWithRaisedHands
Variable enthält ein Array von Teilnehmerobjekten, wobei jedes Objekt die folgenden Eigenschaften aufweist:
-
identifier
: der Kommunikationsbezeichner des Teilnehmers. -
order
: die Reihenfolge, in der der Teilnehmer ihre Hand erhoben hat.
Sie können diese Informationen verwenden, um eine Liste der Teilnehmer mit dem Zustand "Hand heben" und deren Reihenfolge in der Warteschlange anzuzeigen.
Einrichten des Systems
Führen Sie die unten angegebenen Schritte aus, um Ihr System einzurichten.
Erstellen des Xcode-Projekts
Erstellen Sie in Xcode ein neues iOS-Projekt, und wählen Sie die Vorlage Single View App (Einzelansicht-App) aus. In diesem Artikel wird das SwiftUI-Framework verwendet. Legen Sie daher Sprache auf Swift und Schnittstelle auf SwiftUI fest.
Sie werden in diesem Artikel keine Tests erstellen. Sie können das Kontrollkästchen Tests einschließen deaktivieren.
Installieren des Pakets und der Abhängigkeiten mithilfe von CocoaPods
Erstellen Sie eine Podfile-Datei für die Anwendung, wie in diesem Beispiel:
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
Führen Sie
pod install
aus.Öffnen Sie
.xcworkspace
mithilfe von Xcode.
Anfordern des Zugriffs auf das Mikrofon
Um auf das Mikrofon des Geräts zuzugreifen, müssen Sie die Liste der Informationseigenschaften Ihrer App mithilfe von NSMicrophoneUsageDescription
aktualisieren. Legen Sie den zugehörigen Wert auf eine Zeichenfolge fest. Diese wird in den Dialog aufgenommen, mit dem das System den Zugriff beim Benutzer anfordert.
Klicken Sie mit der rechten Maustaste auf den Eintrag info.plist in der Projektstruktur, und wählen Sie dann Öffnen als>Quellcode aus. Fügen Sie im Abschnitt <dict>
der obersten Ebene die folgenden Zeilen hinzu, und speichern Sie dann die Datei.
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>
Einrichten des App-Frameworks
Öffnen Sie die Datei ContentView.swift
Ihres Projekts. Fügen Sie am Anfang der Datei eine import
-Deklaration hinzu, um die AzureCommunicationCalling
-Bibliothek zu importieren. Importieren Sie außerdem AVFoundation
. Sie ist für Audioberechtigungsanforderungen im Code erforderlich.
import AzureCommunicationCalling
import AVFoundation
Initialisieren von „CallAgent“
Um eine CallAgent
-Instanz auf der Grundlage von CallClient
zu erstellen, müssen Sie eine Methode vom Typ callClient.createCallAgent
verwenden, die asynchron ein Objekt vom Typ CallAgent
zurückgibt, nachdem es initialisiert wurde.
Übergeben Sie für die Erstellung eines Anrufclients ein Objekt vom Typ CommunicationTokenCredential
:
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)
}
Übergeben Sie das von Ihnen erstellte Objekt vom Typ CommunicationTokenCredential
an CallClient
, und legen Sie den Anzeigenamen fest:
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")
}
})
Mit der Funktion "Hand heben" können Teilnehmer in einem Anruf angeben, dass sie eine Frage, einen Kommentar oder eine Sorge haben, ohne den Sprecher oder andere Teilnehmer zu unterbrechen. Sie können dieses Feature in jedem Anruftyp verwenden, einschließlich 1:1-Anrufen und Anrufen mit vielen Teilnehmern, in Azure Communication Service und in Teams-Anrufen.
Zuerst müssen Sie Anruffunktionen aus dem Calling SDK importieren.
import AzureCommunicationCalling
Anschließend können Sie das API-Objekt für das Feature aus der Anrufinstanz abrufen:
@State var raisehandFeature: RaiseHandCallFeature?
raiseHandFeature = self.call!.feature(Features.raiseHand)
Hand heben und senken für aktuelle Teilnehmende
Wenn Sie den Zustand "Hand heben" für den aktuellen Teilnehmer ändern möchten, können Sie die Methoden raiseHand()
und lowerHand()
verwenden.
//publish raise hand state for local participant
raisehandFeature.raiseHand(completionHandler: { (error) in
if let error = error {
print ("Feature failed raise a hand %@", error as Error)
}
})
//remove raise hand state for local participant
raisehandFeature.lowerHand(completionHandler: { (error) in
if let error = error {
print ("Feature failed lower hand %@", error as Error)
}
})
Hände senken für andere Teilnehmer
Mit diesem Feature können Benutzende mit den Rollen „Organisator“ und „Referent“ alle Hände für andere Teilnehmende in Teams-Anrufen senken. In Azure Communication-Anrufen können Sie den Status anderer Teilnehmer nur ändern, wenn Sie die Rollen zuerst hinzufügen.
Um dieses Feature zu verwenden, implementieren Sie den folgenden Code:
// remove raise hand states for all participants on the call
raisehandFeature.lowerAllHands(completionHandler: { (error) in
if let error = error {
print ("Feature failed lower all hands %@", error as Error)
}
})
// remove raise hand states for all remote participants on the call
let identifiers = (call?.remoteParticipants.map {$0.identifier})!;
raisehandFeature.lowerHands(participants: identifiers, completionHandler: { (error) in
if let error = error {
print ("Feature failed lower hands %@", error as Error)
}
})
// remove raise hand state of specific user
var identifiers : [CommunicationIdentifier] = []
identifiers.append(CommunicationUserIdentifier("<USER_ID>"))
raisehandFeature.lowerHands(participants: identifiers, completionHandler: { (error) in
if let error = error {
print ("Feature failed lower hands %@", error as Error)
}
})
Behandlung von geänderten Zuständen
Mit der Raise-Hand-API können Sie die Ereignisse RaisedHandReceived
und LoweredHandReceived
abonnieren, um Änderungen im Status der Teilnehmer bei einem Anruf zu verarbeiten. Die Anrufinstanz löst diese Ereignisse aus und stellt Informationen zu dem Teilnehmer bereit, dessen Status sich geändert hat.
Verwenden Sie den folgenden Code, um diese Ereignisse zu abonnieren:
self.callObserver = CallObserver(view:self)
raisehandFeature = self.call!.feature(Features.raiseHand)
raisehandFeature!.delegate = self.callObserver
public class CallObserver : NSObject, RaiseHandCallFeatureDelegate
{
// event example : {identifier: CommunicationIdentifier}
public func raiseHandCallFeature(_ raiseHandCallFeature: RaiseHandCallFeature, didReceiveRaisedHand args: RaisedHandChangedEventArgs) {
os_log("Raise hand feature updated: %s is raised hand", log:log, Utilities.toMri(args.identifier))
raiseHandCallFeature.raisedHands.forEach { raiseHand in
os_log("Raise hand active: %s", log:log, Utilities.toMri(raiseHand.identifier))
}
}
public func raiseHandCallFeature(_ raiseHandCallFeature: RaiseHandCallFeature, didReceiveLoweredHand args: LoweredHandChangedEventArgs) {
os_log("Raise hand feature updated: %s is lowered hand", log:log, Utilities.toMri(args.identifier))
raiseHandCallFeature.raisedHands.forEach { raiseHand in
os_log("Raise hand active: %s", log:log, Utilities.toMri(raiseHand.identifier))
}
}
}
Die Ereignisse RaisedHandReceived
und LoweredHandReceived
enthalten ein Objekt mit der identifier
-Eigenschaft, das den Kommunikationsbezeichner des Teilnehmers darstellt. Im vorherigen Beispiel protokollieren wir eine Meldung an der Konsole, die angibt, dass ein Teilnehmer seine Hand ausgelöst hat.
Verwenden Sie die off
Methode, um das Abonnement von den Ereignissen abbestellen zu können.
Liste aller Teilnehmer mit aktivem Zustand
Um Informationen zu allen Teilnehmenden mit „Hand heben“-Status beim aktuellen Anruf abzurufen, können Sie getRaisedHands
verwenden. Das zurückgegebene Array ist nach dem Feld Reihenfolge sortiert.
Hier ein Verwendungsbeispiel für raisedHands
:
raisehandFeature = self.call!.feature(Features.raiseHand)
raisehandFeature.raisedHands.forEach { raiseHand in
os_log("Raise hand active: %s", log:log, Utilities.toMri(raiseHand.identifier))
}
Reihenfolge der gehobenen Hände
Die raisedHands
Variable enthält ein Array von Teilnehmerobjekten, wobei jedes Objekt die folgenden Eigenschaften aufweist:
-
identifier
: der Kommunikationsbezeichner des Teilnehmers. -
order
: die Reihenfolge, in der der Teilnehmer ihre Hand erhoben hat.
Sie können diese Informationen verwenden, um eine Liste der Teilnehmer mit dem Zustand "Hand heben" und deren Reihenfolge in der Warteschlange anzuzeigen.
Einrichten des Systems
Führen Sie die unten angegebenen Schritte aus, um Ihr System einzurichten.
Erstellen des Visual Studio-Projekts
Erstellen Sie für eine UWP-App (Universelle Windows-Plattform) in Visual Studio 2022 ein neues Projekt vom Typ Leere App (universelles Windows). Nachdem Sie den Projektnamen eingegeben haben, können Sie ein beliebiges Windows SDK höher als Version 10.0.17763.0 auswählen.
Für eine WinUI 3-App erstellen Sie ein neues Projekt mit der Vorlage Leere App, Gepackt (WinUI 3 in Desktop), um eine WinUI 3-Single-Page-Webanwendung einzurichten. Windows-App SDK-Version 1.3 oder höher ist erforderlich.
Installieren Sie das Paket und die Abhängigkeiten mit dem NuGet-Paket-Manager
Die Calling SDK-APIs und -Bibliotheken sind über ein NuGet-Paket öffentlich verfügbar.
So können Sie das NuGet-Paket für das Calling SDK suchen, herunterladen und installieren:
- Öffnen Sie den NuGet-Paket-Manager, indem Sie Tools>NuGet-Paket-Manager>NuGet-Pakete für Lösung verwalten auswählen.
- Wählen Sie Durchsuchen aus, und geben Sie dann Azure.Communication.Calling.WindowsClient in das Suchfeld ein.
- Stellen Sie sicher, dass das Kontrollkästchen Vorabversion einbeziehen aktiviert ist.
- Wählen Sie das Paket Azure.Communication.Calling.WindowsClient und dann Azure.Communication.Calling.WindowsClient1.4.0-beta.1 oder eine neuere Version aus.
- Aktivieren Sie das Kontrollkästchen für das Azure Communication Services-Projekt im rechten Bereich.
- Wählen Sie Installieren aus.
Mit der Funktion "Hand heben" können Teilnehmer in einem Anruf angeben, dass sie eine Frage, einen Kommentar oder eine Sorge haben, ohne den Sprecher oder andere Teilnehmer zu unterbrechen. Sie können dieses Feature in jedem Anruftyp verwenden, einschließlich 1:1-Anrufen und Anrufen mit vielen Teilnehmern, in Azure Communication Service und in Teams-Anrufen.
Zuerst müssen Sie Anruffunktionen aus dem Calling SDK importieren.
using Azure.Communication.Calling.WindowsClient;
Anschließend können Sie das API-Objekt für das Feature aus der Anrufinstanz abrufen:
private RaiseHandCallFeature raiseHandCallFeature;
raiseHandCallFeature = (RaiseHandCallFeature)call.GetCallFeatureExtension(CallFeatureType.RaiseHand);
Hand heben und senken für aktuelle Teilnehmende
Wenn Sie den Zustand "Hand heben" für den aktuellen Teilnehmer ändern möchten, können Sie die Methoden raiseHand()
und lowerHand()
verwenden.
Diese Methoden sind asynchron. Verwenden Sie RaisedHandReceived
und LoweredhandReceived
Listener, um Ergebnisse zu überprüfen.
//publish raise hand state for local participant
raiseHandCallFeature.RaiseHandAsync();
//remove raise hand state for local participant
raiseHandCallFeature.LowerHandAsync();
Hände senken für andere Teilnehmer
Die Funktion "Hände senken für andere Teilnehmer" ermöglicht Benutzern mit den Rollen "Organisator" und "Präsentator", alle erhobenen Hände für andere Teilnehmer in Teams-Anrufen zu senken. In Azure Communication-Anrufen können Sie den Status anderer Teilnehmer nur ändern, wenn Sie ihre Rollen zuerst hinzufügen.
Um dieses Feature zu verwenden, implementieren Sie den folgenden Code:
// remove raise hand states for all participants on the call
raiseHandCallFeature.LowerAllHandsAsync();
// remove raise hand states for all remote participants on the call
var participants = call.RemoteParticipants;
var identifiers = participants.Select(p => p.Identifier).ToList().AsReadOnly();
raiseHandCallFeature.LowerHandsAsync(identifiers);
// remove raise hand state of specific user
var identifiers = new List<CallIdentifier>();
identifiers.Add(new UserCallIdentifier("USER_ID"));
raiseHandCallFeature.LowerHandsAsync(identifiers);
Behandlung von geänderten Zuständen
Mit der Raise-Hand-API können Sie die Ereignisse RaisedHandReceived
und LoweredHandReceived
abonnieren, um Änderungen im Status der Teilnehmer bei einem Anruf zu verarbeiten. Die Anrufinstanz löst diese Ereignisse aus und stellt Informationen zu dem Teilnehmer bereit, dessen Status sich geändert hat.
Verwenden Sie den folgenden Code, um diese Ereignisse zu abonnieren:
raiseHandCallFeature = (RaiseHandCallFeature)call.GetCallFeatureExtension(CallFeatureType.RaiseHand);
raiseHandCallFeature.RaisedHandReceived += OnRaisedHandChange;
raiseHandCallFeature.LoweredHandReceived += OnLoweredHandChange;
private async void OnRaisedHandChange(object sender, RaisedHandChangedEventArgs args)
{
Trace.WriteLine("RaiseHandEvent: participant " + args.Identifier + " is raised hand");
}
private async void OnLoweredHandChange(object sender, RaisedHandChangedEventArgs args)
{
Trace.WriteLine("RaiseHandEvent: participant " + args.Identifier + " is lowered hand");
}
Die Ereignisse RaisedHandReceived
und LoweredHandReceived
enthalten ein Objekt mit der identifier
-Eigenschaft, das den Kommunikationsbezeichner des Teilnehmers darstellt. Im vorherigen Beispiel protokollieren wir eine Meldung an der Konsole, die angibt, dass ein Teilnehmer seine Hand ausgelöst hat.
Um die Ereignisse abbestellen zu können, können Sie die off
-Methode verwenden.
Liste aller Teilnehmer mit aktivem Zustand
Um Informationen zu allen Teilnehmenden mit „Hand heben“-Status beim aktuellen Anruf abzurufen, können Sie getRaisedHands
verwenden. Das zurückgegebene Array ist nach dem Feld Reihenfolge sortiert.
Hier ein Verwendungsbeispiel für RaisedHands
:
raiseHandCallFeature = (RaiseHandCallFeature)call.GetCallFeatureExtension(CallFeatureType.RaiseHand);
foreach (RaiseHand rh in raiseHandCallFeature.RaisedHands.ToList())
{
Trace.WriteLine("Participant " + rh.Identifier.RawId + " has raised hand ");
}
Reihenfolge der gehobenen Hände
Die RaisedHands
Variable enthält ein Array von Teilnehmerobjekten, wobei jedes Objekt die folgenden Eigenschaften aufweist:
-
identifier
: der Kommunikationsbezeichner des Teilnehmers. -
order
: die Reihenfolge, in der der Teilnehmer ihre Hand erhoben hat.
Sie können diese Informationen verwenden, um eine Liste der Teilnehmer mit dem Zustand "Hand heben" und deren Reihenfolge in der Warteschlange anzuzeigen.
Nächste Schritte
- Informationen zum Verwalten von Anrufen
- Lernen Sie das Verwalten von Videos
- Informationen zum Aufzeichnen von Anrufen
- Lernen, wie man Anrufe transkribiert
Verwandte Artikel
Weitere Informationen zur Verwendung der Funktion "Hand heben" in Teams-Anrufen und -Besprechungen finden Sie in der Microsoft Teams-Dokumentation.