세그먼트 추적 테마 컴포넌트

:warning: 저장소가 소유자에 의해 2025년 6월 25일에 아카이브되었습니다

이 테마 컴포넌트를 사용하면 사이트 사용량 데이터를 Segment로 전송할 수 있습니다.

이 컴포넌트는 사용자가 사이트에 처음 로그인할 때 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를 추가하십시오. 그런 다음 추적할 이벤트를 선택하십시오:

이 컴포넌트는 사이트의 콘텐츠 보안 정책(CSP)을 확장하여 https://cdn.segment.com/analytics.js/를 추가합니다.

컴포넌트 사용 중 발생하는 문제나 Segment로 전송되는 데이터를 개선할 수 있는 방법이 있다면 알려주세요.

13개의 좋아요

이것을 만들어 주셔서 감사합니다. 정말 멋지네요! 익명 사용자에 대한 데이터도 전송하나요?

Segment의 page 메서드 호출은 익명 사용자에게도 이루어지지만, Segment의 identify 메서드는 로그인한 사용자에게만 호출됩니다.

1개의 좋아요

안녕하세요!

제가 이 대화에 참 늦게 참여하고 있다는 걸 잘 알고 있습니다. 하지만 혹시 응해 주실 수 있을지 요청드릴 것이 있습니다.

Discourse에 로그인한 사용자의 경우, 사용자 ID 번호 외에 사용자 이메일 주소도 함께 표시해 주실 수 있을까요?

Segment에서 회사 웹사이트와 동일한 사용자로 추정되는 사용자의 Discourse 데이터와 사용자 데이터를 통합하여, 어떤 사용자가 Discourse를 방문하고 어떤 사용자가 웹사이트를 방문하는지 파악하려고 하고 있습니다. 하지만 현재는 Discourse 사용자 ID와 웹사이트 사용자 ID가 일치하지 않아 사용자를 매칭할 수 없습니다.

Discourse와 웹사이트에서 이메일 주소가 동일한 경우 이를 기준으로 매칭할 수 있다면 정말 큰 도움이 될 것입니다.

이것이 가능할까요?

2개의 좋아요

정말 멋진 플러그인입니다, @simon님! 몇 달째 사용해 왔는데, 가끔 topic_created 이벤트를 놓치는 경우가 있습니다. 이런 오류의 패턴을 파악하기가 어려워 이렇게 글을 남겨 봅니다. 혹시 아이디어가 있으신가요? 오류를 확인하기 위해 살펴볼 수 있는 로그가 있을까요?

1개의 좋아요

기술적으로는 가능합니다. 다만 페이로드에 이메일 주소를 추가하는 것에 대해 보안과 개인정보 보호 측면에서 우려가 있습니다. 이에 대해 좀 더 생각해 보고, Discourse 팀에 의견을 구해 보겠습니다. 만약 이메일 주소를 페이로드에 추가하게 된다면, 기본적으로 이메일 주소를 포함하지 않도록 설정할 수 있는 테마 설정 항목이 추가될 것입니다.

확인해 보겠습니다. 혹시 패턴을 발견하게 된다면 알려 주세요.

다음 주에 시간을 내서 해당 컴포넌트를 테스트하고 업데이트를 시도해 보겠습니다. 작업이 완료되면 제 개인 GitHub 저장소에서 Discourse GitHub 저장소로 옮기겠습니다.

1개의 좋아요

@simon, 정말 감사해요 :slight_smile:

@simon 보안에 대한 우려에는 공감합니다. 다만, 해당 데이터를 가져오는 Discourse의 관리자(admin)이기 때문에, 제공된 ID를 가져와 사용자 기록에서 해당 ID와 이메일 주소를 직접 연결하는 방식으로 동일한 사용자 이메일을 찾을 수 있습니다. 즉, 수동이지만 이미 접근 가능한 상태입니다.

또한, 조직 내 다른 사람들과 논의한 결과, Oauth가 설정될 때까지 기다린 후 사용자가 우리 시스템과 Discourse 시스템에 로그인할 때 동일한 ID를 사용하도록 하는 방향으로 갈 수도 있을 것 같습니다.

어쨌든, 커뮤니티에서 다른 사람들이 그런 솔루션을 사용할 수 없는 경우를 대비해 여전히 좋은 기능이 될 것이라고 생각합니다.

감사합니다

이것이 이상적인 접근 방식인 것 같습니다. Segment 테마 컴포넌트를 업데이트하여 Auth 제공자가 공급하는 provider_uid를 포함하는 옵션을 추가할 수 있습니다.

이 문제를 제기해 주셔서 감사합니다. 현재 Segment 추적 컴포넌트에는 DiscourseConnect를 사용하는 사이트에서 사용자의 external_id를 추가하는 옵션이 있습니다. 지금 보니, DiscourseConnect에 대해 오래된 설정 이름을 사용하고 있네요. enable_sso 설정이 활성화되어 있는지 확인하고 있습니다. 이 부분은 enable_discourse_connect로 변경되어야 합니다. 내일 이 부분을 수정하겠습니다.

2개의 좋아요

정말 감사합니다. provider_uid 필드가 있으면 정말 좋을 것 같습니다. 이렇게 하면 Segment로 전송된 후에도 사용자의 사이트 내 행동과 Discourse 내 행동을 연관 지을 수 있을 것입니다.

감사합니다.

Discourse 사이트의 인증 제공자로 DiscourseConnect가 활성화된 경우, 사용자를 external_id 기준으로 추적하는 문제를 수정했습니다.

아직까지 토픽 생성이 간혹 추적되지 않는 원인을 파악하지 못했습니다. 제 환경에서는 아무 문제 없이 정상적으로 작동하고 있습니다.

Topic Bookmarked 이벤트에 사용되는 이름을 업데이트했습니다. 이전에는 Segment로 전송되는 이벤트 이름이 "Thread Bookmarked"였습니다. 당시 그렇게 이름 붙인 이유는 기억나지 않습니다. 이벤트 이름을 "Topic Bookmarked"로 변경하는 것이 다른 분들의 분석에 문제를 일으키지 않기를 바랍니다.

Segment의 디버거 화면을 확인해 봤더니, identify 호출 시 전송된 내용은 User ID와 IP 주소뿐이었습니다. identify 호출 시 이메일 주소도 함께 전달할 수 있나요?

identify 호출 시 이메일 주소를 전달해 달라는 요청이 두 번이나 접수되었습니다. 이에 대해 어떤 조치가 가능한지 확인해 보겠습니다.

진행하여 include user email 설정을 추가했습니다:

이 설정이 활성화되면 사용자의 이메일 주소가 identify 호출과 함께 전달됩니다. Discourse 사이트의 테마 구성 요소를 최신 버전으로 업데이트하면 해당 설정을 사용할 수 있습니다.

테스트 중 발견한 사소한 문제가 하나 있습니다. 설정이 비활성화된 경우에도 현재 사용자의 이메일 주소는 세션이 종료될 때까지 Segment에 계속 표시됩니다. 이는 Segment 측에서 데이터를 처리하는 방식과 관련이 있습니다. 설정이 비활성화되면 Discourse는 즉시 Segment로 사용자 이메일 주소를 전달하는 것을 중단합니다.

provider_uid를 Segment로 전달해 달라는 요청을 잊지 않았습니다. 다만 이 작업을 진행하면서 Segment에 다른 식별자도 전달하는 것이 유용할지 고민이 되었습니다. 구체적으로 사용자의 name과 username을 identify 호출에 전달하는 것이 좋을까요?

3개의 좋아요

저한테는 정말 타이밍이 좋습니다. @simon 감사합니다.

이름과 사용자 이름에 대해 말씀하신 대로, 그것들도 도움이 될 것 같습니다. 장기적인 해결책은 Discourse에서 기본으로 포함된 모든 항목과 추가로 생성된 사용자 필드를 모두 푸시할 수 있는 방법을 구현하는 것입니다.

그 이유는 일부 대상 시스템에서는 작동하려면 특정 데이터가 필요하기 때문입니다. Discourse 내부에서 페이로드를 구성할 수 있는 UI가 있다면 정말 도움이 될 것입니다. Segment 문서의 표준 필드에만 제한되더라도 좋습니다. https://segment.com/docs/connections/spec/identify/

1개의 좋아요

늦게 답변드려 죄송합니다. 이 문제를 좀 더 조사해 보았습니다. 현재 Discourse가 클라이언트에 provider_uid를 전송하지 않기 때문에 테마 컴포넌트를 통해 provider_uid를 설정하는 것은 불가능합니다. 미래에는 사이트 설정을 통해 활성화할 수 있는 기능이 될 수 있지만, 이를 위해 코어 Discourse 코드에 일부 변경 사항이 필요합니다.

1개의 좋아요

문제가 아닙니다. 후속 조치와 확인해 주셔서 감사합니다. hopefully Discourse와 우리 사이트에서 Discourse 사용자를 연결할 다른 방법을 찾을 수 있기를 바랍니다.

1개의 좋아요