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:
Des appels à la méthode page de Segment sont effectués pour les utilisateurs anonymes, mais la méthode identify de Segment n’est appelée que pour les utilisateurs connectés.
Je sais que je suis extrêmement en retard pour cette discussion, mais j’ai une requête que j’espère vous pourrez prendre en compte.
Pourriez-vous ajouter, en plus de l’identifiant utilisateur, l’adresse e-mail de l’utilisateur lorsqu’ils sont connectés à Discourse ?
Dans Segment, j’essaie de combiner les données de Discourse avec les données des utilisateurs pour ce qui pourrait être le même utilisateur sur le site web de mon entreprise, afin de comprendre quels utilisateurs consultent Discourse et visitent le site. Cependant, je ne parviens pas à faire correspondre les utilisateurs pour le moment, car l’ID utilisateur de Discourse ne correspond pas à l’ID utilisateur du site web.
Si je pouvais les faire correspondre lorsque l’adresse e-mail est identique entre Discourse et le site, cela serait d’une grande aide.
Superbe plugin, merci @simon ! Je l’utilise depuis quelques mois et je constate qu’il rate parfois les événements topic_created. Je n’arrive pas à identifier de modèle dans ces dysfonctionnements, alors j’ai pensé à écrire ici. Des idées ? Y a-t-il des journaux que je pourrais consulter pour détecter des erreurs ?
C’est techniquement possible. Cependant, j’ai certaines préoccupations en matière de sécurité et de confidentialité concernant l’ajout de l’adresse e-mail au contenu de la charge utile. Je vais y réfléchir et demander l’avis de l’équipe Discourse. Si l’adresse e-mail est ajoutée au contenu de la charge utile, il existera un paramètre de thème pour cela, qui sera défini par défaut pour ne pas inclure l’adresse e-mail.
Je vais examiner cela. Si vous trouvez un modèle, faites-le-moi savoir, s’il vous plaît.
Je vais essayer de trouver le temps la semaine prochaine pour tester le composant et apporter quelques mises à jour. Une fois cela fait, je le déplacerai de mon dépôt GitHub personnel vers le dépôt GitHub de Discourse.
@simon Je te comprends et je partage tes préoccupations en matière de sécurité. Cependant, je suis administrateur du Discourse dont je récupère ces données, donc je pourrais retrouver les mêmes adresses e-mail des utilisateurs simplement en utilisant l’ID fourni et en consultant les dossiers utilisateurs pour associer l’ID à l’adresse e-mail correspondante. Ces informations sont déjà accessibles, bien que manuellement.
De plus, après en avoir discuté avec d’autres membres de mon organisation, il se pourrait que nous décidions d’attendre la mise en place de l’OAuth, afin que nos utilisateurs utilisent le même identifiant pour se connecter à notre système et au système Discourse.
Quoi qu’il en soit, je pense que ce serait tout de même une fonctionnalité intéressante à avoir, au cas où une solution de ce type ne serait pas disponible pour d’autres membres de la communauté.
Cela semble être l’approche idéale. Le composant de thème Segment pourrait être mis à jour pour ajouter une option permettant d’inclure le provider_uid fourni par votre fournisseur d’authentification.
Je suis ravi que vous ayez soulevé cette question. Le composant de suivi Segment dispose actuellement d’une option pour ajouter l’external_id de l’utilisateur pour les sites utilisant DiscourseConnect. En y regardant de plus près, je constate qu’il utilise l’ancien nom de paramètre pour DiscourseConnect : il vérifie si le paramètre enable_sso est activé. Cela doit être modifié en enable_discourse_connect. Je corrigerai cela demain.
Un champ provider_uid serait fantastique — cela nous permettrait d’associer les actions des utilisateurs sur notre site et sur Discourse, une fois qu’elles auront été envoyées à Segment.
J’ai résolu le problème de suivi des utilisateurs basé sur leur external_id dans le cas où DiscourseConnect est activé en tant que fournisseur d’authentification pour le site Discourse.
Pour l’instant, je n’ai pas encore pu identifier ce qui pourrait empêcher le suivi de la création de certains sujets. Cela fonctionne parfaitement de mon côté.
J’ai mis à jour le nom utilisé pour l’événement « Topic Bookmarked ». Auparavant, le nom de l’événement envoyé à Segment était « Thread Bookmarked ». Je ne me souviens plus de la raison de ce choix. J’espère que le changement du nom de l’événement en « Topic Bookmarked » ne posera pas de problème avec les analyses de données de quiconque.
Lorsque j’ai vérifié l’écran du débogueur dans Segment, seule un identifiant utilisateur et une adresse IP ont été envoyés lors de l’appel identify. Peut-on également transmettre une adresse e-mail avec cet appel ?
Lorsqu’il est activé, l’adresse email de l’utilisateur est transmise avec l’appel identify. Si vous mettez à jour le composant de thème de votre site Discourse vers sa version la plus récente, ce paramètre sera disponible.
Un petit problème que j’ai remarqué lors des tests est que, si le paramètre est désactivé, l’adresse email de l’utilisateur actuel continue d’apparaître sur Segment pour la durée de sa session. Cela est lié à la manière dont Segment gère les choses de son côté. Lorsque le paramètre est désactivé, Discourse cesse immédiatement de transmettre les adresses email des utilisateurs à Segment.
Je n’ai pas oublié la demande visant à transmettre le provider_uid à Segment, mais en travaillant sur ce sujet, je me suis demandé s’il serait utile de transmettre d’autres identifiants à Segment. Je pensais notamment à transmettre le name et le username de l’utilisateur dans l’appel à identify.
En ce qui concerne le Nom et le Nom d’utilisateur, oui, ils seraient également utiles. Une solution à long terme consisterait à mettre en place un moyen de pousser toutes les données incluses de base ainsi que tous les Champs Utilisateur supplémentaires créés dans Discourse.
Justification : certaines destinations nécessitent un élément de données spécifique pour fonctionner. Il serait très utile d’avoir une interface utilisateur permettant de construire le payload directement dans Discourse. Même si elle se limite aux champs standard documentés dans la documentation de Segment https://segment.com/docs/connections/spec/identify/
Désolé pour la réponse tardive. J’ai examiné cela de plus près. Il n’est actuellement pas possible de définir le provider_uid via un composant de thème car Discourse n’envoie pas le provider_uid au client. C’est peut-être quelque chose qui pourrait être activé via un paramètre de site à l’avenir, mais pour que cela fonctionne, des modifications devront être apportées au code de base de Discourse.
Pas de problème. Merci de votre suivi et de votre investigation. J’espère que nous pourrons trouver un autre moyen de connecter nos utilisateurs Discourse sur Discourse et sur notre site.