En Bref
J’ai ajouté deux nouveaux exemples de WebParts SharePoint Framework qui démontre l’utilisation du SDK JavaScript pour l’API « Unified Communication Web API » de Skype for Business. Ce SDK vous permet vous abonner au statut d’une personne, démarrer une conversation skype, des appels…
Les exemples :
Version longue
J’ai récemment eu l’occasion d’effectuer ma première contribution à PnP (au-delà de rapporter et aider à résoudre des problèmes). Dans ces deux nouveaux exemples je vous montre comment utiliser le SDK Skype UCWA pour vous abonner à et afficher le statut Skype d’un usager.
Ce statut Skype va se mettre à jour s’il change (ie : si l’utilisateur change son statut dans Skype ou se connecte/déconnecte).
Cette approche est meilleure que les approches précédentes que nous avions l’habitude d’utiliser dans SharePoint telles que l’intégration Office avec ActiveX ou le statut d’auteur de fichier dans SharePoint car :
- C’est multi-plateformes (pas besoin d’activeX, Internet Explorer ou de configuration de zones de sécurité)
- C’est indépendant d’une installation d’Office sur la machine ou du fait d’avoir Skype for business démarré
- Ça se met à jour si le statut change
- Il n’y a pas besoin de créer de fichier et cela peut être utilisé n’importe où sur la page
- (l’indicateur de présence d’auteur de fichier SharePoint communique directement avec le serveur Skype en arrière-plan et fournit à SharePoint le HTML à afficher, mais cela se fait uniquement pour les librairies de documents)
La UCWA
Cette API est un peu spéciale et différente des « API standards » (OAuth + REST). Les différences principales étant :
- Elle vous permet de vous abonner à certains objets du modèles (statut, conversations, flux audio/video…)
- L’authentification est un peu (trop) complexe
- Non standard et s’attend à ce que vous receviez un 403 afin d’obtenir l’adresse du fournisseur d’identité
- Le serveur de découverte agit comme un « relais » et l’API est segmentée en plusieurs ressources (au-delà des permissions) ce qui demande d’effectuer plusieurs cycles d’autorisation.
- N’est pas compatible OData (Microsoft nous a habitués à pouvoir utiliser OData sur ses APIs)
Toutes ces différences impactent les quelques SDK’s disponibles et le SDK JavaScript (celui utilisé dans l’exemple) est un peu « vieux jeu ». Je pense que ce serait bénéfique s’ils passaient un peu de temps pour :
- Passer d’une variable globale à un UMD
- Fournir les packages npm et non uniquement un bundle sur un CDN
- Fournir des définitions de types
- Fournir de meilleures informations de versions (+ semver)
- Permettre aux développeurs d’utiliser leurs propres librairies « d’auth » (comme helloJS ou msal) au lieu de l’implémentation qu’ils ont fournie dans le bundle.
Pour toutes ces raisons l’exemple charge le SDK par injection et n’inclue pas le script comme dépendance externe.
Pour terminer, la documentation est assez éparse, je vous suggère de corréler l’information, même si elle provient d’une source officielle car il semble qu’elle est loin d’être à jour. Voici quelques points d’entrée :
- https://msdn.microsoft.com/en-us/skype/ucwa/unifiedcommunicationswebapi2_0?f=255&MSPPError=-2147217396
- https://ucwa.skype.com/
- https://ucwa.skype.com/reference/WebSDK/modules/_s4b_sdk_d_.jcafe.html
Microsoft Teams vs Skype
Les API’s de Skype for business ne sont toujours pas disponibles via le Graph de Microsoft. Et Microsoft a déjà annoncé que Microsoft Teams sera la voie du futur pour les communication unifiées, la messagerie instantanée et bien plus. Cependant Skype for business serveur restera toujours l’infrastructure qui supportera tout cela (et fournira au moins certaines des APIs) pour au moins quelques années.