Archives des articles tagués twitter

Lors de ma dernière session de présentation à l’UGSF, et dans cet article sur la recherche SharePoint pour le marketing et la CRM, nous avions présenté plusieurs modes d’intégration possibles de la recherche SharePoint 2010 avec Twitter.
Je vais ici vous présenter de manière détaillée deux modes d’intégration et leurs implémentations respectives, mais avant, un petit rappel simple sur le fonctionnement de base du moteur de recherche de SharePoint.

L’indexation des sources de contenus

Il s’agit ici du mode de fonctionnement classique de SharePoint. Il est configurable depuis l’administration centrale :

Dans cet exemple, plusieurs sources de contenus sont définies :

  • Les sites SharePoint (C’est la moindre des choses !)
  • Un site Web
  • Une base de données métier (Ici une CRM)

En somme, à une fréquence définie (et configurable), le moteur de recherche SharePoint va lire l’ensemble de ces contenus (les crawler), les indexer (en extraire les informations, les formater…), puis les rendre accessibles au travers de ses écrans de recherche, par exemple ici une recherche sur un site Web :


Pour ce faire, SharePoint utilise des connecteurs paramétrables qui lui permettent d’accéder à différentes sources de données, notamment :

  • Sites SharePoint
  • Sites Web
  • Partages réseau
  • Dossiers publics Exchange
  • Applications métiers
  • Source personnalisée

Vous retrouvez ces options depuis le formulaire de création d’une nouvelle source de contenus :


On peut même développer ses propres connecteurs, qui seront alors accessibles depuis l’option « Custom Repository »… Mais alors pourquoi ne pas indexer directement Twitter avec un connecteur spécifique ?

  • D’abord parce que Twitter n’est pas en soit une source de données accessible pour l’indexation du fait de limitations techniques (nombre de requêtes…)
  • Surtout parceque votre index serait démesurément grand ! En général un index représente 30% de la taille du contenu original…

Il y a en réalité deux options viables pour intégrer ce type de média :

  • Par fédération
  • Par API

La fédération de moteurs de recherche

Cette première option consiste à utiliser le mécanisme de fédération présent dans le moteur de recherche SharePoint.

Pour être tout à fait complet, cette option est disponible nativement pour SharePoint Server (Standard et Enterprise) et par intégration de Search Server pour SharePoint Foundation.
En quelques mots, la fédération consiste à déléguer le travail de crawling et d’indexation à un moteur de recherche distant, puis à l’appeler pour récupérer les résultats lorsqu’une recherche est déclenchée par un utilisateur.

Voici un exemple de fédération du moteur de recherche Bing dans SharePoint :


Donc dans notre exemple, nous allons faire appeler le moteur de recherche de Twitter par celui de SharePoint.
Pour ce faire, naviguez jusqu’à l’écran de gestion du moteur de recherche SharePoint, sélectionnez « Federated location » dans le menu puis cliquez sur « New location » :

Renseignez les différents champs informatifs :

Puis renseignez ces valeurs dans les champs de la zone « Location information » :

  • Location type : OpenSearch 1.0/1.1
  • Query Template : http://search.twitter.com/search.atom?q={searchTerms}
  • « More results » link template : http://search.twitter.com/search?q={searchTerms}

Vous avez défini une fédération c’est bien… Mais afin de faire apparaître les résultats dans vos pages de recherche, vous allez devoir les configurer.

Pour ce faire, exécutez une recherche sur votre SharePoint, puis depuis la page de résultats, dans le menu « Actions du site », cliquez sur « Modifier la page » :

Cliquez dans une zone de la page sur « Ajouter un composant WebPart » :

Puis sélectionnez une Web Part « Résultats fédérés » dans la catégorie « Rechercher » :

Cliquez sur « Ajouter », puis utilisez la fontion « Modifier le composant WebPart » :

Dans la liste « Emplacement », sélectionnez « Twitter » puis cliquez sur « OK »

