그룹 멤버십 스크립팅

나는 여러 등급의 회원제도를 가진 조직의 포럼 관리자입니다. 이 등급들은 포럼의 사용자 그룹 멤버십에 해당합니다. 현재는 모든 신규 회원에 대해 수동으로 처리해야 합니다. 신규 회원의 이메일 주소를 받아 해당 주소가 사용자 계정에 연결되어 있는지 확인한 후, 해당 사용자를 사용자 그룹에 추가하는 과정입니다.

원하는 것은 이메일 주소 목록을 받아, 해당 주소로 등록된 사용자가 있으면 그 사용자를 그룹에 추가하고, 없으면 그룹 권한이 이미 설정된 초대장을 보내는 스크립트입니다. 이런 스크립트를 어떻게 작성해야 할까요?

감사합니다!

수정:

아래의 예시:
다음의 세 가지 이메일 주소를 가지고 있습니다:
alice@example.com - SomeGroup의 그룹 멤버가 아닌 포럼 회원에 속함
bob@foo.org - SomeGroup의 멤버인 포럼 회원에 속함
carol@bar.edu - 포럼 회원에 속하지 않음.

alice@example.com에 해당하는 사용자를 SomeGroup에 추가하고(환영 메시지를 보내고), bob@foo.org 사용자에게는 아무 작업도 하지 않으며, carol@bar.edu에는 그룹 가입 플래그가 설정된 포럼 초대장을 보내고 싶습니다.

그룹을 설정하여 사용자가 특정 이메일 도메인(@example.com)으로 가입하면 해당 그룹에 자동으로 추가되도록 할 수 있습니다.

그룹의 관리 탭으로 이동한 다음, 멤버십 섹션의 첫 번째 항목인 자동에 도메인을 추가하세요.

감사합니다만, 여기서는 큰 도움이 되지 않습니다. 우리 회원들은 모두 개인 이메일을 사용하고 있어서 도메인이 서로 다르기 때문입니다.

초대 링크를 설정하여 고객에게 보낼 수 있지만, 제가 생각하기에 아직 가입하지 않은 경우에만 작동합니다.

멤버 탭으로 이동한 후 초대를 클릭하고, 초대를 설정한 다음 초대 저장 버튼을 누르세요.

초대 링크를 보내면 기존 회원에게도 작동합니다. :+1: 또한, 회원이 접속했을 때 특정 주제에 바로 도달하도록 지정할 수도 있어, 그룹 등록이나 이벤트에 유용합니다.

이미 주소 목록이 있다면 일괄 초대 기능도 사용할 수 있습니다.

몰랐어요. 위키를 확인해 보니 계정 생성 시에만 그렇게 되어 있더라고요. 위키가 아닌 것 같은데, 수정해 주실 수 있나요? (Invite users to a group)

질문이 명확하지 않았을 것 같아서 예를 들어 보겠습니다.

다음과 같은 세 개의 이메일 주소가 있습니다:
alice@example.com - SomeGroup의 그룹 멤버가 아닌 포럼 회원의 이메일입니다.
bob@foo.org - SomeGroup의 멤버인 포럼 회원의 이메일입니다.
carol@bar.edu - 포럼 회원의 이메일이 아닙니다.

스크립트가 alice@example.com에 해당하는 사용자를 SomeGroup에 추가하고(필요시 환영 메시지도 보내며), bob@foo.org의 사용자에게는 아무 동작도 하지 않고, carol@bar.edu에는 그룹 등록 플래그가 포함된 초대장을 보내도록 하고 싶습니다.

아, 그렇군요! 그걸 몰랐네요! 기존 멤버들에게 그룹에 추가되었다는 알림이 전송되나요?

이메일 주소 목록을 사용하는 것보다, 이 작업을 위해 API를 사용하는 것이 더 합리적일 것입니다. 즉, 사용자가 가입할 때 이 API를 사용하여 해당 사용자를 그룹에 자동으로 등록해야 합니다: Discourse API Docs

이를 위해서는 API를 호출하는 시점에 사용자가 이미 Discourse에 생성되어 있어야 합니다. 이 방식은 설정이 조금 더 필요할 수 있지만, 사용자 이메일 주소를 수동으로 업로드할 필요가 없이 전체 흐름을 완전히 자동화할 수 있습니다.

문제는 제가 실제로 가지고 있는 것이 사용자 이름이 아니라 이메일 주소 목록이라는 점입니다. 저희 조직은 포럼이 조직의 일부일 뿐이므로, 포럼 사용자 이름이 아닌 이름과 이메일로 회원 등급을 관리하고 있습니다. 회원 담당자가 매주 신규 회원의 이름과 이메일 목록을 보내주는데, 포럼에 공개 섹션이 있으므로 해당 회원들이 이미 포럼 계정을 가지고 있을 수도 있고, 없을 수도 있습니다.

실제로는 그렇게 작동하지 않는 것 같습니다. 초대 링크를 보내려고 하면 example@gmail.com 사용자는 이미 계정이 있으므로 초대할 필요가 없다는 메시지가 표시됩니다.

내가 스스로를 혼동했을 수도 있겠네요. :slight_smile: 기존 포럼 기능으로 원하는 것을 달성할 수 있는 방법을 찾아보겠습니다. :+1:

수정:

Bulk Invite 옵션을 사용하면 가능할 것 같습니다. 이메일 주소 목록이 담긴 CSV 파일이 있고, 두 번째 열에 추가하려는 그룹이 포함되어 있다면, 이 파일을 Bulk Invite 도구에 실행하면 계정이 없는 사용자에게 가입 초대 메일을 보내고, 기존 멤버는 두 번째 열에 입력한 그룹에 추가합니다. 다만, 이 기능은 그룹에 추가되었다는 알림을 생성하지 않는다는 점이 부족합니다.

일괄 초대 기능이 지금은 정상적으로 작동하는 것 같습니다. 감사합니다! 기존 멤버들에게 새로운 권한이 부여될 때 메시지를 보내는 기능 추가를 요청하고 싶습니다.

혼란을 해결했습니다. 제 생각대로 작동하는 것은 이메일이 아니라 링크였습니다. :slight_smile: 따라서 다른 방법은 초대 링크(이메일 대신)를 생성한 후, 이메일 목록에 있는 모든 사람에게 그 링크를 이메일로 보내는 것입니다. 새 멤버는 그룹에 추가되고 해당 주제(topic)로 이동하기(해당 기준을 추가한 경우) 전에 ‘계정 생성 및 초대 수락’ 페이지로 이동하게 됩니다. 이미 로그인된 기존 사용자는 그룹에 추가되고 지정한 주제로 바로 이동하며, 로그인되지 않은 기존 사용자는 ‘계정 생성 및 초대 수락’ 페이지에서 로그인할 수 있습니다(이것이 가능한지 다소 모호하지만, js.create_account.subheader_title에 추가 텍스트를 넣어 힌트를 제공할 수 있습니다). 이후 그룹에 추가되고 해당 주제로 이동하게 됩니다.

그러나 이 방법도 그룹에 추가되었음을 알리는 알림을 보내지는 않습니다. 하지만 초기 초대 이메일에 설명을 포함할 수 있는 기회가 있으므로 유용할 수 있습니다. 또한 ‘주제 도착’ 기능도 랜딩 페이지로 유사하게 활용할 수 있습니다.

도움이 될지 확신은 없지만, 해결하게 되어 기쁩니다. :slight_smile: