Office Graph API et Cortana - Chapitre 1 : Introduction à L’Office Graph

 English version / Version anglaise

Preface

 

Cet article présente comment utiliser l’interface de programmation (API) d’Office Graph. Dans cette série de 3 articles, nous allons montrer comment, au sein d’une application pour mobile, intégrer l’Office Graph. Nous allons réaliser cet exemple dans une application Windows Phone 8.1, dite de type « Store » (et non en Silverlight). Nous allons montrer comment gérer l’authentification (avec ADAL), la consommation de son graphe d’entreprise par web services, ainsi que l’interface de programmation de Cortana, pour diriger notre application à la voix et en français !!

Vous pouvez TELECHARGER LE CODE SOURCE complet de cette App dans le fichier ZIP tout en bas de chaque chapitre.

Cet article est publié en vue des TechDays 2015, qui auront lieux du 10 au 12 Janvier 2015 au Palais des Congrés de Paris. Cette année j'aurais la chance de coanimer la session dédiée à Office Graph au côté d'Alexandre Cipriani et Stéphane Palluet. Venez nombreux à notre session pour découvrir cet exemple et bien plus encore. 

 

Chapitre 1 : Introduction à L’Office Graph (cet article)

Chapitre 2 : Comment faire des requêtes par code à l’Office Graph ?

Chapitre 3 : Intégration avec Cortana

 

Introduction

 

Si vous avez récemment suivi l’actualité autour d’Office 365, vous n’aurez probablement pas manqué la sortie d’une nouvelle fonctionnalité depuis quelques mois : Delve et l’Office Graph. Delve est une interface web, basée sur les principes de « machine learning », de « graphe social » ou encore de recherche sémantique. Elle permet d’être capable de restituer à l’utilisateur une visualisation de toute son activité professionnelle, et ce sous ses différentes formes. Par exemple, nous pouvons voir d’un coup d’œil tous les documents populaires autour de soi, les documents que nous avons récemment consulté, les documents modifiés ou créés ou consulter récemment par un ou plusieurs collègues, etc. etc. Le graphe social est intégré à la dimension humaine de l’organisation, on peut facilement identifier et prioriser les documents provenant de son réseau proche, comme son manager, son équipe, etc.

Ce tissu d’informations sociales est appelé l’Office Graph. L’Office Graph est la représentation informatique de tous les signaux sociaux autour de nous. Ces « signaux », sont envoyés par des applications lorsque différents types d’actions sont réalisées, comme la création, la modification, la consultation, etc. d’un document, d’une présentation, d’une vidéo, d’une discussion, etc.

 Il est également important de rappeler que ce système de datamining, n’est présent dans Office 365 que pour desservir  un meilleur service à l’utilisateur. Cela veut dire que l’Office Graph respecte pleinement la vie privée de l’utilisateur par de nombreux aspects :

  • on ne peut voir dans l’Office Graph que les informations auxquelles nous avons déjà accès. La sécurité y est pleinement implémentée, on ne peut voir que des informations qui nous ont été partagées au travers de sites SharePoint, OneDrive, Office Vidéo, Yammer, etc.
  • ce service n’est pas utilisé à des fins publicitaires
  • ce service s’inscrit pleinement dans les contraintes contractuelles d’Office 365 en termes de compliance & privacy

 

 A propos de Delve

 

Delve est la 1iere App à utiliser l’Office Graph. Elle est l’interface graphique permettant de consommer en mode web son graphe d’entreprise. Delve est disponible depuis le bandeau d’Apps Office 365 :

 

L’interface de Delve est très réussie, les informations sont clairement accessibles par un système de tuiles dynamiques permettant de pré-visualiser les documents, de voir le nombre de vues, d’identifier le site d’origine, etc. Delve peut nous afficher en quelques clics tous nos documents, toutes nos lectures, toutes les informations de nos collègues ou de notre réseau. Nous pouvons même rechercher en mode libre des termes au sein du graphe social.

 

 

 

 Office Graph

 

L’Office Graph dispose d’une interface de programmation qui permet à des applications tierces de venir communiquer avec lui. Ceci permet de réaliser des applications qui pourraient exploiter son potentiel.

On peut imaginer plusieurs types d’intégration, comme par exemple :

  • Afficher ou retrouver les derniers documents de l’utilisateur pour aider dans une application Intranet ou bureautique
  • Afficher de l’information « profilée » dans un site collaboratif, un site Intranet ou une application mobile
  • Afficher des informations de son manager ou de son équipe pour une application de gestion de projet au sein d’un espace projet
  • Interagir en envoyant des signaux depuis une application tiers
  • etc. etc.

