Экспорт контента с помощью API экспорта Microsoft Teams

API экспорта Teams позволяют экспортировать личные и групповые чаты, чаты собраний и сообщения каналов из Microsoft Teams. Если вашей организации необходимо экспортировать сообщения Microsoft Teams, вы можете извлечь их с помощью API экспорта Teams. Сообщение Chat представляет собой отдельное сообщение чата в канале или чате. Сообщение чата может быть корневым сообщением чата или частью цепочки ответов, которая определяется свойством replyToId в сообщении чата.

Вот несколько примеров использования этих API экспорта:

  • Пример 1. Если вы включили Microsoft Teams в своей организации и хотите экспортировать все сообщения Microsoft Teams на дату программным способом, передав диапазон дат для определенного пользователя или команды.

  • Пример 2. Если вы хотите ежедневно программно экспортировать все сообщения пользователей или команды, указав диапазон дат. API экспорта могут получать все сообщения, созданные или обновленные за указанный период времени.

  • Пример 3. Если вы хотите программно экспортировать ссылки на записи собраний Teams для определенного организатора собрания, а затем скачать фактические записи.

  • Пример 4. Если вы хотите программно экспортировать ссылки на расшифровки собраний Teams для определенного организатора собрания, а затем скачать фактические расшифровки.

Что поддерживается API экспорта Teams?

  • Массовый экспорт сообщения Teams:Обратитесь к Teams Export APIs регулирование ограничений. С учетом этих ограничений у вас должна быть возможность массового экспорта сообщений Teams.

  • Верхний предел для сообщения Teams: Максимальное значение фильтра TOP для API сообщений Teams рекомендуется установить на уровне 250 в качестве максимального предела, за пределами которого производительность будет ограничена.

    Примечание.

    Значение $top — это максимальная подсказка, а не гарантированный размер страницы. Из-за того, что сообщения извлекаются из нескольких базовых папок или почтовых ящиков Outlook, ответ может вернуть меньше элементов, чем было запрошено, и включать запрос на @odata.nextLink продолжение извлечения из других папок. Такое поведение является стандартным, это не ошибка приложения.

  • Контекст приложения: Чтобы вызвать Microsoft Graph, ваше приложение должно получить маркер доступа от платформы удостоверений Майкрософт. Маркер доступа содержит сведения о приложении и разрешениях, которые у него есть для ресурсов и API, доступных через Microsoft Graph. Чтобы получить маркер доступа, ваше приложение должно быть зарегистрировано на платформе удостоверений Майкрософт. Пользователь или администратор должны авторизовать его для доступа к нужным ресурсам Microsoft Graph. Если вы уже знакомы с интеграцией приложения с Платформой удостоверений Майкрософт для получения маркеров, см. раздел "Дальнейшие действия" для получения сведений и примеров, относящихся к Microsoft Graph.

  • Гибридная среда: API экспорта поддерживают сообщения, отправляемые пользователями, подготовленными к работе в гибридной среде (локальной среде Exchange и Teams). Все сообщения, отправленные пользователями, настроенными для гибридной среды, доступны с помощью API экспорта.

  • Удаленные сообщения пользователя: К сообщениям, удаленным пользователями из клиента Teams, можно получить доступ с помощью API экспорта в течение 21 дня с момента удаления.

  • Вложения сообщений: API экспорта включают сведения о вложениях для файлов, отправляемых в сообщениях. Вложения могут отображаться в тексте сообщения как метаданные, а в некоторых случаях — как ссылки (например, URL-адреса ASM). Для извлечения вложенных файлов следует использовать коллекцию сообщений attachments , так как URL-адреса, внедренные в текст, могут быть недоступны напрямую.

  • Реакции: API экспорта поддерживают реакции, инициированные пользователем в сообщении Teams. Поддерживаемые в настоящее время реакции: сердце, гнев, нравится, грусть, удивление и смех. Помимо реакций, API экспорта также поддерживает журнал изменений реакций, который включает изменения и обновления, внесенные в реакцию в сообщении.

    Примечание.

    Реакции, настроенные с помощью изменения цвета, в настоящее время не поддерживаются API экспорта.

  • Сообщения в общем канале: API экспорта поддерживают запись сообщений из общего канала.

  • Удаленные команды: API экспорта поддерживает запись сообщений из удаленных команд и удаленных стандартных, частных и общих каналов в течение максимум 30 дней со дня удаления. После 30 дней команды и каналы жестко удаляются, а сообщения невозможно восстановить.

  • Удаленные пользователи: API экспорта поддерживает запись сообщений для удаленных пользователей в течение 30 дней с момента удаления пользователя. Список удаленных пользователей см. в разделе "Удаленные".

  • Неактивные пользователи: API экспорта поддерживает захват сообщений для неактивных пользователей в течение 30 дней с момента, когда пользователь становится неактивным. Список неактивных почтовых ящиков см. в разделе "Неактивные почтовые ящики".

  • Свойства сообщения Chat: см. полный список свойств, поддерживаемых API экспорта Teams.

  • Управляющие сообщения: API экспорта поддерживает захват управляющих сообщений в дополнение к сообщениям, создаваемым пользователем. Управляющие сообщения — это системные сообщения, которые отображаются в клиенте Teams. Они содержат важную информацию, например "Пользователь А добавил пользователя Б в чат и поделился всей историей чата", а также метку времени. Системные сообщения позволяют звонящему получить представление о событиях, произошедших в команде, канале или чате. См. список управляющих сообщений , которые в настоящее время поддерживаются API экспорта.

    Подробнее об экспорте сообщений в чате и канале.

    Примечание.

    Управляющие сообщения, связанные с собранием, в настоящее время не поддерживаются API экспорта.

  • Отредактированная история:Если в вашем клиенте настроена политика хранения Teams, API экспорта поддерживает запись измененной истории сообщений для отдельных и групповых чатов, а также записей и комментариев в общедоступных и общих каналах.

    Дополнительные сведения о политике хранения Teams см. в статье Управление политиками хранения для Microsoft Teams .

    Подробнее об экспорте сообщений из истории изменений в чатах и каналах.

  • Стенограммы собрания: Получение всех расшифровок запланированных собраний по сети, организатором которых является указанный пользователь. В настоящее время этот API поддерживает только частные запланированные собрания.

    Узнайте больше об экспорте расшифровок собраний.

  • Записи собраний: Получите все записи из запланированных собраний по сети, организатором которых является указанный пользователь. В настоящее время этот API поддерживает только частные запланированные собрания.

    Подробнее об экспорте записей собраний.

  • Целевые сообщения: Сообщения, отправленные агентом или ботом пользователю, можно экспортировать даже после удаления из клиентов через 24 часа. Узнайте, как экспортировать целевые сообщения и удалять целевые сообщения

