Componente tema per il tracciamento dei segmenti

This theme component allows you to send data about your site’s usage to Segment.

The component supports calling segment.identify when a user first logs on to the site. For site’s using SSO, you can either send the user’s Discourse ID, or their external_id to Segment. The component allow you to track views of the Discourse latest, categories, category, tag, and topic pages. It also allows you to track topic and post creation, likes, flags, and bookmarks.

Installation

Follow the Installing a theme or theme component guide to install the component. Use https://github.com/scossar/discourse-segment-theme-component to install it directly from its Git repository. You can also download it from here.

Configuration

Add your Segment Write Key to the segment write key setting. Then select which events you would like to track:

The component extends your site’s content security policy to add https://cdn.segment.com/analytics.js/.

Let me know of any issues you run into with the component, or if there are ways that the data sent to Segment could be improved.

13 Mi Piace

Thanks for building this, this is awesome! Does it also send data on anonymous users?

Calls to the Segment page method are made for anonymous users, but the Segment identify method is only called for logged in users.

1 Mi Piace

Ciao!

So che sono estremamente in ritardo, ma ho una richiesta che spero possiate soddisfare.

Potreste aggiungere, oltre all’ID utente, anche l’indirizzo email dell’utente quando gli utenti sono connessi a Discourse?

In Segment sto cercando di combinare i dati di Discourse con i dati degli utenti per capire quali utenti potrebbero essere gli stessi sul sito web della mia azienda, per comprendere chi sta visitando Discourse e chi il sito web, ma al momento non riesco a mettere in relazione gli utenti perché l’ID utente di Discourse non corrisponde all’ID utente del sito.

Se potessi metterli in relazione quando l’indirizzo email è lo stesso su Discourse e sul sito, sarebbe molto utile.

È possibile, per favore?

2 Mi Piace

Plugin incredibile, grazie @simon! Lo uso da alcuni mesi e ho notato che ogni tanto perde gli eventi topic_created. Non riesco a individuare alcun pattern in questi errori, quindi ho pensato di scrivere qui. Hai qualche idea? Ci sono dei log che posso controllare per gli errori?

1 Mi Piace

Tecnicamente è possibile. Tuttavia, ho alcune preoccupazioni in materia di sicurezza e privacy riguardo all’aggiunta dell’indirizzo email al payload. Ci rifletterò e chiederò al team di Discourse cosa ne pensano. Se l’indirizzo email verrà aggiunto al payload, sarà presente un’impostazione del tema che, per impostazione predefinita, non include l’indirizzo email.

Mi occuperò di questo. Se dovessi individuare un pattern, fammelo sapere.

Proverò a trovare il tempo la prossima settimana per testare il componente e apportare alcuni aggiornamenti. Una volta completato, lo sposterò dal mio repository GitHub personale al repository GitHub di Discourse.

1 Mi Piace

Grazie @simon, lo apprezzo davvero :slight_smile:

@simon Capisco il tuo punto e condivido le preoccupazioni sulla sicurezza, tuttavia sono un amministratore del Discourse da cui estraggo questi dati, quindi potrei recuperare gli stessi indirizzi email degli utenti semplicemente prendendo l’ID fornito e consultando i record utente per collegare l’ID all’indirizzo email corrispondente. È già disponibile, anche se manualmente.

Inoltre, dopo aver parlato con altri membri della mia organizzazione, potremmo decidere di attendere fino a quando non avremo configurato OAuth, in modo che i nostri utenti debbano utilizzare lo stesso ID per accedere sia al nostro sistema che al sistema Discourse.

Comunque, penso che sarebbe comunque una bella funzionalità da avere, nel caso in cui una soluzione del genere non fosse disponibile per qualcun altro nella community.

Grazie

Questa sembra l’approccio ideale. Il componente tema Segment potrebbe essere aggiornato per aggiungere un’opzione che includa il provider_uid fornito dal tuo provider di autenticazione.