Le potentiel de ce type d’interaction est énorme. On peut imaginer dans l’avenir une conception des espaces collaboratifs des grandes organisations qui vont savoir automatiquement se focaliser sur l’utilisateur et son expérience de travail.

La documentation officielle d’Office Graph est disponible sur MSDN à l’adresse suivante :

https://msdn.microsoft.com/en-us/office/office365/howto/query-Office-graph-using-gql-with-search-rest-api

L’Office Graph API est disponible aujourd’hui en version Preview et permet de :

  • Faire des requêtes sur le graph en utilisant le protocole REST (proche des méthodes existantes de la recherche SharePoint 2013)
  • Utiliser le GQL (Graph Query Language) pour interagir avec le graph et affiner les résultats

Courant 2015, les capacités de l’API vont être améliorées pour par exemple permettre d’alimenter le graph en signaux.

 

Comment interroger l’Office Graph ?

 

Pour interroger le graph, il suffit d’envoyer des requêtes HTTP à l’adresse « /_api/search/query »  sur votre tenant Office 365. Par exemple :

https://<tenant_address>/_api/search/query?Querytext='*'&SelectProperties='DocId'

Le web service va renvoyer, au format XML ou JSON, les résultats de votre requête.

En fait, l’Office Graph repose entièrement sur le service de recherche de SharePoint 2013 et ses web services. L’interface REST pour utiliser le moteur de recherche de SharePoint 2013 est documentée sur le site MSDN à l’adresse suivante :

https://msdn.microsoft.com/fr-fr/library/office/jj163876%28v=office.15%29.aspx

Les requêtes peuvent contenir plusieurs types de paramètres de recherche, comme par exemple :

Paramètre

Description

QueryText

Du texte libre de recherche.

 Par exemple :

Querytext='*'

QueryTemplate

Un modèle de requête avec des règles et des filtres prédéterminés.

 Par exemple :

QueryTemplate='(FileExtension%3Adoc%20OR%20FileExtension%3Adocx)'

Dans cet exemple la règle de filtre est (en version non url encodée) :

(FileExtension:doc OR FileExtension:docx)

SelectProperties

Les propriétés des objets que vous souhaitez voir retourner par la requête.

 Par exemple :

SelectProperties='Author,AuthorOwsUser,ContentClass'

SourceId

Permet de spécifier une source de résultat du moteur de recherche SharePoint.

 Par exemple pour ne cibler que la base des profils utilisateurs de SharePoint :

SourceId='b09a7990-05ea-4af9-81ef-edfab16c4e31'

RankingModelId

Un modèle de classement existant du moteur de recherche SharePoint (exemple : personnes, ou populaires, etc.)

 Par exemple :

RankingModelId='0c77ded8-c3ef-466d-929d-905670ea1d72'

SortList

Le modèle de tris des résultats

 Par exemple :

SortList='LastModifiedTime%3Adescending'

RowLimit

Le nombre de résultats à retourner

 Par exemple :

RowLimit=36

StartRow

Où démarrer les résultats (pour la pagination)

 Par exemple :

StartRow=0

EnableQueryRules

Pour utiliser ou non les query rules mis en place par l’administrateur SharePoint

ProcessBestBets

Pour utiliser ou non les best bets mis en place par l’administrateur SharePoint

ProcessPersonalFavorites

Pour utiliser ou non les favoris personnels utilisateurs

Etc.

 

 

En plus des traditionnels paramètres de recherche de SharePoint, la spécificité de l’Office Graph est que l’on peut interroger celui-ci grâce à un « protocole » d’acteur/action. Celui-ci permet simplement d’obtenir des résultats du graph pour tels ou tels acteurs (personnes) et pour certaines actions, comme la modification, la lecture, etc.

Il suffit d’ajouter le paramètre Properties dans la requête et de spécifier sa requête sur le graphe grâce à la nomenclature GraphQuery:…

Dans la requête, on peut désigner des acteurs, et appliquer des filtres désignant des actions relatifs à cet acteur, avec la syntaxe suivante :

ACTOR(<ActorId> [, filter])

Les paramètres sont construits avec la forme suivante :

  • L’acteur ID, qui peut être un identifiant entier désignant un utilisateur, ou ‘ME’ pour désigner l’utilisateur en cours ;
  • Des actions, qui sont des identifiants parmi une liste disponible et qui servent à affiner ses requêtes ;
  • Des opérateurs AND ou OR qui permettent de faire des conditions entre des actions et des acteurs

La liste des actions disponibles est la suivante :

Type d'action

Description

Identifiant

PersonalFeed

Vue personnelle de l’utilisateur comme sur la page d'accueildans Delve.

1021

Modified

Éléments que l'acteur a modifiés au cours des trois derniers mois.