Как получить доступ к API экспорта Teams

  • Пример 1 — это простой запрос для получения всех сообщений пользователя или команды без каких-либо фильтров:

    GET https://graph.microsoft.com/v1.0/users/{id}/chats/getAllMessages
    
    GET https://graph.microsoft.com/v1.0/teams/{id}/channels/getAllMessages
    
  • Пример 2 — это пример запроса для получения всех сообщений пользователя или команды путем указания даты, времени, фильтров и первых 50 сообщений:

    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
    
  • Пример 3 — это пример запроса для получения ссылок на все доступные записи собраний пользователя в Teams. Поддерживается фильтрация по диапазону дат. Фильтр TOP n поддерживается аналогично сообщениям 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})
    
  • Пример 4 — это пример запроса на получение ссылок на все доступные расшифровки собраний Teams пользователя. Поддерживается фильтрация по диапазону дат. Фильтр TOP n поддерживается аналогично сообщениям 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})
    
  • Пример 5 представляет собой пример цепочки запросов, позволяющий сначала получить все доступные транскрибированные собрания пользователя Teams, а затем извлечь все доступные данные аналитика ИИ:

    GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllTranscripts?$filter=MeetingOrganizer/User/Id eq '{id}'
    

    Затем получите аналитику ИИ для каждой meetingId версии, возвращенной по указанному выше запросу.

    GET https://graph.microsoft.com/v1.0/copilot/users/{id}/onlineMeetings/{meetingId}/aiInsights
    

    Примечание.

    Если есть несколько результатов, API возвращает ответ со ссылкой на следующую страницу. Для получения следующего набора результатов вызовите GET по URL-адресу из @odata.nextlink. Если @odata.nextlink параметр отсутствует или имеет значение null, извлекаются все сообщения.

    Примечание.

    Порядок сообщений в ответе не гарантируется, что он будет отсортирован по какой-либо дате и времени, например createdDateTime или lastModifiedDateTime.