Sono contento che tu abbia sollevato la questione. Il componente di tracciamento Segment attualmente ha un’opzione per aggiungere l’external_id dell’utente per i siti che utilizzano DiscourseConnect. Guardandolo ora, vedo che sta utilizzando il vecchio nome di impostazione per DiscourseConnect: sta verificando se l’impostazione enable_sso è abilitata. Questo deve essere modificato in enable_discourse_connect. Lo correggerò domani.

2 Mi Piace

Grazie mille, un campo provider_uid sarebbe fantastico: dovrebbe permetterci di associare le azioni degli utenti sul nostro sito e su Discourse, entrambi dopo che sono stati inviati a Segment.

Ti ringrazio.

Ho risolto il problema relativo al tracciamento degli utenti basato sul loro external_id nel caso in cui DiscourseConnect sia abilitato come provider di autenticazione per il sito Discourse.

Finora non sono riuscito a individuare la causa per cui la creazione di alcuni argomenti a volte non viene tracciata. Per me funziona senza alcun problema.

Ho aggiornato il nome utilizzato per l’evento “Topic Bookmarked”. In precedenza, il nome dell’evento inviato a Segment era “Thread Bookmarked”. Non ricordo il motivo di quella scelta. Spero che la modifica del nome dell’evento in “Topic Bookmarked” non causi problemi con le analisi di nessuno.

Quando ho controllato la schermata del debugger in Segment, l’unica cosa inviata nella chiamata identify era un User Id e un indirizzo IP. È possibile passare anche un indirizzo email con la chiamata identify?

Queste sono due richieste per far passare gli indirizzi email con la chiamata identify. Vedrò cosa si può fare al riguardo.

Ho aggiunto una impostazione “includi email dell’utente”:

Se abilitata, l’indirizzo email dell’utente verrà trasmesso insieme alla chiamata identify. Se aggiorni il componente del tema sul tuo sito Discourse all’ultima versione, questa impostazione sarà disponibile.

Un piccolo problema che ho riscontrato durante i test è che, se l’impostazione è disabilitata, l’indirizzo email dell’utente corrente continuerà a comparire su Segment per tutta la durata della sessione. Questo è legato al modo in cui Segment gestisce le cose dal loro lato. Quando l’impostazione è disabilitata, Discourse smette immediatamente di inviare gli indirizzi email degli utenti a Segment.

Non ho dimenticato la richiesta di passare il provider_uid a Segment, ma mentre esaminavo questa funzionalità mi chiedevo se potrebbe essere utile passare altri identificatori a Segment. In particolare, mi chiedevo se fosse utile passare il nome e il nome utente dell’utente alla chiamata identify.

3 Mi Piace

Tempistica perfetta per me @simon, grazie.

Ad ogni modo, anche Nome e Nome utente sarebbero utili. Una soluzione a lungo termine consisterebbe nell’implementare un modo per inviare tutto ciò che è incluso di base e anche eventuali Campi Utente aggiuntivi creati in Discourse.

Il motivo è che alcune destinazioni richiedono un dato specifico per funzionare. Sarebbe davvero utile avere un’interfaccia utente per costruire il payload direttamente all’interno di Discourse. Anche se fosse limitata ai campi standard documentati nella documentazione di Segment https://segment.com/docs/connections/spec/identify/.

1 Mi Piace

Mi scuso per la risposta tardiva. Ho approfondito ulteriormente. Al momento non è possibile impostare il provider_uid tramite un componente tema perché Discourse non invia il provider_uid al client. Forse questa è una funzionalità che potrebbe essere abilitata tramite un’impostazione del sito in futuro, ma affinché funzioni, saranno necessarie alcune modifiche al codice principale di Discourse.

1 Mi Piace

Nessun problema. Grazie per il follow-up e per aver approfondito la questione. Speriamo di poter trovare un altro modo per collegare i nostri utenti Discourse su Discourse e sul nostro sito.

1 Mi Piace