Exportar contenido con las API de exportación de Microsoft Teams
Las API de exportación de Teams le permiten exportar mensajes individuales, chats grupales, chats de reuniones y mensajes de canal de Microsoft Teams. Si su organización necesita exportar mensajes de Microsoft Teams, podrá extraerlos con las API de exportación de Teams. Mensaje de chat representa un mensaje de chat individual dentro de un canal o chat. El mensaje de chat puede ser un mensaje de chat raíz o parte de una conversación de respuesta definida por la propiedad replyToId del mensaje de chat.
Estos son algunos ejemplos sobre cómo puede usar estas API de exportación:
Ejemplo 1: Si habilitó Microsoft Teams en su organización y desea exportar todos los mensajes de Microsoft Teams a la fecha mediante programación pasando el intervalo de fechas para un usuario o equipo determinado.
Ejemplo 2: Si desea exportar todos los mensajes de usuario o equipo a diario mediante programación proporcionando un intervalo de fechas. Las API de exportación pueden recuperar todos los mensajes creados o actualizados durante el intervalo de fechas especificado.
Ejemplo 3: Si desea exportar mediante programación los vínculos a las grabaciones de reuniones de Teams para un organizador de reunión determinado y, a continuación, descargar las grabaciones reales.
Ejemplo 4: Si desea exportar mediante programación los vínculos a las transcripciones de reuniones de Teams para un organizador de reunión determinado y, a continuación, descargar las transcripciones reales.
¿Qué es compatible con las API de exportación de Teams?
Mensaje de exportación masiva de Teams: Las API de exportación de Teams admiten hasta 200 RPS por aplicación por inquilino y 600 RPS para una aplicación, con estos límites debería poder exportar en masa mensajes de Teams.
Contexto de la aplicación: para llamar a Microsoft Graph, la aplicación debe adquirir un token de acceso de la Plataforma de identidad de Microsoft. El token de acceso contiene información sobre la aplicación y los permisos que tiene para los recursos y API disponibles a través de Microsoft Graph. Para obtener un token de acceso, la aplicación debe estar registrada con el Plataforma de identidad de Microsoft y estar autorizada por un usuario o un administrador para obtener acceso a los recursos de Microsoft Graph que necesita.
Si ya está familiarizado con la integración de una aplicación con los Plataforma de identidad de Microsoft para obtener tokens, consulte la sección Pasos siguientes para obtener información y muestras específicas de Microsoft Graph.
Entorno híbrido: Las API de exportación admiten los mensajes enviados por usuarios aprovisionados en un entorno híbrido (exchange local y teams). Los mensajes enviados por los usuarios configurados para un entorno híbrido son accesibles mediante las API de exportación.
Mensajes eliminados por el usuario: Se puede acceder a los mensajes eliminados por los usuarios del cliente de Teams mediante las API de exportación hasta 21 días a partir del momento de la eliminación.
Datos adjuntos de mensajes: Las API de exportación incluyen los vínculos a los datos adjuntos que se envían como parte de los mensajes. Con Exportar API puede recuperar los archivos adjuntos en los mensajes.
Reacciones: Las API de exportación admiten reacciones iniciadas por un usuario en un mensaje de Teams. Las reacciones admitidas actualmente son de corazón, enojado, como, triste, sorprendido y risas. Además de Reacciones, Export API también admite el historial de edición de reacciones, que incluye cambios y actualizaciones realizadas a una reacción en un mensaje.
Mensajes de canal compartido: Las API de exportación permiten capturar mensajes de un canal compartido.
Equipos eliminados: La API de exportación permite capturar mensajes de equipos eliminados y canales estándar, privados y compartidos eliminados.
Usuarios eliminados: la API de exportación permite capturar mensajes de usuarios eliminados hasta 30 días desde el momento en que se eliminó el usuario. Para buscar la lista de usuarios eliminados, vea Elementos eliminados.
Propiedades del mensaje de chat: Consulte la lista completa de propiedades que admiten las API de exportación de Teams.
Mensajes de control: La API de exportación permite capturar mensajes de control, además de los mensajes generados por el usuario. Los mensajes de control son mensajes generados por el sistema que aparecen en el cliente de Teams y contienen información importante, como "El usuario A agregó el usuario B al chat y compartió todo el historial de chats" junto con la marca de tiempo. Los mensajes del sistema permiten que el autor de la llamada tenga información sobre los eventos que ocurrieron en un equipo, un canal o un chat. Consulte la lista de mensajes de control que la API de exportación admite actualmente.
Nota
Los mensajes de control relacionados con la reunión no son compatibles actualmente con la API de exportación.
Historial editado: Siempre que su inquilino esté configurado con la directiva de retención de Teams, la API de exportación permite capturar el historial editado de mensajes para cada & chat de grupo y publicaciones y comentarios en canales públicos & compartidos.
Para obtener más información sobre la directiva de retención de Teams, consulte Administrar directivas de retención para Microsoft Teams para obtener más información.
¿Qué no es compatible con las API de exportación de Teams?
- Interacciones de Copilot de Teams & Microsoft 365 Chat: La API de exportación no admite los mensajes de interacción del usuario a Copilot y los mensajes de chat de Microsoft 365 enviados por el bot.
Cómo acceder a las API de exportación de Teams
El ejemplo 1 es una consulta sencilla para recuperar todos los mensajes de un usuario o equipo sin filtros:
GET https://graph.microsoft.com/v1.0/users/{id}/chats/getAllMessages
GET https://graph.microsoft.com/v1.0/teams/{id}/channels/getAllMessages
El ejemplo 2 es una consulta de ejemplo para recuperar todos los mensajes de un usuario o equipo especificando filtros de fecha y hora y los 50 mensajes principales:
GET https://graph.microsoft.com/v1.0/users/{id}/chats/getAllMessages?$top=50&$filter=lastModifiedDateTime gt 2020-06-04T18:03:11.591Z and lastModifiedDateTime lt 2020-06-05T21:00:09.413Z
GET https://graph.microsoft.com/v1.0/teams/{id}/channels/getAllMessages?$top=50&$filter=lastModifiedDateTime gt 2020-06-04T18:03:11.591Z and lastModifiedDateTime lt 2020-06-05T21:00:09.413Z
El ejemplo 3 es una consulta de ejemplo para recuperar los vínculos a todas las grabaciones de reuniones de Teams disponibles de un usuario. El filtrado de intervalos de fechas es compatible. Top n filter es compatible de forma similar a los mensajes de chat:
GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllRecordings?$filter=MeetingOrganizer/User/Id eq ‘{id}’
GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllRecordings(meetingOrganizerUserId='{userId}',startDateTime={startDateTime},endDateTime={endDateTime})
El ejemplo 4 es una consulta de ejemplo para recuperar los vínculos a todas las transcripciones de reuniones de Teams disponibles de un usuario. El filtrado de intervalos de fechas es compatible. Top n filter es compatible de forma similar a los mensajes de chat:
GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllTranscripts?$filter=MeetingOrganizer/User/Id eq ‘{id}’
GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllTranscripts(meetingOrganizerUserId='{userId}',startDateTime={startDateTime},endDateTime={endDateTime})
Nota
La API devuelve la respuesta con el vínculo de página siguiente en caso de varios resultados. Para obtener el siguiente conjunto de resultados, simplemente llame a GET en la dirección URL desde @odata.nextlink. Si @odata.nextlink no está presente o es nulo, se recuperan todos los mensajes.
Nota
No se garantiza que el orden de los mensajes de la respuesta se ordene por fecha y hora, como createdDateTime ni lastModifiedDateTime.
Requisitos previos para acceder a las API de exportación de Teams
Las API de Microsoft Teams en Microsoft Graph que acceden a datos confidenciales se consideran API protegidas. Puede llamar a estas API siempre que se cumplan los requisitos para acceder sin un usuario .
Los permisos de aplicación los usan las aplicaciones que se ejecutan sin un usuario con sesión iniciada presente; permisos de aplicación solo puede ser aprobado por un administrador. Son necesarios los siguientes permisos:
Chat.Read.All: permite el acceso a todos los mensajes de chat individuales, grupales y de reunión
ChannelMessage.Read.All: permite el acceso a todos los mensajes del canal
User.Read.All: permite el acceso a la lista de usuarios de un inquilino.
OnlineMeetingTranscript.Read.All: permite el acceso a las transcripciones de todas las reuniones de Teams programadas por 1:n
OnlineMeetingRecording.Read.All: permite el acceso a grabaciones para todas las reuniones de Teams programadas por 1:n
Requisitos de licencia para las API de exportación de Teams
La API de exportación admite seguridad y cumplimiento (S+C) y escenarios de uso general a través de un parámetro de consulta de modelo. Los escenarios de S+C (modelo A) incluyen capacidad de semillas y requieren una suscripción al plan E5 y los escenarios de uso general (modelo B) están disponibles para todas las suscripciones y solo son de consumo. Para obtener más información sobre la capacidad de semillas y las tarifas de consumo, consulte Requisitos de licencias y pago para las API de Microsoft Graph Teams.
En el caso de las API beta, actualmente no hay ninguna licencia ni obligatoriedad de uso del modelo A ni del modelo B. Sin embargo, esto está sujeto a cambios en el futuro.
Escenarios de S+C/Modelo A
Restringido a las aplicaciones que realizan funciones de seguridad o cumplimiento, los usuarios deben tener licencias E5 específicas para usar esta funcionalidad y recibir capacidad de semillas. La capacidad de semillas es por usuario y se calcula por mes y se agrega en el nivel de inquilino. Para el uso que supere la capacidad de semillas, se factura a los propietarios de aplicaciones el consumo de API. El modelo A solo puede tener acceso a los mensajes de los usuarios con una licencia E5 asignada.
Nombre del partner | Solución de partner |
---|---|
Archivado y cumplimiento de Microsoft Teams | |
Captura de contenido de Proofpoint para Microsoft Teams |
Escenarios generales de uso/modelo B
Disponible para todos los escenarios relacionados que no sean S+C, no hay requisitos de licencia ni capacidad de semillas. Cuando los contadores de consumo estén disponibles, los propietarios de aplicaciones se cobrarán por todas las llamadas mensuales a la API.
Los siguientes partners están certificados. Su empresa puede elegir trabajar con cualquier combinación de estos partners dentro de su empresa.
Nombre del partner | Solución de partner |
---|---|
Copia de seguridad y recuperación de Microsoft Teams | |
Copia de seguridad y recuperación de Microsoft Teams |
Pasos siguientes
Si es un proveedor que busca unirse al programa de certificación, rellene este formulario como el siguiente paso. Si necesita proporcionar más contexto y detalles, envíe un correo electrónico al equipo del ecosistema de MS Teams (TeamsCategoryPartner@microsoft.com).
Modo de evaluación (predeterminado)
Ninguna declaración de modelo permite el acceso a las API con uso limitado por cada aplicación solicitante con fines de evaluación.
Representación JSON
El ejemplo siguiente es una representación JSON del recurso de chat:
Espacio de nombres: microsoft.graph
{ "id": "string (identifier)", "replyToId": "string (identifier)", "from": {"@odata.type": "microsoft.graph.identitySet"}, "etag": "string", "messageType": "string", "createdDateTime": "string (timestamp)", "lastModifiedDateTime": "string (timestamp)", "deletedDateTime": "string (timestamp)", "subject": "string", "from": { "application": null, "device": null, "conversation": null, "user": { "id": \[{"@odata.type": "microsoft.graph.user"}\], "displayName": "User Name", "userIdentityType": "aadUser" } }, "body": {"@odata.type": "microsoft.graph.itemBody"}, "summary": "string", "chatId": \[{"@odata.type": "microsoft.graph.chat"}\] "attachments": \[{"@odata.type": "microsoft.graph.chatMessageAttachment"}\], "mentions": \[{"@odata.type": "microsoft.graph.chatMessageMention"}\], "importance": "string", "locale": "string", }
Nota
Para obtener más información sobre el recurso chatMessage, vea el artículo tipo de recurso chatMessage .
El ejemplo siguiente es una representación JSON del recurso de grabación:
Espacio de nombres: microsoft.graph
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(meetingRecording)", "@odata.count": 2, "@odata.nextLink": "https://graph.microsoft.com/v1.0/users('{userId}')/onlineMeetings/getAllRecordings?$filter=MeetingOrganizer%2fUser%2fId+eq+%27{userId}%27&$skiptoken=MSMjMCMjTkNaYVNIQjVVbXRPYWxaV1dscGFWVGg1V2pOb1IxUXpRWGxrUm1oTFVrWmtTV1ZyYkhwUlZVWm9UMWR3VEdWWGRFTlJWVVpDVVZFOVBRPT0%3d", "value": [ { "@odata.type": "#microsoft.graph.meetingRecording", "id": "6263af16-b660-41d0-a17b-83fbd15a39c7", "meetingId": "MSoxMjczYTAxNi0yMDFkRLTmOTUtODA5My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1BBXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy", "meetingOrganizerId": "{userId}", "createdDateTime": "2022-08-03T20:43:36.2573447Z", "recordingContentUrl": "https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/MSoxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1ERXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy/recordings/MSMjMCMjMGFjNmUwZTgtYmZjYy00NDQxLTk2MGYtZjllNjVhNjI0NzBh/content" }, { "@odata.type": "#microsoft.graph.meetingRecording", "id": "{recordingId}", "meetingId": "{meetingId}", "meetingOrganizerId": "{userId}", "createdDateTime": "2022-08-03T20:44:11.2635254Z", "recordingContentUrl": " https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/{meetingId}/recordings/{recordingId}/content" }, ] }
Donde:
<id>
representa una sola grabación.<meetingId>
representa un identificador de llamada o reunión.<meetingOrganizer/user/id>
representa al organizador de la reunión.<createdDateTime>
indica la hora de inicio de la reunión.<recordingContentUrl>
indica la dirección URL del contenido de la grabación.Las grabaciones están en formato MP4.
El tamaño medio del contenido de grabación en sí es de aproximadamente 350 MB en disco, en función de los promedios que vemos para las reuniones que están en un intervalo de 30 minutos – 60 minutos.
No se garantiza que los resultados se ordene por
createdDateTime
. Sin embargo, en el caso de que haya varias grabaciones para una sola reunión, compartirán el mismomeetingId
valor. Además, las entradas de las varias grabaciones se secuencian correctamente para la reunión en cuestión.Se garantiza que los resultados solo estén presentes después de que las grabaciones de la reunión asociadas estén disponibles. En otras palabras, el autor de la llamada no necesita ningún sondeo adicional para disponibilidad.
Paginar a través de los resultados será compatible según los patrones actuales en la API de exportación de Teams. La paginación se admitirá mediante la presencia de
@oData.nextLink
propiedad en la respuesta. La propiedad nextLink contiene unskipToken
valor, como se indica a continuación. Si noskipToken
está presente, significa que no hay ningún resultado más que recuperar en el lote actual:Solicitud Respuesta @nextLink Comentarios /getAllRecordings
Recuento: 10 ?skipToken=ABC
Solicitud inicial sin skipToken
/getAllRecordings?skipToken=ABC
Recuento: 10 ?skipToken=DEF
SkipToken
devuelto, solicitud para obtener la siguiente página/getAllRecordings?skipToken=DEF
Recuento: 7 No skipToken
, no hay más datos disponibles$top
también se admitirá según los patrones actuales en la API de exportación de Teams.DeltaToken
para habilitar escenarios de seguimiento y sincronización de cambios es compatible. Para obtener información general y ejemplos de consultas diferenciales existentes, vea Usar una consulta diferencial para realizar un seguimiento de los cambios en los datos de Microsoft Graph.La siguiente API se puede utilizar para obtener el contenido de grabación real de la seleccionada
userId
yrecordingId
meetingId
que se obtuvo en la respuesta de la API GETgetAllRecordings
. Devuelve el contenido de la grabación:
GET users('{userId}')/onlineMeetings('{meetingId}')/recordings('{recordingId}')/content
El ejemplo siguiente es una representación JSON del recurso de transcripción:
Espacio de nombres: microsoft.graph
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(callTranscript)", "@odata.count": 2, "@odata.nextLink": "https://graph.microsoft.com/v1.0/users('{userId}')/onlineMeetings/getAllTranscripts?$filter=MeetingOrganizer%2fUser%2fId+eq+%27{userId}%27&$skiptoken=MSMjMCMjTkNaYVNIQjVVbXRPYWxaV1dscGFWVGg1V2pOb1IxUXpRWGxrUm1oTFVrWmtTV1ZyYkhwUlZVWm9UMWR3VEdWWGRFTlJWVVpDVVZFOVBRPT0%3d", "value": [ { "@odata.type": "#microsoft.graph.callTranscript", "id": "MSMjMCMjMGFjNmUwZTgtYmZjYy00NDQxLTk2MGYtZjllNjVhNjI0NzBh", "meetingId": "MSoxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1ERXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy", "meetingOrganizerId": "{userId}", "transcriptContentUrl": "https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/MSoxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1ERXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy/transcripts/MSMjMCMjMGFjNmUwZTgtYmZjYy00NDQxLTk2MGYtZjllNjVhNjI0NzBh/content", "createdDateTime": "2022-08-03T20:43:36.6248355Z" }, { "@odata.type": "#microsoft.graph.callTranscript", "id": "{transcriptId}", "meetingId": "{meetingId}", "meetingOrganizerId": "{userId}", "transcriptContentUrl": "https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/{meetingId}/transcripts/{transcriptId}/content", }, ] }
Donde:
<id>
representa una sola grabación.<meetingId>
representa un identificador de llamada o reunión.<meetingOrganizer/user/id>
representa al organizador de la reunión.<createdDateTime>
indica la hora de inicio de la reunión.<transcriptContentUrl>
indica la dirección URL del contenido de la transcripción.El contenido de la transcripción, de forma predeterminada, estará en formato VTT. Sin embargo, también se puede obtener un valor de encabezado Accept de
application/vnd.openxmlformats-officedocument.wordprocessingml.document
, formato DOCX.El tamaño medio del contenido de la transcripción en formato JSON/VTT es de aproximadamente 300 KB, según los promedios que vemos para las reuniones que están en un intervalo de 30 minutos a 60 minutos.
No se garantiza que los resultados se ordene por
createdDateTime
. Sin embargo, en el caso de que haya varias grabaciones para una sola reunión, compartirán el mismomeetingId
valor. Además, las entradas de las varias grabaciones se secuenciarán correctamente para la reunión en cuestión.Se garantiza que los resultados solo estén presentes después de que las grabaciones de la reunión asociadas estén disponibles. En otras palabras, el autor de la llamada no necesita ningún sondeo adicional para disponibilidad.
Paginar a través de los resultados será compatible según los patrones actuales en la API de exportación de Teams. La paginación se admitirá mediante la presencia de
@oData.nextLink
propiedad en la respuesta. LanextLink
propiedad contendrá unskipToken
valor, como se indica a continuación. Si noskipToken
está presente, significa que no hay ningún resultado más que recuperar en el lote actual:Solicitud Respuesta @nextLink Comentarios /getAllTranscripts
Recuento: 10 ?skipToken=ABC
Solicitud inicial sin skipToken
/getAllTranscripts?skipToken=ABC
Recuento: 10 ?skipToken=DEF
SkipToken
devuelto, solicitud para obtener la siguiente página/getAllTranscripts?skipToken=DEF
Recuento: 7 No skipToken
, no hay más datos disponibles$top
también se admitirá según los patrones actuales en la API de exportación de Teams.DeltaToken
para habilitar escenarios de seguimiento y sincronización de cambios es compatible. Para obtener información general y ejemplos de consultas diferenciales existentes, vea Usar una consulta diferencial para realizar un seguimiento de los cambios en los datos de Microsoft GraphLa API siguiente se puede usar para obtener el contenido de la transcripción real del userId, meetingId y transcriptId seleccionados que se obtuvo en la respuesta de la API getAllTranscripts. Devuelve el contenido de la grabación.
GET users('{userId}')/onlineMeetings('{meetingId}')/transcripts('{transcriptId}')/content
Para obtener más información, vea Usar las API de Graph para capturar transcripción.
Exportar filtros de API
Export API hosted on the Teams Graph Service gets all user messages from the Substrate user mailbox using users/{userId}/chats/getAllMessages
. Export API retrieves both sent and received messages for a user which leads to export of duplicate messages when calling the API for all users in the chat thread.
La API de exportación tiene parámetros de filtro que ayudan a optimizar los mensajes devueltos para una conversación de chat. La API GET admite nuevos parámetros de filtro que permiten extraer mensajes basados en los mensajes de eventos de usuario, bot, aplicación y sistema enviados. El parámetro filter admite los mensajes enviados mediante los siguientes elementos:
usuarios (varios id. de usuario admitidos en la misma solicitud)
aplicaciones (bots, conectores, etc.)
usuarios anónimos
usuarios federados (usuarios de acceso externo)
mensajes de eventos del sistema (mensajes de control)
Estos parámetros forman parte de la solicitud $filter
. Si ninguno de estos parámetros está presente en la solicitud, se devolverán los mensajes de todos los usuarios presentes en los chats de usuario especificados.
Los escenarios de filtrado que son compatibles son los siguientes:
$filter=from/application/applicationIdentityType eq '<appType>' (bots/tenantBots/connectors, etc.)
$filter=from/user/id eq '<oid>' (any number of id filters)
$filter=from/user/userIdentityType eq 'anonymousGuest'
$filter=from/user/userIdentityType eq 'federatedUser' (guest/external)
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/id eq '<oid>' (sent by app or userid)
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/userIdentityType eq 'anonymousGuest' (sent by app or anonymous)
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/userIdentityType eq 'federatedUser' (sent by app or federated)
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/userIdentityType eq 'anonymousGuest' or from/user/userIdentityType eq 'federatedUser' (sent by app, anonymous or federated)
$filter=from/user/id eq '<oid>' or from/user/userIdentityType eq 'anonymousGuest' (sent by any number of userid or anonymous)
$filter=from/user/id eq '<oid>' or from/user/userIdentityType eq 'federatedUser' (sent by any number of userid or federated)
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/id eq '<oid>' or from/user/userIdentityType eq 'anonymousGuest' or from/user/userIdentityType eq 'federatedUser' (sent by any number of userid or federated or anonymous)
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/id eq '<oid>' or from/user/userIdentityType eq 'anonymousGuest' or from/user/userIdentityType eq 'federatedUser' (sent by any number of userid or federated or anonymous) or messsageType eq 'systemEventMessage'
(<any of the previous filters>) and (lastModifiedDateTime+gt+<date>+and+lastModifiedDateTime+lt+<date>)
La consulta devuelve los mensajes enviados por el usuario especificado si
from/user/id eq ‘{oid}’
está presente.La consulta devuelve los mensajes enviados por los usuarios federados que forman parte de los chats de usuario, si
from/user/userIdentityType eq ‘federatedUser’
están presentes.la consulta devuelve los mensajes enviados por el tipo de aplicación especificado si
from/application/applicationIdenitytyType eq '{appType}'
está presente.la consulta devuelve los mensajes enviados por el sistema si
messageType eq 'systemEventMessage'
está presente
Estos parámetros se pueden combinar entre ellos mediante los operadores OR, así como combinando con el lastModifiedDateTime
$filter
parámetro.