Предварительные требования для доступа к API экспорта Teams

  • API Microsoft Teams в Microsoft Graph, которые обращаются к конфиденциальным данным, считаются защищенными API. Вы можете вызывать эти API, если соблюдены требования для доступа без пользователя .

  • Разрешения приложений используются приложениями, которые работают без присутствия пользователя, вошедшего в систему. Только администратор может утвердить разрешения приложения. Необходимы следующие разрешения:

    • Chat. Read.All: обеспечивает доступ ко всем сообщениям личного чата, группового чата и чата собрания.

    • ChannelMessage.Read.All: разрешает доступ ко всем сообщениям канала.

    • User.Read.All: включает доступ к списку пользователей клиента.

    • OnlineMeetingTranscript.Read.All: включает доступ к расшифровкам всех запланированных собраний Teams 1:N.

    • OnlineMeetingRecording.Read.All: включает доступ к записям всех запланированных собраний Teams 1:n.

Требования к лицензиям для API экспорта Teams

Чтобы использовать API экспорта Microsoft Teams, организациям должна быть назначена активная лицензия Microsoft Teams, пользователям которых предоставляются данные.

Примечание.

Для использования API экспорта Microsoft Teams не требуется план обслуживания Защита от потери данных Microsoft Purview (DLP) или какие-либо дополнительные лицензии DLP.

API экспорта работают независимо от возможностей Microsoft Защита от потери данных Purview и доступны клиентам с соответствующим лицензированием Teams, поддерживающим доступ к данным через API экспорта Microsoft Graph.

Имя партнера Партнерское решение
логотип Smarsh Архивация Microsoft Teams и соответствие требованиям
Скриншот логотипа Proofpoint. Запись содержимого Proofpoint для Microsoft Teams

Сертифицированы следующие партнеры. Ваша организация может работать с любой комбинацией этих партнеров в рамках вашего предприятия.

Имя партнера Партнерское решение
Логотип рубрика Резервное копирование и восстановление Microsoft Teams
Логотип Veeam Резервное копирование и восстановление Microsoft Teams

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

Если вы являетесь поставщиком, желающим присоединиться к программе сертификации, заполните эту форму в качестве следующего шага. Если вам нужно предоставить дополнительный контекст и подробности, напишите в команду экосистемы MS Teams (TeamsCategoryPartner@microsoft.com).

Режим оценки (по умолчанию)

