Compartir a través de


Uso de la API de Microsoft Búsqueda para buscar mensajes de Teams

Use microsoft Búsqueda API en Microsoft Graph para buscar información en los mensajes de Teams, devolver mensajes clasificados por relevancia y representar una experiencia de búsqueda dedicada. La búsqueda se aplica al cuerpo y los datos adjuntos de los mensajes en los mensajes de Teams del usuario que ha iniciado sesión.

Precaución

El esquema de la API de búsqueda ha cambiado en la versión beta. Algunas propiedades de una solicitud de búsqueda y una respuesta se han cambiado de nombre o se han quitado. Para obtener más información, consulte Advertencia de desuso del cambio de esquema. En los ejemplos de este tema se muestra el esquema actualizado.

La búsqueda de mensajes de Teams también busca datos adjuntos. Los tipos de archivo admitidos para la búsqueda de datos adjuntos de mensajes son los mismos que para la búsqueda de SharePoint Online.

Ejemplos

Ejemplo 1: Búsqueda mensaje de chat de Teams

Solicitud

En el ejemplo siguiente se consultan los mensajes de chat de Teams en el almacenamiento de chat de Teams del usuario que ha iniciado sesión que contiene la cadena "test" en cualquier parte del mensaje de chat (el nombre del remitente, el cuerpo del mensaje o los datos adjuntos). La consulta devuelve los primeros 25 resultados. Los resultados de la búsqueda se ordenan 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
    }
  ]
}

Respuesta

A continuación se muestra un ejemplo de la respuesta, que contiene un mensaje que coincide con el criterio de búsqueda.

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

Ejemplo 2: Búsqueda mensajes de resultados principales

Solicitud

En el ejemplo siguiente se usa la consulta de búsqueda que se muestra en el ejemplo 1 y se ordenan los resultados por relevancia.

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

Respuesta

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

Ejemplo 3: Búsqueda mensaje de Teams con KQL

Términos de ámbito admitidos

Puede usar los siguientes términos de ámbito en la consulta del Lenguaje de consulta de palabras clave (KQL ).

Términos de ámbito Descripción Ejemplo
from Búsqueda solo para los mensajes enviados por una persona con ámbito. from:bob
hasAttachment Búsqueda solo para los mensajes que contienen o no contienen datos adjuntos. hasAttachment:true
IsRead Búsqueda solo para los mensajes que fueron o no fueron leídos. IsRead:true
IsMentioned Búsqueda solo para los mensajes que lo hicieron o no lo mencionaron. IsMentioned:true
mentions Búsqueda solo para los mensajes que mencionan a alguien. mentions:497b7a2a9e1a48d780e82965d2fc3a81 (Este es el identificador de usuario sin '-')
sent Búsqueda solo para los mensajes enviados al intervalo de fechas con ámbito. enviado > 2022-07-14
a Búsqueda solo para los mensajes enviados a la persona con ámbito, parcialmente compatibles con el mensaje uno a uno. to:bob

Solicitud

En el ejemplo siguiente se muestra cómo buscar un mensaje que contenga Contoso que Bob envió a Alice después del 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
    }
  ]
}

Respuesta

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

Limitaciones conocidas

  • Solo puede acceder al mensaje de Teams del usuario que ha iniciado sesión o al mensaje en el que está incluido el usuario.
  • La API de Teams de búsqueda no devuelve todas las propiedades definidas en chatMessage. Puede usar la API de Teams para recuperar más detalles sobre cualquier mensaje único.
  • En el caso de los mensajes de Teams, la propiedad total del tipo searchHitsContainer contiene el número de resultados de la página, no el número total de resultados coincidentes.
  • Los resultados de ordenación no se admiten para los mensajes.
  • No puede usar esta API con otros tipos de entidad en este momento.

Representación JSON

Esta es una representación JSON de todas las propiedades recuperables disponibles actualmente para la búsqueda 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"
}

Pasos siguientes