1003

OrgColleague

Toute personne qui possède le même responsable que l'acteur.

1015

OrgDirect

Collaborateurs directs de l'acteur.

1014

OrgManager

Le manager de l'acteur.

1013

OrgSkipLevelManager

Collègues partageant le même manager

1016

WorkingWith

Personnes avec lesquelles l'acteur communique ou partage fréquemment.

1019

TrendingAround

Éléments les plus populaires des personnes avec lesquelles l'acteur communique régulièrement.

1020

Viewed

Éléments affichés par l'acteur au cours des trois derniers mois.

1001

WorkingWithPublic

La version publique de WorkingWith .

1033

 

Par exemple, pour afficher ses 10 derniers éléments depuis notre graph, nous pouvons faire la requête suivante :

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:ACTOR(ME)'

Cette requête va par défaut nous retourner le résultat XML suivant :

 

 

A partir de ce principe, on peut faire des requêtes avec plusieurs formes. Voici quelques exemples de requêtes sur l’Office Graph illustrant le principe des opérateurs et paramètres :

10 éléments que vous avez récemment modifiés :

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:ACTOR(ME\,action\:1003)'

10 éléments modifiés récemment par la personne ayant l’identifiant 2962:

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:ACTOR(2962\,action\:1003)'

10 éléments que vous avez récemment modifiés ou affichés

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:ACTOR(ME\, OR(action\:1001\,action\:1003))'

10 éléments que vous avez modifiés sur le 15 août 2014 :

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:ACTOR(ME\, AND(action\:1003\, time\:datetime(2014-08-15)))'

10 éléments que vous avez modifiés sur le 15 août 2014 :

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:OR(ACTOR(ME)\, ACTOR(2962))'

30 éléments que vous avez récemment modifiés triés par date de modification décroissante :

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:ACTOR(ME\,action\:1003)'&SortList='LastModifiedTime%3Adescending'&RowLimit=30

10 éléments que vous avez récemment affichés, et que l’utilisateur 2962 a récemment modifié :

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:AND(ACTOR(ME\, action\:1001)\, ACTOR(2962\, action\:1003))'

 

Exemple : retrouver les présentations PowerPoint au sein de son équipe

 

Prenons un exemple. Essayons de retrouver toutes les présentations qui ont été récemment modifiées par nos collègues. Nous pouvons faire la requête suivante pour trouver les membres de son équipe, en filtrant sur la requête la source de la base de profils SharePoint :

https://<tenant_address>/_api/search/query?Querytext='*'&Properties='GraphQuery:ACTOR(ME\,action\:1015)'&SourceId='b09a7990-05ea-4af9-81ef-edfab16c4e31'&SelectProperties='UserName,DocId'&RowLimit=36

Cette requête va retourner la liste des acteurs de votre équipe avec leurs identifiants (DocId), qui correspondent à leurs identifiants d’acteur au sein du graph :

 

A partir de cette liste d’acteurs, nous pouvons interroger le graphe pour retrouver les dernières présentations PowerPoint (ppt ou pptx) modifiées récemment par l’équipe :

https://<tenant_address>/_api/search/query? QueryTemplate='(FileExtension%3Adoc%20OR%20FileExtension%3Adocx)'&SelectProperties='Author,AuthorOwsUser,ContentClass,ContentTypeId,DefaultEncodingURL,DocId,DocumentPreviewMetadata,Edges,EditorOwsUser,FileExtension,FileType,HitHighlightedProperties,HitHighlightedSummary,LastModifiedTime,ListID,ListItemID,MediaDuration,OriginalPath,Path,PictureThumbnailURL,PrivacyIndicator,Rank,SPWebUrl,SecondaryFileExtension,ServerRedirectedPreviewURL,ServerRedirectedURL,SitePath,SiteTitle,Title,ViewCountLifetime,siteID,uniqueID,webID'&SortList='LastModifiedTime%3Adescending'&RowLimit=36&StartRow=0&Properties='GraphQuery:OR(ACTOR(149394910\,action\:1003)\, ACTOR(149394910\,action\:1003))'

Office Graph retourne la liste des fichiers PowerPoint éditées récemment par mon réseau de collègues :

 

 

 

Vous avez tout comprit à l’Office Graph et aux méthodes d’appel du graph par requêtes ? Parfait ! Maintenant vous êtes prêt pour comprendre comment utiliser l’Office Graph dans une application .Net, et plus particulièrement une application Windows Phone.

Rendez-vous dans le 2ieme chapitre de cet article pour lire la suite :

Chapitre 2 : Comment faire des requêtes par code à l’Office Graph ?

 

 

MyOfficeGraph-20150113.zip