기능 요청: 다이제스트 작업의 '전송 시간 창'을 설정 가능하게 해주세요

여러분께,

다이제스트 작업이 큐에 추가될 때 사용할 수 있는 "시간대(time window)"와 "다이제스트 발송 요일(digest days)"을 설정할 수 있는 사이트 설정 항목 1~2개를 요청드립니다.

이 요청을 드리는 이유는 대부분의 사이트, 그리고 저희 사이트도 포함하여 사용자가 집중된 주요 지역이 있기 때문입니다. 예를 들어 저희는 미국이 주요 지역이고, 다른 사이트는 한국, 브라질, 독일, 호주 또는 지구상의 다른 지역일 수 있습니다.

다이제스트 이메일을 주요 사용자층의 평일 업무 시간 내에 발송할 수 있다면 훨씬 효율적일 것입니다. 많은 사이트가 다이제스트 이메일을 보내기 위해 MailGun이나 SendGrid와 같은 대량 메일 서비스를 유료로 이용하고 있습니다. 따라서 다이제스트 이메일이 회원의 수신함에 "월요일 오전 10시경"에 도착하는 것이 "토요일 새벽 3시"에 도착하는 것보다 훨씬 낫습니다.

이 작업들은 큐에 대기되므로, **“다이제스트 큐 시간대”**와 **“다이제스트 큐 허용 요일”**과 같은 설정 변수 1~2개를 제공하면 다이제스트 이메일 발송에 드는 비용을 더 효율적으로 사용할 수 있을 것입니다.

GitHub에서 코어를 검색해 보았지만 이러한 중요한 매개변수를 설정할 방법을 찾을 수 없었습니다. 제가 놓친 것이 있을까요?

이 요청을 검토해 주셔서 감사합니다!

2개의 좋아요

기본 설정에서 Discourse는 사용자가 7일간의 비활동 기간을 완료한 시점과 동일한 시간에 다이제스트를 전송합니다. 즉, 이메일은 사용자가 사이트에 활동적이었던 시간대에 맞춰 발송됩니다. 이는 각 사용자 및 시간대에 자동으로 적응하기 때문에 매우 좋습니다.

매우 흔한 문제는 가져오기(임포트)와 관련이 있습니다. 관리자가 가져온 사용자의 다이제스트를 비활성화하는 것을 잊거나, 가져온 데이터에서 마지막 활동 시간을 가져오는 것을 잊어 모든 것이 자정으로 설정되는 경우가 많습니다.

3개의 좋아요

훌륭합니다!

ㅋㅋ. 우리의 문제에 대해 정확히 찌푸셨네요! 우리의 가져온 사용자들이 마지막 활동 시간이 레거시 vB 사이트에서 Discourse로 가져온 시점으로 설정되어 있었습니다.

우리의 경우, 우리가 사용한 Discourse 스크립트가 이렇게 하지 않았고, 처음부터 아무것도 모르는 것을 "잊었다"고 할 수는 없잖아요, ㅋㅋ.

그들은 말하듯, 사후에 보면 모든 것이 명확해집니다(20/20 hindsight).

레거시 포럼에서 처음 Discourse로 이관하는 대부분의 사용자가 “Discourse 다이제스트가 어떻게 작동하는지 세부 사항을 알기 전에” 이를 “잊을” 것이라고 생각하지 않습니다 :slight_smile:

큰 문제는 아닙니다. 하지만 당신 스스로 말하신 대로:

따라서 제가 요청하는 기능은 이관된 포럼, 그리고 사이버 공간에서 대체로 “혼자 힘으로” Discourse로 포럼을 이관하는 "지원받지 못한 영혼들"에게 이 문제를 완화하는 데 도움이 될 것입니다 :slight_smile:

이 "흔한 문제"가 해결되지 않을 것 같으니, 우리가 “해야 할 필요가 있다는 것을 알기 전에” "무언가를 잊었다"고 하는 우리 같은 잃어버린 이관 영혼들을 위해 이 문제를 원키 패치(monkey patch)하는 플러그인을 작성할 수 있도록 리포지토리의 관련 코드 링크를 올려 주시겠어요?

감사합니다!

1개의 좋아요

아니면, 그냥 잊어버리고 몽키 패치 대신 루비 스크립트를 작성해서 마이그레이션된 사용자의 “마지막 활동” 시간을 정상 업무 시간으로 변경하는 것도 좋을 것 같습니다 (자정에 10시간만 더하면 끝이죠!)

문제 해결 완료 :slight_smile:

1개의 좋아요

이 정보를 알려주셔서 감사합니다, @Falco

방금 이 레거시 사용자들의 last_seen_at 날짜/시간을 EST 오전 10시로 맞추도록 업데이트했습니다.

답변을 제가 이해한 바로는, 이는 다이제스트 이메일이 오전 10시경에 큐에 등록되도록 할 것입니다.

맞습니까?

업데이트:

음. 작동하지 않는 것 같습니다. last_seen_at 날짜/시간을 EST 오전 10시로 설정한 후에도, sidekiq는 현재 자정(EST) 직후에 다이제스트를 큐에 넣고 있으며, 관리자 패널의 이메일 전송 로그에도 다이제스트가 지금 전송되고 있는 것으로 표시됩니다.

다이제스트가 전송되는 시각으로 '마지막 활동’을 자동으로 맞추는 이 마법 같은 기능이 제 환경에서는 설명대로 작동하지 않는 것 같습니다.

:confused:

알겠습니다. 현재 라이브 사이트에서 EnqueueDigestEmails 클래스를 디버깅하고 몽키 패칭(monkey-patching)하고 있습니다.

로그를 기록하고 세밀한 조정을 거친 후, 결론적인 결과가 나오면 다시 보고하겠습니다.

1개의 좋아요