Freigeben über


Verwalten von Aufrufen für Teams Benutzer mit Communication Services Aufrufen des SDK

Lernen Sie, wie Sie Anrufe mit den Azure Communication Services SDKS verwalten können. Wir erfahren, wie Sie Anrufe tätigen sowie ihre Teilnehmer und Eigenschaften verwalten.

Voraussetzungen

Das SDK installieren

Verwenden Sie den Befehl npm install, um das Azure Communication Services Calling SDK sowie allgemeine SDKs für JavaScript zu installieren.

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

Initialisieren erforderlicher Objekte

Erstellen Sie eine CallClient-Instanz, um den Anrufstapel zu initiieren. Sie können die Protokollierung der SDK-Aufrufe mit der AzureLogger-Instanz und der setLogLevel-Methode konfigurieren. Zugriff auf den deviceManager für das Betriebssystem erhalten Sie über die Methode getDeviceManager.

Verwenden Sie dann die Methode createTeamsCallAgent, um asynchron eine TeamsCallAgent-Instanz zu erstellen, die eingehende und ausgehende Anrufe für einen Teams-Benutzer verwaltet. Die Methode akzeptiert CommunicationTokenCredential als Argument, das Zugriffstoken für Teams-Benutzer darstellt.

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 wherever desired. To console, file, buffer, REST API, etc...
AzureLogger.log = (...args) => {
    console.log(...args); // Redirect log output to console
};

const userToken = '<USER_TOKEN>';
callClient = new CallClient();
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const teamsCallAgent = await callClient.createTeamsCallAgent(tokenCredential);
const deviceManager = await callClient.getDeviceManager();

Tätigen eines Anrufs

Starten Sie einen synchronen Eins-zu-Eins-Gruppenanruf mit der startCall-API von teamsCallAgent. Sie können MicrosoftTeamsUserIdentifier oder PhoneNumberIdentifier als Parameter übergeben, um das Ziel des Anrufs zu definieren. Die Methode gibt die TeamsCall-Instanz zurück, die Ihnen das Abonnieren von Anrufereignissen ermöglicht.

Hinweis

Das Starten eines Gruppenanrufs mit teamsCallAgent erfordert die threadId des Chats beim Aufrufen der startCall-Methode. Die erstellte TeamsCall-Instanz weist die Eigenschaft threadId auf, die diesen Thread erfasst. Das Communication Services-Anruf-SDK erhält keine Synchronizität der Teilnehmer in der Chat- und der Anrufliste aufrecht. Microsoft fordert Entwickler auf, die Listen im Sinne einer optimalen Benutzererfahrung synchron zu halten. Lernen Sie, wie man Chat-Threads verwaltet.

Starten eines Eins-zu-Eins-VoIP-Anrufs an Teams-Benutzer:

const userCallee = { microsoftTeamsUserId: '<MICROSOFT_TEAMS_USER_ID>' };
const oneToOneCall = teamsCallAgent.startCall(userCallee);

Starten eines Eins-zu-Eins-Telefonanruf an eine E.164-Telefonnummer:

const phoneCallee = { phoneNumber: '<PHONE_NUMBER_E164_FORMAT>' }
const oneToOneCall = teamsCallAgent.startCall(phoneCallee );

Starten eines Gruppenanrufs an Teams-Benutzer mit VoIP und Telefonnummer:

const userCallee = { microsoftTeamsUserId: '<MICROSOFT_TEAMS_USER_ID>' }
const phoneCallee = { phoneNumber: '<PHONE_NUMBER_E164_FORMAT>'};
const groupCall = teamsCallAgent.startCall([userCallee, phoneCallee], { threadId: '<THREAD_ID>' });

Join a call

An einer Teams-Besprechung teilnehmen

Sie können Teams-Besprechungen mit der Methode join der teamsCallAgent-Instanz beitreten. Teams-Benutzer können an einer Teams-Besprechung teilnehmen, indem sie einen TeamsMeetingLinkLocator, TeamsMeetingCoordinatesLocator oder TeamsMeetingIdLocator angeben.

Teilnehmen an einer Teams-Besprechung mit Besprechungs-URL:

const meetingCall = teamsCallAgent.join({ meetingLink: '<MEETING_LINK>' });

Teilnehmen an Teams-Besprechungen mit einer Kombination aus Thread-ID, Organisator-ID, Mandanten-ID und Nachrichten-ID:

const meetingCall = teamsCallAgent.join({ threadId: '<THREAD_ID>', organizerId: '<ORGANIZER_ID>', tenantId: '<TENANT_ID>', messageId: '<MESSAGE_ID>' });

Teilnehmen an einer Teams-Besprechung mit Besprechungscode und Passcode:

const meetingCall = teamsCallAgent.join({ meetingId: '<MEETING_CODE>', passcode: '<PASSCODE>'});

Teilnehmen an einer Teams-Besprechung mit Besprechungs-ID und Passcode:

Entwickler können durch mehrere Möglichkeiten an Teams-Besprechungen teilnehmen. Eine davon ist die Besprechungs-ID und Passcode, mit der Personen an der Teams-Besprechung teilnehmen können, zu der sie von einem Gerät oder einer Anwendung eingeladen werden. Sie müssen immer sowohl die Besprechungs-ID als auch den Passcode angeben, um an der Besprechung teilzunehmen. Bei dem Passcode müssen Sie die Groß-/Kleinschreibung beachten.

  • Das Format der Besprechungs-ID und des Passcode lautet:

    • Besprechungs-ID: 12 Ziffern.
    • Passcode: 6 Zeichen
  • Wie oft müssen Sie die Besprechungs-ID und den Passcode aktualisieren?

    • Die Besprechungs-ID und der Passcode werden nicht geändert, nachdem sie erstellt wurden. Entwickler müssen keine dieser Änderungen aktualisieren.
    • Der Besprechungsorganisator von Teams kann die Besprechungs-ID und den Passcode nicht neu generieren.
  • Macht es einen Unterschied bei einer Teams-Besprechung, wenn der Benutzer über URL oder die Besprechungs-ID und den Passcode teilnimmt?

    • Nein Es macht keinen Unterschied, wenn Benutzer über die Teams-Besprechungs-URL oder die Besprechungs-ID und den Passcode an einer Teams-Besprechung teilnehmen.
  • Wie sollten Entwickler den Passcode speichern und verwalten?

    • Die Besprechungs-ID und der Passcode sind Koordinaten für die Teilnahme an der Besprechung. Entwickler sollten diese als geheim behandeln, sie verschlüsseln und nur mit Zugriffssteuerung speichern.
    • Wenn die Koordinaten verfügbar gemacht werden, kann jeder an der Besprechung teilnehmen und so die Erfahrung für alle Teilnehmer der Besprechung beeinträchtigt werden.
  • Wie erhalte ich die Besprechungs-ID und den Passcode?

    1. Graph-API: Verwenden Sie die Graph-API, um Informationen zur onlineMeeting-Ressource abzurufen und das Objekt in der Eigenschaft joinMeetingIdSettings zu überprüfen.
    2. Teams: Wechseln Sie in Ihrer Teams-Anwendung zur Calendar-App und öffnen Sie Details zu einer Besprechung. Onlinebesprechungen haben die Besprechungs-ID und den Passcode in der Definition der Besprechung.
    3. Outlook: Sie finden die Besprechungs-ID und den Passcode in den Kalenderereignissen oder in E-Mail-Besprechungseinladungen.
    4. Entwickler können die Besprechungs-ID und den Passcode nicht über das aufrufende SDK abrufen oder aus Verbose-Protokollen abrufen.
  • Wie kann ich überprüfen, ob die Besprechungs-ID und der Passcode korrekt sind?

Empfangen eines eingehenden Teams-Anrufs

Sie können das incomingCall-Ereignis der teamsCallAgent-Instanz abonnieren, um eingehende Anrufe für den Teams-Benutzer zu registrieren. Das Ereignis weist eine Eigenschaft teamsIncomingCall mit TeamsIncomingCall-Instanz auf, die Ihnen das accept oder reject des eingehenden Anrufs ermöglicht.

const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
    const incomingCall = args.teamsIncomingCall;
    // Get Teams incoming call ID
    const incomingCallId = incomingCall.id;
    // Get information about this Call. This API is provided as a preview for developers
    // and may change based on feedback that we receive. Do not use this API in a production environment.
    // To use this API please use 'beta' release of Azure Communication Services Calling Web SDK
    const callInfo = incomingCall.info;
    // Get information about caller
    const callerInfo = incomingCall.callerInfo
    // Accept the call
    const teamsCall = await incomingCall.accept();
    // Reject the call
    incomingCall.reject();
    // Subscribe to callEnded event and get the call end reason
    incomingCall.on('callEnded', args => {
        console.log(args.callEndReason);
    });
    // callEndReason is also a property of IncomingCall
    var callEndReason = incomingCall.callEndReason;
};
teamsCallAgent.on('incomingCall', incomingCallHandler);

Aktivieren und Deaktivieren von Video

Sie können Ihre lokale Videostreamsammlung aus der Eigenschaft localVideoStreams in der TeamsCall-Instanz abrufen. Wenn die Sammlung aktiviert ist, enthält sie einen Bildschirmfreigabe-Datenstrom und Kameravideofeeds. Sie können Videostreams von Remoteteilnehmern abrufen, indem Sie die Eigenschaft TeamsCall untersuchen.remoteParticipants, wobei jeder Teilnehmer über eine Sammlung von Videostreams in der Eigenschaft videoStreams verfügt.

Stumm schalten aktiveren und deaktivieren

Sie können die asynchronen APIs mute und unmute der TeamsCall-Instanz verwenden, um Teams-Benutzer lokal stummzuschalten bzw. ihre Stummschaltung aufzuheben. Das lokale Stummschalten verhindert, dass Audiosignale an andere Teilnehmer gesendet werden.

//mute local device
await call.mute();
//unmute local device
await call.unmute();

Andere Teilnehmer stummschalten

Um alle anderen Teilnehmer stummzuschalten oder einen bestimmten Teilnehmer stummzuschalten, können Sie die asynchronen APIs muteAllRemoteParticipants für den Anruf und mute für den Remote-Teilnehmer verwenden:

//mute all participants except yourself
await call.muteAllRemoteParticipants();

//mute a specific participant
await call.remoteParticipants[0].mute();

Hinweis

Diese API wird als Vorschau für Entwickler bereitgestellt. Je nachdem, welches Feedback wir dazu erhalten, werden möglicherweise Änderungen vorgenommen. Verwenden Sie diese API nicht in einer Produktionsumgebung. Verwenden Sie zum Verwenden dieser API die Betaversion des Azure Communication Services Calling Web SDK.

Verwalten von Remoteteilnehmern

Die anderen Anrufteilnehmer stehen in der TeamsCall-Instanz unter der Eigenschaft remoteParticipants zur Verfügung. Es handelt sich um eine Sammlung von RemoteParticipant-Objekten. Sie können die anderen Teilnehmer des Anrufs auflisten, hinzufügen oder entfernen.

Hinweis

Das Hinzufügen einer Teilnehmermethode erfordert die threadId des Chats. Das Communication Services-Anruf-SDK erhält keine Synchronizität der Teilnehmer in der Chat- und der Anrufliste aufrecht. Microsoft fordert Entwickler auf, die Listen im Sinne einer optimalen Benutzererfahrung synchron zu halten. Lernen Sie, wie man Chat-Threads verwaltet.

Sie können dem Teams-Anruf oder der Teams-Besprechung einen neuen Teams-Benutzer oder eine Telefonnummer hinzufügen, indem Sie die Methode addParticipant des TeamsCall-Objekts aufrufen. Die Methode akzeptiert die Bezeichner MicrosoftTeamsUserIdentifier oder PhoneNumberIdentifier als Eingabe, gibt synchron die Instanz von RemoteParticipant zurück und löst das Ereignis remoteParticipantsUpdated in der TeamsCall-Instanz aus.

Sie können einen Teilnehmer aus dem Teams-Anruf- oder der Teams-Besprechung entfernen, indem Sie die removeParticipant-Methode der TeamsCall-Instanz asynchron aufrufen. Die Methode akzeptiert die Bezeichner MicrosoftTeamsUserIdentifier oder PhoneNumberIdentifier als Eingabe. Die Methode wird aufgelöst, wenn RemoteParticipant aus der Sammlung remoteParticipants entfernt wird, und das Ereignis remoteParticipantsUpdated der TeamsCall-Instanz wird ausgelöst.

Auflisten anderer Anrufteilnehmer:

const participants = call.remoteParticipants; // [remoteParticipant, remoteParticipant....]

