ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [node] How to send remind-push to customers
    Backend/NodeJS 2019. 11. 27. 17:21

     

     

    What is the remind-push?

    It is push notifications that leads users to access PLANT app service.

    So, We expect more connection & active users.

     

     

     

    When should I send it?

    하루 중, 자주 접속 했던 시간이 지났는 데도 접속을 하지 않았을때

    During a day, When they didn't connect until the time they frequently connect.

     

     

     

    How?

    I use data selectivity, histogram.

     

     

     


    작업 프로세스

    Step

    1. 사용자들의 활동에 대한 날짜를 수집한다.

       Get timestamp that user activity.

    2. 날짜 정보를 float  행태로 변환한다.

       Convert time to float format.  ex) '2019-11-28 07:47:34' -> 7.47

    3. 히스토그램 값을 구한다. (기준은 12시간으로 한다. 0~1, 2~3, 4~5, ... 10~11)

       Calcuate histogram value.

    4. 그 값들 중 최대값의 인덱스를 구한다.

       Get index of the max value.

    5. 인덱스값+1의 시간대에 푸시 알림을 보낸다. (예, index: 3 => 6시에 푸시).

       .

     

    아직 완벽한 프로세스는 아니다.

    It isn't perfect process not yet.

    다만, 특정 시간에 일괄적으로 단체 푸시를 보내는 것보단 낫다고 생각한다.

    But, I think it's better than send a group push at a same time.

    앞으로 개선해 나가자!

    I'll improve it in the future!

     


     

    프로젝트에 적용하니 아래와 같은 결과가 나온다.

    FIrst result.

    한 가지 간과한 사실이 있다.

    I had a one mistake.

    서비스 접속을 한번도 하지 않은 시간대는 제외된다는 것을..!

    That's times what have never been accessed to app be excluded.
    그래서 각 시간대마다 더미 데이터를 넣어줬다.

    So, I put the dummy data.

     

     


     

    (Modified) 작업 프로세스

    1. 사용자들의 활동에 대한 시간을 수집한다.

    2. 각 시간대별로 더미 시간을 추가한다.  

       Add dummy time for each time zone.

    3. 시간을 float  행태로 변환한다.

    4. 히스토그램 값을 구한다. (기준은 12시간으로 한다. 0~1, 2~3, 4~5, ... 22~23)

    5. 그 값들 중 최대값의 인덱스를 구한다.

    6. 인덱스값+2의 시간대에 푸시 알림을 보낸다. (예, index: 3+2 => 10시에 푸시)

    7. cron을 등록하고 현재시간과 비교하여 푸시를 보낸다.

     

     

    개선된 결과

    Improved result

     

     

     

     

    댓글

Designed by Tistory.