API

SDK du Répertoire des applis

API (v 2.0, actuelle)

Comment ça marche

JSApi est la passerelle de communication du SDK du Répertoire des applis entre votre application et le tableau de bord Hootsuite. L'API permet aux développeurs d'applications d'appeler des fonctions qui envoient les événements vers le tableau de bord Hootsuite et de recevoir les notifications d'événements spécifiques au tableau de bord Hootsuite au sein de l'application.

Les interactions entre Hootsuite et votre application sont facilitées par JSApi. La bibliothèque JavaScript du SDK, hsp.js, fournit des fonctionnalités spécifiques dans le tableau de bord Hootsuite. hsp.js permet également d'initialiser et d'enregistrer votre application pour qu'elle reçoive des événements depuis le tableau de bord Hootsuite.

Remarque : veuillez vous assurer que votre serveur autorise les requêtes POST.

Configuration

Vous devez disposer de l'élément suivant pour utiliser l'API JS :

  • Bibliothèque JS : la bibliothèque hsp.js permet une communication bidirectionnelle entre votre appli et le tableau de bord Hootsuite. Ajoutez ce fichier dans la page principale de votre appli :

https://d2l6uygi1pgnys.cloudfront.net/jsapi/2-0/hsp.js

Ainsi, la référence à ce fichier dans votre page principale ressemblerait à ceci :

<script src="https://d2l6uygi1pgnys.cloudfront.net/jsapi/2-0/hsp.js"></script>

Fonctions, événements et rappels d'API

La communication de votre appli vers le tableau de bord Hootsuite se fait via les fonctions disponibles dans hsp.js.
 
La communication du tableau de bord Hootsuite vers votre appli passe par les Evénements. Les Evénements pour lesquels votre appli souhaite recevoir des notifications sont enregistrés avec des appels à la fonction hsp.bind() qui indique l' Evénement en question et la fonction de callback (rappel) que votre appli exécutera lorsque l' Evénement sera déclenché.

Fonctions

  • init : initialise l'API JS
  • bind : enregistre un événement du tableau de bord Hootsuite devant être géré par l'appli et le gestionnaire d'événement associé
  • getMemberInfo : utilisé conjointement à d'autres méthodes et rappels d'attribution
  • saveData : utilisé avec getData pour mémoriser les paramètres de l'utilisateur d'une session à une autre
  • getData : utilisé avec saveData pour mémoriser les paramètres de l'utilisateur d'une session à une autre
  • clearStatusMessage : supprime tous les messages de statut actuellement visibles
  • Composer un message : ouvre la boîte de dialogue Partager sur les réseaux sociaux
  • Retweet : lance la boîte de dialogue Retweeter
  • attachFileToMessage - Sends attachments to the compose box
  • customUserInfo : ouvre une fenêtre pop-up contenant les informations sur l'utilisateur
  • getTwitterAccounts : obtient une liste de tous les profils Twitter de l'utilisateur connecté
  • showCustomPopup : affiche une boîte de dialogue pop-up modale contenant une iFrame avec du contenu spécifique à l'appli
  • closeCustomPopup : ferme la boîte de dialogue pop-up modale
  • showFollowDialog : ouvre une boîte de dialogue pour s'abonner ou se désabonner d'un compte Twitter
  • showImagePreview : affiche une image dans une fenêtre pop-up
  • showStatusMessage : affiche une notification
  • showUser : ouvre une pop-up d'information sur l'utilisateur
  • updatePlacementSubtitle : met à jour le sous-titre du flux de l'appli
  • assignItem : attribue du contenu sous forme de texte à un utilisateur Hootsuite
  • resolveitem : élément résolu dans le flux d'application

Événements

  • closepopup : se déclenche lorsqu'une pop-up personnalisée, ouverte par votre flux d'application, est fermée
  • dropuser : se déclenche lorsqu'un utilisateur fait un glisser &amp; déposer avec un avatar de compte Twitter depuis le tableau de bord Hootsuite vers votre flux d'application
  • Rafraîchir : se déclenche lorsque la colonne de l'appli est actualisée, soit par l'utilisateur au sein du flux, soit lors de l'actualisation du tableau de bord
  • sendtoapp - Registering for this event will cause users to see a menu item reading Send to <app stream>… in Twitter, Facebook and LinkedIn stream message menus. This event is fired when users click on the menu item
  • sendcommenttoapp : en s'inscrivant à cet événement, les utilisateurs enverront un commentaire individuel Facebook (sans les réponses au commentaire) vers votre appli
  • sendcomposedmsgtoapp : ajoute un plugin d'application au sélecteur de profil de réseau social natif de Hootsuite. Les utilisateurs peuvent envoyer des messages directement au plugin à partir de la zone de composition de message dans Hootsuite
  • sendprofiletoapp : en s'inscrivant à cet événement, les utilisateurs verront un élément de menu dans les menus de profils sur Twitter, Facebook, LinkedIn et Google+. Cet événement se déclenche lorsque les utilisateurs cliquent sur l'élément de menu.
  • sendassignmentupdates : l'inscription à cet événement permet à une appli de recevoir les mises à jour qui lui sont attribuées

