API

SDK dell'App Directory

API (v2.0, attuale)

Come funziona

JSApi è il gateway di comunicazione del pacchetto di sviluppo del catalogo app fra un'app e la dashboard di Hootsuite. L'API consente agli sviluppatori di app di richiamare le funzioni che inviano eventi alla dashboard di Hootsuite e viceversa di ricevere le notifiche degli eventi specifici all'interno dell'app.

Le interazioni fra Hootsuite e le app avvengono grazie a JSApi. La libreria Javascript del pacchetto di sviluppo, hsp.js, offre diverse funzioni che attivano specifiche funzionalità nella dashboard di Hootsuite. hsp.js consente inoltre l'inizializzazione e la registrazione dell'app, affinché possa ricevere eventi dalla dashboard di Hootsuite.

Nota: assicurati che il server permetta le richieste POST.

Installazione

Per usare JSApi è necessario quanto segue:

  • Libreria JS - La libreria hsp.js consente la comunicazione in entrambi i sensi fra le app e la dashboard di Hootsuite. Inserisci questo file nella pagina principale della tua app:

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

Ad esempio, il riferimento a questo file nella tua pagina principale avrebbe questo aspetto:

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

Funzioni, eventi e callback dell'API

Le comunicazioni che vanno dalla tua app alla dashboard di Hootsuite avvengono mediante le funzioni disponibili in hsp.js.
 
Le comunicazioni che vanno invece dalla dashboard di Hootsuite alla tua app avvengono mediante gli Eventi. Gli Eventi le cui notifiche devono arrivare all'app sono registrati con chiamate alla funzione hsp.bind() indicante l' Evento di interesse e la funzione di callback che l'app eseguirà quando l' Evento si realizza.

Funzioni

  • init - Inizializza JSApi
  • bind - Registra un evento della dashboard di Hootsuite da gestire con l'app e il relativo handler
  • getMemberInfo - Si usa insieme ad altri callback e metodi di assegnazione
  • saveData - Si usa insieme a getData per mantenere le impostazioni dell'utente da una sessione all'altra
  • getData - Si usa insieme a saveData per mantenere le impostazioni dell'utente da una sessione all'altra
  • clearStatusMessage - Rimuove tutti i messaggi di stato visibili al momento
  • Componi messaggio - Apre la finestra Condividi sui social network
  • Retweet - Avvia il processo della finestra di retweet
  • attachFileToMessage - Sends attachments to the compose box
  • customUserInfo - Apre una finestra popup con i dati dell'utente
  • getTwitterAccounts - Restituisce un elenco di tutti i profili Twitter dell'utente connesso
  • showCustomPopup - Mostra una finestra popup modale contenente un iFrame con contenuti specifici dell'app
  • closeCustomPopup - Chiude la finestra popup modale
  • showFollowDialog - Apre una finestra per seguire o smettere di seguire un utente di Twitter
  • showImagePreview - Mostra un'immagine in una finestra popup
  • showStatusMessage - Mostra una notifica
  • showUser - Apre una finestra popup con i dati dell'utente
  • updatePlacementSubtitle - Aggiorna il sottotitolo dello stream dell'app
  • assignItem - Assegna un messaggio testuale a un utente Hootsuite
  • resolveitem - Elemento risolto nello stream dell'app

Eventi

  • closepopup - Viene eseguito quando si chiude una finestra popup personalizzata aperta dallo stream dell'app
  • dropuser - Viene eseguito quando un utente trascina l'avatar di un utente Twitter dalla dashboard di Hootsuite allo stream dell'app
  • Aggiorna - Viene eseguito quando la colonna dell'app viene aggiornata, sia dall'utente all'interno dello stream che come parte dell'aggiornamento della dashboard
  • 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 - Registrando questo evento gli utenti invieranno un singolo commento Facebook  (senza risposte al commento) all'app
  • sendcomposedmsgtoapp - Aggiunge un plugin dell'app al selettore nativo di profili social di Hootsuite. L'utente può inviare messaggi al plugin direttamente dal riquadro di composizione dei messaggi di Hootsuite
  • sendprofiletoapp - Registrando questo evento gli utenti vedranno una voce di menu nei menu dei profili Twitter, Facebook, LinkedIn e Google+. L'evento viene eseguito quando gli utenti fanno clic sulla voce di menu.
  • sendassignmentupdates - Registrare questo evento farà arrivare all'app le notifiche dei suoi aggiornamenti di assegnazione

Callback

Funzioni dell'API

Questa sezione descrive l'insieme di funzioni disponibili e le firme delle funzioni attese.

hsp.init(params)

Inizializza JSApi e carica i file CSS del tema.

params: oggetto:

  • subtitle: (stringa, opzionale)
  •  Il sottotitolo dell'app, da visualizzare nel titolo dello stream.
  • callBack: (funzione, opzionale)
     Init invierà un messaggio d'errore alla funzione callBack dopo l'inizializzazione. Il messaggio è: nessun errore, se l'inizializzazione è avvenuta correttamente.
  • sendToAppDisableList: Specifica i social network che il plugin sendtoapp non deve visualizzare sotto (‘facebook’, ‘twitter’)
  • sendProfileToAppDisableList: Specifica i social network che il plugin sendprofiletoapp non deve visualizzare sotto (‘facebook’, ‘twitter’)

Esempio:

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

hsp.bind(eventName, callback)

Registra l'handler di un evento per un evento specificato.

eventName: (string)

Nome dell'evento da gestire; può essere uno dei seguenti:

  • closepopup - Viene eseguito quando viene chiusa una finestra popup personalizzata aperta dallo stream dell'app
  • dropuser - Viene eseguito quando un utente trascina l'avatar di un utente Twitter dalla dashboard di Hootsuite al flusso dell'app
  • Aggiorna - Viene eseguito quando la colonna dell'app viene aggiornata, sia dall'utente all'interno dello stream che come parte dell'aggiornamento della dashboard
  • sendtoapp - Registrando questo evento gli utenti vedranno una voce di menu Send to <app stream>...nei menu dei messaggi degli stream Twitter e Facebook. Quest'evento viene eseguito quando gli utenti fanno clic sulla voce di menu

callback: (funzione)

Funzione per gestire la callback; i parametri della funzione sono determinati dall'evento. Vedi la sezione degli eventi per ulteriori dettagli sui formati di callback attesi.

Esempio:

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

Come esposto nella Procedure consigliate sezione, è opportuno sopprimere il ricaricamento del flusso mentre l'utente interagisce con esso (esempio: mentre si pubblicano messaggi,si visualizzano dettagli, posizione, eventualmente non si scorre vicino alla parte superiore). Un possibile approccio potrebbe essere simile a questo:

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 }});

L'uso di window.location.reload() NON è consigliato. Una delle soluzioni più eleganti è interrogare la presenza di nuovi messaggi via AJAX e iniettare nella DOM soltanto i messaggi nuovi senza toccare quelli esistenti.

