웹훅으로 푸시 알림함 기능 구성하기

푸시 캠페인에 대한 푸시 알림함을 웹훅 캠페인을 활용해 쉽게 구현할 수 있습니다.

알림함이란?

알림함이란 앱이나 웹서비스에서 수신하는 다양한 알림(예: 공지, 이벤트, 할인정보 등)을 한 곳에 모아놓는 기능을 말합니다.

사용자가 푸시 알림을 보지 못했거나 다시 보고 싶을때 알림함에 들어가 다시 확인할 수 있습니다.

알림함의 구현을 위해 보통 개발자의 내부 시스템(알림 서버, 사용자 계정 시스템 등) 연동 작업이 필요합니다. 그러나 핵클의 푸시 캠페인과 웹훅 캠페인을 활용하여 그러한 작업을 신경 쓸 필요 없이 쉽게 구현이 가능합니다.

웹훅 캠페인을 활용하여 알림함을 구현하는 과정을 알아보도록 합니다.

들어가기 전에

📘

웹훅 캠페인을 설정하기 이전에 발송된 푸시메시지는 알림함에 노출되지않습니다.

$push_send 이벤트 알아보기

이번 예제에서는 핵클에서 푸시 캠페인을 진행하면, 자동으로 수집되는 이벤트인 $push_send 를 활용합니다.

$push_send 이벤트는 푸시 메시지 발송이 요청될 때 발생합니다. 즉 푸시 메시지가 발송되는 이벤트를 트리거로 잡아 웹훅 캠페인을 발송하는 개념입니다.

$push_send

$push_send 이벤트가 수집하는 이벤트 속성은 다음과 같습니다.

FieldTypeDescription
push_message_keyLong푸시 메시지 캠페인의 키 값이 들어있습니다.
platformString푸시 메시지 발송 대상의 플랫폼 타입 입니다. (ANDROID 또는 IOS)
push_tokenString푸시 메시지 발송 대상의 푸시 토큰 입니다
titleString고객에게 표시되는 푸시 메시지 타이틀입니다.
bodyString고객에게 표시되는 푸시 메시지 내용 부분입니다.
actionTypeStringAPP_OPEN 또는 DEEP_LINK 값이 들어옵니다.
actionValueStringactionType 이 DEEP_LINK 인 경우 딥 링크 값이 들어갑니다. 아닌 경우 Empty String("") 입니다.
debugBoolean테스트 발송 여부입니다. (true 또는 false)
resultString푸시 발송 요청 결과 코드입니다.

📘

푸시 발송 결과 코드

$push_send 이벤트에 result 속성 값을 통해 발송 성공 여부를 확인할 수 있습니다. 발송 요청 결과 코드는 다음과 같습니다.

NameDescription
SUCCESS전송 성공 시
DEDUP특정 캠페인의 중복 발송 제한에 걸린 경우
GLOBAL_FREQUENCY_CAPPED전체 캠페인 발송 빈도 제한 설정으로 제한된 경우
NOT_FOUND_PUSH_PROVIDER_CREDENTIALS푸시 제공자 인증 정보가 없는 경우
INVALID_PUSH_PROVIDER_CREDENTIALS푸시 제공자 인증 정보가 유효하지 않은 경우
INVALID_PUSH_TOKEN유효하지 않은 푸시 토큰인 경우
INTERNAL_ERROR서버 오류 발생 시

유저 식별자

$push_send 이벤트는 발송 대상의 식별자 중 하나를 수집합니다.

FieldTypeDescription
userIdString(nullable)푸시 발송 대상 유저의 userId 식별자
deviceIdString(nullable)푸시 발송 대상 유저의 deviceId 식별자

1. 웹훅 캠페인 설정

대시보드의 메뉴의 웹훅 메뉴 우측 상단에 위치한 + 캠페인 만들기 버튼을 클릭해서 새로운 웹훅 캠페인을 생성하실 수 있습니다.

