Verwenden der Microsoft Search-API zum Durchsuchen von Teams-Nachrichten

Verwenden Sie die Microsoft Search-API in Microsoft Graph, um in Teams-Nachrichten nach Informationen zu suchen, Nachrichten nach Relevanz zu geben und eine dedizierte Suchoberfläche zu rendern. Die Suche gilt für den Nachrichtentext und die Anlagen von Nachrichten in den Teams-Nachrichten des angemeldeten Benutzers.

Achtung

Das Such-API-Schema wurde in der Betaversion geändert. Einige Eigenschaften in einer Suchanforderung und -antwort wurden umbenannt oder entfernt. Weitere Informationen finden Sie unter Warnung zur Einstellung der Schemaänderung. Die Beispiele in diesem Thema zeigen das aktuelle Schema.

Die Teams-Nachrichtensuche sucht auch nach Anlagen. Die unterstützten Dateitypen für die Suche nach Nachrichtenanlagen sind identisch mit denen für die SharePoint Online-Suche.

Beispiele

Beispiel 1: Durchsuchen einer Teams-Chatnachricht

Anforderung

Im folgenden Beispiel werden Teams-Chatnachrichten im Teams-Chatspeicher des angemeldeten Benutzers abfragt, die die Zeichenfolge "test" in einem beliebigen Teil der Chatnachricht (Absendername, Nachrichtentext oder Anlagen) enthalten. Die Abfrage gibt die ersten 25 Ergebnisse zurück. Die Suchergebnisse werden nach absteigender dateTime sortiert.

POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json

{
  "requests": [
    {
      "entityTypes": [
        "chatMessage"
      ],
      "query": {
        "queryString": "test"
      },
      "from": 0,
      "size": 25
    }
  ]
}

Antwort

Im Folgenden finden Sie ein Beispiel für die Antwort, die eine Nachricht enthält, die dem Suchkriterium entspricht.

HTTP/1.1 200 OK
Content-type: application/json

{
    "value": [
        {
            "searchTerms": [
                "test"
            ],
            "hitsContainers": [
                {
                    "hits": [
                        {
                            "hitId": "AAMkAGIwMDA5MmY0LWY5ZTgtNGY5YS04NzczLWNhNjc0ZGIyZDBjYgBGAAAAAADm35sgHbzESapJ8+BjBlhEBwDAYtphe7dsRbDrOT/HAHoKAAAAAAEpAADAYtphe7dsRbDrOT/HAHoKAAFwxQGaAAA=",
                            "rank": 1,
                            "summary": "...Test with the TDF account",
                            "resource": {
                                "@odata.type": "microsoft.graph.chatMessage",
                                "id": "1657782060227",
                                "createdDateTime": "2022-07-14T07:01:01Z",
                                "lastModifiedDateTime": "2022-07-14T07:01:03Z",
                                "subject": "",
                                "importance": "normal",
                                "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGIwMDA5MmY0LWY5ZTgtNGY5YS04NzczLWNhNjc0ZGIyZDBjYgBGAAAAAADm35sgHbzESapJ8%2BBjBlhEBwDAYtphe7dsRbDrOT%2FHAHoKAAAAAAEpAADAYtphe7dsRbDrOT%2FHAHoKAAFwxQGaAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
                                "from": {
                                    "emailAddress": {
                                        "name": "Goncalo Torres",
                                        "address": "gtorres@contoso.com"
                                    }
                                },
                                "channelIdentity": {},
                                "etag": "1657782060227",
                                "chatId": "19:bdeff6bfed7f4b159cdf7fdd61aeacaa@thread.v2"
                            }
                        }
                    ],
                    "total": 1,
                    "moreResultsAvailable": false
                }
            ]
        }
    ]
}

Beispiel 2: Suchnachrichten mit den wichtigsten Ergebnissen

Anforderung

Im folgenden Beispiel wird die in Beispiel 1 gezeigte Suchabfrage verwendet und die Ergebnisse nach Relevanz sortiert.

POST https://graph.microsoft.com/v1.0/search/query
Content-Type: application/json

{
  "requests": [
    {
      "entityTypes": [
        "chatMessage"
      ],
      "query": {
        "queryString": "test"
      },
      "from": 0,
      "size": 15,
      "enableTopResults": true
    }
  ]
}

Antwort

HTTP/1.1 200 OK
Content-type: application/json

{
    "value": [
        {
            "searchTerms": [
                "test"
            ],
            "hitsContainers": [
                {
                    "hits": [
                        {
                            "hitId": "AAMkAGIwMDA5MmY0LWY5ZTgtNGY5YS04NzczLWNhNjc0ZGIyZDBjYgBGAAAAAADm35sgHbzESapJ8+BjBlhEBwDAYtphe7dsRbDrOT/HAHoKAAAAAAEpAADAYtphe7dsRbDrOT/HAHoKAAFwxQGaAAA=",
                            "rank": 1,
                            "summary": "...Test with the TDF account",
                            "resource": {
                                "@odata.type": "microsoft.graph.chatMessage",
                                "id": "1657782060227",
                                "createdDateTime": "2022-07-14T07:01:01Z",
                                "lastModifiedDateTime": "2022-07-14T07:01:03Z",
                                "subject": "",
                                "importance": "normal",
                                "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGIwMDA5MmY0LWY5ZTgtNGY5YS04NzczLWNhNjc0ZGIyZDBjYgBGAAAAAADm35sgHbzESapJ8%2BBjBlhEBwDAYtphe7dsRbDrOT%2FHAHoKAAAAAAEpAADAYtphe7dsRbDrOT%2FHAHoKAAFwxQGaAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
                                "from": {
                                    "emailAddress": {
                                        "name": "Goncalo Torres",
                                        "address": "gtorres@contoso.com"
                                    }
                                },
                                "channelIdentity": {},
                                "etag": "1657782060227",
                                "chatId": "19:bdeff6bfed7f4b159cdf7fdd61aeacaa@thread.v2"
                            }
                        }
                    ],
                    "total": 1,
                    "moreResultsAvailable": false
                }
            ]
        }
    ]
}

