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:
Sei que estou muito atrasado para essa conversa, mas tenho um pedido que espero que você possa atender.
Seria possível adicionar o endereço de e-mail do usuário, além do número de ID do usuário, quando os usuários estiverem logados no Discourse?
No Segment, estou tentando combinar os dados do Discourse com os dados dos usuários para identificar quais podem ser o mesmo usuário no site da minha empresa, a fim de entender quais usuários estão acessando o Discourse e o site. No entanto, não consigo relacionar os usuários no momento, pois o ID do usuário do Discourse não corresponde ao ID do usuário do site.
Se eu pudesse relacioná-los quando o endereço de e-mail for o mesmo no Discourse e no site, isso seria muito útil.
Plugin incrível, obrigado @simon! Tenho usado há alguns meses e estou percebendo que ele perde eventos topic_created de vez em quando. Não consigo identificar nenhum padrão nessas falhas, então achei melhor escrever aqui. Alguma ideia? Existem logs que eu possa verificar para erros?
Isso é tecnicamente possível. No entanto, tenho algumas preocupações de segurança e privacidade sobre adicionar o endereço de e-mail ao payload. Vou refletir sobre isso e consultar a equipe do Discourse para ver o que eles acham. Se o endereço de e-mail for adicionado ao payload, haverá uma configuração de tema para isso, que, por padrão, não incluirá o endereço de e-mail.
Vou investigar isso. Se você encontrar algum padrão, por favor, me avise.
Vou tentar encontrar tempo na próxima semana para testar o componente e fazer algumas atualizações nele. Quando isso for feito, vou movê-lo do meu repositório pessoal do GitHub para o repositório do Discourse no GitHub.
@simon Entendo e concordo com as preocupações de segurança. No entanto, sou administrador do Discourse de onde estou extraindo esses dados, então poderia encontrar os mesmos e-mails de usuários simplesmente pegando o ID fornecido e acessando os registros dos usuários para vincular o ID ao endereço de e-mail dessa maneira. Essa informação já está disponível, embora manualmente.
Além disso, após conversar com outras pessoas da minha organização, podemos acabar apenas aguardando até que o OAuth seja configurado, para que nossos usuários precisem usar o mesmo ID para fazer login em nosso sistema e no sistema do Discourse.
Independentemente disso, acho que ainda seria um recurso interessante de ter — caso uma solução como essa não esteja disponível para outra pessoa na comunidade.
Isso parece ser a abordagem ideal. O componente de tema Segment poderia ser atualizado para adicionar uma opção para incluir o provider_uid fornecido pelo seu provedor de autenticação.
Fico feliz que você tenha levantado isso. O componente de rastreamento Segment atualmente tem uma opção para adicionar o external_id do usuário para sites que estão usando o DiscourseConnect. Ao analisá-lo agora, vejo que ele está usando o nome antigo das configurações para o DiscourseConnect — está verificando se a configuração enable_sso está habilitada. Isso precisa ser alterado para enable_discourse_connect. Vou corrigir isso amanhã.
Muito obrigado, um campo provider_uid seria fantástico — isso deve permitir que associemos as ações do usuário em nosso site e no Discourse, mesmo depois de serem enviadas ao Segment.
Corrigi o problema com o rastreamento de usuários com base no external_id para o caso em que o DiscourseConnect está habilitado como provedor de autenticação para o site Discourse.
Até agora, não consegui identificar o que poderia estar causando a falha no rastreamento da criação de tópicos em algumas situações. Para mim, está funcionando sem nenhum problema.
Atualizei o nome usado para o evento “Tópico Marcado como Favorito”. Anteriormente, o nome do evento enviado ao Segment era “Fio Marcado como Favorito”. Não me recordo da razão para isso. Espero que a alteração do nome do evento para “Tópico Marcado como Favorito” não cause problemas na análise de dados de ninguém.
Quando verifiquei a tela de depuração no Segment, tudo o que foi enviado na chamada de identificação foi um ID de usuário e um endereço IP. É possível também passar um endereço de e-mail junto com a chamada de identificação?
Quando ativada, o endereço de e-mail do usuário será enviado junto com a chamada identify. Se você atualizar o componente de tema no seu site Discourse para a versão mais recente, essa configuração estará disponível para você.
Um problema menor que encontrei ao testar isso é que, se a configuração estiver desativada, o e-mail do usuário atual continuará aparecendo no Segment durante toda a sessão dele. Isso está relacionado à forma como o Segment lida com essas coisas do lado deles. Quando a configuração está desativada, o Discourse para imediatamente de enviar endereços de e-mail de usuários para o Segment.
Não esqueci do pedido para passar o provider_uid para o Segment, mas enquanto analisava isso, fiquei me perguntando se seria útil passar outros identificadores para o Segment. Especificamente, estava pensando em passar o nome e o nome de usuário do usuário para a chamada identify.
Quanto ao Nome e ao Nome de Usuário, sim, eles também seriam úteis. Uma solução de longo prazo seria implementar uma maneira de enviar tudo o que está incluso na base e também quaisquer Campos de Usuário adicionais criados no Discourse.
A justificativa é que alguns destinos exigem uma peça específica de dados para funcionar. Seria muito útil ter uma interface para montar o payload dentro do Discourse. Mesmo que seja limitado aos campos padrão na documentação do Segment https://segment.com/docs/connections/spec/identify/.
Desculpe pela resposta tardia. Analisei isso um pouco mais. Atualmente, não é possível definir o provider_uid por meio de um componente de tema porque o Discourse não envia o provider_uid para o cliente. Possivelmente, isso poderia ser habilitado por meio de uma configuração do site no futuro, mas para funcionar, algumas alterações precisarão ser feitas no código principal do Discourse.
Sem problema. Obrigado por acompanhar e por investigar isso. Espero que possamos encontrar outra maneira de conectar nossos usuários do Discourse no Discourse e em nosso site.