원하는 캠페인 이름을 입력하여 생성해주세요.

1-1. Method 설정

Method 는 POST 로 설정합니다.

1-2. Headers 및 Parameter 설정

푸시 알림함을 구현하는 API 의 스펙에 맞춰 Headers 에 인증정보 등을 추가합니다.

여기에서는 Authorization 헤더에 개인화를 이용해 유저 속성에 담겨있는 access-token 을 활용한다고 가정하였습니다.

1-3. Body 설정

Liquid 문법을 활용하여 를 웹훅의 Request Body를 작성합니다.

앞서 살펴보았던, $push_send 이벤트가 수집하는 속성 및 식별자를 활용하였습니다.

Request Body

{ 
 "identifiers":{
 	"userId": "{{identifiers["$userId"]}}",
 	"deviceId":"{{identifiers["$deviceId"]}}" 
 },
 "key": "{{event_properties["push_message_key"]}}", 
 "platform": "{{event_properties["platform_type"]}}", 
 "push_token": "{{event_properties["push_token"]}}",
 "title": "{{event_properties["push_message_title"]}}",
 "body": "{{event_properties["push_message_body"]}}",
 "actionType": "{{event_properties["push_message_action_type"]}}",
 "actionValue":"{{event_properties["push_message_action_value"]}}"
}

개인화에 사용된 속성 또는 식별자 값이 null 인 경우 Empty String("") 으로 치환됨을 유의하세요

1-4. 대상 설정

기본 설정 - 모든 푸시 캠페인

모든 푸시 캠페인을 알림함에서 노출하고 싶은 경우 대상으로 모든 사용자를 선택합니다.

고급 설정 - 특정 푸시 캠페인

특정한 푸시 캠페인만 알림함에서 노출하고 싶은 경우 푸시 캠페인의 대상 코호트와 일치하도록 웹훅 코호트를 설정합니다.

🚧

푸시 알림함 구현시 푸시 캠페인의 대상과 웹훅 캠페인 대상 설정에 주의하세요

푸시 캠페인의 대상과 동일하거나 더 넓은 대상을 웹훅 캠페인 대상으로 설정하도록 합니다.

혹은 웹훅 캠페인 대상을 '모든 사용자'로 설정하여 푸시 알림함이 의도대로 동작하도록 세팅합니다.

3. 웹훅 발송 설정

웹훅 캠페인 설정을 완료하면 요약 내용을 확인할 수 있습니다.

'저장하기'를 누르고 발송설정을 클릭합니다.

발송유형을 '이벤트 기반'으로 선택합니다.

시작 이벤트로는 '$push_send' 를 선택합니다.

그 뒤 필터 추가하기를 눌러 속성 필터 조건을 이용해서 다음과 같이 속성 조건을 추가합니다.

KeyValue설명
push_message_key(푸시 캠페인의 키 값)(선택) 특정 푸시 캠페인만 설정하고 싶은 경우
resultSUCCESS(추천) 전송 성공한 메세지만 보여주고 싶은 경우

기본 설정 - 모든 푸시 캠페인

모든 푸시 캠페인을 알림함에서 노출하고 싶은 경우 result 속성만 활용하여 필터를 설정합니다. result 는 SUCCESS 로 입력하면 됩니다.

고급 설정 - 특정 푸시 캠페인

특정 푸시 캠페인을 알림함에서 노출하고 싶은 경우 result 속성외에 push_message_key 속성도 활용하여 필터를 설정합니다.

원하는 푸시 캠페인의 메시지 키 값인 2를 입력하고 result 는 SUCCESS 로 입력하면 됩니다.

이 웹훅 캠페인은 알림함에 데이터를 전송하기 위한 목적이므로 별도의 발송 제한을 설정할 필요는 없습니다.

4. 완료

푸시 알림함을 위한 웹훅 구성이 모두 끝났습니다.

이제 알림함 수신을 위한 API 를 구현하여 푸시 알림함을 구현할 수 있습니다.