Ни одно объявление модели не обеспечивает доступ к API с ограниченным использованием для каждого запрашивающего приложения в целях оценки.

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

  1. Следующий пример представляет собой JSON-представление ресурса чата:

    Пространство имен: 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",
     }
    

    Примечание.

    Подробнее о ресурсе chatMessage см. в статье о типе ресурса chatMessage .

  2. В следующем примере представлено JSON-представление ресурса записи:

    Пространство имен: 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" 
          },
        ] 
       }
    

    Где:

    • <id> Представляет собой одну запись.

    • <meetingId> Представляет идентификатор собрания или звонка.

    • <meetingOrganizer/user/id> Представляет организатора собрания.

    • <createdDateTime> Указывает время начала собрания.

    • <recordingContentUrl> value указывает URL-адрес содержимого записи.

    • Записи ведутся в формате MP4.

    • Средний размер содержимого записи составляет около 350 МБ на диске на основе средних значений для собраний длительностью от 30 до 60 минут.

    • Результаты не гарантируются, что они будут отсортированы по createdDateTime. Однако если для одного собрания имеется несколько записей, они имеют одно и то же meetingId значение. Кроме того, записи для нескольких записей находятся в правильной последовательности для собрания, о котором идет речь.

    • Гарантированно результаты будут представлены только после того, как будут доступны соответствующие записи собрания. Другими словами, вызывающему не требуется никакого другого опроса для определения доступности.

    • Разбивка результатов на страницы поддерживается в соответствии с текущими шаблонами в API экспорта Teams. Разбивка на страницы поддерживается наличием @oData.nextLink свойства в ответе. Свойство nextLink содержит значение, как показано в следующей таблице skipToken . Если значение "нет skipToken " отсутствует, это означает, что в текущем пакете больше нет результатов для получения:

      Запрос Response (Ответ) @nextLink Комментарии
      /getAllRecordings Количество: 10 ?skipToken=ABC Первоначальный запрос без skipToken
      /getAllRecordings?skipToken=ABC Количество: 10 ?skipToken=DEF SkipToken возвращено, запрос на получение следующей страницы
      /getAllRecordings?skipToken=DEF Количество: 7 Нет skipToken, данные больше не доступны
    • $top также поддерживается в соответствии с текущими шаблонами в API экспорта Teams.

    • DeltaToken Поддерживается отслеживание изменений и сценарии синхронизации. Обзор и примеры существующих разностных запросов см. в статье Использование разностных запросов для отслеживания изменений в данных Microsoft Graph.

    • Следующий API можно использовать для получения фактического содержимого записи выбранного userId, meetingIdи recordingId полученного в ответе API GET getAllRecordings . Он возвращает содержимое записи:

      GET users('{userId}')/onlineMeetings('{meetingId}')/recordings('{recordingId}')/content 
      
  3. В следующем примере представлено JSON-представление ресурса расшифровки:

    Пространство имен: 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",   
           },
         ] 
        }
    

    Где:

    • <id> Представляет собой одну запись.

    • <meetingId> Представляет идентификатор собрания или звонка.

    • <meetingOrganizer/user/id> Представляет организатора собрания.

    • <createdDateTime> Указывает время начала собрания.

    • <transcriptContentUrl> value указывает URL-адрес содержимого расшифровки.

    • Содержимое расшифровки по умолчанию имеет формат VTT. Но, используя значение заголовка Accept , application/vnd.openxmlformats-officedocument.wordprocessingml.documentтакже можно получить формат DOCX.

    • Средний размер содержимого стенограммы в формате JSON/VTT составляет около 300 КБ на основе средних значений, которые мы наблюдаем для собраний продолжительностью от 30 до 60 минут.

    • Результаты не гарантируются, что они будут отсортированы по createdDateTime. Однако если для одного собрания имеется несколько записей, они имеют одно и то же meetingId значение. Кроме того, записи для нескольких записей находятся в правильной последовательности для собрания, о котором идет речь.

    • Гарантированно результаты будут представлены только после того, как будут доступны соответствующие записи собрания. Другими словами, вызывающему не требуется никакого другого опроса для определения доступности.

    • Разбивка результатов на страницы поддерживается в соответствии с текущими шаблонами в API экспорта Teams. Разбивка на страницы поддерживается наличием @oData.nextLink свойства в ответе. Свойство nextLinkskipToken содержит значение, как показано в следующей таблице. Если значение "нет skipToken " отсутствует, это означает, что в текущем пакете больше нет результатов для получения:

      Запрос Response (Ответ) @nextLink Комментарии
      /getAllTranscripts Количество: 10 ?skipToken=ABC Первоначальный запрос без skipToken
      /getAllTranscripts?skipToken=ABC Количество: 10 ?skipToken=DEF SkipToken возвращено, запрос на получение следующей страницы
      /getAllTranscripts?skipToken=DEF Количество: 7 Нет skipToken, данные больше не доступны
    • $top также поддерживается в соответствии с текущими шаблонами в API экспорта Teams.

    • DeltaToken Поддерживается отслеживание изменений и сценарии синхронизации. Обзор и примеры существующих разностных запросов см. в статье Использование разностных запросов для отслеживания изменений в данных Microsoft Graph.

    • Следующий API можно использовать для получения фактического содержимого транскрипции выбранных userId, meetingId и transcriptId, полученного в ответе API GET getAllTranscripts. Он возвращает содержимое записи.

      GET users('{userId}')/onlineMeetings('{meetingId}')/transcripts('{transcriptId}')/content
      

    Дополнительные сведения см. в статье Использование API Graph для получения расшифровки.

