Microsoft Teams 내보내기 API를 사용하여 콘텐츠 내보내기

Teams 내보내기 API를 사용하면 Microsoft Teams에서 1:1, 그룹 채팅, 모임 채팅 및 채널 메시지를 내보낼 수 있습니다. organization Microsoft Teams 메시지를 내보내야 하는 경우 Teams 내보내기 API를 사용하여 추출할 수 있습니다. 채팅 메시지는채널 또는 채팅 내의 개별 채팅 메시지를 나타냅니다. 채팅 메시지는 루트 채팅 메시지이거나 채팅 메시지의 replyToId 속성으로 정의된 회신 스레드의 일부일 수 있습니다.

다음은 이러한 내보내기 API를 사용하는 방법에 대한 몇 가지 예입니다.

  • 예제 1: organization Microsoft Teams를 사용하도록 설정하고 지정된 사용자 또는 팀의 날짜 범위를 전달하여 모든 Microsoft Teams 메시지를 프로그래밍 방식으로 날짜로 내보내려는 경우

  • 예제 2: 날짜 범위를 제공하여 매일 모든 사용자 또는 팀 메시지를 프로그래밍 방식으로 내보내려는 경우 내보내기 API는 지정된 날짜 범위 동안 생성되거나 업데이트된 모든 메시지를 검색할 수 있습니다.

  • (베타) 예제 3: 지정된 모임 이끌이에 대한 Teams 모임 녹음/녹화에 대한 링크를 프로그래밍 방식으로 내보내고 실제 녹음/녹화를 다운로드하려는 경우

  • (베타) 예제 4: 지정된 모임 이끌이에 대한 Teams 모임 성적증명서에 대한 링크를 프로그래밍 방식으로 내보내고 실제 대본을 다운로드하려는 경우

Teams 내보내기 API에서 지원하는 것은 무엇인가요?

  • Teams 대량 내보내기 메시지: Teams 내보내기 API는 테넌트당 앱당 최대 200개의 RPS와 애플리케이션에 대해 600개의 RPS를 지원하며, 이러한 제한으로 Teams 메시지를 대량으로 내보낼 수 있습니다.

  • 애플리케이션 컨텍스트: Microsoft Graph를 호출하려면 앱이 Microsoft ID 플랫폼 액세스 토큰을 획득해야 합니다. 액세스 토큰에는 앱에 대한 정보와 Microsoft Graph를 통해 사용할 수 있는 리소스 및 API에 대한 권한이 포함됩니다. 액세스 토큰을 얻으려면 앱이 Microsoft ID 플랫폼 등록되고 사용자 또는 관리자가 필요한 Microsoft Graph 리소스에 액세스할 수 있는 권한을 부여해야 합니다.

    토큰을 가져오기 위해 Microsoft ID 플랫폼 앱을 통합하는 데 이미 익숙한 경우 Microsoft Graph와 관련된 정보 및 샘플은 다음 단계 섹션을 참조하세요.

  • 하이브리드 환경: 내보내기 API는 하이브리드 환경(온-프레미스 Exchange 및 Teams)에서 프로비전된 사용자가 보낸 메시지를 지원합니다. 하이브리드 환경에 대해 구성된 사용자가 보낸 모든 메시지는 내보내기 API를 사용하여 액세스할 수 있습니다.

  • 사용자가 삭제한 메시지: Teams 클라이언트에서 사용자가 삭제한 메시지는 삭제 시점부터 최대 21일까지 내보내기 API를 사용하여 액세스할 수 있습니다.

  • 메시지 첨부 파일: 내보내기 API에는 메시지의 일부로 전송되는 첨부 파일에 대한 링크가 포함됩니다. 내보내기 API를 사용하여 메시지에 첨부된 파일을 검색할 수 있습니다.

  • 반응: 내보내기 API는 Teams 메시지에서 사용자가 시작한 반응을 지원합니다. 현재 지원되는 반응은 심장, 화가, 슬픈, 놀라움, 웃음입니다. 반응 외에도 Export API는 메시지에 대한 반응에 대한 변경 내용 및 업데이트를 포함하는 반응 편집 기록도 지원합니다.

  • 공유 채널 메시지: 내보내기 API는 공유 채널에서 메시지 캡처를 지원합니다.

  • 삭제된 Teams: 내보내기 API는 삭제된 Teams 및 삭제된 표준, 비공개 및 공유 채널에서 메시지 캡처를 지원합니다.

  • 채팅 메시지 속성:Teams 내보내기 API가 지원하는 속성의 전체 목록을 참조하세요.

  • 메시지 제어: 내보내기 API는 사용자가 생성한 메시지 외에도 제어 메시지 캡처를 지원합니다. 제어 메시지는 Teams 클라이언트에 표시되고 타임스탬프와 함께 "사용자 A가 채팅에 사용자 B를 추가하고 모든 채팅 기록을 공유"와 같은 중요한 정보를 전달하는 시스템 생성 메시지입니다. 시스템 메시지를 사용하면 호출자가 팀, 채널 또는 채팅에서 발생한 이벤트에 대한 인사이트를 얻을 수 있습니다. 현재 내보내기 API는 채팅, 팀 및 표준 채널에 대한 멤버 추가 및 멤버 제거 이벤트를 지원합니다.

