Compartilhar via


Utilizar a API de Pesquisa da Microsoft para procurar mensagens do Teams

Utilize a API de Pesquisa da Microsoft no Microsoft Graph para procurar informações em mensagens do Teams, devolver mensagens classificadas por relevância e compor uma experiência de pesquisa dedicada. A pesquisa aplica-se ao corpo e anexos de mensagens nas mensagens do Teams do utilizador com sessão iniciada.

Cuidado

O esquema da API de pesquisa foi alterado na versão beta. Algumas propriedades num pedido de pesquisa e resposta foram renomeadas ou removidas. Para obter detalhes, veja Aviso de descontinuação da alteração de esquema. Os exemplos neste tópico mostram o esquema atualizado.

A pesquisa de mensagens do Teams também procura anexos. Os tipos de ficheiro suportados para a pesquisa de anexos de mensagens são os mesmos da pesquisa do SharePoint Online.

Exemplos

Exemplo 1: Mensagem de chat do Teams de Pesquisa

Solicitação

O exemplo seguinte consulta as mensagens de chat do Teams no armazenamento de chat do Teams do utilizador com sessão iniciada que contém a cadeia "teste" em qualquer parte da mensagem de chat (o nome do remetente, o corpo da mensagem ou quaisquer anexos). A consulta devolve os primeiros 25 resultados. Os resultados da pesquisa são ordenados por dateTime descendente.

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

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

Resposta

Segue-se um exemplo da resposta, que contém uma mensagem que corresponde ao critério de pesquisa.

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

Exemplo 2: procurar mensagens de resultados principais

Solicitação

O exemplo seguinte utiliza a consulta de pesquisa apresentada no Exemplo 1 e ordena os resultados por relevância.

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

Resposta

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

Exemplo 3: Procurar mensagem do Teams com KQL

Termos de âmbito suportados

Pode utilizar os seguintes termos de âmbito na consulta KQL (Keyword Query Language).

Termos de Âmbito Descrição Exemplo
from Pesquise apenas as mensagens enviadas por uma pessoa no âmbito. de:bob
hasAttachment Procure apenas mensagens que contenham ou não contenham anexos. hasAttachment:true
IsRead Procure apenas as mensagens que foram ou não lidas. IsRead:true
Já foi mencionado Procure apenas mensagens que o fizeram ou não menção si. IsMentioned:true
menções Procure apenas mensagens que mencionavam alguém. menções:497b7a2a9e1a48d780e82965d2fc3a81 (Este é o ID de utilizador sem '-')
enviado Procure apenas as mensagens enviadas para o intervalo de datas no âmbito. enviado > 2022-07-14
para Procure apenas as mensagens enviadas para a pessoa no âmbito, parcialmente suportadas para a mensagem um-para-um. para:bob

Solicitação

O exemplo seguinte mostra como procurar uma mensagem que contém a Contoso que o João enviou para Alice após 2022-07-14.

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

Resposta

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

Limitações conhecidas

  • Só pode aceder à mensagem do Teams do utilizador com sessão iniciada ou à mensagem na qual o utilizador está incluído.
  • A API do Teams de pesquisa não devolve todas as propriedades definidas no chatMessage. Pode utilizar a API do Teams para obter mais detalhes sobre qualquer mensagem.
  • Para mensagens do Teams, a propriedade total do tipo searchHitsContainer contém o número de resultados na página e não o número total de resultados correspondentes.
  • A ordenação de resultados não é suportada para mensagens.
  • De momento, não pode utilizar esta API com outros tipos de entidade.

Representação JSON

Eis uma representação JSON de todas as propriedades recuperáveis atualmente disponíveis para a pesquisa 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"
}

Próximas etapas