Экспорт фильтров API

API экспорта, размещенный в службе Teams Graph, получает все сообщения пользователей из пользовательского почтового ящика Substrate с помощью users/{userId}/chats/getAllMessages. Export API извлекает как отправленные, так и полученные сообщения для пользователя, что приводит к экспорту дубликатов сообщений при вызове API для всех пользователей в цепочке чата.

В API экспорта есть параметры фильтра, которые помогают оптимизировать сообщения, возвращаемые для цепочки чата. API GET поддерживает новые параметры фильтрации, позволяющие извлекать сообщения на основе отправленных сообщений о пользователе, боте, приложении и системных событиях. Параметр фильтра поддерживает сообщения, отправленные:

  • пользователи (в одном запросе поддерживается несколько идентификаторов пользователей).

  • приложения (боты, соединители и т. д.).

  • Все userIdentityTypes , кроме emailUser и unknownFutureValue.

  • Сообщения о системных событиях (управляющие сообщения).

Эти параметры являются частью запроса $filter. Если ни один из этих параметров не присутствует в запросе, возвращаются сообщения от всех пользователей, присутствующих в чатах указанных пользователей.

Поддерживаются следующие сценарии фильтрации:

$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 '<userIdentityType>'  
  
$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 messageType eq 'systemEventMessage'

(<any of the previous filters>) and (lastModifiedDateTime+gt+<date>+and+lastModifiedDateTime+lt+<date>)  
  • Запрос возвращает сообщения, отправленные указанным пользователем, если from/user/id eq ‘{oid}’ он присутствует.

  • Запрос возвращает сообщения, отправленные федеративными пользователями, которые являются частью пользовательских чатов (при from/user/userIdentityType eq ‘federatedUser’ наличии).

  • Запрос возвращает сообщения, отправленные указанным типом приложения, если from/application/applicationIdentityType eq '{appType}' он присутствует.

  • Запрос возвращает сообщения, отправленные системой, если messageType eq 'systemEventMessage' она присутствует.

Эти параметры можно комбинировать между ними с помощью операторов ИЛИ или комбинируя с параметром lastModifiedDateTime$filter .

API экспорта Teams для сохраненных сообщений

Если в вашем клиенте настроена политика хранения Teams, API экспорта поддерживает запись сообщений из папки удержаний для отдельных & групповых чатов, а также публикации, комментарии в общедоступных & общих каналах.

Доступ к API сохраненных сообщений

  • Пример 1 представляет собой простой запрос на получение всех сохраненных сообщений пользователя:

      GET https://graph.microsoft.com/v1.0/users/8b081ef6-4792-4def-b2c9-c363a1bf41d5/chats/getAllRetainedMessages
    
  • Пример 2 представляет собой простой запрос на извлечение всех сохраненных сообщений команды:

      GET https://graph.microsoft.com/v1.0/teams/8b081ef6-4792-4def-b2c9-c363a1bf41d5/channels/getAllRetainedMessages
    

Что поддерживается API getAllRetainedMessages

  • Сообщение мягко удалено пользователем в чате или канале Если пользователь находится в режиме ожидания, то после 21-дневного периода удаления сообщение можно экспортировать через API.
  • Сообщение мягко удалено пользователем в чате или канале Если настроена действительная политика хранения, после 21-дневного периода удаления сообщение можно экспортировать через API.
  • Сообщение редактируется пользователем в чате или канале Если установлена действительная политика хранения, можно экспортировать предыдущие отредактированные версии сообщения.

Примечание.

API /getAllRetainedMessages обеспечивает восстановление удаленных сообщений канала в течение максимум 30 дней со дня удаления. Через 30 дней команды и каналы жестко удаляются, а сообщения невозможно извлечь.

Взаимодействие с Microsoft Copilot

Дополнительные сведения об aiInteractionHistory: getAllEnterpriseInteractions , позволяющем экспортировать взаимодействия с Copilot.