Enregistrez et publiez vos modifications (Menu Actions du site \ Publier ) :

Relancez une recherche et admirez le résultat 😉

A noter que le présentation des résultats (Layout, styles…) est personnalisable via XSL.

Comme vous l’avez constaté pendant la configuration, cette méthode repose sur le protocole OpenSearch, vous trouverez des informations détaillées et les dernières spécifications à cette adresse :

http://www.opensearch.org

D’autres moteurs sont accessibles au travers de ce protocole, et Microsoft propose en téléchargement les fichiers de configuration de plusieurs médias à cette adresse :

http://technet.microsoft.com/en-us/sharepoint/ff727944/

Une fois téléchargés, vous pouvez les importer depuis l’écran de gestion des fédérations en utilisant la fonction :

L’intégration applicative par API

Cette seconde option consiste à utiliser les API Search de Twitter pour effectuer les requêtes et afficher les résultats dans vos pages.

La manière « lourde »

La manière « lourde » consisterait à effectuer une intégration serveur complète entre SharePoint et Twitter (Identification via oAuth, utilisation d’une query de recherche, formatage des résultats via un template…). Cette option est tout à fait réalisable, et vous trouverez des exemples pratiques pour différentes plateformes et langages en consultant le SDK à cette adresse :
https://dev.twitter.com/docs/using-search

Bien que très souple, cette solution et aussi assez complexe et réservée aux développeurs. Je vous propose donc une solution alternative plus accessible.

La manière « légère »

Ce que je vous propose ici est blen plus léger, et consiste à intégrer dans vos pages un widget fourni par Twitter, et à le configurer pour afficher les résultats souhaités.
Les plus pointilleux me feront remarquer qu’il ne s’agira pas d’une recherche sur les tweets du passé, mais d’un filtre sur les messages en temps réel. C’est vrai, mais l’idée de l’usage de ce widget est justement d’obtenir un instantané des conversations en cours, pas d’obtenir un cliché du passé.

Cette méthode se décompose en 3 étapes :

  1. Obtenir et configurer le widget original Twitter
  2. Modifier le widget pour lui transférer les paramètres de recherche SharePoint
  3. Intégrer le widget modifié à vos pages de recherche SharePoint

1. Obtenir et configurer le widget original Twitter

Commencez par configurer votre widget depuis cette adresse :
https://twitter.com/about/resources/widgets/widget_search

Depuis cet écran, pensez surtout à personnaliser les couleurs des bordures et du texte afin qu’elles correspondent à la charte graphique de votre plateforme SharePoint :


Et ne vous occupez pas de la zone « Search query » pour l’instant, nous définirons plus tard sa valeur.

Une fois vos personnalisations réalisées, cliquez sur « Finish & Grab code », puis copiez le code généré.

Observons ce code :

On constate qu’il est composé de deux blocs :

  • La première ligne ne fait que charger dans la page le script « Widget.js » depuis les serveurs de Twitter.
  • Le reste du code crée une instance d’un objet « Widget » du namespace « TWTR » avec certains paramètres.

2. Modifier le widget pour lui transférer les paramètres de recherche SharePoint

Si vous observez vos pages de recherche SharePoint, vous constaterez que les paramètres de recherche sont transmis via l’URL sous cette forme :

http://monserveur/sites/search/Pages/results.aspx?k=MARECHERCHE

Voici donc une légère modification du script original, qui va simplement, au chargement de la page de résultats de recherche, lire la valeur « MARECHERCHE » du paramètre « k » dans l’URL, puis la passer à l’attribut « search » du widget :

Pour aller plus loin, vous pouvez aussi configurer le widget pour qu’il utilise des opérateurs de recherche avancés.

Consultez le SDK Twitter au besoin :
https://support.twitter.com/articles/71577

3. Intégrer le widget modifié à vos pages de recherche SharePoint

Maintenant que vous avez configuré et modifié votre widget, vous allez pouvoir l’intégrer à votre page de recherche.