Hinzufügen von Teams-Benutzern und Telefonnummern zum Teams-Anruf oder der Teams-Besprechung:

const teamsUser = { microsoftTeamsUserId: '<MICROSOFT_TEAMS_USER_ID>' };
const phoneUser = { phoneNumber: '<PHONE_NUMBER_E164_FORMAT>' }
const remoteParticipant = call.addParticipant(teamsUser , { threadId: '<THREAD_ID>' });
const remoteParticipant2 = call.addParticipant(phoneUser , { threadId: '<THREAD_ID>' });

Entfernen von Teams-Benutzern und Telefonnummern aus dem Teams-Anruf oder der Teams-Besprechung:

const teamsUser = { microsoftTeamsUserId: '<MICROSOFT_TEAMS_USER_ID>' };
const phoneUser = { phoneNumber: '<PHONE_NUMBER_E164_FORMAT>' }
await call.removeParticipant(teamsUser);
await call.removeParticipant(phoneUser);

Remoteteilnehmer

Remoteteilnehmer stellen einen Endpunkt dar, der mit dem laufenden Teams-Anruf oder der Teams-Besprechung verbunden ist. Die Klasse remoteParticipant weist den folgenden Satz von Eigenschaften und Sammlungen auf:

  • identifier: Gibt einen der folgenden Bezeichner zurück: CommunicationUserIdentifier, MicrosoftTeamsUserIdentifier, PhoneNumberIdentifier oder UnknownIdentifier.
const identifier = remoteParticipant.identifier;
  • state: Gibt einen string zurück, der den Zustand eines Remoteteilnehmers darstellt. Der Zustand kann einen der folgenden Werte haben:
Zustandswert When Beschreibung
Idle Anfangszustand Dies ist der erste Zustand des Teilnehmers
Connecting Nach Idle Übergangszustand während sich der Teilnehmer mit dem Anruf verbindet.
Ringing Nach Connecting Der Teilnehmer hat eine incomingCall-Benachrichtigung erhalten, oder der Teams-Client läutet
Connected Nach Ringing, Connecting, EarlyMedia oder InLobby Der Teilnehmer hat die Anrufeinladung angenommen oder ist dem Anruf beigetreten. Die Medien fließen zum Teilnehmer.
Hold Nach Connected Der Teilnehmer wurde im Anruf auf Halten gesetzt.
EarlyMedia Nach Connecting Die Medienwiedergabe erfolgt, bevor ein Teilnehmer eine Verbindung mit dem Anruf herstellt
InLobby Nach Ringing, Connecting oder EarlyMedia Der Teilnehmer befindet sich im Wartebereich für Teams-Besprechungen.
Disconnected Endzustand Der Teilnehmer wird vom Anruf getrennt. Wenn der Remoteteilnehmer seine Netzwerkkonnektivität verliert, ändert sich der Zustand nach zwei Minuten in Disconnected.

Status von Remote-Teilnehmern in 1:1- oder Gruppenanrufen: Diagram of remote participant's call states for one-to-one or group calls.

Status von Remote-Teilnehmern in Teams-Besprechungen: Diagram of remote participant's call states for Teams meetings.

const state = remoteParticipant.state;
  • callEndReason: Gibt ein Objekt zurück, das zusätzliche Informationen zum Grund des Beendens des Aufrufs enthält. Eigenschaft code gibt eine Zahl zurück, die dem Grund zugeordnet ist, und subCode gibt eine Zahl zurück, die dem Code und dem Grund zugeordnet ist. Hier finden Sie weitere Informationen zu Fehlercodes.
const callEndReason = remoteParticipant.callEndReason;
const callEndReasonCode = callEndReason.code
const callEndReasonSubCode = callEndReason.subCode
  • isMuted: Gibt den Wert Boolean zurück, der einen Status der lokalen Stummschaltung darstellt.
const isMuted = remoteParticipant.isMuted;
  • isSpeaking: Gibt den Wert Boolean zurück, der den Status eines gesendeten, nicht leeren Audiosignals darstellt.
const isSpeaking = remoteParticipant.isSpeaking;
  • videoStreams: Gibt eine Sammlung von RemoteVideoStream-Objekten zurück, die von Teilnehmern gesendet werden.