Beispiel 3: Durchsuchen einer Teams-Nachricht mit KQL

Unterstützte Bereichsbegriffe

Sie können die folgenden Bereichsbegriffe in Ihrer KQL-Abfrage (Keyword Query Language) verwenden.

Bereichsbedingungen Beschreibung Beispiel
von Suchen Sie nur nach Nachrichten, die von einer bereichsbezogenen Person gesendet wurden. from:bob
hasAttachment Suchen Sie nur nach Nachrichten, die Anlagen enthalten oder nicht. hasAttachment:true
IsRead Suchen Sie nur nach Nachrichten, die gelesen wurden oder nicht gelesen wurden. IsRead:true
IsMentioned Suchen Sie nur nach Nachrichten, die Sie erwähnt haben oder nicht. IsMentioned:true
Erwähnungen Suchen Sie nur nach Nachrichten, die jemanden erwähnt haben. Erwähnungen:497b7a2a9e1a48d780e82965d2fc3a81 (Dies ist die Benutzer-ID ohne "-")
sent Suchen Sie nur nach Nachrichten, die an den bereichsbezogenen Datumsbereich gesendet werden. gesendet > am 14.07.2022
in Suchen Sie nur nach Nachrichten, die an die bereichsbezogene Person gesendet werden, die teilweise für die 1-on-1-Nachricht unterstützt werden. to:bob

Anforderung

Das folgende Beispiel zeigt, wie Sie eine Nachricht mit Contoso durchsuchen, die Bob nach dem 14.07.2022 an Alice gesendet hat.

POST https://graph.microsoft.com/v1.0/search/query
Content-Type: application/json

{
  "requests": [
    {
      "entityTypes": [
        "chatMessage"
      ],
      "query": {
        "queryString": "contoso from:bob to:alice sent>2022-07-14"
      },
      "from": 0,
      "size": 15,
      "enableTopResults": true
    }
  ]
}

Antwort

HTTP/1.1 200 OK
Content-type: application/json

{
    "value": [
        {
            "searchTerms": [
                "test"
            ],
            "hitsContainers": [
                {
                    "hits": [
                        {
                            "hitId": "AAMkAGIwMDA5MmY0LWY5ZTgtNGY5YS04NzczLWNhNjc0ZGIyZDBjYgBGAAAAAADm35sgHbzESapJ8+BjBlhEBwDAYtphe7dsRbDrOT/HAHoKAAAAAAEpAADAYtphe7dsRbDrOT/HAHoKAAFwxQGaAAA=",
                            "rank": 1,
                            "summary": "...Contoso Test with the TDF account",
                            "resource": {
                                "@odata.type": "microsoft.graph.chatMessage",
                                "id": "1657782060227",
                                "createdDateTime": "2022-07-15T07:01:01Z",
                                "lastModifiedDateTime": "2022-07-15T07:01:03Z",
                                "subject": "",
                                "importance": "normal",
                                "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGIwMDA5MmY0LWY5ZTgtNGY5YS04NzczLWNhNjc0ZGIyZDBjYgBGAAAAAADm35sgHbzESapJ8%2BBjBlhEBwDAYtphe7dsRbDrOT%2FHAHoKAAAAAAEpAADAYtphe7dsRbDrOT%2FHAHoKAAFwxQGaAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
                                "from": {
                                    "emailAddress": {
                                        "name": "bob",
                                        "address": "bob@contoso.com"
                                    }
                                },
                                "channelIdentity": {},
                                "etag": "1657782060228",
                                "chatId": "19:bdeff6bee3df4b159bad3fdd61aeacaa@thread.v2"
                            }
                        }
                    ],
                    "total": 1,
                    "moreResultsAvailable": false
                }
            ]
        }
    ]
}

Bekannte Einschränkungen

  • Sie können nur auf die Teams-Nachricht des angemeldeten Benutzers oder auf die Nachricht zugreifen, in der der Benutzer enthalten ist.
  • Die Teams-API für die Suche gibt nicht alle in chatMessage definierten Eigenschaften zurück. Sie können die Teams-API verwenden, um weitere Details zu jeder einzelnen Nachricht abzurufen.
  • Bei Teams-Nachrichten enthält die Total-Eigenschaft des searchHitsContainer-Typs die Anzahl der Ergebnisse auf der Seite, nicht die Gesamtzahl der übereinstimmenden Ergebnisse.
  • Das Sortieren von Ergebnissen wird für Nachrichten nicht unterstützt.
  • Sie können diese API derzeit nicht mit anderen Entitätstypen verwenden.

Nächste Schritte