Condividi tramite


Esportare contenuto con le API di esportazione di Microsoft Teams

Le API di esportazione di Teams consentono di esportare 1:1, chat di gruppo, chat delle riunioni e messaggi di canale da Microsoft Teams. Se l'organizzazione deve esportare i messaggi di Microsoft Teams, è possibile estrarli usando le API di esportazione di Teams. Messaggio di chat rappresenta un singolo messaggio di chat all'interno di un canale o di una chat. Il messaggio della chat può essere un messaggio di chat radice o parte di un thread di risposta definito dalla proprietà replyToId nel messaggio di chat.

Ecco alcuni esempi su come usare queste API di esportazione:

  • Esempio 1: se hai abilitato Microsoft Teams nella tua organizzazione e vuoi esportare tutti i messaggi di Microsoft Teams a livello di programmazione passando l'intervallo di date per un determinato utente o team.

  • Esempio 2: per esportare a livello di programmazione tutti i messaggi di utenti o team ogni giorno fornendo un intervallo di date. Le API di esportazione possono recuperare tutti i messaggi creati o aggiornati durante l'intervallo di date specificato.

  • (Beta) Esempio 3: se si vogliono esportare a livello di programmazione i collegamenti alle registrazioni delle riunioni di Teams per un determinato organizzatore della riunione e quindi scaricare le registrazioni effettive.

  • (Beta) Esempio 4: se si vogliono esportare a livello di programmazione i collegamenti alle trascrizioni delle riunioni di Teams per un determinato organizzatore della riunione e quindi scaricare le trascrizioni effettive.

Cosa è supportato dalle API di esportazione di Teams?

  • Esportazione in blocco del messaggio di Teams: Le API di esportazione di Teams supportano fino a 200 RPS per app Per tenant e 600 RPS per un'applicazione, con questi limiti dovrebbe essere possibile esportare in blocco i messaggi di Teams.

  • Contesto applicazione: per chiamare Microsoft Graph, l'app deve acquisire un token di accesso dalla piattaforma di identità Microsoft. Il token di accesso contiene informazioni sull'app e sulle autorizzazioni di cui dispone per le risorse e le API disponibili tramite Microsoft Graph. Per ottenere un token di accesso, l'app deve essere registrata con la piattaforma di identità Microsoft ed essere autorizzata da un utente o un amministratore per l'accesso alle risorse di Microsoft Graph necessarie.

    Se hai già familiarità con l'integrazione di un'app con la piattaforma di identità Microsoft per ottenere token, vedi la sezione Passaggi successivi per informazioni ed esempi specifici di Microsoft Graph.

  • Ambiente ibrido: Esportare i messaggi di supporto delle API inviati dagli utenti di cui è stato eseguito il provisioning in ambiente ibrido (Exchange locale e Teams). Tutti i messaggi inviati da utenti configurati per l'ambiente ibrido sono accessibili usando le API di esportazione.

  • Messaggi eliminati dall'utente: I messaggi eliminati dagli utenti dal client Teams sono accessibili usando le API di esportazione fino a 21 giorni dal momento dell'eliminazione.

  • Allegati dei messaggi: Le API di esportazione includono i collegamenti agli allegati inviati come parte dei messaggi. Con l'opzione Esporta API è possibile recuperare i file allegati nei messaggi.

  • Reazioni: Le API di esportazione supportano le reazioni avviate da un utente in un messaggio di Teams. Le reazioni attualmente supportate sono cuore, rabbia, tipo, tristezza, sorpresa e risata. Oltre alle reazioni, l'API di esportazione supporta anche la cronologia di modifica delle reazioni, che include le modifiche e gli aggiornamenti apportati a una reazione su un messaggio.

  • Messaggi del canale condiviso: Le API di esportazione supportano l'acquisizione di messaggi da un canale condiviso.

  • Team eliminati: L'API di esportazione supporta l'acquisizione di messaggi da Teams eliminati e canali standard, privati e condivisi eliminati.

  • Proprietà dei messaggi di chat: Vedere l'elenco completo delle proprietà supportate dalle API di esportazione di Teams.

  • Controllare i messaggi: L'API di esportazione supporta l'acquisizione di messaggi di controllo oltre ai messaggi generati dall'utente. I messaggi di controllo sono messaggi generati dal sistema che vengono visualizzati sul client teams e portano informazioni importanti come "Utente A aggiunto Utente B alla chat e condiviso tutta la cronologia della chat" insieme al timestamp. I messaggi di sistema consentono al chiamante di avere informazioni approfondite sugli eventi che si sono verificati in un team, un canale o una chat. L'API di esportazione attualmente supporta l'evento Aggiungi membro e Rimuovi membro per chat, team e canali standard.

  • (Beta) Cronologia modificata: Se il tenant è configurato con i criteri di conservazione di Teams, l'API di esportazione supporta l'acquisizione della cronologia modificata dei messaggi per singoli & chat di gruppo e post, commenti in canali pubblici & condivisi.

    Per altre informazioni sui criteri di conservazione di Teams, vedere Gestire i criteri di conservazione per Microsoft Teams per ulteriori dettagli.

