Este componente de tema permite que você envie dados sobre o uso do seu site para Segment.
O componente suporta a chamada de segment.identify quando um usuário faz login pela primeira vez no site. Para sites que utilizam SSO, você pode enviar o ID do Discourse do usuário ou o external_id para o Segment. O componente permite rastrear visualizações das páginas Mais Recentes, Categorias, Categoria, Tag e Tópico do Discourse. Também é possível rastrear a criação de tópicos e posts, curtidas, denúncias e favoritos.
Instalação
Siga o guia Installing a theme or theme component para instalar o componente. Use https://github.com/scossar/discourse-segment-theme-component para instalá-lo diretamente do repositório Git. Você também pode baixá-lo aqui.
Configuração
Adicione sua Chave de Escrita do Segment na configuração segment write key. Em seguida, selecione quais eventos deseja rastrear:
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.