Avec la démocratisation de l'intelligence artificielle et notamment les services de reconnaissance du langage naturel offerts par Microsoft, intégrer un "chat bot" à l'intérieur même d'un portail SharePoint risque de devenir de plus en plus courant dans les prochaines années pour faciliter la recherche de contenu et l'automatisation de tâches pour vos utilisateurs.
Dans l'optique de ce nouvel usage, cette session démontre comment intégrer un bot dans un intranet SharePoint en utilisant le Bot Framework et le SharePoint Framework. Nous verrons comment communiquer avec des APIs protégées par Azure AD telles que Microsoft Graph ou autres et ainsi obtenir des résultats personnalisés via une expérience conviviale à l'intérieur même de votre portail.
4. Un bot dans un
intranet SharePoint,
pour quoi faire?
5. #MWCP2018
INTÉGRER UN BOT DANS SHAREPOINT
Scénario basique aide à la recherche d’information
(anonyme)
« Quel est le menu de la cantine ? »
Scénario intermédiaire aide à la recherche d’information
(personnalisée)
«Quelle est la politique de vacances de l’entreprise? »
« Donne moi la liste de mes dernières requêtes à approuver »
Scénario avancé aide à l’action (avec Flow par exemple)
« Je souhaite réserver une salle de conférence »
« Je souhaite signaler un congé maladie »
Objectif: Rendre les utilisateurs plus autonomes dans les tâches courantes
6. #MWCP2018
LE BOT SELON MICROSOFT: “LE BOT FRAMEWORK”
• Bot ≠ IA, Bot = aiguilleur des discussions
• Une implémentation logique pour plusieurs canaux (Web, Chat,
Teams, Direct Line, etc.)
• « Web App Bot » ou « Function App Bot »
• SDK pour C# ou Node JS (BotBuilder)
• Système de dialogue par défaut (routes + waterfall steps)
• Prise en compte de formats par défaut pour afficher l’information
(« cards »)
• Stockage d’informations par utilisateur/conversation = Bot State
Service
• SDK disponible sur GitHub pour QnA maker, LUIS, etc.
• Un bot tout seul ne sert à rien…
7. #MWCP2018
QUELLES PROBLÉMATIQUES D’INTÉGRATION?
Comment récupérer les informations propres à l’utilisateur (Microsoft Graph,
service web métier, etc.) pour améliorer l’interactivité et la pertinence d’un bot?
La gestion de l’authentification, quelques challenges techniques
• Bien que vous soyez déjà authentifié dans vos applications (Teams, SharePoint, etc.), le b
ot, lui, ne le sait pas…
• Dans le cas de données Office 365, authentification avec Azure AD + accès délégué néce
ssaire...
• Éviter l’authentification en mode« App Only » pour des raisons de sécurité évidentes.
8. #MWCP2018
QUELLES STRATÉGIES POSSIBLES?
Tout dépend des canaux que vous souhaitez utiliser pour votre bot:
SharePoint seulement
• Flux implicite OAuth2 avec MSAL.js (Microsoft Authentication
Library) et Azure AD v2
• SPFx AAD Token Provider (> 1.6.0)
SharePoint + autres canaux (Teams, Skype For Business, etc.)
• Flux avec code d’autorisation OAuth2 avec ADAL (Node.js) et
Azure AD v1
• AuthBot (C#) (AAD v1/v2)
• Authentification Azure AD intégrée avec Bot Service
…
9. #MWCP2018
AZURE AD V1 VS V2 (QUELQUES RAPPELS)
V1 V2
Portail d’enregistrement d’applications portal.azure.com apps.dev.microsoft.com
Support des plateformes Une application par plateforme
Un seule application pour toutes les
plateformes (Web, Client natif)
Types de comptes Comptes Azure AD uniquement Comptes Microsoft et Azure AD
Gestion des permissions
Permissions statiques définies au niveau
de l’application elle-même.
Permissions dynamiques pour l’accès aux
ressources (« scopes »)
Librairie clientes Javascript ADAL.js, ADAL (Node) MSAL.js, Pas de version Node.js
12. #MWCP2018
FLUX IMPLICITE AVEC MSAL, CE QU’IL FAUT RETENIR
https://github.com/SharePoint/sp-dev-fx-extension
s/tree/master/samples/react-msal-bot
• Utilisele fluximplicite OAuth2avec Azure ADv2.L’utilisateur doit
s’identifier unepremière foissous forme depopup grâce àMSAL.
• Utilisation du « backchannel» pour passer le token d’accès au bot qui le
stocke pendant unedurée configurable (conversation seulement ou plus
étendu).
• Lebot negère pas leprocessus d’authentification. Lalogique est plus
simple et concentrée surles dialogues.
• Lebot peut être implémenté avec uneAzure Function ou Web App
• Cette solution nesupportequ’unseulcanal(Web).
• Utilisation du contrôle « Microsoft Bot Framework Web Chat » en React
+extensionSPFx pour l’interface avec l’utilisateur (extensionobligatoire)
pour quelapopup MSAL seferme).
16. #MWCP2018
FLUX AVEC CODE D’AUTORISATION ET ADAL, CE QU’IL FAUT RETENIR
https://github.com/SharePoint/sp-dev-fx-extension
s/tree/master/samples/react-adal-bot
• Utilisele fluxavec code d’autorisation OAuth2avec Azure AD v1. L’utilisateur doit
s’identifier unepremière foissous forme d’un nouvel onglet grâce àADAL.
L’URL pour l’authentification est construite manuellement.
• Utilisation des cartes « Sign-In » àl’intérieur même dela conservation avec le
bot.
• Lebot gère le processus d’authentification de bout en bout.La solutionest plus
compliquée et demande plusde configuration. Utilisation du paramètre
« state » pourpasser la sessionen cours avec le Bot après l’authentification.
• Contrôle total surla manière de s’authentifier(grâce à l’URL). Àvous de
déterminer lafréquence de réauthentification (bot state andAAD token lifetime)
• Cette solution supporte plusieurscanaux(Teams, Skype, etc.)
• Utilisation du contrôle « Microsoft Bot Framework Web Chat » en React +
extensionSPFx pour l’interface avec l’utilisateur.
• Web App seulement (pas d’Azure Function)
https://www.youtube.com/watch?v=uFhQm5aQJlw
18. #MWCP2018
AUTHENTIFICATION INTÉGRÉE AZURE BOT SERVICE, CE QU’IL FAUT RETENIR
https://docs.microsoft.com/en-us/azure/bot-servic
e/bot-builder-tutorial-authentication?view=azure-
bot-service-3.0
• LeBot service secharge de tout leprocessus d’authentification
(gestion du token, etc.) pour vous.
• Supporte Azure AD v1, v2 et unemultitude de fournisseurs
d’identité (GitHub, Facebook, etc).
• Azure Function ou Web App Bot
• Fonctionnement opaque
• Vient tout justede sortir!
19. #MWCP2018
ET ENSUITE?
• Utilisation des services cognitifs Microsoft
• Reconnaissance d’intentions avec LUIS
• Questions/Réponse avec le QnA maker
• Analyse de texte pour détection de langue, extraction
de sentiments
• Correcteur orthographiques
• Etc.
• Automatisation d’actions Adaptive cards!
• Ex: couplées à Microsoft Flow + Azure
Functions/Logic Apps
20. #MWCP2018
RÉSUMÉ DES DIFFÉRENTES STRATÉGIES
Méthode
SPFx + AAD Token Provider
Très simple à mettre en place
SSO « Like »
Valide seulement pour SharePoint et
SPFx > 1.6.0
MSAL + Flux implicite
Logique du bot plus simple à maintenir
Librairie facile d’utilisation avec SPFx
Azure AD v2
Pas de SSO (popup systématique)
Expérience moins performante la
première connexion
Valide seulement pour un seul canal Web
Pas de version Node.js
ADAL.js (Node.js) +
Flux avec code d’autorisation
Approche valide pour plusieurs canaux
Authentification en un clique en mode Web
Contrôle total du flux (flexibilité)
Plus complexe à mettre en œuvre
au niveau du bot
Azure AD v1
Authentification intégrée du Bot Service
Peu de travail à faire au niveau du bot
Pas de gestion du flux à faire à la main
Pas éprouvé encore
Pas de maitrise sur les paramètres
et le flux d’authentification (opaque)
21. #MWCP2018
CONCLUSION
Pour être vraiment efficace, un bot doit connaître
ses utilisateurs…
Quelques questions fondamentales à se poser avant de vous lancer dans un projet de
bot pour votre intranet:
• Quel scénario cherche t-on à résoudre (recherche, automatisation d'action, etc.)?
• Est-ce qu’un bot est la bonne solution? Si oui:
• Quels seront les canaux utilisés?
• Quelles seront les ressources à accéder? De quelles permissions va-t-on a
voir besoin? Vont-elles évoluer au cours du temps (v1 vs v2)?
• Quelle sera l’expérience d’authentification pour chaque canal?
• Quel(s) format(s) pour les résultats? Quelle est la compatibilité pour chaq
ue canal?
• Dois-je faire appel à des services externes (Flow, Azure, etc.)? De quelle in
formation ai-je besoin?