const videoStreams = remoteParticipant.videoStreams; // [RemoteVideoStream, ...]
  • displayName: Gibt einen string zurück, der den Anzeigenamen darstellt. Das Communication Services Anruf-SDK legt diesen Wert für Teams-Benutzer nicht fest.
const displayName = remoteParticipant.displayName;

Call

  • id: Gibt eine Zeichenfolge zurück, die einen eindeutigen Anrufbezeichner darstellt.
const callId = call.id;

info: Gibt Informationen über den Anruf zurück:

Hinweis

Diese API wird als Vorschau für Entwickler bereitgestellt. Je nachdem, welches Feedback wir dazu erhalten, werden möglicherweise Änderungen vorgenommen. Verwenden Sie diese API nicht in einer Produktionsumgebung. Zum Verwenden dieser API nutzen Sie bitte das 'Beta'-Release des Azure Communication Services Calling Web SDK

info: Gibt ein Objekt zurück, das Informationen zum Anruf enthält. Die Eigenschaft threadId ist eine Zeichenfolge, die die Thread-ID des Chats darstellt, die im Teams-Client angezeigt wird.

const callInfo = call.info;
const threadId = call.info.threadId;

remoteParticipants: Gibt eine Sammlung von remoteParticipant-Objekten zurück, die andere Teilnehmer im Teams-Anruf oder der Teams-Besprechung darstellen.

const remoteParticipants = call.remoteParticipants;

callerInfo: Gibt das CallerInfo-Objekt zurück, wenn dies ein eingehender Aufruf ist. Die Eigenschaft identifier kann eins der folgenden Objekte sein: CommunicationUserIdentifier, MicrosoftTeamsUserIdentifier, PhoneNumberIdentifier oder UnknownIdentifier. Die Eigenschaft displayName ist eine Zeichenfolge, die den anzuzeigenden Namen darstellt, falls sie festgelegt wurde.

const callerIdentity = call.callerInfo.identifier;
const callerIdentity = call.callerInfo.displayName;

state: Gibt eine Zeichenfolge zurück, die den Zustand des Anrufs darstellt. Die Eigenschaft kann einen der folgenden Werte haben:

Zustandswert When Beschreibung
None Anfangszustand Der anfängliche Zustand des Anrufs.
Connecting Nach None Der Zustand, wenn ein Teams-Anruf oder eine Teams-Besprechung getätigt, ihm beigetreten oder er angenommen wird.
Ringing Nach Connecting Der Remoteteilnehmer hat das incomingCall-Ereignis empfangen, oder der Teams-Client läutet.
EarlyMedia Nach Ringing oder Connecting Die Medienwiedergabe erfolgt, bevor der Anruf verbunden ist.
Connected Nach Ringing, EarlyMedia, InLobby, LocalHold und RemoteHold Der Anruf ist verbunden. Medien werden zwischen den lokalen Endpunkten und den Remoteteilnehmern übertragen.
LocalHold Nach Connected Der Anruf wurde von einem lokalen Teilnehmer auf Halten gesetzt. Zwischen dem lokalen Endpunkt und den Remoteteilnehmern werden keine Medien übertragen.
RemoteHold Nach Connected Der Anruf wurde von einem Remoteteilnehmer auf Halten gesetzt. Zwischen dem lokalen Endpunkt und den Remoteteilnehmern werden keine Medien übertragen.
InLobby Nach Ringing oder Connecting Der Remoteteilnehmer befindet sich im Wartebereich für Teams-Besprechungen. Zwischen dem lokalen Endpunkt und den Remoteteilnehmern werden keine Medien übertragen.
Disconnecting Nach jedem Zustand Der Übergangszustand, bevor der Anruf in den Zustand Disconnected übergeht.
Disconnected Endzustand Der Endzustand des Anrufs. Wenn die Netzwerkverbindung unterbrochen wird, ändert sich der Zustand nach zwei Minuten in Disconnected.

Status für 1:1- oder Gruppenanrufe: Diagram with call's states for one-to-one or group calls.

Status für Teams-Besprechungen: Diagram with call's states for Teams meetings.

const callState = call.state;

callEndReason: Gibt das Objekt CallEndReason zurück, das zusätzliche Informationen über den beendeten Anruf enthält. Die Eigenschaft code gibt eine Zahl zurück, die dem Grund zugeordnet ist, und subCode gibt eine Zahl zurück, die dem Code und dem Grund zugeordnet ist. Hier finden Sie weitere Informationen zu Fehlercodes