Cosa non è supportato dalle API di esportazione di Teams?

  • Interazioni copilot di Teams & chat di Microsoft 365: L'API di esportazione non supporta i messaggi di interazione utente in Copilot e i messaggi di chat di Microsoft 365 inviati dal bot.

Come accedere alle API di esportazione di Teams

  • L'esempio 1 è una query semplice per recuperare tutti i messaggi di un utente o di un team senza alcun filtro:

    GET https://graph.microsoft.com/v1.0/users/{id}/chats/getAllMessages
    
    GET https://graph.microsoft.com/v1.0/teams/{id}/channels/getAllMessages
    
  • L'esempio 2 è una query di esempio per recuperare tutti i messaggi di un utente o di un team specificando filtri di data/ora e i primi 50 messaggi:

    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
    
  • (Beta) L'esempio 3 è una query di esempio per recuperare i collegamenti a tutte le registrazioni delle riunioni di Teams disponibili di un utente. Il filtro TOP n è supportato in modo simile ai messaggi di chat:

    GET https://graph.microsoft.com/beta/users/{id}/onlineMeetings/getAllRecordings?$filter=MeetingOrganizerId eq ‘{id}’
    
  • (Beta) L'esempio 4 è una query di esempio per recuperare i collegamenti a tutte le trascrizioni delle riunioni di Teams disponibili di un utente. Il filtro TOP n è supportato in modo simile ai messaggi di chat:

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

Nota

L'API restituisce una risposta con collegamento alla pagina successiva in caso di più risultati. Per ottenere il prossimo set di risultati, è sufficiente chiamare GET sull'URL da @odata.nextlink. Se @odata.nextlink non è presente o null, vengono recuperati tutti i messaggi.

Nota

L'ordine dei messaggi nella risposta non è garantito per essere ordinato in base a datetime, ad esempio createdDateTime né lastModifiedDateTime.

Prerequisiti per accedere alle API di esportazione di Teams

  • Le API di Microsoft Teams in Microsoft Graph che accedono a dati sensibili sono considerate API protette. È possibile chiamare queste API purché siano soddisfatti i requisiti per l'accesso senza un utente .

  • Le autorizzazioni dell'applicazione vengono usate dalle app che vengono eseguite senza una presentazione utente connessa; le autorizzazioni per le applicazioni possono essere approvate solo da un amministratore. Sono necessarie le autorizzazioni seguenti:

    • Chat.Read.All: consente l'accesso a tutti i messaggi 1:1, chat di gruppo e chat di riunione

    • ChannelMessage.Read.All: consente l'accesso a tutti i messaggi del canale

    • User.Read.All: consente l'accesso all'elenco di utenti per un tenant

    • OnlineMeetingTranscript.Read.All: consente l'accesso alle trascrizioni per tutte le riunioni di Teams pianificate

    • OnlineMeetingRecording.Read.All: consente l'accesso alle registrazioni per tutte le riunioni di Teams pianificate 1:n

Requisiti di licenza per le API di esportazione di Teams

L'API di esportazione supporta gli scenari di sicurezza e conformità (S+C) e di utilizzo generale tramite un parametro di query del modello. Gli scenari S+C (modello A) includono la capacità di seeding e richiedono una sottoscrizione E5 e gli scenari di utilizzo generali (modello B) sono disponibili per tutte le sottoscrizioni ed è solo a consumo. Per altre informazioni sulla capacità di seeding e sui costi di consumo, vedi Requisiti di gestione delle licenze e di pagamento per le API Microsoft Graph Teams.

Per le API Beta, attualmente non sono previste licenze o imposizioni di licenze per il modello B o modello B. Tuttavia, questo è soggetto a modifiche in futuro.

Scenari S+C/Modello A

Riservato alle applicazioni che eseguono funzioni di sicurezza e/o conformità, gli utenti devono avere licenze E5 specifiche per usare questa funzionalità e ricevere capacità di seeding. La capacità di seeding è per utente e viene calcolata al mese ed è aggregata a livello di tenant. Per l'utilizzo oltre la capacità di seeding, i proprietari delle app vengono fatturati per il consumo di API. Il modello A può accedere solo ai messaggi provenienti da utenti con una licenza E5 assegnata.