Callback (rappel)

Fonctions d'API

Cette section décrit les différentes signatures des fonctions attendues et les fonctions disponibles.

hsp.init(params)

Lance l'API JS et charge les fichiers CSS de thème.

params: objet :

  • Sous-titre : (chaîne, facultatif)
  • Sous-titre de votre appli, s'affiche dans le titre du flux.
  • callBack: (fonction, facultatif)
     Init envoie un message d'erreur à la fonction callBack à l'issue de l'initialisation. Le message est : Pas d'erreur, si l'initialisation est réussie.
  • sendToAppDisableList: spécifie sous quels réseaux sociaux le plugin sendtoapp ne doit pas s'afficher ('facebook', 'twitter', etc)
  • sendProfileToAppDisableList: spécifie sous quels réseaux sociaux le plugin sendprofiletoapp ne doit pas s'afficher ('facebook', 'twitter', etc)

Par exemple :

hsp.init({ callBack: function( message ){ console.log('Error: ' + message); useTheme: true,sendToAppDisableList: ['facebook'],sendProfileToAppDisableList: ['twitter'],});

hsp.bind(eventName, callback)

Inscrit un gestionnaire d'événement pour un événement particulier.

eventName: (string)

Nom de l'événement à gérer, peut-être l'un des noms suivants :

  • closepopup : se déclenche lorsqu'une pop-up personnalisée ouverte par votre flux d'application est fermée
  • dropuser : se déclenche lorsqu'un utilisateur fait un glisser-déposer avec un avatar de compte Twitter depuis le tableau de bord Hootsuite vers votre flux d'application
  • Rafraîchir : se déclenche lorsque la colonne de l'appli est actualisée, soit par l'utilisateur au sein du flux, soit lors de l'actualisation du tableau de bord
  • sendtoapp : lors de l'inscription à cet événement, les utilisateurs verront un élément de menu intitulé Send to <app stream>... dans les menus de messages des flux de Twitter et Facebook. Cet événement se déclenche lorsque les utilisateurs cliquent sur l'élément de menu.

callback: (fonction)

Fonction permettant de gérer les rappels, les paramètres de la fonction sont déterminés par l'événement. Consultez la section des événements pour plus de détails sur les formats attendus de rappel.

Par exemple :

hsp.bind('refresh', function () { // code here});

Comme indiqué dans la partie Bonnes pratiques partie, il est logique de supprimer le rechargement du flux pendant que l'utilisateur interagit avec elle (en postant des messages, des détails étendus, ou éventuellement faire défiler la place loin du haut par exemple). Une telle approche pourrait ressembler à quelque chose comme ça :

hsp.bind('refresh', function () { // collect any text the user has entered into a comment entry box $(&quot;.hs_commentEntry textarea&quot;).each(function () { comments += $(this).val(); }); // comment entry boxes are empty and user has not scrolled down more than 15px if (comments === '' &amp;&amp; $(window).scrollTop() &lt; 15) { // code here }});

Nous vous déconseillons fortement d'utiliser window.location.reload(). Une solution plus appropriée serait de rapidement vérifier les nouveaux messages en utilisant AJAX et d'injecter uniquement les nouveaux messages dans le DOM tout en laissant les messages existants intacts.

hsp.getMemberInfo(function(info)

Cette méthode doit être utilisée conjointement aux autres méthodes et rappels d'attribution (assignItem, resolveItem, requête d'attribution d'événement). Une attribution pouvant être affectée à une équipe ou à un collaborateur, vous devez indiquer à votre appli de quelles équipes votre utilisateur fait partie. Pour cela, utilisez getMemberInfo.

Nous vous conseillons d'appeler cette méthode après hsp.init.

hsp.getMemberInfo(function(info){// put code here});info object format:{&quot;userId&quot;:5339913,&quot;teamIds&quot;:[151906,154887]}

Conserver les informations sur l'utilisateur

Les méthodes hsp.saveData et hsp.getData sont destinées à être utilisées ensemble afin de conserver les paramètres d'un utilisateur d'une session à l'autre (par ex : jetons de l'utilisateur, paramètres uniques d'un flux et filtres définis par l'utilisateur dans l'appli). Les méthodes doivent être invoquées pour chaque flux et dépendent du PID.

Les données peuvent être enregistrées sous n'importe quel format de chaîne.

hsp.saveData(function)

hsp.saveData(data, callback); // Enregistre les données dans le flux de l'appli du membre. Possibilité d'ajouter les données enregistrées dans la fonction de rappel pour que le flux de l'appli le vérifie
hsp.getData(callback); //Récupère les données enregistrées dans le flux de l'appli du membre

hsp.saveData({name: 'My Photo Stream',type:'steam',uid: 123456,token: '1a2b3c4d5e6f7g8h9i0j'},function(data){console.log('saved', data);});

hsp.getData(function(data)

{console.log('App gets data', data);});

hsp.clearStatusMessage()

Supprime tous les messages de statut actuellement visibles.

hsp.composeMessage(message, params)

Ouvre la boîte de dialogue Partager sur les réseaux sociaux dans le tableau de bord Hootsuite.

Si votre publication contient une image, pensez à intégrer la méthode hsp.attachFiletoMessage .

Message : (string)

Les règles de messages sur Twitter s'appliquent, par ex : pour écrire un message privé à @Hootsuite, il faudrait écrire d hootsuite <your message here>

params: (objet, facultatif):

  • shortenLinks: bool, facultatif
     Raccourcit tous les liens présents dans les messages avec le réducteur d'URL par défaut de l'utilisateur (ow.ly / ht.ly / ou une url personnalisée). Prend la valeur false par défaut.
  • timestamp: bool OU int, facultatif
     Ouvre le planificateur et y inscrit l'horodatage (au format GMT, en secondes). Si la valeur true est transmise, le planificateur s'ouvrira sans heure par défaut. Prend la valeur false par défaut. L'heure est spécifiée en secondes, par ex : {scheduleTimestamp: 1460520580}.
  • twitterReplyToId: chaîne, facultatif
     Rédige un nouveau tweet en réponse à un tweet existant. Si un identifiant de chaîne valide est transmis pour un tweet existant, alors l'outil de composition traitera le nouveau message comme faisant partie de la conversation. Remarque : le message doit contenir un pseudo Twitter valide et le symbole &quot;@&quot;. Par ex : @hootsuite Voici ma réponse !

Par exemple :

hsp.composeMessage( 'message text', { shortenLinks: true } );

hsp.retweet(id, screenName)

Ouvre le processus de boîte de dialogue de retweet dans le tableau de bord Hootsuite pour le tweet identifié qui doit être retweeté par le pseudo screenName.

id: (string)

L'identifiant id_str sur Twitter du tweet qui doit être retweeté

screen_name: (chaîne, facultatif)

Le pseudo screen_name sur Twitter à partir duquel vous souhaitez retweeter

Par exemple :

hsp.retweet( '369937169529708544', 'Hootsuite' );

hsp.attachFiletoMessage

Envoie des pièces jointes dans la boîte de dialogue Partager sur les réseaux sociaux dans le tableau de bord Hootsuite. Fichiers limités à 5 Mo.

data: (objet JSON)

  • url:  (chaîne, requis) 
  • nom : (chaîne, requis)
  • extension : (chaîne, requis)
  • timestamp: int ou chaîne, heure actuelle en secondes, requis
  • jeton : (chaîne, requis)
    • user_id : chaîne, utilisateur actuel, peut être récupéré à l'aide d'un paramètre de l'URL, requis
    • timestamp: chaîne, identique au code temporel précédent, requis
    • URL : chaîne, identique à l'URL précédente, requis
    • secret : chaîne, vous le trouverez dans la section de l'appli intitulée Portail développeurs

Supported File Types:

  • Images : jpg, jpeg, gif, png
  • Documents : doc, docx, pdf, xls, xlsx, ppt, pptx, odt, ods, odp, txt, rtf, csv, psd, psb, ai, eps, fla, mp3

Par exemple :

hsp.attachFileToMessage ({url: 'http://abc.com/abc.jpg',name: 'abc',extension: 'jpg',timestamp: 1434583080,token: SHA512(user_id + timestamp + url + secret)});

hsp.customUserInfo(data)

Ouvre une fenêtre pop-up contenant les informations sur l'utilisateur.

data: (objet JSON)

Par exemple :

var data = { &quot;fullName&quot;: &quot;David Chan&quot;, &quot;screenName&quot;: &quot;@chandavid&quot;, &quot;avatar&quot;: &quot;https://d1cmhiswqj5a7e.cloudfront.net/http%3A%2F%2Fplacehold.it%2F30x30%2F444&quot;, &quot;profileUrl&quot;: &quot;https://twitter.com/chandavid&quot;, &quot;userLocation&quot;: &quot;Vancouver, BC&quot;, &quot;bio&quot;: &quot;JavaScript/web/martini developer. Working on @Hootsuite. Making by breaking.&quot;, &quot;extra&quot;: [ {&quot;label&quot;: &quot;Age&quot;, &quot;value&quot;: &quot;Unknown&quot;}, {&quot;label&quot;: &quot;Gender&quot;, &quot;value&quot;: &quot;Male&quot;} ], &quot;links&quot;: [ {&quot;label&quot;: &quot;Hootsuite&quot;, &quot;url&quot;: &quot;https://hootsuite.com&quot;}, {&quot;label&quot;: &quot;Blog&quot;, &quot;url&quot;: &quot;https://blog.hootsuite.com&quot;} ]};

hsp.showCustomPopup(src, title, width, height)

Affiche une fenêtre pop-up modale contenant une iFrame avec du contenu de l'URL spécifiée. Lorsque la fenêtre est fermée, l'événement closePopUp() se déclenche.

src: (string)

URL du contenu à afficher dans la fenêtre pop-up

titre : (string)

Le titre affiché dans la fenêtre pop-up

Largeur : (int)

Largeur en pixels de la fenêtre pop-up. La largeur doit respecter les contraintes suivantes :

  • Si elle n'est pas spécifiée, la valeur de largeur par défaut est de 640 pixels
  • Largeur minimum : 300 pixels
  • Largeur maximum : 900 pixels

Hauteur : (int)

Hauteur en pixels de la fenêtre pop-up. La hauteur doit respecter les contraintes suivantes :

  • Si elle n'est pas spécifiée, la valeur de hauteur par défaut est de 445 pixels
  • Hauteur minimum : 225 pixels
  • Hauteur maximum : 500 pixels

Par exemple :

hsp.showStatusMessage('Done!', 'success') ;

Important :

Veuillez ne pas initialiser de nouveau la fonction hsp au sein de la pop-up personnalisée. Votre pop-up ne doit pas utiliser d'autres fonctions hsp que la fonction closeCustomPopup(apiKey, pid).

If your popup and app stream/plugin are in the same domain, it is recommended that your popup uses the following javascript function to communicate back to your stream/plugin and run the hsp function: window.parent.frames[apiKey_pid].hsp.some_function()

Remarque : les fonctions hsp qui lient les événements ne sont pas disponibles depuis la fenêtre pop-up personnalisée.

hsp.closeCustomPopup(apiKey, pid)

Ferme la fenêtre pop-up modale.

Remarque : assurez-vous que la page iFrame de la fenêtre pop-up personnalisée et la page de flux d'application partagent le même domaine. Il n'est pas nécessaire (et pas souhaitable) d'appeler de nouveau la fonction hsp.init() dans la page iFrame, incluez simplement hsp.js et appelez hsp.closeCustomPopup(apiKey, pid). Vous pouvez utiliser JavaScript pour communiquer entre la fenêtre pop-up et le flux comme ceci :

window.parent.frames[&quot;<%= apiKey %>_<%= pid %>&quot;].location.reload();

Clé API : (string)

La clé API de votre application

pid: (string)

Identifiant de placement (pid) associé à chaque installation unique de flux d'application (ou de plug-in). Vous pouvez obtenir le pid de chaque flux d'application depuis la requête URL obtenue par votre serveur. Par exemple :

https://demo.ca/stream.html?lang=en&amp;theme=blue_steel&amp;timezone=-25200&amp;pid=60956&amp;uid=136

hsp.showImagePreview(src, externalUrl)

Affiche une image dans une fenêtre pop-up qui peut éventuellement rediriger vers une URL externe.

src: (string)

URL de l'image

externalURL: (string)

L'URL à ouvrir si l'utilisateur clique sur l'image

hsp.showStatusMessage(message, type)

Affiche une notification en haut et au centre du tableau de bord Hootsuite.

Message : (string)

Doit être bref, 70 caractères maximum.

type: (chaîne)

Peut-être l'un des types suivants :

  • Info : fond bleu
  • Erreur : fond rouge
  • Avertissement : fond jaune
  • Opération réussie : fond vert

hsp.updatePlacementSubtitle(name)

Met à jour le sous-titre du flux de l'application.

Remarque : le récepteur d'applis doit être configuré (voir plus haut).

nom (chaîne)

35 caractères maximum

hsp.showUser(twitterHandle)

Ouvre une pop-up d'informations sur l'utilisateur pour le pseudo Twitter spécifié.

twitterHandle: (string)

Pseudo Twitter

Par exemple :

hsp.showUser('hootsuite_help');

showUser.f203dc7a

hsp.showFollowDialog(twitterHandle, isFollow)

Ouvre une boîte de dialogue pour s'abonner ou se désabonner d'un compte Twitter.

twitterHandle: (string)

Pseudo Twitter

isFollow: (chaîne booléenne)

&quot;true&quot; pour s'abonner, &quot;false&quot; pour se désabonner.

Par exemple :

hsp.showFollowDialog('hootsuite_help', 'true');

showFollowDialog.ff5cb783

hsp.getTwitterAccounts(callback)

Obtient une liste de tous les profils Twitter (noms d'utilisateur) que l'utilisateur connecté a ajoutés à son compte Hootsuite.

callback: (fonction)

Fonction qui accepte les chaînes de tableau

Par exemple :

// this would log: [&quot;twitteruser_123&quot;, &quot;twitter_user_abcd&quot;]hsp.getTwitterAccounts(console.log);

hsp.assignItem(item)

Attribue un élément depuis le flux d'application. L'élément paramètre est un objet javascript qui doit contenir toutes les informations nécessaires de l'élément devant être attribué. L'URL de rappel de l'API, que l'on peut trouver dans les paramètres de l'appli, dans la section Portail développeurs doit être incluse pour que la fonction marche.

data: (objet JSON)

  • messageID: chaîne, l'identifiant de l'élément, requis
  • messageAuthor: (chaîne, requis)
  • messageAuthorAvatar: (chaîne, requis)
  • Message : (chaîne, requis)
  • timestamp: int ou chaîne, heure actuelle en secondes, facultatif

Par exemple :

var data = { &quot;messageId&quot;: &quot;123456&quot;, //required, ID of the item to be assigned &quot;messageAuthor&quot;: &quot;Joe&quot;, //required &quot;messageAuthorAvatar&quot;: &quot;https://www.somesite.com/useravatar/123.png&quot;, //required. Do not include query strings &quot;message&quot;: &quot;Hi, I'm having an issue with my account&quot;, //required &quot;timestamp&quot;: &quot;1431023368&quot; //Unix Timestamp format. Optional, but recommended}

Lorsqu'une attribution est déclenchée ou mise à jour, l'appli doit afficher le CSS approprié (reportez-vous à la section modèles pour retrouver les styles).

hsp.resolveItem(item)

Résout un élément depuis le flux de l'application.

Anatomie :

{ assignmentId: &quot;654321&quot; //required, ID of the assignment in Hootsuite dashboard from both callbacks}

Événements de l'API

Cette section décrit les différents événements disponibles et les signatures des fonctions de gestion des événements attendues accessibles via la fonction hsp.bind().

refresh()

Se déclenche lorsque la colonne de l'appli est actualisée, soit par l'utilisateur au sein du flux, soit lors de l'actualisation du tableau de bord.

Format de rappel : une fonction sans paramètres

Par exemple :

function refreshHandler () { }

Remarque : Nous vous déconseillons fortement d'utiliser window.location.reload(). Une solution plus appropriée serait de rapidement vérifier les nouveaux messages en utilisant AJAX et d'injecter uniquement les nouveaux messages dans le DOM tout en laissant les messages existants intacts.

dropuser()

 : se déclenche lorsqu'un utilisateur fait un glisser-déposer avec un avatar de compte Twitter depuis le tableau de bord Hootsuite vers votre flux d'application.

Format de rappel : une fonction contenant deux paramètres : le pseudo Twitter de l'utilisateur et l'identifiant unique du tweet qui a été glissé par l'utilisateur

Par exemple :

function dropUserHandler ( username, tweetId ) { // ...}

sendcomposedmsgtoapp()

Ajoute un plugin d'application au sélecteur de réseau social natif de Hootsuite. Les utilisateurs peuvent envoyer des messages directement au plugin à partir de la zone de composition de message dans Hootsuite

Remarque : vous devez contacter notre équipe de gestion du répertoire des applis pour autoriser la liaison de cet événement pour votre plugin d'application

Format de rappel : un objet javascript contenant les données du message

Structure des données de l'objet du message :

Message: (objet)Texte: (chaîne)

Par exemple :

function sendComposedMsgToAppHandler (message) { // ...}

closepopup()

Se déclenche lorsqu'une pop-up personnalisée, ouverte par votre flux d'application, est fermée

Format de rappel : une fonction sans paramètres

Par exemple :

function closePopupHandler () { // ...}

sendtoapp()

Registering for this event will cause users to see a menu item reading Send to <app stream>… in Twitter and Facebook stream message menus. This event is fired when users click on the menu item. 

Si vous souhaitez limiter les réseaux sociaux sous lesquels le plugin s'affiche, reportez-vous à la section hsp.init.

Format de rappel : un objet javascript contenant les données du message

Structure des données de l'objet du message :

Twitter

Message: (object) post: (object) network: (string) href: (string) url to the original post id: (string) external post id datetime: (string) iso 8601 datetime format source: (string) e.g. Hootsuite content: (object) body: (string) bodyhtml: (string) user: (object) userid: (string) username: (string) conversations: (array) id: (int/string) uid: (int) name: (string) datetime: (string) text: (string) source: (string) twitter only retweetcount: (string) twitter only geo: (string) twitter only attachments: (array) items: (array) target: (string) url to the resource page originurl: (string) url to the actual resource thumbnailsrc: (string) url to the thumbnail title: (string) type: (string) link | video | photoalbum | photo &quot;favoritecount&quot;:10}Profile: (object) networks: (string) created_at (string) description (string) followers_count (int) friends_count (int) id (string) id_str (string) lang (string) listed_count (int) location (string) name (string) network (string) profile_image_url (string) profile_image_url_https (string) screen_name (string) statuses_count (int) time_zone (string) url (string) utc_offset (int) verified (boolean) &quot;counts&quot;: { &quot;likes&quot;: 19, &quot;shares&quot;: 1, &quot;replies&quot;: 1

Facebook

Message: (object) post: (object) network: (string) href: (string) url to the original post id: (string) external post id datetime: (string) iso 8601 datetime format source: (string) e.g. Hootsuite content: (object) body: (string) bodyhtml: (string) user: (object) userid: (string) username: (string) conversations: (array) id: (int/string) uid: (int) name: (string) datetime: (string) text: (string) source: (string) twitter only retweetcount: (string) twitter only geo: (string) twitter only attachments: (array) items: (array) target: (string) url to the resource page originurl: (string) url to the actual resource thumbnailsrc: (string) url to the thumbnail title: (string) type: (string) link | video | photoalbum | photoProfile: (object) networks: (string) created_at (string) description (string) followers_count (int) friends_count (int) id (string) id_str (string) lang (string) listed_count (int) location (string) id: name: concatedName: name (string) picture (string) website (string)

 

Exemple d'objet de message :

{ &quot;post&quot;: { &quot;network&quot;: &quot;twitter&quot;, &quot;href&quot;: &quot;https://twitter.com/hootsuite/status/1000000&quot;, &quot;id&quot;: &quot;10000000000000000&quot;, &quot;datetime&quot;: &quot;2015-05-07T17:15:54.000Z&quot;, &quot;source&quot;: &quot;Hootsuite&quot;, &quot;counts&quot;: { &quot;likes&quot;: 16, &quot;shares&quot;: 9, &quot;replies&quot;: null }, &quot;content&quot;: { &quot;body&quot;: &quot;5 minutes is all you need to start a conversation: http://t.co/LO0uGuip7q Learn from our #LightningTalks http://t.co/8tplqYoZM1&quot;, &quot;bodyhtml&quot;: &quot;5 minutes is all you need to start a conversation: http://t.co/LO0uGuip7q Learn from our #LightningTalks http://t.co/8tplqYoZM1&quot; }, &quot;user&quot;: { &quot;userid&quot;: 100000000, &quot;username&quot;: &quot;hootsuite&quot; }, &quot;attachments&quot;: [ { &quot;type&quot;: &quot;image&quot;, &quot;url&quot;: &quot;https://pbs.twimg.com/media/CEa01uPWMAE_OwD.jpg&quot;, &quot;title&quot;: &quot;&quot;, &quot;items&quot;: { &quot;target&quot;: &quot;https://pbs.twimg.com/media/CEa01uPWMAE_OwD.jpg&quot; } } ], &quot;conversation&quot;: [] }, &quot;profile&quot;: { &quot;network&quot;: &quot;TWITTER&quot;, &quot;created_at&quot;: &quot;Fri Oct 31 22:26:54 +0000 2008&quot;, &quot;description&quot;: &quot;Social media news and tips from the world’s most widely used social relationship platform. Sign up for free: http://t.co/Zmrb0hY23s Support: @Hootsuite_Help&quot;, &quot;followers_count&quot;: 6754899, &quot;friends_count&quot;: 1594873, &quot;id&quot;: &quot;100000000&quot;, &quot;id_str&quot;: &quot;100000000&quot;, &quot;lang&quot;: &quot;en&quot;, &quot;listed_count&quot;: 42070, &quot;location&quot;: &quot;Vancouver, Canada&quot;, &quot;name&quot;: &quot;Hootsuite&quot;, &quot;profile_image_url&quot;: &quot;http://pbs.twimg.com/profile_images/595315902276468736/6KYlfmqu_normal.jpg&quot;, &quot;profile_image_url_https&quot;: &quot;https://pbs.twimg.com/profile_images/595315902276468736/6KYlfmqu_normal.jpg&quot;, &quot;screen_name&quot;: &quot;hootsuite&quot;, &quot;statuses_count&quot;: 20947, &quot;time_zone&quot;: &quot;Pacific Time (US &amp; Canada)&quot;, &quot;url&quot;: &quot;http://t.co/3Xvuxw2JEG&quot;, &quot;utc_offset&quot;: -25200, &quot;verified&quot;: true }}

Par exemple :

function sendToAppHandler ( message ) { // ...}

Flux de réseaux sociaux pris en charge : voici les flux distincts de chaque réseau social dont les éléments des messages peuvent être déclenchés.

Pris en charge

Twitter : Accueil, Mentions, Retweets, Abonnés, Listes, Favoris, Mes tweets, Recherche, Boîte de réception, Messages envoyés, Mot-clé (Enregistrer comme flux)
Facebook : Journal, Page, Recherche

sendcommenttoapp()

En s'inscrivant à cet événement, les utilisateurs enverront un commentaire individuel Facebook (sans les réponses au commentaire) vers votre appli

Format de rappel : un objet javascript contenant les données du message

Structure des données de l'objet du message :

username: (string)useravatar: (string) url to imageuserid: (string)commentid: (string)postid: (string)postlink: (string) url to postlikes: (int)type: (string) text: (string)timestamp: (int) Unix format timestamp in seconds

Exemple d'objet de message :

{&quot;username&quot;: &quot;Allen Zhou&quot;,&quot;useravatar&quot;: &quot;https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xtp1/v/t1.0-1/p50x50/11078149_10152993014144302_7237170494591939114_n.jpg?oh=397d69facc666116523459bbb98bb7be&amp;oe=564C3010&amp;__gda__=1446534108_47569285a14096ec068d15c58fe17499&quot;,&quot;userid&quot;: &quot;10152150253249302&quot;,&quot;commentid&quot;: &quot;10155813290305438_10155814868730438&quot;,&quot;postid&quot;: &quot;609745437_10155813290305438&quot;,&quot;postlink&quot;: &quot;http://www.facebook.com/609745437/posts/10155813290305438&quot;,&quot;likes&quot;: 1,&quot;type&quot;: &quot;FACEBOOK&quot;,&quot;text&quot;: &quot;I've stared into the heart of the heart for the past 5 hours trying to find its meaning.&quot;,&quot;timestamp&quot;: 1433399132}

Par exemple :

hsp.bind('sendcommenttoapp', function(message){//code here});

Flux pris en charge sur Facebook : voici les flux distincts de Facebook dont les éléments des messages peuvent être déclenchés.

Pris en charge

Facebook : Journal, Page

sendprofiletoapp()

En s'inscrivant à cet événement, les utilisateurs verront un élément de menu dans les menus de profils sur Twitter ou Facebook. Cet événement se déclenche lorsque les utilisateurs cliquent sur l'élément de menu.

Format de rappel : un objet javascript contenant les données du profil

Structure des données de l'objet du profil :

Twitter

Profile: (object)network (string) created_at (string) description (string) followers_count (int) friends_count (int) id (string) id_str (string) lang (string) listed_count (int) location (string) name (string) network (string) profile_image_url (string) profile_image_url_https (string) screen_name (string) statuses_count (int) time_zone (string) url (string) utc_offset (int) verified (boolean)Post: (object) href: (string) url to the original post id: (string) external post id datetime: (string) iso 8601 datetime format source: (string) twitter only e.g. iPhone App network: (string) content: (object) body: (string) bodyhtml: (string) user: (object) userid: (string) facebook and twitter only username: (string) conversations: (array) id: (int/string) uid: (int) name: (string) datetime: (string) text: (string) source: (string) twitter only retweetcount: (string) twitter only geo: (string) twitter only attachments: (array) items: (array) target: (string) url to the resource page originurl: (string) url to the actual resource thumbnailsrc: (string) url to the thumbnail title: (string) type: (string) link | video | photoalbum | photo favoritecount: (string)Profile: (object) networks: (string) created_at (string) description (string) followers_count (int) friends_count (int) id (string) id_str (string) lang (string) listed_count (int) location (string) name (string) network (string) profile_image_url (string) profile_image_url_https (string) screen_name (string) statuses_count (int) time_zone (string) url (string) utc_offset (int) verified (boolean)

 Facebook

Profile: (object) network: (string) bio: (string) first_name: (string) gender: (string) id: (string) last_name: (string) link: (string) locale: (string)location: (object/array) id: (value) name: (string) concatedName: (string) name: (string) picture: (string) website: (URL)post: (object) network: (string) href: (string) url to the original post id: (string) external post id datetime: (string) iso 8601 datetime format source: (string) twitter only e.g. iPhone App content: (object) body: (string) bodyhtml: (string) user: (object) username: (string) userid: (string) facebook and twitter onlyconversations: (array) id: (int/string) uid: (int) name: (string) text: (string) datetime: (string) geo: (string) twitter only retweetcount: (string) twitter only source: (string) twitter only profileurl: (string) facebook only likes: (int) facebook only attachments: (array) items: (array) target: (string) url to the resource page originurl: (string) url to the actual resource thumbnailsrc: (string) url to the thumbnail title: (string) type: (string) link | video | photoalbum | photoProfile: (object) network (string) bio (string) first_name (string) gender (string) id (string) last_name (string) link (string) locale (string)location: (object/array) id: (value) name: (string) concatedName: (string) name (string) picture (string) website: (URL)

sendassignmentupdates()

L'élément est résolu depuis le tableau de bord Hootsuite, qui envoie des rappels d'attributions vers l'appli.

Format de rappel : un objet javascript contenant les données des informations mises à jour

Anatomie :

{ status: &quot;OPEN&quot; || &quot;RESOLVED&quot; assignmentId: <assignment ID in Hootsuite dashboard> messageId: <message ID of the assigned item> toName: <name of the user or team the item is assigned to> createdDate: &quot;yyyy-mm-dd hh:mm:ss&quot; //in UTC modifiedDate: &quot;yyyy-mm-dd hh:mm:ss&quot; //in UTC}

Rappel de l'API

Le SDK fournit un paramètre d'arrière-plan pour votre appli.  Pour que votre appli et le tableau de bord Hootsuite puissent communiquer, vous devez fournir une APICallbackURL dans votre appli au sein du portail développeurs. Hootsuite enverra une requête POST vers l'APICallbackURL fournie pour envoyer un événement. IMPORTANT : chaque requête doit être authentifiée à l'aide du SSO du répertoire des applis.

La fonction API d'attribution permet à un utilisateur d'attribuer un élément de votre flux d'application à un autre utilisateur Hootsuite ; elle permet aussi de réattribuer ou de résoudre l'élément à la fois depuis le flux d'application et le tableau de bord Hootsuite (même si l'appli n'a pas été installée par les autres utilisateurs). L'authentification SSO est obligatoire pour utiliser l'APICallbackURL. 

Requête d'attribution d'événement

Chaque fois qu'une attribution est créée ou mise à jour, une requête POST sera envoyée à l'APICallbackURL.

{ action: &quot;Assignment&quot; sso_i: <user_id> sso_ts: <timestamp> sso_token: <token> assignmentId: <assignment ID in Hootsuite dashboard> status: &quot;OPEN&quot; || &quot;RESOLVED&quot; messageId: <message id of the assigned item that the app provided> Message : <message context>toType: &lt;'MEMBER'|'TEAM'&gt;toTeamId:toTeamName: creatorId: creatorName: fromId: fromName: toId: toName: createdDate: &quot;yyyy-mm-dd-hh-mm-ss&quot; modifiedDate: &quot;yyyy-mm-dd-hh-mm-ss&quot;}