const callEndReason = call.callEndReason;
const callEndReasonCode = callEndReason.code
const callEndReasonSubCode = callEndReason.subCode

direction: Gibt einen string zurück, der die Richtung des Aufrufs angibt. Die Eigenschaft kann einen der folgenden Werte haben: „Eingehend“ oder Outgoing.

const isIncoming = call.direction == 'Incoming';
const isOutgoing = call.direction == 'Outgoing';

isMuted: Gibt einen Boolean-Wert zurück, der einen Zustand der lokalen Stummschaltung darstellt.

const muted = call.isMuted;

isScreenSharingOn: Gibt den Boolean-Wert „Wahr“ zurück, wenn Sie einen Bildschirmfreigabe-Datenstrom an andere Teilnehmer senden.

const isScreenSharingOn = call.isScreenSharingOn;

localVideoStreams: Gibt eine Sammlung von LocalVideoStream-Objekten zurück, die Videodatenströme darstellt, die an Remoteteilnehmer gesendet werden.

const localVideoStreams = call.localVideoStreams;

Chat-Thread verwalten

Das Angeben einer Chat-ID ist zum Durchführen von Gruppenanrufen und zum Hinzufügen von Teilnehmern zu vorhandenen Anrufen obligatorisch. Zugeordnete Chats und Anrufe weisen eine separate Teilnehmerliste auf. Bevor Sie dem Anruf Teilnehmer hinzufügen, fügen Sie den Benutzer zum Chat hinzu, um die beste Benutzererfahrung zu bieten und die Anforderungen an die Informationsbarriere zu erfüllen. Das Hinzufügen eines Benutzers zum Anruf, ohne ihn dem Chat hinzuzufügen, kann zu Ausnahmen führen, wenn eine Informationsbarriere eingerichtet ist.

Stellen Sie sich folgendes Szenario vor: Alice telefoniert mit Bob, dann fügt Alice Charlie hinzu, und 3 Minuten später entfernt Alice Charlie aus dem Anruf.

  1. Erstellen Sie einen Chat-Thread zwischen Alice, Bob und Charlie. Bewahren Sie die threadId des Chats für später auf.
  2. Alice ruft Bob und Charlie mithilfe der startCall-Methode der TeamsCallAgent-Instanz auf.
  3. Fügen Sie Dan zum Chat-Thread mit threadId hinzu, und verwenden Sie Chat Graph-API zum Hinzufügen von Mitgliedern
  4. Alice fügt Dan zum Anruf hinzu und verwendet dazu die Methode addParticipant von call und gibt die threadId an
  5. Alice entfernt Dan aus dem Anruf mit der Methode removeParticipant von call und gibt die threadId an
  6. Entfernen Sie Dan aus dem Chat-Thread mit threadId unter Verwendung der Chat Graph-API zum Entfernen von Mitgliedern

Wenn ein Teams-Benutzer die Gesprächsaufzeichnung beendet, wird die Aufzeichnung in den mit dem Thema verbundenen Chat gestellt. Die angegebene Chat-ID wirkt sich auf Teams-Benutzer in Teams-Clients aus.

Empfehlungen für die Verwaltung der Chat-ID:

  • Eskalation des 1:1-Telefonanrufs durch Hinzufügen eines weiteren Telefonteilnehmers: Verwenden Sie die Graph-API, um eine vorhandene Chat-ID mit dem einzigen Teams-Benutzer als Teilnehmer abzurufen, oder erstellen Sie einen neuen Gruppenchat mit Teilnehmern: Teams-Benutzer-ID und „00000000-0000-0000-0000-000000000000“.
  • Gruppenanruf mit einem einzelnen Teams-Benutzer und mehreren Telefonteilnehmern: Verwenden Sie die Graph-API, um eine vorhandene Chat-ID mit dem einzigen Teams-Benutzer als Teilnehmer abzurufen, oder erstellen Sie einen neuen Gruppenchat mit Teilnehmern: Teams-Benutzer-ID und „00000000-0000-0000-0000-000000000000“.
  • Gruppenanruf mit mehr als zwei Teams-Benutzern: Verwenden Sie die Graph-API, um einen Gruppenchat mit den Teams-Benutzern abzurufen oder zu erstellen.