Teams 내보내기 API에서 지원되지 않는 것은 무엇인가요?

  • Teams Copilot 상호 작용 & Microsoft 365 Chat: 내보내기 API는 봇에서 보낸 Copilot 상호 작용 메시지 및 Microsoft 365 채팅 메시지로 사용자를 지원하지 않습니다.

Teams 내보내기 API에 액세스하는 방법

  • 예제 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 필터는 채팅 메시지와 유사하게 지원됩니다.

    GET https://graph.microsoft.com/beta/users/{id}/onlineMeetings/getAllRecordings?$filter=MeetingOrganizerId eq ‘{id}’
    
  • (베타) 예제 4 는 사용자의 사용 가능한 모든 Teams 모임 성적 증명서에 대한 링크를 검색하는 샘플 쿼리입니다. TOP n 필터는 채팅 메시지와 유사하게 지원됩니다.

    GET https://graph.microsoft.com/beta/users/{id}/onlineMeetings/getAllTranscripts?$filter=MeetingOrganizerId eq ‘{id}’
    

참고 항목

API는 여러 결과가 발생하는 경우 다음 페이지 링크가 있는 응답을 반환합니다. 다음 결과 집합을 가져오려면 의 @odata.nextlinkURL에서 GET을 호출하기만 하면 됩니다. 가 없거나 null이면 @odata.nextlink 모든 메시지가 검색됩니다.

Teams 내보내기 API에 액세스하기 위한 필수 구성 요소

  • 중요한 데이터에 액세스하는 Microsoft Graph의 Microsoft Teams API는 보호되는 API로 간주됩니다. 사용자 없이 액세스하기 위한 요구 사항이 충족되는 한 이러한 API를 호출할 수 있습니다.

  • 애플리케이션 권한은 로그인한 사용자 없이 실행되는 앱에서 사용됩니다. 애플리케이션 권한은 관리자만 승인할 수 있습니다. 다음 권한이 필요합니다.

    • Chat.Read.All: 모든 1:1, 그룹 채팅 및 모임 채팅 메시지에 액세스할 수 있습니다.

    • ChannelMessage.Read.All: 모든 채널 메시지에 액세스할 수 있습니다.

    • User.Read.All: 테넌트 사용자 목록에 액세스할 수 있습니다.

    • OnlineMeetingTranscript.Read.All: 모든 1:n 예약된 Teams 모임에 대한 성적 증명서에 액세스할 수 있습니다.

    • OnlineMeetingRecording.Read.All: 예약된 모든 Teams 모임에 대한 녹음/녹화에 액세스할 수 있습니다.

Teams 내보내기 API에 대한 라이선스 요구 사항

