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.
Die Besprechungserweiterbarkeit bietet APIs zur Verbesserung der Besprechungserfahrung. Mit Hilfe der aufgeführten APIs können Sie Folgendes ausführen:
- Erstellen Sie Apps oder integrieren Sie vorhandene Apps in den Meeting-Lebenszyklus.
- Verwenden Sie APIs, um Ihre App auf Meetings aufmerksam zu machen.
- Wählen Sie die erforderlichen APIs aus, um das Besprechungserlebnis zu verbessern.
Hinweis
Verwenden Sie die Microsoft Teams JavaScript-Clientbibliothek (TeamsJS) (Version: 1.10 und höher), damit Single Sign-On (SSO) im Besprechungsseitenbereich funktioniert.
Die folgende Tabelle enthält eine Liste der APIs, die im Teams SDK und in der TeamsJS-Bibliothek verfügbar sind:
| Methode | Beschreibung | Quelle |
|---|---|---|
| Teilnehmer abrufen | Rufen Sie Teilnehmerinformationen nach Meeting-ID und Teilnehmer-ID ab. | Teams-SDK |
| Senden Sie eine Besprechungsbenachrichtigung | Stellt Besprechungssignale mithilfe der Unterhaltungsbenachrichtigungs-API für den Benutzer-Bot-Chat bereit und ermöglicht es dem Bot, Benutzeraktionen zu benachrichtigen, die eine Besprechungsbenachrichtigung anzeigen. | Teams-SDK |
| Besprechungsdetails abrufen | Rufen Sie die statischen Metadaten eines Meetings ab. | Teams-SDK |
| Senden Sie Untertitel in Echtzeit | Senden Sie Untertitel in Echtzeit an ein laufendes Meeting. | TeamsJS-Bibliothek |
| Teilen Sie App-Inhalte auf der Bühne | Teilen Sie bestimmte Teile der App für die Meeting-Phase aus dem Seitenbereich der App in einem Meeting. | TeamsJS-Bibliothek |
| Empfangen von Teams-Besprechungsereignissen in Echtzeit | Empfangen Sie Besprechungsereignisse in Echtzeit, z. B. den Anfang und das Ende einer Besprechung oder das Beitreten und Verlassen der Besprechung. | Teams-SDK |
Holen Sie sich die Benutzerkontext-API
Wichtig
- Standardmäßig unterstützt der neue Teams-Client helle Designs für Apps in Teams-Besprechungen. Wenn die Eigenschaft in der
app.themegetContext-API dendefaultWert zurückgibt, befindet sich der Teams-Client im hellen Design. - Frühere Versionen von Teams-Clients unterstützen nur das dunkle und kontrastierende Design für Apps in Teams-Besprechungen
Informationen zum Identifizieren und Abrufen von Kontextinformationen für Ihre Registerkarteninhalte finden Sie unter Abrufen von Kontext für Ihre Registerkarte "Teams". wird von einer meetingId Registerkarte verwendet, die im Besprechungskontext ausgeführt wird, und wird für die Antwortnutzlast hinzugefügt.
Beispiele
Im Folgenden finden Sie die TeamsJS v2-Antworten für die API zum Abrufen des Benutzerkontexts basierend auf Besprechungstyp, Benutzertyp und Anruftyp:
Besprechungstyp
Im Folgenden finden Sie eine JSON-Nutzlastantwort für eine Kanalbesprechung für Mandantenbenutzer:
{ "app": { "locale": "en-us", "sessionId": "ff47ec00-e6a7-4dc1-a6ae-f44110f50c94", "theme": "default", "iconPositionVertical": 0, "osLocaleInfo": { "platform": "windows", "regionalFormat": "en-in", "shortDate": "dd-MM-yyyy", "longDate": "dd MMMM yyyy", "shortTime": "HH:mm", "longTime": "HH:mm:ss" }, "parentMessageId": "1678109354022", "userClickTime": 1678109521159, "userFileOpenPreference": "inline", "host": { "name": "Teams", "clientType": "desktop", "sessionId": "c3c3c0a0-f7a1-b070-6b89-c8cd1f380042", "ringId": "ring1" }, "appLaunchId": "7346ae66-5cac-47f9-8a0d-1228dac474cb" }, "page": { "id": "Test", "frameContext": "sidePanel", "subPageId": "", "isFullScreen": false, "isMultiWindow": true, "sourceOrigin": "" }, "user": { "id": "57efa5f3-273c-47e2-a871-4879e5d849cf", "displayName": "", "isCallingAllowed": undefined, "isPSTNCallingAllowed": undefined, "licenseType": "Unknown", "loginHint": "user@microsoft.com", "userPrincipalName": "user@microsoft.com", "tenant": { "id": "72f988bf-86f1-41af-91ab-2d7cd011db47", "teamsSku": "enterprise" } }, "channel": { "id": "19:49683807ffce4318ad6d6d7a24dbde45@thread.tacv2", "displayName": undefined, "relativeUrl": undefined, "membershipType": undefined, "defaultOneNoteSectionId": undefined, "ownerGroupId": undefined, "ownerTenantId": undefined }, "chat": { "id": "19:49683807ffce4318ad6d6d7a24dbde45@thread.tacv2" }, "meeting": { "id": "MCMxOTo0OTY4MzgwN2ZmY2U0MzE4YWQ2ZDZkN2EyNGRiZGU0NUB0aHJlYWQudGFjdjIjMTY3ODEwOTM1NDAyMg==" }, "sharepoint": undefined, "team": { "internalId": "19:b34aeec3f8e54240a5c283e86bfc4878@thread.tacv2", "displayName": undefined, "type": undefined, "groupId": undefined, "templateId": undefined, "isArchived": undefined, "userRole": 1 }, "sharePointSite": { "teamSiteUrl": "", "teamSiteDomain": "microsoft.sharepoint.com", "teamSitePath": "", "teamSiteId": "", "mySitePath": undefined, "mySiteDomain": undefined } }Benutzertyp
Im Folgenden finden Sie eine JSON-Nutzlastantwort in einer geplanten privaten Besprechung für einen Gastbenutzer:
{ "app": { "locale": "en-us", "sessionId": "268beeb4-a52d-4ba8-b1c8-8b9f0b9b3492", "theme": "default", "iconPositionVertical": 23, "osLocaleInfo": { "platform": "windows", "regionalFormat": "en-in", "longDate": "dd MMMM yyyy", "shortDate": "dd-MM-yyyy", "longTime": "HH:mm:ss", "shortTime": "HH:mm" }, "parentMessageId": "", "userClickTime": 1678023265131, "userFileOpenPreference": "inline", "host": { "name": "Teams", "clientType": "desktop", "sessionId": "967c980b-1e41-a2cd-eac0-a4bff8f73ce7", "ringId": "ring1" }, "appLaunchId": "c35c4496-f28c-4107-8e6c-2dba09fb881a" }, "page": { "id": "Test", "frameContext": "content", "subPageId": "", "isFullScreen": false, "isMultiWindow": false, "sourceOrigin": NULL }, "user": { "id": "57efa5f3-273c-47e2-a871-4879e5d849cf", "displayName": undefined, "isCallingAllowed": undefined, "isPSTNCallingAllowed": undefined, "licenseType": "Unknown", "loginHint": "user@microsoft.com", "userPrincipalName": "user@microsoft.com", "tenant": { "id": "72f988bf-86f1-41af-91ab-2d7cd011db47", "teamsSku": "enterprise" } }, "channel": undefined, "chat": { "id": "19:meeting_YmU5NWM3NGEtZjMyMi00ZDg4LTk4OGUtMjUzMGJkZjRhMDhm@thread.v2" }, "meeting": { "id": "MCMxOTptZWV0aW5nX1ltVTVOV00zTkdFdFpqTXlNaTAwWkRnNExUazRPR1V0TWpVek1HSmtaalJoTURobUB0aHJlYWQudjIjMA==" }, "sharepoint": undefined, "team": undefined, "sharePointSite": { "teamSiteUrl": "", "teamSiteDomain": "microsoft.sharepoint.com", "teamSitePath": "", "teamSiteId": undefined, "mySitePath": "/personal/user_microsoft_com", "mySiteDomain": "microsoft-my.sharepoint.com" } }Anruftyp
Im Folgenden finden Sie eine JSON-Nutzlastantwort für einen Einzelanruf für einen In-Mandanten-Benutzer:
{ "app": { "locale": "en-us", "sessionId": "1b3dc47e-f6ae-4fe2-8ed6-844a505f3186", "theme": "dark", "iconPositionVertical": null, "osLocaleInfo": { "platform": "windows", "regionalFormat": "en-in", "shortDate": "dd-MM-yyyy", "longDate": "dd MMMM yyyy", "shortTime": "HH:mm", "longTime": "HH:mm:ss" }, "parentMessageId": "", "userClickTime": 1678088052473, "userFileOpenPreference": undefined, "host": { "name": "Teams", "clientType": "desktop", "sessionId": "", "ringId": "general" }, "appLaunchId": undefined }, "page": { "id": "Test", "frameContext": "sidePanel", "subPageId": "", "isFullScreen": undefined, "isMultiWindow": true, "sourceOrigin": "" }, "user": { "id": "e652dd92-dd63-4fcc-b5b2-2005681e8e9f", "displayName": undefined, "isCallingAllowed": undefined, "isPSTNCallingAllowed": undefined, "licenseType": "Unknown", "loginHint": "user@microsoft.com", "userPrincipalName": "user@microsoft.com", "tenant": { "id": "aa923623-ae61-49ee-b401-81f414b6ad5a", "teamsSku": "unknown" } }, "channel": undefined, "chat": { "id": "19:a74d8489-4455-4670-9581-7b38a8017c58_e652dd92-dd63-4fcc-b5b2-2005681e8e9f@unq.gbl.spaces" }, "meeting": { "id": "MCMxOTphNzRkODQ4OS00NDU1LTQ2NzAtOTU4MS03YjM4YTgwMTdjNThfZTY1MmRkOTItZGQ2My00ZmNjLWI1YjItMjAwNTY4MWU4ZTlmQHVucS5nYmwuc3BhY2VzIzA=" }, "sharepoint": undefined, "team": undefined, "sharePointSite": { "teamSiteUrl": undefined, "teamSiteDomain": "microsoft.sharepoint.com", "teamSitePath": undefined, "teamSiteId": undefined, "mySitePath": undefined, "mySiteDomain": undefined } }
Teilnehmer-API abrufen
Mit der API "Teilnehmer abrufen" kann Ihre App Teilnehmerinformationen anhand der Besprechungs-ID und Teilnehmer-ID abrufen. Die API ist über das Teams SDK verfügbar.
Hinweis
- Der Benutzertyp ist nicht in der API "getParticipantRole " enthalten.
- Teilnehmerrollen nicht zwischenspeichern, da der Besprechungsorganisator die Rollen jederzeit ändern kann.
- Die
GetParticipantAPI wird nur für Verteilerlisten oder Dienstpläne mit weniger als 350 Teilnehmern unterstützt.
Abfrageparameter
Tipp
Rufen Sie Teilnehmer-IDs und Mandanten-IDs auf der Registerkarte SSO-Authentifizierung ab.
Die Meeting API muss über participantId, und tenantId als Parameter verfügenmeetingId. Die Parameter sind als Teil des Teams SDK-Aktivitätskontexts und der TeamsJS-Bibliothek verfügbar.
Die folgende Tabelle enthält die Abfrageparameter:
| Wert | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| meetingId | Zeichenfolge | Ja | Der Besprechungsbezeichner ist über Bot Invoke und die TeamsJS-Bibliothek verfügbar. |
| participantId | Zeichenfolge | Ja | Die Teilnehmer-ID ist die Benutzer-ID. Es ist in Tab SSO, Bot Invoke und TeamsJS-Bibliothek verfügbar. Es wird empfohlen, eine Teilnehmer-ID vom Tab SSO zu erhalten. |
| tenantId | Zeichenfolge | Ja | Die Mandanten-ID ist für die Mandantenbenutzer erforderlich. Es ist in Tab SSO, Bot Invoke und TeamsJS-Bibliothek verfügbar. Es wird empfohlen, eine Mandanten-ID von Tab SSO zu erhalten. |
Beispiel
app.OnMessage(async (context, cancellationToken) =>
{
var meetingId = context.Activity.ChannelData?.Meeting?.Id;
var tenantId = context.Activity.ChannelData?.Tenant?.Id;
var userId = context.Activity.From?.AadObjectId;
if (meetingId != null && tenantId != null && userId != null)
{
// Gets the details for the given meeting participant.
var participant = await context.Api.Meetings.GetParticipantAsync(meetingId, userId, tenantId);
// Sends a message activity to the sender of the incoming activity.
await context.Send($"The participant role is: {participant.Meeting?.Role}", cancellationToken);
}
});
| Eigenschaftenname | Beschreibung |
|---|---|
| user.id | ID des Benutzers. |
| user.aadObjectId | Microsoft Entra-Objekt-ID des Benutzers. |
| user.name | Der Name des Benutzers. |
| user.givenName | Vorname des Benutzers. |
| user.surname | Nachname des Benutzers. |
| user.email | E-Mail-ID des Benutzers. |
| user.userPrincipalName | UPN des Benutzers. |
| user.tenantId | Microsoft Entra-Mandanten-ID. |
| user.userRole | Rolle des Benutzers. Beispiel: "Administrator" oder "Benutzer". |
| meeting.role | Die Rolle des Teilnehmers in der Besprechung. Beispiel: "Organisator" oder "Referent" oder "Teilnehmer". |
| meeting.inMeeting | Der Wert, der angibt, ob der Teilnehmer an der Besprechung teilnimmt. |
| conversation.id | Die ID des Besprechungschats. |
| conversation.isGroup | Boolescher Wert, der angibt, ob die Konversation mehr als zwei Teilnehmer hat. |
Antwortcodes
Die folgende Tabelle enthält die Antwortcodes:
| Antwortcode | Beschreibung |
|---|---|
| 403 | Get-Teilnehmerinformationen werden nicht mit der App geteilt. Wenn die App nicht im Meeting installiert ist, löst sie die Fehlerantwort 403 aus. Wenn der Administrator die App während der Livewebsitemigration deaktiviert oder blockiert, wird die Fehlerantwort 403 ausgelöst. |
| 200 | Die Teilnehmerinformationen wurden erfolgreich abgerufen. |
| 401 | Die App antwortet mit einem ungültigen Token. |
| 404 | Die Besprechung ist entweder abgelaufen oder die Teilnehmer sind nicht verfügbar. |
Senden Sie eine Besprechungsbenachrichtigung
Alle Benutzer in einem Meeting erhalten die Benachrichtigungen, die über die Nutzlast für Benachrichtigungen im Meeting gesendet werden. Die Payload „In-Meeting-Benachrichtigung“ löst eine In-Meeting-Benachrichtigung aus und ermöglicht es Ihnen, Meeting-Signale bereitzustellen, die mithilfe der vorhandenen Konversationsbenachrichtigungs-API für Benutzer-Bot-Chat bereitgestellt werden. Sie können eine Meeting-Benachrichtigung basierend auf einer Benutzeraktion senden. Die Nutzlast ist über das Teams SDK verfügbar.
Sie können auch gezielte Besprechungsbenachrichtigungen an einen bestimmten Teilnehmer in einer Besprechung senden. Weitere Informationen finden Sie unter Gezielte Benachrichtigung während einer Besprechung.
Hinweis
- Wenn eine Meeting-Benachrichtigung aufgerufen wird, wird der Inhalt als Chat-Nachricht präsentiert.
- Sie müssen die Funktion submitTask() aufrufen, damit sie automatisch geschlossen wird, nachdem ein Benutzer eine Aktion in der Webansicht ausgeführt hat. Dies ist eine Voraussetzung für die App-Übermittlung. Weitere Informationen finden Sie unter Teams SDK-Aufgabenmodul.
- Wenn Sie möchten, dass Ihre App anonyme Benutzer unterstützt, muss sich die Nutzlast der anfänglichen Aufrufanforderung auf
from.idAnforderungsmetadaten imfromObjekt und nicht auffrom.aadObjectIdAnforderungsmetadaten stützen.from.idist die Benutzer-ID undfrom.aadObjectIdist die Microsoft Entra ID des Benutzers. Weitere Informationen finden Sie unter Aufgabenmodule in Registerkarten verwenden und Aufgabenmodul erstellen und senden.
Abfrageparameter
Die folgende Tabelle enthält den Abfrageparameter:
| Wert | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| conversationId | Zeichenfolge | Ja | Die Konversations-ID ist als Teil von Bot Invoke verfügbar. |
Beispiele
Bot ID wird im Manifest deklariert, und der Bot empfängt ein Ergebnisobjekt.
Hinweis
- Der
completionBotIdParameter vonexternalResourceUrlist im angeforderten Payload-Beispiel optional. - Die
externalResourceUrlBreiten- und Höhenparameter müssen in Pixel angegeben werden. Weitere Informationen finden Sie unter Designrichtlinien. - Die URL ist die Seite, die wie in
<iframe>der Besprechungsbenachrichtigung geladen wird. Die Domäne muss sich imvalidDomainsArray der Apps in Ihrem App-Manifest befinden.
app.OnMessage(async (context, cancellationToken) =>
{
// Send an in-meeting notification with an external resource URL.
await context.Send(new Activity
{
Type = "message",
Text = "This is a meeting signal test",
ChannelData = new
{
notification = new
{
alertInMeeting = true,
externalResourceUrl = "https://teams.microsoft.com/l/bubble/APP_ID?url=<url>&height=<height>&width=<width>&title=<title>&completionBotId=BOT_APP_ID"
}
}
}, cancellationToken);
});
| Eigenschaftenname | Beschreibung |
|---|---|
| type | Aktivitätstyp. |
| text | Der Textinhalt der Nachricht. |
| summary | Der zusammenfassende Text der Nachricht. |
| channelData.notification.alertInMeeting | Boolescher Wert, der angibt, ob dem Benutzer während einer Besprechung eine Benachrichtigung angezeigt werden soll. |
| channelData.notification.externalResourceUrl | Der Wert der externen Ressourcen-URL der Benachrichtigung. |
| replyToId | Die ID der übergeordneten oder Stammnachricht des Threads. |
| APP_ID | Im Manifest deklarierte App-ID. |
| completionBotId | Bot-App-ID. |
Antwortcodes
Die folgende Tabelle hat die Antwortcodes:
| Antwortcode | Beschreibung |
|---|---|
| 201 | Die Aktivität mit Signal wurde erfolgreich gesendet. |
| 401 | Die App antwortet mit einem ungültigen Token. |
| 403 | Die App kann das Signal nicht senden. Der Antwortcode 403 kann aus verschiedenen Gründen auftreten, z. B. wenn der Administrator die App während der Livesitemigration deaktiviert und blockiert. In diesem Fall enthält die Payload eine detaillierte Fehlermeldung. |
| 404 | Der Meeting-Chat existiert nicht. |
Gezielte Besprechungsbenachrichtigung und App-Symbol-Badging-API
Die targetedMeetingNotification API ermöglicht Apps das Senden gezielter Besprechungsbenachrichtigungen und zeigt bestimmten Teilnehmern in einer Besprechung App-Symbol-Badging an. Apps senden basierend auf Benutzeraktionen gezielte Benachrichtigungen während einer Besprechung und App-Symbol-Badging. Die API ist über die Bot-API verfügbar.
Voraussetzungen
Sie müssen Ihr App-Manifest mit RSC-Berechtigungen unter der Eigenschaft konfigurieren, um webApplicationInfo bestimmten Teilnehmern in einer Besprechung gezielte Benachrichtigungen während einer Besprechung zu senden und App-Symbol-Badging anzuzeigen. Verwenden Sie die folgenden Beispiele, um Ihr Manifest zu konfigurieren:
Für App-Manifestversion 1.12 und höher
"webApplicationInfo": {
"id": "<<MICROSOFT-APP-ID>>",
"resource": "https://RscBasedStoreApp" },
"authorization": {
"permissions": {
"resourceSpecific": [
{
"name": "OnlineMeetingNotification.Send.Chat",
"type": "Application"
}
]
}
}
Für App-Manifest Version 1.11 und früher
"webApplicationInfo": {
"id": "<<MICROSOFT-APP-ID>>",
"resource": "https://RscBasedStoreApp",
"applicationPermissions": [
"OnlineMeetingNotification.Send.Chat"
]
}
Hinweis
- Die API-Nutzlast lässt nur einen Dialog mit einer URL zu.
- Die Benutzer-ID-Formate aadObjectid und UPN werden nicht unterstützt.
Abrufen des unterstützten Benutzer-ID-Formats für gezielte Benachrichtigungen während einer Besprechung und App-Symbol-Badging:
Beispiel
Im Folgenden finden Sie ein Beispiel für Anforderungsnutzlasten für gezielte In-Meeting-Benachrichtigungen und App-Symbol-Badging:
POST /v1/meetings/{meetingId}/notification
{
"type": "targetedMeetingNotification",
"value": {
"recipients": [
"29:1I12M_iy2wTa97T6LbjTh4rJCWrtw2PZ3lxpD3yFv8j2YPnweY2lpCPPAn3RI0PP7rghfHauUz48I1t7ANhj4CA"
],
"surfaces": [
{
"surface": "meetingStage",
"contentType": "task",
"content": {
"value": {
"height": "300",
"width": "400",
"title": "Targeted meeting Notification",
"url": "https://somevalidurl.com"
}
}
}
]
},
"channelData": { // optional if a developer doesn't want to support user attributes.
"onBehalfOf": [
{
"itemid": 0,
"mentionType": "person",
"mri": "29:1mDOCfGM9825lMHlwP8NjIVMJeQAbN-ojYBT5VzQfPpnst1IFQeYB1QXC8Zupn2RhgfLIW27HmynQk-4bdx_YhA",
"displayName": "yunny chung" }
]
}
}
| Eigenschaftenname | Beschreibung |
|---|---|
meetingId |
Die Besprechungs-ID ist über den Bot-Aufruf und die TeamsJS-Bibliothek verfügbar. |
type |
targetedMeetingNotification |
recipients |
Liste der Benutzer-IDs. Abrufen von Benutzer-IDs für Besprechungsteilnehmer über die API zum Abrufen von Teilnehmern. Rufen Sie die gesamte Liste der Chatliste mithilfe der API "Mitglieder abrufen" ab. Eine leere Empfängerliste oder eine Null-Empfängerliste gibt 400 zurück. |
surface |
Eine Art von Oberfläche. Die unterstützten Oberflächentypen sind meetingStage und .meetingTabIcon |
surfaces |
Liste der Oberflächen, auf denen Benachrichtigungen gerendert werden können. |
contentType |
Der Typ des Inhalts, der von der gezielten Besprechungsbenachrichtigung gerendert wird. Der unterstützte Wert ist task. |
content |
TaskModuleContinueResponse |
content.value.height |
Optional; angeforderte Höhe der Benachrichtigung. |
content.value.width |
Optional; angeforderte Breite der Benachrichtigung. |
content.value.title |
Optional; Titel der Benachrichtigung. |
content.value.url |
Optional; URL, die in der Benachrichtigung dargestellt werden soll. Stellen Sie sicher, dass die URL Teil des In-App-Manifests validDomains ist. Wenn eine leere Zeichenfolge oder keine URL angegeben wird, wird in einer Besprechungsbenachrichtigung nichts gerendert. |
ChannelData.OnBehalfOf |
Optional; Dies dient zur Unterstützung von Benutzerattributen. |
onBehalfOf.itemid |
Beschreibt die Identifizierung des Elements. Der Wert muss 0 sein. |
onBehalfOf.mentionType |
personSchlüsselwort (keyword). Beschreibt die Erwähnung einer Person. |
onBehalfOf.mri |
Benutzer-MRI als Absender angezeigt. |
onBehalfOf.displayName |
Optional; Name der person. Wird als Fallback für den Fall verwendet, dass die Namensauflösung nicht verfügbar ist. |
Hinweis
Wenn Sie eine ungültige Eingabe eingeben, gibt die API den Status 400 zurück.
Antwortcode
Die folgende Tabelle hat die Antwortcodes:
| Antwortcode | Beschreibung |
|---|---|
| 202 | Die Benachrichtigung wurde erfolgreich gesendet. |
| 207 | Benachrichtigungen werden nur an wenige Teilnehmer gesendet. |
| 400 | Fehler bei der Validierung der Besprechungsbenachrichtigungsanforderung. |
| 401 | Bottoken ist ungültig. |
| 403 | Der Bot darf die Benachrichtigung nicht senden. |
| 404 | Der Besprechungschat wird nicht gefunden, oder keiner der Teilnehmer wurde in der Liste gefunden. |
Rufen Sie die Besprechungsdetails-API ab
Mit der Besprechungsdetails-API kann Ihre App die statischen Metadaten einer Besprechung abrufen. Die Metadaten stellen Datenpunkte bereit, die sich nicht dynamisch ändern. Die API ist über das Teams SDK verfügbar. Sowohl private geplante oder wiederkehrende Besprechungen als auch vom Kanal geplante oder wiederkehrende Besprechungen unterstützen die API mit unterschiedlichen RSC-Berechtigungen.
Die Besprechungsdetails-API muss über eine Botregistrierung und eine Bot-ID verfügen. Um die Besprechungsdetails-API verwenden zu können, müssen Sie je nach Umfang einer Besprechung, z. B. einer privaten Besprechung oder einer Kanalbesprechung, unterschiedliche RSC-Berechtigungen einholen.
Wird zur Erweiterung durch Eins-zu-Eins-Anrufe verwendet getMeetingDetailsVerbose
Die getMeetingDetailsVerbose Funktion erweitert die Funktionalität der getMeetingDetails API, um Anrufe über das Telefonfestnetz (PSTN) und Teams-zu-Teams-Anrufe für persönliche Registerkarten-Apps zu ermöglichen. Sie gibt die IMeetingDetailsResponse Schnittstelle mit zusätzlichen Aufrufdetails zurück.
Weitere Informationen finden Sie unter Erstellen von Registerkarten für Anrufe.
Hinweis
Die Besprechungsdetails-API wird für geplante private Besprechungen, geplante Kanalbesprechungen, Sofortbesprechungen (Jetzt besprechen), Einzelanrufe und Gruppenanrufe in Microsoft Teams-Desktop- und mobilen Clients unterstützt.
Voraussetzungen
Um die Besprechungsdetails-API verwenden zu können, müssen Sie je nach Umfang einer Besprechung, z. B. einer privaten Besprechung oder einer Kanalbesprechung, unterschiedliche RSC-Berechtigungen einholen.
Um Anrufe zu aktivieren, stellen Sie sicher, dass Sie die
OnlineMeetingParticipant.Read.ChatRSC-Berechtigung erhalten haben.Teams JS SDK erforderlich: TeamsJS SDK-Version neueste Version.
Für App-Manifestversion 1.12 und höher
Verwenden Sie das folgende Beispiel, um die App-Manifeste webApplicationInfo und authorization -Eigenschaften für eine private Besprechung zu konfigurieren:
"webApplicationInfo": {
"id": "<bot id>",
"resource": "https://RscPermission",
},
"authorization": {
"permissions": {
"resourceSpecific": [
{
"name": "OnlineMeeting.ReadBasic.Chat",
"type": "Application"
}
]
}
}
Verwenden Sie das folgende Beispiel, um die Manifeste webApplicationInfo und authorization Eigenschaften Ihrer App für ein beliebiges Kanalmeeting zu konfigurieren:
"webApplicationInfo": {
"id": "<bot id>",
"resource": "https://RscPermission",
},
"authorization": {
"permissions": {
"resourceSpecific": [
{
"name": "ChannelMeeting.ReadBasic.Group",
"type": "Application"
}
]
}
}
Für App-Manifest Version 1.11 und früher
Verwenden Sie das folgende Beispiel, um die webApplicationInfo Eigenschaft Ihres App-Manifests für ein privates Meeting zu konfigurieren:
"webApplicationInfo": {
"id": "<bot id>",
"resource": "https://RscPermission",
"applicationPermissions": [
"OnlineMeeting.ReadBasic.Chat"
]
}
Verwenden Sie das folgende Beispiel, um die webApplicationInfo Eigenschaft Ihres App-Manifests für ein beliebiges Kanalmeeting zu konfigurieren:
"webApplicationInfo": {
"id": "<bot id>",
"resource": "https://RscPermission",
"applicationPermissions": [
"ChannelMeeting.ReadBasic.Group"
]
}
Hinweis
- Wenn die
ChannelMeeting.ReadBasic.GroupBerechtigung zum Manifest hinzugefügt wird, empfängt der Bot die Start- oder Endereignisse der Besprechung automatisch aus den Kanalbesprechungen, die in allen Teams erstellt wurden, denen der Bot hinzugefügt wurde. - Bei einem Einzelanruf
organizerist der Initiator des Chats und bei Gruppenanrufenorganizerder Initiator des Anrufs. Bei öffentlichen Kanalbesprechungenorganizerist die Person, die den Kanalbeitrag erstellt hat.
Abfrageparameter
Die folgende Tabelle listet die Abfrageparameter auf:
| Wert | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| meetingId | Zeichenfolge | Ja | Die Besprechungs-ID ist über Bot Invoke und die TeamsJS-Bibliothek verfügbar. |
Beispiel
app.OnMessage(async (context, cancellationToken) =>
{
var meetingId = context.Activity.ChannelData?.Meeting?.Id;
if (meetingId != null)
{
// Gets the information for the given meeting id.
var meetingInfo = await context.Api.Meetings.GetByIdAsync(meetingId);
// Sends a message activity to the sender of the incoming activity.
await context.Send(JsonConvert.SerializeObject(meetingInfo), cancellationToken);
}
});
| Eigenschaftenname | Beschreibung |
|---|---|
| details.id | Die ID der Besprechung, codiert als BASE64-Zeichenfolge. |
| details.msGraphResourceId | Die MsGraphResourceId, die speziell für MS Graph-API-Aufrufe verwendet wird. |
| details.scheduledStartTime | Die geplante Startzeit der Besprechung in UTC. |
| details.scheduledEndTime | Die geplante Endzeit der Besprechung in UTC. |
| details.joinUrl | Die URL, die für den Beitritt zur Besprechung verwendet wird. |
| details.title | Der Titel der Besprechung. |
| details.type | Der Besprechungstyp (OneToOneCall, GroupCall, Scheduled, Recurring, MeetNow, ChannelScheduled und ChannelRecurring). |
| conversation.isGroup | Boolescher Wert, der angibt, ob die Konversation mehr als zwei Teilnehmer hat. |
| conversation.conversationType | Der Unterhaltungstyp. |
| conversation.id | Die ID des Besprechungschats. |
| organizer.id | Die Benutzer-ID des Organisators. |
| organizer.aadObjectId | Die Microsoft Entra-Objekt-ID des Organisators. |
| organizer.tenantId | Die Microsoft Entra-Mandanten-ID des Organisators. |
| ursprünglicher Caller | MRT für den ursprünglichen Anrufer eines Anrufs. |
| dialedEntity | MRT, das das Original als gewählt bezeichnete |
| trackingId | Eine persistente ID, die auf einen Aufruf und alle zugehörigen Aufrufe verweist. |
Im Falle eines Besprechungsserientyps:
startDate: Gibt das Datum an, an dem mit der Anwendung des Musters begonnen werden soll. Der Wert von startDate muss dem Datumswert der start-Eigenschaft der Ereignisressource entsprechen. Das erste Vorkommen der Besprechung findet möglicherweise nicht an diesem Datum statt, wenn es nicht in das Muster passt.
endDate: Gibt das Datum an, an dem die Anwendung des Musters beendet werden soll. Das letzte Vorkommen der Besprechung findet möglicherweise nicht an diesem Datum statt, wenn es nicht dem Muster entspricht.
API zum Senden von Beschriftungen in Echtzeit
Die API zum Senden von Echtzeituntertiteln macht einen POST-Endpunkt für den Zugriff auf die Teams-Kommunikation verfügbar, CART-Untertitel (Real-Time Translation), von Menschen eingegebene Untertitel. An diesen Endpunkt gesendete Textinhalte werden Endbenutzern in einer Teams-Besprechung angezeigt, wenn sie Untertitel aktiviert haben.
CART-URL
Sie können die CART-URL für den POST-Endpunkt von der Seite Besprechungsoptionen in einer Teams-Besprechung abrufen. Weitere Informationen finden Sie unter CART-Beschriftungen in einer Microsoft Teams Besprechung. Sie müssen die CART-URL nicht ändern, um CART-Beschriftungen zu verwenden.
Abfrageparameter
Die CART-URL enthält die folgenden Abfrageparameter:
| Wert | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| meetingId | Zeichenfolge | Ja | Die Besprechungs-ID ist über Bot Invoke und die TeamsJS-Bibliothek verfügbar. Beispiel: meetingid=%7b%22tId%22%3a%2272f234bf-86f1-41af-91ab-2d7cd0321b47%22%2c%22oId%22%3a%22e071f268-4241-47f8-8cf3-fc6b84437f23%22%2c%22thId%22%3a%2219%3ameeting_NzJiMjNkMGQtYzk3NS00ZDI1LWJjN2QtMDgyODVhZmI3NzJj%40thread.v2%22%2c%22mId%22%3a%220%22%7d |
| token | Zeichenfolge | Ja | Autorisierungstoken. Beispiel: token=04751eac |
Beispiel
https://api.captions.office.microsoft.com/cartcaption?meetingid=%7b%22tId%22%3a%2272f234bf-86f1-41af-91ab-2d7cd0321b47%22%2c%22oId%22%3a%22e071f268-4241-47f8-8cf3-fc6b84437f23%22%2c%22thId%22%3a%2219%3ameeting_NzJiMjNkMGQtYzk3NS00ZDI1LWJjN2QtMDgyODVhZmI3NzJj%40thread.v2%22%2c%22mId%22%3a%220%22%7d&token=gjs44ra
Methode
| Ressource | Methode | Beschreibung |
|---|---|---|
| /cartcaption | POST | Behandeln Sie Beschriftungen für das Meeting, das gestartet wurde |
Hinweis
Stellen Sie sicher, dass der Inhaltstyp für alle Anforderungen Klartext mit UTF-8-Codierung ist. Der Anfragetext enthält nur Bildunterschriften.
Beispiel
POST /cartcaption?meetingid=04751eac-30e6-47d9-9c3f-0b4ebe8e30d9&token=04751eac&lang=en-us HTTP/1.1
Host: api.captions.office.microsoft.com
Content-Type: text/plain
Content-Length: 22
Hello I'm Cortana, welcome to my meeting.
Hinweis
Jede POST-Anforderung generiert eine neue Zeile mit Untertiteln. Um sicherzustellen, dass der Endbenutzer genügend Zeit hat, den Inhalt zu lesen, begrenzen Sie jeden POST-Anforderungstext auf 80–120 Zeichen.
Fehlercodes
Die folgende Tabelle enthält die Fehlercodes:
| Fehlercode | Beschreibung |
|---|---|
| 400 | Ungültige Anforderung. Der Antworttext enthält weitere Informationen. Beispielsweise werden nicht alle erforderlichen Parameter dargestellt. |
| 401 | Unbefugt. Ungültiges oder abgelaufenes Token. Wenn Sie diesen Fehler erhalten, generieren Sie eine neue WARENKORB-URL in Teams. |
| 404 | Besprechung nicht gefunden oder nicht gestartet. Wenn Sie diese Fehlermeldung erhalten, stellen Sie sicher, dass Sie das Meeting starten und Startuntertitel auswählen. Nachdem Untertitel im Meeting aktiviert wurden, können Sie damit beginnen, Untertitel in das Meeting zu posten. |
| 500 | Internal server error. (Interner Serverfehler) Wenden Sie sich für weitere Informationen an den Support oder geben Sie Feedback. |
Empfangen von Teams-Besprechungsereignissen in Echtzeit
Sie können Besprechungsereignisse in Echtzeit empfangen, z. B. Ereignisse zum Starten und Beenden einer Besprechung oder zum Beitritt und Verlassen von Teilnehmern.
Empfangen von Start- und Endereignissen für Besprechungen
Hinweis
Start- und Endereignisse für Besprechungen werden für geplante und Kanalbesprechungen unterstützt.
Der Benutzer kann Meeting-Ereignisse in Echtzeit empfangen. Sobald eine App mit einem Meeting verknüpft ist, werden die tatsächliche Start- und Endzeit des Meetings mit dem Bot geteilt. Die tatsächliche Start- und Endzeit eines Meetings unterscheidet sich von der geplanten Start- und Endzeit. Die Besprechungsdetails-API enthält die geplante Start- und Endzeit. Das Ereignis gibt die tatsächliche Start- und Endzeit an.
Wenn die ChannelMeeting.ReadBasic.GroupOnlineMeeting.ReadBasic.Chat und-Berechtigungen im Manifest hinzugefügt werden, beginnt der Bot automatisch mit dem Empfang der Start- oder Endereignisse für die Besprechungstypen "Geplant" und "Kanal".
Voraussetzungen
Ihr App-Manifest muss über die webApplicationInfo Eigenschaft verfügen, die Start- und Endereignisse des Meetings zu empfangen. Verwenden Sie die folgenden Beispiele, um Ihr Manifest zu konfigurieren:
Für App-Manifestversion 1.12 und höher
"webApplicationInfo": {
"id": "<bot id>",
"resource": "https://RscPermission",
}
"authorization": {
"permissions": {
"resourceSpecific": [
{
"name": "OnlineMeeting.ReadBasic.Chat",
"type": "Application"
},
{
"name": "ChannelMeeting.ReadBasic.Group",
"type": "Application"
}
]
}
}
Für App-Manifest Version 1.11 und früher
"webApplicationInfo": {
"id": "<bot id>",
"resource": "https://RscPermission",
"applicationPermissions": [
"OnlineMeeting.ReadBasic.Chat",
"ChannelMeeting.ReadBasic.Group"
]
}
Beispiel für das Abrufen von Start- oder Endereignissen für Besprechungen
Der Bot empfängt die Start- und Endereignisse der Besprechung über die OnTeamsMeetingStartAsync und-Handler OnTeamsMeetingEndAsync . Die Informationen im Zusammenhang mit dem Besprechungsereignis sind Teil des MeetingStartEventDetails Objekts, das die Metadatenfelder wie , meetingType, title, startTimeidjoinUrl, und EndTimeenthält.
Hinweis
- Besprechungs-ID abrufen von
context.Activity.ChannelData. - Konversations-ID nicht als Besprechungs-ID verwenden.
- Verwenden Sie keine Besprechungs-ID aus der Nutzlast der Besprechungsereignisse
activity.value.
Die folgenden Beispiele zeigen, wie die Start- und Endereignisse der Besprechung erfasst werden:
Meeting-Startereignis
// Register meeting start handler
teamsApp.OnMeetingStart(async (context, cancellationToken) =>
{
var activity = context.Activity.Value;
var card = new AdaptiveCard
{
Schema = "http://adaptivecards.io/schemas/adaptive-card.json",
Body = new List<CardElement>
{
new TextBlock("The meeting has started.")
{
Wrap = true,
Weight = TextWeight.Bolder,
Size = TextSize.Large
},
new TextBlock($"**Title:** {activity.Title}")
{
Wrap = true
},
new TextBlock($"**Start Time:** {activity.StartTime}")
{
Wrap = true
}
},
Actions = new List<Microsoft.Teams.Cards.Action>
{
new OpenUrlAction(activity.JoinUrl)
{
Title = "Join Meeting"
}
}
};
await context.Send(card, cancellationToken);
});
app.on('meetingStart', async ({ activity, send }) => {
const value = activity.value;
const card = new AdaptiveCard(
new TextBlock('The meeting has started.', { weight: 'Bolder', size: 'Large', wrap: true }),
new TextBlock(`**Title:** ${value.title || 'N/A'}`, { wrap: true }),
new TextBlock(`**Start Time:** ${value.startTime || 'N/A'}`, { wrap: true })
).withActions(
new OpenUrlAction(value.joinUrl, { title: 'Join Meeting' })
);
await send(card);
});
Es folgen Beispiele für die Ereignisnutzlasten für das Beitritt und Verlassen von Teilnehmern:
Im Folgenden finden Sie ein Beispiel für die Ereignisnutzlast "Teilnehmerbeitritt":
{
"type": "event",
"name": "application/vnd.microsoft.meetingParticipantJoin",
"timestamp": "2023-02-23T19:34:07.478Z",
"channelId": "msteams",
"serviceUrl": "https://smba.trafficmanager.net/amer/",
"from": {
"id": "29:id_xyz"
},
"conversation": {
"isGroup": true,
"conversationType": "groupchat",
"id": "19:meeting_threadId@thread.v2"
},
"recipient": {
"id": "28:botid"
},
"value": {
"members": [
{
"user": {
"tenantId": "tenantid",
"objectId": "user_object_Id",
"id": "29:userId ",
"name": "Test User",
"aadObjectId": " user_object_Id "
},
"meeting": {
"inMeeting": true,
"role": "Organizer" //Attendee, Organizer, Presenter
},
}],
},
"channelData": {
"tenant": {
"id": "tenantId"
},
"meeting": {
"id": "encoded_meetingId"
}
}
}
Codebeispiel
| Beispielname | Beschreibung | .NET | Node.js | Manifest |
|---|---|---|---|---|
| Erweiterbarkeit von Besprechungen | Beispiel für die Erweiterbarkeit von Teams-Besprechungen zum Übergeben von Token. | View | View | View |
| Besprechungsinterne Benachrichtigung | Veranschaulicht, wie die Besprechungsbenachrichtigung mithilfe eines Bots implementiert wird. | View | View | View |
| Besprechungsseitenbereich | Beispiel für die Erweiterbarkeit von Teams-Besprechungen für die Interaktion mit dem Seitenbereich in einer Besprechung. | View | Anzeigen | |
| Registerkarte „Details“ im Meeting | Diese Beispiel-App zeigt das Feature zur Erweiterbarkeit von Teams-Besprechungen, bei dem der Benutzer eine Umfrage erstellen kann und Mitglieder die Umfrage in der Besprechung beantworten können. | View | View | Anzeigen |
| Beispiel für Meeting-Ereignisse | Dieses Beispiel zeigt Teams-Besprechungsereignisse in Echtzeit mithilfe eines Bots. | View | View | – |
| Beispiel für die Rekrutierung von Meetings | Diese Beispiel-App zeigt eine Besprechungsumgebung für das Rekrutierungsszenario mithilfe von Apps in Besprechungen. | View | View | Anzeigen |
Siehe auch
- Übersicht über das Teams-SDK
- Teams SDK-Besprechungsereignisse
- Teams SDK-API-Client
- Teams-Authentifizierungsablauf für Registerkarten
- Apps für Teams-Besprechungen
- Live Share SDK
- Aufzeichnung einer Teams-Cloudbesprechung
- Abrufen des Anwesenheitsberichts für eine Onlinebesprechung
- Besprechungsinterne Benachrichtigungen für Teams-Besprechungen erstellen
- Erhalten von Benachrichtigungen für Aktualisierungen von Teams-Besprechungsanrufen
- API zum Abrufen der Teilnehmeranwesenheit