Поиск сообщений Teams с помощью API microsoft Поиск

Используйте API Microsoft Поиск в Microsoft Graph для поиска сведений в сообщениях Teams, возврата сообщений, ранжированных по релевантности и отображения выделенного интерфейса поиска. Поиск применяется к тексту и вложениям сообщений в сообщениях Teams пользователя, выполнившего вход.

Предостережение

Схема API поиска изменилась в бета-версии. Некоторые свойства в поисковом запросе и ответе были переименованы или удалены. Дополнительные сведения см. в разделе Предупреждение об изменении схемы об устаревании. В примерах в этом разделе показана актуальная схема.

Поиск сообщений Teams также ищет вложения. Поддерживаемые типы файлов для поиска вложений сообщений совпадают с типами файлов для поиска SharePoint Online.

Примеры

Пример 1. Сообщение чата Поиск Teams

Запрос

В следующем примере сообщения чата Teams запрашивается в хранилище чатов Teams пользователя, вошедшего в систему, которое содержит строку "test" в любой части сообщения чата (имя отправителя, текст сообщения или любые вложения). Запрос возвращает первые 25 результатов. Результаты поиска упорядочены по убыванию dateTime.

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

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

Отклик

Ниже приведен пример ответа, который содержит одно сообщение, соответствующее условию поиска.

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. Поиск сообщения о лучших результатах

Запрос

В следующем примере используется поисковый запрос, показанный в примере 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. Поиск сообщение Teams с помощью KQL

Поддерживаемые термины область

В запросе языка запросов ключевых слов (KQL) можно использовать следующие область термины.

Термины области Описание Пример
from Поиск только для сообщений, отправляемых пользователем с областью действия. from:bob
hasAttachment Поиск только для сообщений, содержащих или не содержащих вложения. hasAttachment:true
IsRead Поиск только для сообщений, которые были или не были прочитаны. IsRead:true
Is Упоминать Поиск только для сообщений, которые упоминание вас или не упоминание. Is Упоминать:true
mentions Поиск только для сообщений, в которых кто-то упоминался. упоминания:497b7a2a9e1a48d780e82965d2fc3a81 (это идентификатор пользователя без "-")
sent Поиск только для сообщений, отправляемых в диапазон дат с заданной областью. отправлено > 14.07.2022
на Поиск только для сообщений, отправленных пользователю с заданной областью, частично поддерживается для сообщения "один на один". to:bob

Запрос

В следующем примере показано, как выполнить поиск в сообщении, содержащем contoso, которое Боб отправил Алисе после 14.07.2022.

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 пользователя, выполнившего вход, или к сообщению, в которое включен пользователь.
  • API Teams для поиска не возвращает все свойства, определенные в chatMessage. Вы можете использовать API Teams для получения дополнительных сведений о любом отдельном сообщении.
  • Для сообщений Teams свойство total типа searchHitsContainer содержит количество результатов на странице, а не общее число совпадающих результатов.
  • Результаты сортировки сообщений не поддерживаются.
  • В настоящее время этот API нельзя использовать с другими типами сущностей.

Представление JSON

Ниже приведено представление JSON всех извлекаемых свойств, доступных в настоящее время для поиска chatMessage .

{
  "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"
}

Дальнейшие действия