Export API는 모델 쿼리 매개 변수를 통해 S+C(보안 및 규정 준수) 및 일반 사용 시나리오를 지원합니다. S+C 시나리오(모델 A)에는 시드된 용량이 포함되며 E5 구독이 필요하며 일반 사용 시나리오(모델 B)는 모든 구독에 사용할 수 있으며 사용량에만 해당합니다. 시드된 용량 및 사용 요금에 대한 자세한 내용은 Microsoft Graph Teams API에 대한 라이선스 및 결제 요구 사항을 참조하세요.

베타 API의 경우 현재 모델 A 또는 모델 B 라이선스 또는 사용 적용이 없습니다. 그러나 향후 변경될 수 있습니다.

S+C/모델 A 시나리오

보안 및/또는 규정 준수 기능을 수행하는 애플리케이션으로 제한되는 사용자는 이 기능을 사용하고 시드된 용량을 받으려면 특정 E5 라이선스가 있어야 합니다. 시드된 용량은 사용자당이며 매월 계산되며 테넌트 수준에서 집계됩니다. 시드된 용량을 초과하는 사용의 경우 앱 소유자는 API 사용량에 대한 요금이 청구됩니다. 모델 A는 할당된 E5 라이선스를 가진 사용자의 메시지에만 액세스할 수 있습니다.

파트너 이름 파트너 솔루션
logo-of-smarsh Microsoft Teams 보관 및 규정 준수
Proofpoint 로고 스크린샷 Microsoft Teams용 Proofpoint 콘텐츠 캡처

일반 사용/모델 B 시나리오

모든 비 S+C 관련 시나리오에 사용할 수 있으며 라이선스 요구 사항 또는 시드된 용량이 없습니다. 사용량 측정을 사용할 수 있게 되면 앱 소유자는 모든 월간 API 호출에 대해 요금이 청구됩니다.

다음 파트너는 인증을 받았습니다. 회사에서 엔터프라이즈 내에서 이러한 파트너의 조합으로 작업하도록 선택할 수 있습니다.

