확인해 주셔서 감사합니다! 조금 더 맥락을 설명드리면, 우리는 대규모 사용자 기반을 보유하고 있으며, 오랫동안 앱을 사용하지 않은 사용자를 다시 끌어들이고자 합니다. 목표는 특정 발신자로부터 대량의 사용자에게 개인 메시지(PM)를 보내되, 여러 매개변수를 제어하는 것입니다:
발신자: 관리자 사용자가 양식에서 발신자의 사용자 이름을 직접 지정합니다.
제목 및 본문: 관리자는 PM의 제목과 본문을 모두 사용자 정의할 수 있습니다.
양 제어: 사용자에게 스팸이 되지 않도록 한 번에 전송되는 메시지 수를 제어하고 싶습니다.
타이밍: 가장 중요한 고려 사항은 이메일 도메인이 압도되지 않고 스팸으로 플래그되지 않도록 메시지 전송 속도를 제어하는 것입니다. 스팸 필터를 트리거하지 않도록 각 메시지(및 해당 이메일) 사이에 지연 시간을 정의하여 메시지를 간격 있게 보내야 합니다.
궁극적인 목표는 사용자에게 개인 메시지(이메일 알림도 생성됨)를 열어보게 하고, 앱으로 복귀하도록 독려하는 것입니다.
이미 이 작업을 수행할 수 있는 단순한 Ruby 스크립트가 있으며, 이는 완전히 작동하고 있습니다. 현재는 VM에 SSH로 접속하여 수동으로 트리거하고 있는데, 이는 다소 번거롭습니다. 이제 이 스크립트를 플러그인으로 적응시켜 관리자가 UI를 통해 쉽게 트리거하고, 설정(발신자, 제목, 본문, 메시지 수, 메시지 간 지연 시간 등)을 관리자 인터페이스에서 직접 입력할 수 있도록 하기를 원합니다.
관리자가 이러한 설정을 쉽게 입력하고, 프로세스를 트리거하며, 메시지 전송 진행 상황을 모니터링할 수 있는 플러그인 인터페이스를 통해 이를 달성하고 싶습니다.
사용자를 그룹으로 묶어두고, 그 그룹의 모든 사용자에게 전송할 계획을 세우는 방식이 좋을 것 같습니다. 메시지가 전송되면 user_custom_field에 값을 설정하고, 기존 토픽을 메시지의 텍스트와 발신자로 활용하면 됩니다. 그리고 일정 주기로 작업이 실행되어 원하는 만큼의 메시지를 보내도록 하면 됩니다. 그룹과 커스텀 필드 값은 설정에 저장해 두는 것이 좋습니다.
이렇게 하면 인터페이스를 만들거나 새 라우트를 생성할 필요가 전혀 없으며, 기존 설정만 사용하면 됩니다. 또한 데이터 탐색기를 통해 어떤 일이 일어났는지 확인할 수 있으므로, 인터페이스를 개발할 필요도 없습니다.
다만 UX에서 사용자가 직접 입력하는 필드를 만들고 싶다면, 이미 언급했던 <Form>을 확인해 보세요.