Nome partner Soluzione per i partner
logo di smarsh Archiviazione e conformità di Microsoft Teams
Screenshot del logo di Proofpoint. Acquisizione di contenuto di Proofpoint per Microsoft Teams

Utilizzo generale/Scenari modello B

Disponibile per tutti gli scenari non correlati a S+C, non esistono requisiti di licenza o capacità di seeding. Quando i contatori di consumo diventano disponibili, i proprietari delle app vengono addebitati per tutte le chiamate API mensili.

Sono certificati i seguenti partner. L'azienda può scegliere di collaborare con qualsiasi combinazione di questi partner all'interno dell'azienda.

Nome partner Soluzione per i partner
Logo di Rubrik Backup e ripristino di Microsoft Teams
Logo del veeam Backup e ripristino di Microsoft Teams

Passaggi successivi

Se sei un fornitore che cerca di partecipare al programma di certificazione, compila questo modulo come passaggio successivo. Se è necessario fornire più contesto e dettagli, inviare un messaggio di posta elettronica a MS Teams Ecosystem Team (TeamsCategoryPartner@microsoft.com).

Modalità di valutazione (impostazione predefinita)

Nessuna dichiarazione del modello consente l'accesso alle API con un utilizzo limitato per ogni applicazione richiedente ai fini della valutazione.

Rappresentazione JSON

  1. L'esempio seguente è una rappresentazione JSON della risorsa chat:

    Spazio dei nomi: 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

    Per altre informazioni sulla risorsa chatMessage, vedere l'articolo sul tipo di risorsa chatMessage .

  2. L'esempio seguente è una rappresentazione JSON della risorsa di registrazione:

    Spazio dei nomi: 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" 
          },
        ] 
       }
    

    Dove:

    • <id> rappresenta una singola registrazione.

    • <meetingId> rappresenta un identificatore di riunione o chiamata.

    • <meetingOrganizerId> rappresenta l'organizzatore della riunione.

    • <createdDateTime> indica l'ora di inizio della riunione.

    • <recordingContentUrl> indica l'URL del contenuto della registrazione.

    • Le registrazioni sono in formato MP4.

    • La dimensione media del contenuto della registrazione è di circa 350 MB su disco, in base alle medie visualizzate per le riunioni con un intervallo compreso tra 30 minuti e 60 minuti.

    • Non è garantito che i risultati vengano ordinati per createdDateTime. Tuttavia, nel caso in cui siano presenti più registrazioni per una singola riunione, condivideranno lo stesso meetingId valore. Inoltre, le voci per le registrazioni multiple vengono sequenziate correttamente per la riunione in questione.

    • I risultati saranno sicuramente presenti solo dopo la disponibilità delle registrazioni della riunione associata. In altre parole, il chiamante non richiede ulteriori sondaggi per la disponibilità.

    • L'impaginazione attraverso i risultati sarà supportata in base ai modelli correnti nell'API di esportazione di Teams. L'impaginazione sarà supportata tramite la presenza di @oData.nextLink proprietà nella risposta. La proprietà nextLink contiene un skipToken valore, come indicato di seguito. Se non skipToken è presente, significa che non ci sono più risultati da recuperare nel batch corrente:

      Richiesta Risposta @nextLink Commenti
      /getAllRecordings Numero: 10 ?skipToken=ABC Richiesta iniziale senza skipToken
      /getAllRecordings?skipToken=ABC Numero: 10 ?skipToken=DEF SkipToken restituita, richiesta di ottenere la pagina successiva
      /getAllRecordings?skipToken=DEF Numero: 7 No skipToken, non sono disponibili altri dati
    • $top sarà supportato anche in base ai modelli correnti nell'API di esportazione di Teams.

    • DeltaToken per abilitare gli scenari di rilevamento e sincronizzazione delle modifiche è supportato. Per una panoramica ed esempi di query delta esistenti, vedere Usare la query delta per tenere traccia delle modifiche nei dati di Microsoft Graph.

    • L'API seguente può essere utilizzata per ottenere il contenuto di registrazione effettivo dell'oggetto selezionato userIdmeetingId e recordingId che è stato ottenuto nella risposta dell'API GETgetAllRecordings. Restituisce il contenuto della registrazione:

    GET users('{userId}')/onlineMeetings('{meetingId}')/recordings('{recordingId}')/content 
    
  3. L'esempio seguente è una rappresentazione JSON della risorsa trascrizione:

    Spazio dei nomi: 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",   
           },
         ] 
        }
    

    Dove:

    • <id> rappresenta una singola registrazione.

    • <meetingId> rappresenta un identificatore di riunione o chiamata.

    • <meetingOrganizerId> rappresenta l'organizzatore della riunione.

    • <createdDateTime> indica l'ora di inizio della riunione.

    • <transcriptContentUrl> indica l'URL del contenuto della trascrizione.

    • Per impostazione predefinita, il contenuto della trascrizione sarà in formato VTT. Tuttavia, è anche possibile ottenere un valore di intestazione Accept di application/vnd.openxmlformats-officedocument.wordprocessingml.documentformato DOCX.

    • La dimensione media del contenuto della trascrizione in formato JSON/VTT è di circa 300 KB, in base alle medie visualizzate per le riunioni con un intervallo compreso tra 30 minuti e 60 minuti.

    • Non è garantito che i risultati vengano ordinati per createdDateTime. Tuttavia, nel caso in cui siano presenti più registrazioni per una singola riunione, condivideranno lo stesso meetingId valore. Inoltre, le voci per le registrazioni multiple verranno sequenziate correttamente per la riunione in questione.

    • I risultati saranno sicuramente presenti solo dopo la disponibilità delle registrazioni della riunione associata. In altre parole, il chiamante non richiede ulteriori sondaggi per la disponibilità.

    • L'impaginazione attraverso i risultati sarà supportata in base ai modelli correnti nell'API di esportazione di Teams. L'impaginazione sarà supportata tramite la presenza di @oData.nextLink proprietà nella risposta. La nextLink proprietà conterrà un skipToken valore, come indicato di seguito. Se non skipToken è presente, significa che non ci sono più risultati da recuperare nel batch corrente:

      Richiesta Risposta @nextLink Commenti
      /getAllTranscripts Numero: 10 ?skipToken=ABC Richiesta iniziale senza skipToken
      /getAllTranscripts?skipToken=ABC Numero: 10 ?skipToken=DEF SkipToken restituita, richiesta di ottenere la pagina successiva
      /getAllTranscripts?skipToken=DEF Numero: 7 No skipToken, non sono disponibili altri dati
    • $top sarà supportato anche in base ai modelli correnti nell'API di esportazione di Teams.

    • DeltaToken per abilitare gli scenari di rilevamento e sincronizzazione delle modifiche è supportato. Per una panoramica ed esempi di query delta esistenti, vedere Usare una query delta per tenere traccia delle modifiche nei dati di Microsoft Graph.

    • L'API seguente può essere utilizzata per ottenere il contenuto effettivo della trascrizione dell'userId, meetingId e transcriptId selezionato ottenuto nella risposta dell'API GET getAllTranscripts. Restituisce il contenuto della registrazione.

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