파트너 이름 파트너 솔루션
logo-of-rubrik Microsoft Teams 백업 및 복구
logo-of-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/beta/$metadata#Collection(meetingRecording)", 
     "@odata.count": 2, 
     "@odata.nextLink": "https://graph.microsoft.com/beta/users('{userId}')/onlineMeetings/getAllRecordings?$filter=MeetingOrganizerId+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/beta/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/beta/users/{userId}/onlineMeetings/{meetingId}/recordings/{recordingId}/content" 
          },
        ] 
       }
    

    여기서,

    • <id> 는 단일 녹음/녹화를 나타냅니다.

    • <meetingId> 은 모임 또는 통화 식별자를 나타냅니다.

    • <meetingOrganizerId> 는 모임의 이끌이를 나타냅니다.

    • <createdDateTime> 은 모임의 시작 시간을 나타냅니다.

    • <recordingContentUrl> value는 기록 콘텐츠에 대한 URL을 나타냅니다.

    • 녹음/녹화는 MP4 형식입니다.

    • 기록 콘텐츠 자체의 평균 크기는 30분 ~60분 범위의 모임에 대해 표시되는 평균을 기준으로 디스크에서 약 350MB입니다.

    • 결과가 로 createdDateTime정렬되는 것은 아닙니다. 그러나 단일 모임에 대해 여러 녹음/녹화가 있는 경우 동일한 meetingId 값을 공유합니다. 또한 여러 녹음/녹화에 대한 항목은 해당 모임에 대해 올바르게 시퀀스됩니다.

    • 결과는 연결된 모임 녹음/녹화를 사용할 수 있는 경우에만 표시됩니다. 즉, 호출자가 가용성에 대한 추가 폴링이 필요하지 않습니다.

    • 결과를 통한 페이지 매김은 Teams 내보내기 API의 현재 패턴에 따라 지원됩니다. 페이지 매김은 응답에 속성이 @oData.nextLink 있으면 지원됩니다. nextLink 속성에는 skipToken 아래와 같이 값이 포함됩니다. 없는 skipToken 경우 현재 일괄 처리에서 검색할 결과가 더 이상 없음을 의미합니다.

      요청 응답 @nextLink 설명
      /getAllRecordings 개수: 10 ?skipToken=ABC 초기 요청이 없는 경우 skipToken
      /getAllRecordings?skipToken=ABC 개수: 10 ?skipToken=DEF SkipToken 반환됨, 다음 페이지 가져오기 요청
      /getAllRecordings?skipToken=DEF 개수: 7 아니요 skipToken, 더 이상 사용할 수 있는 데이터가 없습니다.
    • $top 매개 변수는 Teams 내보내기 API의 현재 패턴에 따라 지원됩니다.

    • DeltaToken 변경 내용 추적 및 동기화 시나리오가 지원됩니다. 기존 델타 쿼리의 개요 및 예제는 델타 쿼리를 사용하여 Microsoft Graph 데이터의 변경 내용 추적을 참조하세요.

    • 다음 API를 사용하여 선택한 userIdmeetingId 의 실제 기록 콘텐츠를 가져올 수 있으며 recordingId GET getAllRecordings API의 응답에서 가져옵니다. 기록의 내용을 반환합니다.

    GET users('{userId}')/onlineMeetings('{meetingId}')/recordings('{recordingId}')/content 
    
  3. 다음 예제는 전사 리소스의 JSON 표현입니다.

    네임스페이스: microsoft.graph

    {
      "@odata.context": "https://graph.microsoft.com/beta/$metadata#Collection(callTranscript)",  
      "@odata.count": 2, 
      "@odata.nextLink": "https://graph.microsoft.com/beta/users('{userId}')/onlineMeetings/getAllTranscripts?$filter=MeetingOrganizerId+eq+%27{userId}%27&$skiptoken=MSMjMCMjTkNaYVNIQjVVbXRPYWxaV1dscGFWVGg1V2pOb1IxUXpRWGxrUm1oTFVrWmtTV1ZyYkhwUlZVWm9UMWR3VEdWWGRFTlJWVVpDVVZFOVBRPT0%3d",  
      "value":
        [ 
          { 
           "@odata.type": "#microsoft.graph.callTranscript", 
           "id": "MSMjMCMjMGFjNmUwZTgtYmZjYy00NDQxLTk2MGYtZjllNjVhNjI0NzBh", 
           "meetingId": "MSoxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1ERXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy", 
           "meetingOrganizerId": "{userId}", 
           "transcriptContentUrl": "https://graph.microsoft.com/beta/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/beta/users/{userId}/onlineMeetings/{meetingId}/transcripts/{transcriptId}/content",   
           },
         ] 
        }
    

    여기서,

    • <id> 는 단일 녹음/녹화를 나타냅니다.

    • <meetingId> 은 모임 또는 통화 식별자를 나타냅니다.

    • <meetingOrganizerId> 는 모임의 이끌이를 나타냅니다.

    • <createdDateTime> 은 모임의 시작 시간을 나타냅니다.

    • <transcriptContentUrl> value는 대본 콘텐츠의 URL을 나타냅니다.

    • 대본 콘텐츠는 기본적으로 VTT 형식입니다. 그러나 의 Accept 헤더 값을 application/vnd.openxmlformats-officedocument.wordprocessingml.document사용하여 DOCX 형식을 가져올 수도 있습니다.

    • JSON/VTT 형식의 대본 콘텐츠 자체의 평균 크기는 약 300KB이며, 30분 ~60분 범위의 모임에 대해 표시되는 평균을 기준으로 합니다.

    • 결과는 로 createdDateTime정렬되지 않습니다. 그러나 단일 모임에 대해 여러 녹음/녹화가 있는 경우 동일한 meetingId 값을 공유합니다. 또한 여러 녹음/녹화에 대한 항목은 해당 모임에 대해 올바르게 시퀀스됩니다.

    • 결과는 연결된 모임 녹음/녹화를 사용할 수 있는 경우에만 표시됩니다. 즉, 호출자가 가용성에 대한 추가 폴링이 필요하지 않습니다.

    • 결과를 통한 페이지 매김은 Teams 내보내기 API의 현재 패턴에 따라 지원됩니다. 페이지 매김은 응답에 속성이 @oData.nextLink 있으면 지원됩니다. 속성에 nextLink 아래 표시된 대로 값이 포함 skipToken 됩니다. 없는 skipToken 경우 현재 일괄 처리에서 검색할 결과가 더 이상 없음을 의미합니다.

      요청 응답 @nextLink 설명
      /getAllTranscripts 개수: 10 ?skipToken=ABC 초기 요청이 없는 경우 skipToken
      /getAllTranscripts?skipToken=ABC 개수: 10 ?skipToken=DEF SkipToken 반환됨, 다음 페이지 가져오기 요청
      /getAllTranscripts?skipToken=DEF 개수: 7 아니요 skipToken, 더 이상 사용할 수 있는 데이터가 없습니다.
    • $top 매개 변수는 Teams 내보내기 API의 현재 패턴에 따라 지원됩니다.

    • DeltaToken 변경 내용 추적 및 동기화 시나리오가 지원됩니다. 기존 델타 쿼리의 개요 및 예제는 델타 쿼리를 사용하여 Microsoft Graph 데이터의 변경 내용 추적을 참조하세요.

    • 다음 API를 사용하여 GET getAllTranscripts API의 응답에서 얻은 선택한 userId, meetingId 및 transcriptId의 실제 대본 콘텐츠를 가져올 수 있습니다. 녹음/녹화의 내용을 반환합니다.

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

자세한 내용은 Graph API를 사용하여 대본 가져오기를 참조하세요.

API 필터 내보내기

Teams Graph Service에서 호스트되는 내보내기 API는 를 사용하여 users/{userId}/chats/getAllMessages기판 사용자 사서함에서 모든 사용자 메시지를 가져옵니다. 내보내기 API는 채팅 스레드의 모든 사용자에 대해 API를 호출할 때 중복 메시지를 내보내도록 하는 사용자에 대해 보낸 메시지와 수신된 메시지를 모두 검색합니다.

내보내기 API에는 채팅 스레드에 대해 반환된 메시지를 최적화하는 데 도움이 되는 필터 매개 변수가 있습니다. API GET은 보낸 사용자, 봇, 애플리케이션 및 시스템 이벤트 메시지를 기반으로 메시지를 추출하는 방법을 허용하는 새 필터 매개 변수를 지원합니다. 필터 매개 변수는 다음에서 보낸 메시지를 지원합니다.

  • 사용자(동일한 요청에서 지원되는 여러 사용자 ID)

  • 애플리케이션(봇, 커넥터 등)

  • 익명 사용자

  • 페더레이션된 사용자(외부 액세스 사용자)

  • 시스템 이벤트 메시지(제어 메시지)

이러한 매개 변수는 요청의 에 속합니다 $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 '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>)  
  • 쿼리는 가 있는 경우 from/user/id eq ‘{oid}’ 지정된 사용자가 보낸 메시지를 반환합니다.

  • 이 있는 경우 from/user/userIdentityType eq ‘federatedUser’ 쿼리는 사용자 채팅의 일부인 페더레이션된 사용자가 보낸 메시지를 반환합니다.

  • 가 있는 경우 from/application/applicationIdenitytyType eq '{appType}' 쿼리는 지정된 애플리케이션 유형에서 보낸 메시지를 반환합니다.

  • 가 있는 경우 messageType eq 'systemEventMessage' 쿼리가 시스템에서 보낸 메시지를 반환합니다.

이러한 매개 변수는 OR 연산자를 사용하거나 매개 변수와 lastModifiedDateTime$filter 결합하여 둘 사이에 결합할 수 있습니다.