Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans l’exercice précédent, vous avez appris à récupérer des fichiers à partir de OneDrive Entreprise et des conversations de Microsoft Teams à l’aide de Microsoft Graph et du composant mgt-search-results de Microsoft Graph Toolkit. Vous avez également appris à envoyer des messages à des canaux Microsoft Teams. Dans cet exercice, vous allez apprendre à récupérer des messages électroniques et des événements de calendrier à partir de Microsoft Graph et à les intégrer à l’application.
Dans cet exercice, vous allez :
- Découvrez comment le composant web mgt-search-results dans le Kit de ressources Microsoft Graph peut être utilisé pour rechercher des e-mails et des événements de calendrier.
- Découvrez comment personnaliser le composant mgt-search-results pour afficher les résultats de recherche d’une manière personnalisée.
- Découvrez comment appeler Microsoft Graph directement pour récupérer des e-mails et des événements de calendrier.
Exploration du code de recherche de messages électroniques
Conseil / Astuce
Si vous utilisez Visual Studio Code, vous pouvez ouvrir des fichiers directement en sélectionnant :
- Windows/Linux : Ctrl + P
- Mac : Cmd + P
Tapez ensuite le nom du fichier que vous souhaitez ouvrir.
Dans un exercice précédent , vous avez créé une inscription d’application dans Microsoft Entra ID et démarré le serveur d’applications et le serveur d’API. Vous avez également mis à jour les valeurs suivantes dans le
.envfichier.ENTRAID_CLIENT_ID=<APPLICATION_CLIENT_ID_VALUE> TEAM_ID=<TEAMS_TEAM_ID> CHANNEL_ID=<TEAMS_CHANNEL_ID>Vérifiez que vous avez terminé l’exercice précédent avant de continuer.
Ouvrez emails.component.html et prenez un moment pour examiner le code. Le chemin complet du fichier est client/src/app/emails/emails.component.html.
Recherchez le composant mgt-search-results :
<mgt-search-results class="search-results" entity-types="message" [queryString]="searchText" (dataChange)="dataChange($any($event))"> <template data-type="result-message"></template> </mgt-search-results>Cet exemple du composant mgt-search-results est configuré de la même façon que celui que vous avez examiné précédemment. La seule différence est que l’attribut
entity-typesest définimessagesur lequel est utilisé pour rechercher des messages électroniques et qu’un modèle vide est fourni.- L’attribut
classest utilisé pour spécifier que lasearch-resultsclasse CSS doit être appliquée au composant. - L’attribut
entity-typesest utilisé pour spécifier le type de données à rechercher. Dans ce cas, la valeur estmessage. - L’attribut
queryStringest utilisé pour spécifier le terme de recherche. - L’événement
dataChangese déclenche lorsque les résultats de la recherche changent. La fonction dudataChange()composant e-mail est appelée, les résultats sont transmis à celui-ci et une propriété nomméedataest mise à jour dans le composant. - Un modèle vide est défini pour le composant. Ce type de modèle est normalement utilisé pour définir la façon dont les résultats de la recherche seront rendus. Toutefois, dans ce scénario, nous déconseillons le composant de ne pas afficher de données de message. Au lieu de cela, nous allons afficher les données nous-mêmes à l’aide de la liaison de données standard (Angular est utilisé dans ce cas, mais vous pouvez utiliser n’importe quelle bibliothèque/infrastructure souhaitée).
- L’attribut
Regardez sous le composant mgt-search-results dans emails.component.html pour rechercher les liaisons de données utilisées pour afficher les messages électroniques. Cet exemple effectue une itération dans la
datapropriété et écrit l’objet de l’e-mail, l’aperçu du corps et un lien pour afficher le message électronique complet.@if (this.data.length) { <div> @for (email of this.data;track $index) { <mat-card> <mat-card-header> <mat-card-title>{{email.resource.subject}}</mat-card-title> <mat-card-subtitle [innerHTML]="email.resource.bodyPreview"></mat-card-subtitle> </mat-card-header> <mat-card-actions> <a mat-stroked-button color="basic" [href]="email.resource.webLink" target="_blank">View Email Message</a> </mat-card-actions> </mat-card> } </div> }
Outre l’utilisation du composant mgt-search-results pour récupérer des messages, Microsoft Graph fournit plusieurs API qui peuvent également être utilisées pour rechercher des e-mails. L’API
/search/queryque vous avez vue précédemment pourrait certainement être utilisée, mais une option plus simple est l’APImessages.Pour savoir comment appeler cette API, revenez à graph.service.ts et recherchez la
searchEmailMessages()fonction. Il crée une URL qui peut être utilisée pour appeler lemessagespoint de terminaison de Microsoft Graph et assigne laqueryvaleur au$searchparamètre. Le code effectue ensuite une requête GET et retourne les résultats à l’appelant. L’opérateur$searchrecherche automatiquement laqueryvaleur dans les champs objet, corps et expéditeur.async searchEmailMessages(query:string) { if (!query) return []; // The $search operator will search the subject, body, and sender fields automatically const url = `https://graph.microsoft.com/v1.0/me/messages?$search="${query}"&$select=subject,bodyPreview,from,toRecipients,receivedDateTime,webLink`; const response = await Providers.globalProvider.graph.client.api(url).get(); return response.value; }Le composant e-mail situé dans emails.component.ts appels
searchEmailMessages()et affiche les résultats dans l’interface utilisateur.override async search(query: string) { this.data = await this.graphService.searchEmailMessages(query); }
Exploration du code de recherche d’événements de calendrier
La recherche d’événements de calendrier peut également être effectuée à l’aide du composant mgt-search-results . Il peut gérer le rendu des résultats pour vous, mais vous pouvez également définir votre propre modèle que vous verrez plus loin dans cet exercice.
Ouvrez calendar-events.component.html et prenez un moment pour examiner le code. Le chemin complet du fichier est client/src/app/calendar-events/calendar-events.component.html. Vous verrez qu’il est très similaire aux fichiers et aux composants d’e-mails que vous avez examinés précédemment.
<mgt-search-results class="search-results" entity-types="event" [queryString]="searchText" (dataChange)="dataChange($any($event))"> <template data-type="result-event"></template> </mgt-search-results>Cet exemple du composant mgt-search-results est configuré de la même façon que ceux que vous avez examinés précédemment. La seule différence est que l’attribut
entity-typesest définieventsur lequel est utilisé pour rechercher des événements de calendrier et qu’un modèle vide est fourni.- L’attribut
classest utilisé pour spécifier que lasearch-resultsclasse CSS doit être appliquée au composant. - L’attribut
entity-typesest utilisé pour spécifier le type de données à rechercher. Dans ce cas, la valeur estevent. - L’attribut
queryStringest utilisé pour spécifier le terme de recherche. - L’événement
dataChangese déclenche lorsque les résultats de la recherche changent. La fonction du composant d’événementdataChange()est appelée, les résultats sont transmis à celui-ci et une propriété nomméedataest mise à jour dans le composant. - Un modèle vide est défini pour le composant. Dans ce scénario, nous disons au composant de ne pas afficher de données. Au lieu de cela, nous allons afficher les données nous-mêmes à l’aide de la liaison de données standard.
- L’attribut
Immédiatement sous le
mgt-search-resultscomposant dans calendar-events.component.html vous trouverez les liaisons de données utilisées pour afficher les événements de calendrier. Cet exemple effectue une itération dans ladatapropriété et écrit la date de début, l’heure et l’objet de l’événement. Les fonctions personnalisées incluses dans le composant, telles quedayFromDateTime()celles-ci,timeRangeFromEvent()sont appelées pour mettre en forme correctement les données. Les liaisons HTML incluent également un lien pour afficher l’événement de calendrier dans Outlook et l’emplacement de l’événement si l’un d’eux est spécifié.@if (this.data.length) { <div> @for (event of this.data;track $index) { <div class="root"> <div class="time-container"> <div class="date">{{ dayFromDateTime(event.resource.start.dateTime)}}</div> <div class="time">{{ timeRangeFromEvent(event.resource) }}</div> </div> <div class="separator"> <div class="vertical-line top"></div> <div class="circle"> @if (!this.event.resource.bodyPreview?.includes('Join Microsoft Teams Meeting')) { <div class="inner-circle"></div> } </div> <div class="vertical-line bottom"></div> </div> <div class="details"> <div class="subject">{{ event.resource.subject }}</div> @if (this.event.resource.location?.displayName) { <div class="location"> at <a href="https://bing.com/maps/default.aspx?where1={{event.resource.location.displayName}}" target="_blank" rel="noopener"><b>{{ event.resource.location.displayName }}</b></a> </div> } @if (this.event.resource.attendees?.length) { <div class="attendees"> @for (attendee of this.event.resource.attendees;track attendee.emailAddress.name) { <span class="attendee"> <mgt-person person-query="{{attendee.emailAddress.name}}"></mgt-person> </span> } </div> } @if (this.event.resource.bodyPreview?.includes('Join Microsoft Teams Meeting')) { <div class="online-meeting"> <img class="online-meeting-icon" src="https://img.icons8.com/color/48/000000/microsoft-teams.png" title="Online Meeting" /> <a class="online-meeting-link" href="{{ event.resource.onlineMeetingUrl }}"> Join Teams Meeting </a> </div> } </div> </div> } </div> }
Outre la recherche d’événements de calendrier à l’aide de l’API
search/query, Microsoft Graph fournit également uneeventsAPI qui peut également être utilisée pour rechercher des événements de calendrier. Recherchez lasearchCalendarEvents()fonction dans graph.service.ts.La
searchCalendarEvents()fonction crée des valeurs de date/heure de début et de fin utilisées pour définir la période de recherche. Il crée ensuite une URL qui peut être utilisée pour appeler leeventspoint de terminaison de Microsoft Graph et inclut lesqueryvariables de date/heure de début et de fin. Une requête GET est ensuite effectuée et les résultats sont retournés à l’appelant.async searchCalendarEvents(query:string) { if (!query) return []; const startDateTime = new Date(); const endDateTime = new Date(startDateTime.getTime() + (7 * 24 * 60 * 60 * 1000)); const url = `/me/events?startdatetime=${startDateTime.toISOString()}&enddatetime=${endDateTime.toISOString()}&$filter=contains(subject,'${query}')&orderby=start/dateTime`; const response = await Providers.globalProvider.graph.client.api(url).get(); return response.value; }Voici une répartition de l’URL créée :
- La
/me/eventspartie de l’URL est utilisée pour spécifier que les événements de l’utilisateur connecté doivent être récupérés. - Les
startdatetimeparamètres etenddatetimeles paramètres sont utilisés pour définir la période de recherche. Dans ce cas, la recherche retourne les événements qui commencent au cours des 7 prochains jours. - Le
$filterparamètre de requête est utilisé pour filtrer les résultats par la valeur (le nom de laquerysociété sélectionné à partir du datagrid dans ce cas). Lacontains()fonction est utilisée pour rechercher laqueryvaleur dans lasubjectpropriété de l’événement de calendrier. - L’analyseur
$orderbyde requête est utilisé pour classer les résultats par lastart/dateTimepropriété.
- La
Une fois la
urlrequête GET créée, une requête GET est envoyée à l’API Microsoft Graph à l’aide de la valeur eturlles résultats sont retournés à l’appelant.Comme pour les composants précédents, le composant événements de calendrier (fichier calendar-events.component.ts ) appelle
search()et affiche les résultats.override async search(query: string) { this.data = await this.graphService.searchCalendarEvents(query); }Remarque
Vous pouvez également effectuer des appels Microsoft Graph à partir d’une API personnalisée ou d’une application côté serveur. Consultez le tutoriel suivant pour voir un exemple d’appel d’une API Microsoft Graph à partir d’une fonction Azure.
Vous avez maintenant vu l’exemple d’utilisation de Microsoft Graph pour récupérer des fichiers, des conversations, des messages électroniques et des événements de calendrier. Les mêmes concepts peuvent également être appliqués à d’autres API Microsoft Graph. Par exemple, vous pouvez utiliser l’API utilisateurs de Microsoft Graph pour rechercher des utilisateurs dans votre organisation. Vous pouvez également utiliser l’API groupes Microsoft Graph pour rechercher des groupes dans votre organisation. Vous pouvez afficher la liste complète des API Microsoft Graph dans la documentation.