Mais vu que je suis d’un naturel gentil, altruiste et généreux (oui pas tout le temps je sais ;-)), voici de quoi intégrer twitter plus rapidement…

J’ai simplement packagé le widget avec les modifications nécessaires pour qu’il puisse être importé directement dans vos pages de recherche SharePoint.

Commence  par télécharger ce fichier : Twitter Widget for SharePoint Search (DWP)
Il contient une Web Part déjà configurée avec tout le code nécessaire.

Vous n’avez plus qu’à ouvrir votre page de résultats de recherche puis passer en mode édition par le menu « Actions du site » :

Ouvrir le menu d’ajout d’une Web Part :

Importer le fichier précédemment téléchargé :

Cliquez sur télécharger puis sélectionnez la Web Part importée :

Sauvegardez et publiez vos modifications :

Et oh miracle ! Votre page de résultats de recherche SharePoint et Twitter fonctionne !

Bilan

La solution du fichier DWP est pratique pour tester le fonctionnement finalisé, mais vous devrez utiliser une autre méthode plus industrialisée pour passer en production. En quelques mots :

  1. Enregistrer le script JS dans un fichier dédié
  2. Publier ce fichier sur une URL accessible (SharePoint ou non), par exemple dans une bibliothèque SharePoint, le dossier « Layout »…
  3. Référencer ce script dans une « Content Editor Web Part » (CEWP) et la positionner sur la page de recherche (Déploiement par script…)
Si vous m’en faites la demande, je pourrai publier une procédure détaillée de mise en production à l’occasion.

J’espère que cet article vous a intéressé, n’hésitez pas à me solliciter si vous rencontrez des problèmes dans la mise en oeuvre de cette solution !

Notre présentation

Vous trouverez ci-dessous les supports de la présentation que j’ai eu l’honneur de donner lors de la dernière session du club UGSF chez Microsoft le 21 juin 2012.

Je profite de cet article pour remercier Pierre Tatot, tant pour son dynamisme que pour son aide précieuse durant la préparation et l’animation de cette session.

Compléments d’information

Modération des résultats de recherche

Lors de cette session, la question de la possibilité de modérer les résultats des moteurs de recherche fédérés a été posée. L’idée étant d’appliquer un filtrage sur les contenus similaire à celui défini par cette option sur Bing.com :

Si la fédération repose sur OpenSearch, il doit être possible d’utiliser un attribut « Adult » dans l’URL du service, par exemple pour Bing :

http://search.live.com/results.aspx?q={searchTerms}&count={itemsPerPage}&first={startItem}&mkt={language}&format=rss&FORM=SHAREF

Plus d’informations : http://msdn.microsoft.com/en-us/library/dd251083

Mais la meilleure solution à mon sens consiste, si des besoins de customization importants sont exigés, à utiliser l’API Bing Search en lieu et place d’OpenSearch comme solution d’intégration et de fédération. Comme vous le constaterez dans la documentation de l’API, une propriété explicite « Adult » permet de contrôler ce comportement :

Les autres propriétés offrent par ailleurs bon nombre d’autres options intéressantes, comme la localisation des résultats.

Plus d’informations : https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44

Licensing de Business Connectivity Services (BCS)

Lors de cette démonstration, nous avons utilisé les services BCS pour présenter les intégrations possibles grâce à BCS entre SharePoint et des applications distantes.
Côté licensing, et en résumé, voici les services disponibles dans chaque édition :
  • SharePoint Foundation : BCS + Page de profil (pour les résultats de recherche)
  • SharePoint Server Standard : SharePoint Foundation + Business Data Integration avec les Clients Office + Business Data Web Parts
  • SharePoint Server Enterprise : SharePoint Server Standard + Business Intelligence Center

Pour consulter le détail des services proposés par édition :

D’autres questions ? N’hésitez pas à me contacter !

A très bientôt pour la prochaîne session du club UGSF.