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.
5. Un bot dans un intranet
SharePoint, pourquoi faire?
Bot basique VS avancé, quelques scénarios…
«Quelle est la politique de vacances de l’entreprise? »
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 »
« Donne moi la liste de mes dernières requêtes à approuver »
Scénario intermédiaire aide à la recherche d’information
Scénario basique (trop) aide à la recherche d’information
« Quel est le menu de la cantine ? »
6. Bot Framework
Aperçu
• Bot ≠ IA, Bot = aiguilleur des discussions
• Une implémentation logique pour plusieurs canaux (Web, Chat,
Teams, Direct Line, etc.)
• « WebApp Bot » ou « FunctionApp 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 QnAmaker, LUIS, etc.
• Un bot tout seul ne sert à rien…
7. Bot Framework
Développer localement (Node.js)
• Bot framework emulator
• Débogage local et distant
• Visual Studio Code + Node JS
• ngrok (http tunneling) pour le débogage de bots distants
• Plein d’exemples pour démarrer!
https://github.com/Microsoft/BotBuilder/tree/master/Node/examples
8. Quelles problématiques
d’intégration?
• Bien que vous soyez déjà authentifié dans votre application (Teams, Office 365, etc), le
bot ne connaît pas cette information…
• Ex: impossible de récupérer le token d’accès courant et le transférer au bot avec
SPFx (même avec AadHttpClient…).
• Éviter l’authentification en mode« App Only » pour des raisons de sécurité évidentes.
• Authentification avecAzureAD + accès délégué nécessaire...
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, tout en gardant une
expérience utilisateur conviviale pour un ou plusieurs canaux?
La gestion de l’authentification, quelques challenges
techniques
9. Azure AD v1 vs v2 (aperçu)
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
10. 3 exemples
Authentification avec un bot
avec Azure AD
Démo #1: Flux implicite OAuth2 avec MSAL.js (MicrosoftAuthentication
Library)
Démo #2: Flux avec code d’autorisation OAuth2 avec ADAL
(Node.js)
Démo #3:Authentification AzureAD intégrée avec Bot
Service
13. Démo #1 - Flux implicite avec
MSAL
• Utilise le flux implicite OAuth2 avecAzureAD v2.
L’utilisateur doit s’identifier une première fois sous forme
de popup grâce à MSAL.
• Utilisation du « backchannel » pour passer le token
d’accès au bot qui le stocke pendant une durée
configurable (conversation seulement ou plus étendu).
• Le bot ne gère pas le processusd’authentification.La
logique est plus simple et concentréesur les dialogues.
• Le bot peut être implémenté avec uneAzure Function ou
WebApp
• Cette solution ne supporte qu’un seul canal (Web).
• Utilisation du contrôle « Microsoft Bot Framework Web
Chat » en React + extension SPFx pour l’interface avec
l’utilisateur (extension obligatoire) pour que la popup
MSALse ferme).
Ce qu’il faut
retenir
https://github.com/SharePoint/sp-dev-fx-
extensions/tree/master/samples/react-msal-bot
16. • Utilise le fluxavec coded’autorisationOAuth2 avecAzureAD v1.
L’utilisateurdoit s’identifierunepremièrefois sousformed’un nouvel
onglet grâce àADAL. L’URLpourl’authentification estconstruite
manuellement.
• Utilisation des cartes « Sign-In » à l’intérieurmêmede la
conservation avec le bot.
• Le bot gère le processusd’authentificationde bout en bout. La
solutionest plus compliquéeet demandeplusde configuration.
Utilisation du paramètre« state » pourpasser la session en cours
avec le Bot aprèsl’authentification.
• Contrôle totalsur la manièrede s’authentifier(grâce à l’URL)
• Cette solutionsupporteplusieurscanaux(Teams, Skype, etc.)
• Utilisation du contrôle « Microsoft Bot Framework Web Chat » en
React + extension SPFx pourl’interfaceavec l’utilisateur.
• WebApp seulement(pasd’Azure Function)
Ce qu’il faut
retenir
https://github.com/SharePoint/sp-dev-fx-
extensions/tree/master/samples/react-adal-bot
d’autorisation avec ADAL
(Node.js)
18. • Le Bot service se charge de tout le processus
d’authentification (gestion du token, etc.) pour
vous.
• SupporteAzureAD v1, v2 et une multitude de
fournisseurs d’identité (GitHub, Facebook, etc).
• Azure Function ou WebApp Bot
• Fonctionnement opaque
• Vient tout juste de sortir!
Ce qu’il faut
retenir
Démo #3 – Authentification
intégrée Azure Bot Service
19. Pour aller plus loin…
Utilisation des services cognitifs
Microsoft• Reconnaissanced’intentions avec LUIS
• Questions/Réponseavec le QnAmaker
• Analyse de texte pour détection de langue, extraction de
sentiments
• Correcteur orthographiques
Automatisation d’actions Adaptive
cards!• Couplées à MiccrosoftFlow +Azure Functions/LogicApps
20. Conclusion
Méthode
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. Pour être vraiment efficace, un bot doit connaître ses utilisateurs…
Conclusion
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 avoir
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 chaque canal?
• Dois-je faire appel à des services externes (Flow, Azure, etc.)? De quelle information
ai-je besoin?
Quelques questions fondamentales à se poser avant de vous lancer dans un projet de
bot dans votre intranet: