次の方法で共有


Microsoft Search API を使用して Teams メッセージを検索する

Microsoft Graph の Microsoft Search API を使用して、Teams メッセージ内の情報を検索し、関連性でランク付けされたメッセージを返し、専用の検索エクスペリエンスをレンダリングします。 この検索は、サインインしているユーザーの Teams メッセージ内のメッセージの本文と添付ファイルに適用されます。

注意

検索 API スキーマがベータ版で変更されました。 検索要求と応答の一部のプロパティの名前が変更または削除されました。 詳細については、「 スキーマ変更の非推奨の警告」を参照してください。 このトピックの例では、最新のスキーマを示します。

Teams メッセージ検索では、添付ファイルも検索されます。 メッセージ添付ファイル検索で サポートされているファイルの種類 は、SharePoint Online 検索のファイルと同じです。

例 1: Teams チャット メッセージをSearchする

要求

次の例では、チャット メッセージの任意の部分 (送信者名、メッセージ本文、または添付ファイル) の文字列 "test" を含む、サインインしているユーザーの Teams チャット ストレージ内の Teams チャット メッセージにクエリを実行します。 クエリは最初の 25 件の結果を返します。 検索結果は、 dateTime の降順で並べ替えます。

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

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

応答

検索基準に一致する 1 つのメッセージを含む応答の例を次に示します。

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
                }
            ]
        }
    ]
}

例 2: 上位の結果メッセージをSearchする

要求

次の例では、例 1 に示す検索クエリを使用し、結果を関連性で並べ替えます。

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
    }
  ]
}

応答

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
                }
            ]
        }
    ]
}

例 3: KQL を使用して Teams メッセージをSearchする

サポートされるスコープの用語

キーワード クエリ言語 (KQL) クエリでは、次のスコープ用語を使用できます。

スコープの用語 説明
from Searchスコープ付きユーザーによって送信されたメッセージに対してのみです。 from:bob
hasAttachment Search添付ファイルが含まれている、または含まれていないメッセージに対してのみです。 hasAttachment:true
IsRead Searchは、読み取られたメッセージまたは読み取りされなかったメッセージに対してのみです。 IsRead:true
IsMentioned Searchは、メンションしたメッセージまたはメンションしなかったメッセージに対してのみ実行されます。 IsMentioned:true
mentions Search誰かに言及したメッセージに対してのみです。 mentions:497b7a2a9e1a48d780e82965d2fc3a81 (これは '-' のないユーザー ID)
sent Searchスコープの日付範囲に送信されたメッセージに対してのみです。 sent > 2022-07-14
Search、スコープ付きユーザーに送信されたメッセージに対してのみ、一対一メッセージで部分的にサポートされます。 to:bob

要求

次の例は、Bob が 2022-07-14 以降に Alice に送信した Contoso を含むメッセージを検索する方法を示しています。

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
    }
  ]
}

応答

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
                }
            ]
        }
    ]
}

既知の制限

  • サインインしているユーザーの Teams メッセージまたはユーザーが含まれているメッセージにのみアクセスできます。
  • 検索 Teams API は、 chatMessage で定義されているすべてのプロパティを返すわけではありません。 Teams API を使用して、1 つのメッセージに関する詳細を取得できます。
  • Teams メッセージの場合、searchHitsContainer 型の total プロパティには、一致する結果の合計数ではなく、ページ上の結果の数が含まれます。
  • メッセージの並べ替え結果はサポートされていません。
  • 現時点では、この API を他のエンティティ型と共に使用することはできません。

JSON 表記

chatMessage 検索で現在使用できるすべての取得可能なプロパティの JSON 表現を次 に示 します。

{
  "channelIdentity": {"@odata.type": "microsoft.graph.channelIdentity"},
  "chatId": "string",
  "createdDateTime": "string (timestamp)",
  "etag": "string",
  "from": {"@odata.type": "microsoft.graph.chatMessageFromIdentitySet"},
  "id": "string (identifier)",
  "importance": "string",
  "lastModifiedDateTime": "string (timestamp)",
  "subject": "string",
  "webUrl": "string"
}

次の手順