Per altre informazioni, vedere Usare le API Graph per recuperare la trascrizione.

Esportare i filtri API

L'API di esportazione ospitata nel servizio Teams Graph riceve tutti i messaggi utente dalla cassetta postale utente Substrate utilizzando users/{userId}/chats/getAllMessages. L'API di esportazione recupera i messaggi inviati e ricevuti per un utente che porta all'esportazione dei messaggi duplicati quando chiama l'API per tutti gli utenti nel thread di chat.

L'API di esportazione ha parametri di filtro che consentono di ottimizzare i messaggi restituiti per un thread di chat. L'API GET supporta nuovi parametri di filtro che consentono di estrarre i messaggi in base ai messaggi inviati a utenti, bot, applicazioni e eventi di sistema. Il parametro di filtro supporta i messaggi inviati da:

  • utenti (più ID utente supportati nella stessa richiesta)

  • applicazioni (bot, connettori e così via)

  • utenti anonimi

  • utenti federati (utenti con accesso esterno)

  • messaggi eventi di sistema (messaggi di controllo)

Questi parametri fanno parte dell'oggetto della $filterrichiesta. Se nella richiesta non sono presenti questi parametri, verranno restituiti i messaggi di tutti gli utenti presenti nelle chat utente specificate.

Gli scenari di filtro supportati sono i seguenti:

$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 query restituisce i messaggi inviati dall'utente specificato, se from/user/id eq ‘{oid}’ presente.

  • La query restituisce i messaggi inviati dagli utenti federati che fanno parte delle chat utente, se from/user/userIdentityType eq ‘federatedUser’ presenti.

  • la query restituisce i messaggi inviati dal tipo di applicazione specificato, se from/application/applicationIdenitytyType eq '{appType}' presente.

  • La query restituisce i messaggi inviati dal sistema, se messageType eq 'systemEventMessage' presenti

Questi parametri possono essere combinati usando gli operatori OR e combinandoli con il lastModifiedDateTime$filter parametro.