이 컴포넌트는 사용자가 사이트에 처음 로그인할 때 segment.identify를 호출하는 것을 지원합니다. SSO를 사용하는 사이트의 경우, 사용자의 Discourse ID 또는 external_id를 Segment로 전송할 수 있습니다. 이 컴포넌트는 Discourse의 최신 글, 카테고리, 특정 카테고리, 태그 및 주제 페이지의 뷰를 추적할 수 있도록 합니다. 또한 주제 및 게시물 생성, 좋아요, 플래그, 북마크도 추적할 수 있습니다.
설치
컴포넌트를 설치하려면 Installing a theme or theme component 가이드를 따르십시오. Git 저장소에서 직접 설치하려면 https://github.com/scossar/discourse-segment-theme-component를 사용하십시오. 여기에서 다운로드할 수도 있습니다.
설정
segment write key 설정에 Segment Write Key를 추가하십시오. 그런 다음 추적할 이벤트를 선택하십시오:
제가 이 대화에 참 늦게 참여하고 있다는 걸 잘 알고 있습니다. 하지만 혹시 응해 주실 수 있을지 요청드릴 것이 있습니다.
Discourse에 로그인한 사용자의 경우, 사용자 ID 번호 외에 사용자 이메일 주소도 함께 표시해 주실 수 있을까요?
Segment에서 회사 웹사이트와 동일한 사용자로 추정되는 사용자의 Discourse 데이터와 사용자 데이터를 통합하여, 어떤 사용자가 Discourse를 방문하고 어떤 사용자가 웹사이트를 방문하는지 파악하려고 하고 있습니다. 하지만 현재는 Discourse 사용자 ID와 웹사이트 사용자 ID가 일치하지 않아 사용자를 매칭할 수 없습니다.
Discourse와 웹사이트에서 이메일 주소가 동일한 경우 이를 기준으로 매칭할 수 있다면 정말 큰 도움이 될 것입니다.
정말 멋진 플러그인입니다, @simon님! 몇 달째 사용해 왔는데, 가끔 topic_created 이벤트를 놓치는 경우가 있습니다. 이런 오류의 패턴을 파악하기가 어려워 이렇게 글을 남겨 봅니다. 혹시 아이디어가 있으신가요? 오류를 확인하기 위해 살펴볼 수 있는 로그가 있을까요?
기술적으로는 가능합니다. 다만 페이로드에 이메일 주소를 추가하는 것에 대해 보안과 개인정보 보호 측면에서 우려가 있습니다. 이에 대해 좀 더 생각해 보고, Discourse 팀에 의견을 구해 보겠습니다. 만약 이메일 주소를 페이로드에 추가하게 된다면, 기본적으로 이메일 주소를 포함하지 않도록 설정할 수 있는 테마 설정 항목이 추가될 것입니다.
확인해 보겠습니다. 혹시 패턴을 발견하게 된다면 알려 주세요.
다음 주에 시간을 내서 해당 컴포넌트를 테스트하고 업데이트를 시도해 보겠습니다. 작업이 완료되면 제 개인 GitHub 저장소에서 Discourse GitHub 저장소로 옮기겠습니다.
@simon 보안에 대한 우려에는 공감합니다. 다만, 해당 데이터를 가져오는 Discourse의 관리자(admin)이기 때문에, 제공된 ID를 가져와 사용자 기록에서 해당 ID와 이메일 주소를 직접 연결하는 방식으로 동일한 사용자 이메일을 찾을 수 있습니다. 즉, 수동이지만 이미 접근 가능한 상태입니다.
또한, 조직 내 다른 사람들과 논의한 결과, Oauth가 설정될 때까지 기다린 후 사용자가 우리 시스템과 Discourse 시스템에 로그인할 때 동일한 ID를 사용하도록 하는 방향으로 갈 수도 있을 것 같습니다.
어쨌든, 커뮤니티에서 다른 사람들이 그런 솔루션을 사용할 수 없는 경우를 대비해 여전히 좋은 기능이 될 것이라고 생각합니다.
이것이 이상적인 접근 방식인 것 같습니다. Segment 테마 컴포넌트를 업데이트하여 Auth 제공자가 공급하는 provider_uid를 포함하는 옵션을 추가할 수 있습니다.
이 문제를 제기해 주셔서 감사합니다. 현재 Segment 추적 컴포넌트에는 DiscourseConnect를 사용하는 사이트에서 사용자의 external_id를 추가하는 옵션이 있습니다. 지금 보니, DiscourseConnect에 대해 오래된 설정 이름을 사용하고 있네요. enable_sso 설정이 활성화되어 있는지 확인하고 있습니다. 이 부분은 enable_discourse_connect로 변경되어야 합니다. 내일 이 부분을 수정하겠습니다.
Discourse 사이트의 인증 제공자로 DiscourseConnect가 활성화된 경우, 사용자를 external_id 기준으로 추적하는 문제를 수정했습니다.
아직까지 토픽 생성이 간혹 추적되지 않는 원인을 파악하지 못했습니다. 제 환경에서는 아무 문제 없이 정상적으로 작동하고 있습니다.
Topic Bookmarked 이벤트에 사용되는 이름을 업데이트했습니다. 이전에는 Segment로 전송되는 이벤트 이름이 "Thread Bookmarked"였습니다. 당시 그렇게 이름 붙인 이유는 기억나지 않습니다. 이벤트 이름을 "Topic Bookmarked"로 변경하는 것이 다른 분들의 분석에 문제를 일으키지 않기를 바랍니다.
이 설정이 활성화되면 사용자의 이메일 주소가 identify 호출과 함께 전달됩니다. Discourse 사이트의 테마 구성 요소를 최신 버전으로 업데이트하면 해당 설정을 사용할 수 있습니다.
테스트 중 발견한 사소한 문제가 하나 있습니다. 설정이 비활성화된 경우에도 현재 사용자의 이메일 주소는 세션이 종료될 때까지 Segment에 계속 표시됩니다. 이는 Segment 측에서 데이터를 처리하는 방식과 관련이 있습니다. 설정이 비활성화되면 Discourse는 즉시 Segment로 사용자 이메일 주소를 전달하는 것을 중단합니다.
provider_uid를 Segment로 전달해 달라는 요청을 잊지 않았습니다. 다만 이 작업을 진행하면서 Segment에 다른 식별자도 전달하는 것이 유용할지 고민이 되었습니다. 구체적으로 사용자의 name과 username을 identify 호출에 전달하는 것이 좋을까요?
늦게 답변드려 죄송합니다. 이 문제를 좀 더 조사해 보았습니다. 현재 Discourse가 클라이언트에 provider_uid를 전송하지 않기 때문에 테마 컴포넌트를 통해 provider_uid를 설정하는 것은 불가능합니다. 미래에는 사이트 설정을 통해 활성화할 수 있는 기능이 될 수 있지만, 이를 위해 코어 Discourse 코드에 일부 변경 사항이 필요합니다.