hsp.getMemberInfo(function(info)

Questo metodo è pensato per essere usato insieme agli altri metodi di assegnazione e di callback (assignItem, resolveItem, richiesta evento di assegnazione). Dal momento che un'assegnazione può essere assegnata a un team o a un membro del team, l'app ha bisogno di sapere a quali team appartiene l'utente.Questa informazione può essere ricavata mediante getMemberInfo.

Consigliamo di chiamare questo metodo dopo hsp.init.

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

Salvare i dati dell'utente

hsp.saveData e hsp.getData sono ideate per essere usate insieme allo scopo di salvare le impostazioni dell'utente da una sessione all'altra (ad es. token utente, impostazioni univoche dello stream e i filtri impostati dall'utente nell'app). I metodi sono richiamati per ogni stream rispetto al PID. 

I dati possono essere salvati in qualsiasi formato stringa.

hsp.saveData(function)

hsp.saveData(data, callback); //Salva i dati nel flusso dell'app del membro, con l'opzione di ottenere soltanto l'oggetto dei dati salvati nella callback che verificherà lo stream dell'app
hsp.getData(callback); //Recupera i dati salvati nello stream dell'app del membro

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()

Rimuove tutti i messaggi di stato visibili al momento.

hsp.composeMessage(messaggio, parametri)

Apre la finestra Condividi sui social network nella dashboard di Hootsuite.

Se il tuo post contiene un'immagine, considera anche di incorporare il hsp.attachFiletoMessage metodo

Messaggio: (string)

Si applicano le regole dei messaggi di Twitter, es. per inviare un messaggio diretto a @Hootsuite si usa: d hootsuite <your message here>

params: (oggetto, opzionale):

  • shortenLinks: booleano, opzionale
     Abbrevia tutti i link del messaggio con il servizio di abbreviazione predefinito dall'utente (ow.ly / ht.ly / o vanity url). L'impostazione predefinita è ‘falso’.
  • timestamp: booleano O intero, opzionale
     Apre lo strumento di programmazione e lo popola con il timestamp (in UTC, in secondi) O se viene passato il valore ‘true’, lo strumento di programmazione si aprirà senza un orario predefinito. L'impostazione predefinita è ‘false’. L'orario va specificato in secondi, ad es.: {scheduleTimestamp: 1460520580}
  • twitterReplyToId: stringa, opzionale
     Compone un nuovo tweet in risposta a un tweet esistente. Se viene passato un ID stringa valido per un tweet esistente, allora lo strumento di composizione tratterà il nuovo messaggio come parte della conversazione. Nota: Il messaggio dovrà contenere un utente Twitter valido con il simbolo '@'. Ad es.: @hootsuite Questa è una risposta!

Esempio:

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

hsp.retweet(id, screenName)

Apre la finestra di retweet nella dashboard di Hootsuite per il tweet con l'id da retweet per screenName.

id: (string)

id_str tweetId di Twitter del tweet da retweetare

screen_name: (stringa, opzionale)

Lo screen_name di Twitter con cui si vuole retwittare

Esempio:

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

hsp.attachFiletoMessage

Invia allegati alla finestra Condividi sui social network nella dashboard di Hootsuite. I file non possono essere più grandi di 5 MB.

data: (oggetto JSON)

  • url:  stringa, obbligatorio 
  • name:  stringa, obbligatorio
  • extension: stringa, obbligatorio
  • timestamp: intero o stringa, deve essere l'ora corrente in secondi, obbligatorio
  • token: stringa, obbligatorio
    • user_id: stringa, deve essere l'utente attuale, può essere recuperato dal parametro url, obbligatorio
    • timestamp: stringa, deve essere il timestamp uguale al precedente, obbligatorio
    • url: stringa, deve essere lo stesso url precedente, obbligatorio
    • secret: stringa, si può trovare nella sezione app del Portale per sviluppatori

Supported File Types:

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

Esempio: 

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

hsp.customUserInfo(data)

Apre una finestra popup con i dati dell'utente.

data: (oggetto JSON)

Esempio:

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)

Mostra una finestra popup modale contenente un iFrame con il contenuto dell'URL specificato. Quando si chiude la finestra viene eseguito l'evento closePopUp().

src: (string)

URL del contenuto da mostrare nella finestra popup

title: (string)

Titolo visualizzato nella finestra popup

Larghezza: (intero)

La larghezza della finestra popup in pixel. La larghezza ha le seguenti limitazioni:

  • Se non viene specificata la larghezza, il suo valore è di 640 pixel
  • La larghezza minima è di 300 pixel.
  • La larghezza massima è di 900 pixel.

Altezza: (intero)

L'altezza in pixel della finestra popup. L'altezza ha le seguenti limitazioni:

  • Se non viene specificata la l'altezza, il suo valore è di 445 pixel
  • L'altezza minima è di 225 pixel.
  • L'altezza massima è di 500 pixel.

Esempio:

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

Importante:

Non inizializzare hsp di nuovo all'interno della finestra popup personalizzata. La finestra pop-up non deve usare alcuna funzione hsp diversa da 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()

Nota: Le funzioni di unione evento non sono disponibili nella finestra pop-up personalizzata.

hsp.closeCustomPopup(apiKey, pid)

Chiude la finestra pop-up modale.

Nota: Assicurati che la pagina iFrame nella finestra pop-up personalizzata e la pagina dello stream dell'app condividano lo stesso dominio. Non è necessario (e non si deve) chiamare hsp.init() nuovamente nella pagina iFrame, basta includere hsp.js e chiamare hsp.closeCustomPopup(apiKey, pid). Si può usare JavaScript per comunicare fra la finestra pop-up e lo stream, in questo modo:

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

Chiave API: (string)

La chiave API della tua app

pid: (string)

Il pid è associato con ciascuna installazione unica di uno stream (o plugin) dell'app. Si può ottenere il pid di ciascuno stream dell'app dalla richiesta dell'URL che ottiene il server. Per esempio:

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

hsp.showImagePreview(src, externalUrl)

Mostra un'immagine in una finestra pop-up, con l'opzione di collegarla a un URL esterno.

src: (string)

URL dell'immagine

externalURL: (string)

URL da aprire se l'utente fa clic sull'immagine

hsp.showStatusMessage(message, type)

Mostra una notifica in alto al centro della dashboard di Hootsuite.

Messaggio: (string)

Deve essere breve, al massimo 70 caratteri.

type: (stringa):

Può essere uno dei seguenti:

  • info: sfondo blu
  • Errore: sfondo rosso
  • warning: sfondo giallo
  • success: sfondo verde

hsp.updatePlacementSubtitle(name)

Aggiorna il sottotitolo dello stream dell'app.

Nota: È necessario che l' App Receiver sia impostato (vedi sopra).

nome (str)

Massimo 35 caratteri

hsp.showUser(twitterHandle)

Apre una finestra pop-up con i dati dell'utente per il nome utente di Twitter specificato.

twitterHandle: (string)

Nome utente di Twitter

Esempio:

hsp.showUser('hootsuite_help');

showUser.f203dc7a

hsp.showFollowDialog(twitterHandle, isFollow)

Apre una finestra per seguire o smettere di seguire un utente di Twitter.

twitterHandle: (string)

Nome utente di Twitter

isFollow: (&quot;stringa booleana&quot;)

&quot;true&quot; per seguire, &quot;false&quot; per smettere di seguire.

Esempio:

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

showFollowDialog.ff5cb783

hsp.getTwitterAccounts(callback)

Restituisce un elenco (matrice) di tutti i profili di Twitter (nomi utente) che l'utente connesso ha aggiunto al proprio account di Hootsuite.

callback: (funzione)

Funzione che accetta una matrice di stringhe

Esempio:

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

hsp.assignItem(item)

Assegna un elemento dello stream dell'app. L'elemento parametro è un oggetto javascript che deve contenere tutte le informazioni necessarie dell'elemento da assegnare. L'URL di callback dell'API trovato nelle impostazioni dell'app all'interno del Portale per sviluppatori deve essere presente, affinché la funzione possa essere eseguita.

data: (oggetto JSON)

  • messageID: stringa, deve essere l'ID dell'elemento, obbligatorio
  • messageAuthor: stringa, obbligatorio
  • messageAuthorAvatar: stringa, obbligatorio
  • Messaggio: stringa, obbligatorio
  • timestamp: intero o stringa, deve essere l'ora corrente in secondi, opzionale

Esempio:

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}

Quando viene innescata o aggiornata un'assegnazione, l'app deve mostrare il CSS adeguato (vedi il modello per sapere quali stili sono disponibili).

hsp.resolveItem(item)

Risolve un elemento dallo stream dell'app.

Anatomia:

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

Eventi dell'API

Questa sezione descrive gli eventi disponibili e le firme delle funzioni degli handler attese disponibili usando hsp.bind().

refresh()

Viene eseguito quando la colonna dell'app viene aggiornata, sia dall'utente all'interno dello stream che come parte dell'aggiornamento della dashboard.

formato della callback: funzione senza parametri

Esempio:

function refreshHandler () { }

Nota: L'uso di window.location.reload() NON è consigliato. Una delle soluzioni più eleganti è interrogare la presenza di nuovi messaggi via AJAX e iniettare nella DOM soltanto i messaggi nuovi senza toccare quelli esistenti.

dropuser()

Viene eseguito quando un utente trascina l'avatar di un utente Twitter dalla dashboard di Hootsuite allo stream dell'app.

formato della callback: funzione con due parametri, il nome utente Twitter dell'utente e l'ID univoco del tweet da cui l'utente è stato trascinato

Esempio:

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

sendcomposedmsgtoapp()

Aggiunge un plugin dell'app al selettore nativo di social network di Hootsuite. L'utente può inviare messaggi al plugin direttamente dal riquadro di composizione dei messaggi di Hootsuite

Nota: È necessario contattare il nostro personale di amministrazione del catalogo app per attivare il binding di questo evento per il plugin della tua app

formato della callback: un oggetto javascript contenente i dati del messaggio

Struttura dei dati dell'oggetto messaggio

Message: (object) text: (string)

Esempio:

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

closepopup()

Viene eseguito quando si chiude una finestra popup personalizzata aperta dallo stream dell'app

formato della callback: funzione senza parametri

Esempio:

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. 

Se desideri limitare i social network su cui è disponibile il plugin, vedi i dettagli di hsp.init

formato della callback: un oggetto javascript contenente i dati del messaggio

Struttura dei dati dell'oggetto messaggio

Twitter

Message: (object) post: (object) network: (string) href: (string) url del post originale id: (string) id del post esterno datetime: (string) formato data-ora iso 8601 source: (string) ad es. 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) solo twitter retweetcount: (string) solo twitter geo: (string) solo twitter attachments: (array) items: (array) target: (string) url della pagina della risorsa originurl: (string) url della risorsa vera e propria thumbnailsrc: (string) url della miniatura 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 del post originale id: (string) id del post esterno datetime: (string) data-ora formato iso 8601 source: (string) ad es. 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) solo twitter retweetcount: (string) solo twitter geo: (string) solo twitter attachments: (array) items: (array) target: (string) url della pagina della risorsa originurl: (string) url della risorsa vera e propria thumbnailsrc: (string) url della miniatura 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)

 

Oggetto messaggio di esempio:

{ &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 }}

Esempio:

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

Stream supportati: Questi sono tutti gli stream dei social network che supportano l'esecuzione dei componenti messaggio.

Supportati

Twitter: home, menzioni, retweet, follower, elenchi, preferiti, i miei tweet, ricerca, messaggi in entrata, messaggi in uscita, parola chiave (salva come stream)
Facebook: timeline, pagina, ricerca

sendcommenttoapp()

Registrando questo evento gli utenti invieranno un singolo commento Facebook  (senza risposte al commento) all'app

formato della callback: oggetto javascript contenente i dati del messaggio

Struttura dei dati dell'oggetto messaggio

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

Oggetto messaggio di esempio:

{&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}

Esempio:

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

Stream di Facebook supportati: Questi sono tutti i singoli stream di Facebook che supportano l'esecuzione dei componenti messaggio.

Supportati

Facebook: timeline, pagina

sendprofiletoapp()

Registrando questo evento gli utenti vedranno una voce di menu nei menu dei profili Twitter o Facebook. L'evento viene eseguito quando gli utenti fanno clic sulla voce di menu.

formato della callback: oggetto javascript contenente i dati del profilo

Struttura dei dati dell'oggetto profilo:

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 del post originale id: (string) id del post esterno datetime: (string) data-ora formato iso 8601 source: (string) solo twitter ad es. iPhone App network: (string) content: (object) body: (string) bodyhtml: (string) user: (object) userid: (string) solo facebook e twitter username: (string) conversations: (array) id: (int/string) uid: (int) name: (string) datetime: (string) text: (string) source: (string) solo twitter retweetcount: (string) solo twitter geo: (string) solo twitter attachments: (array) items: (array) target: (string) url della pagina della risorsa originurl: (string) url della risorsa vera e propria thumbnailsrc: (string) url della miniatura 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 del post originale id: (string) id del post esterno datetime: (string) data-ora formato iso 8601 source: (string) solo twitter ad es. 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) solo twitter retweetcount: (string) solo twitter source: (string) solo twitter profileurl: (string) solo facebook likes: (int) solo facebook attachments: (array) items: (array) target: (string) url della pagina della risorsa originurl: (string) url della risorsa vera e propria thumbnailsrc: (string) url della miniatura 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'elemento viene risolto dalla dashboard di Hootsuite che invia le callback di assegnazione all'app.

formato della callback: oggetto javascript contenente i dati dell'aggiornamento

Anatomia:

{ 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}

Callback dell'API

Il pacchetto di sviluppo mette a disposizione un endpoint di backend per la tua app.  Affinché l'app e la dashboard di Hootsuite possano comunicare, è necessario inserire un APICallbackURL nell'app all'interno del portale sviluppatori. Hootsuite eseguirà una richiesta POST all'APICallbackURL fornito per inviare un evento. NOTA IMPORTANTE: per ogni richiesta è necessario il SSO del catalogo app per l'autenticazione. 

La funzione dell'API di assegnazione consente a un utente di assegnare un elemento dallo stream dell'app a un altro utente di Hootsuite e di riassegnarlo o risolverlo sia dallo stream dell'app che dalla dashboard di Hootsuite (anche senza che l'app sia installata dagli altri utenti). Per usare l'APICallbackURL è necessaria l'autenticazione SSO.

Richiesta evento di assegnazione

Ogni volta che viene creata o aggiornata un'assegnazione, viene inviata una richiesta POST all'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> Messaggio: <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;}