Braze의 messaging API
by Reid
용어 설명
- external_user_ids
- Braze SDK에 설정한 애플리케이션의 ID
- 캠페인의 경우 segment와 동시에 설정되어 있으면 둘 모두를 포함하는 사용자들이 대상이 됨
- user_aliases
- 사용자를 처음 등록 할 때 설정하는 alias를 이용해 발송
- send_id
- 발송한 알림을 track하기 위한 id
- broadcast로 발송하면 직접 입력하지 않아도 자동으로 만들어줌
- audience
- 사용자 속성을 기반으로 논리 연산의 조합으로 filter를 거는 기능
- 속성, 푸시 구독 여부, 이메일 구독 여부, 마지막 사용 시간 등을 기준으로 잡을 수 있음
- recipient_subscription_state
- opted_in: 옵트 인 된 유저에게만 발송
- subscribed: 옵트 인 되었거나 구독 중인 사용자에게만 발송
- all: 구독하지 않은 유저에게까지 모두에게 발송, transactional 이메일 보내기에 유용
Send Endpoints
POST messages/send
- 설계된 사용자군에게 임시 메시지를 즉시 발송 가능
segment_id
,external_user_ids
,audience
중 하나는 입력해야 함segment_id
는 segment에 등록된 사용자에게 발송external_user_ids
,user_aliases
는 해당 사용자들에게 직접 발송- 함께 입력되면 해당 사용자들 중 segment에 등록된 사용자에게 발송
POST https://YOUR_REST_API_URL/messages/send
{
"api_key": API Key,
"broadcast": external_user_ids나 aliases가 없으면 true로 설정,
"external_user_ids": 외부 사용자 ID,
"user_aliases": 사용자 alias,
"segment_id": Segment ID,
"audience": Connected Audience,
"campaign_id": Campaign ID,
"send_id": Send ID,
"override_frequency_capping": 캠페인에 대한 frequency_capping 무시,
"recipient_subscription_state": Push 알림 구독 상태,
"messages": {
"apple_push": Apple Push Object,
"android_push": Android Push Object,
"windows_phone8_push": Windows Phone 8 Push Object,
"windows_universal_push": Windows Universal Push Object,
"kindle_push": Kindle/FireOS Push Object,
"web_push": Web Push Object,
"email": Email Object
}
}
POST campaigns/trigger/send
- API Triggered Delivery를 이용하여 발송, 대시보드에 메시지 내용을 저장해놓고, 메세지를 보낼 시점과 누구에게 보낼지를 지정
POST https://YOUR_REST_API_URL/campaigns/trigger/send
{
"api_key": API Key,
"campaign_id": Campaign ID,
"send_id": Send ID,
"trigger_properties": 요청의 모든 유저들에게 적용 될 개인화된 key-value 쌍,
"broadcast": recipients가 없으면 true로 설정,
"audience": Connected Audience,
// 'audience'는 audience 사용자들에게 발송
"recipients": 값이 제공되지 않고 broadcast가 false가 아니면 campaign의 대상이 되는 segment 전체에게 발송 [
{
// "external_user_id", "user_alias" 둘 중 하나 필수
"user_alias": 사용자 Alias,
"external_user_id": 외부 사용자 Id,
"trigger_properties": 요청의 유저에게 적용 될 개인화된 key-value 쌍으로 위 trigger_properties와 충돌이 나는 경우 이 값으로 override됨
},
...
]
}
Schedule Endpoints
POST messages/schedule/create
- 특정 타임존 시각, 각 유저별 타임존 시각, 최적 시각 등으로 보내는 시각 설정 가능
- 캠페인, 캔버스, 정해진 시각에 보내야 하는 메시지등의 스케줄을 생성
- segment가 타겟인 경우, 요청 기록은 Developer Console에 저장됨
POST https://YOUR_REST_API_URL/messages/schedule/create
{
"api_key": API Key,
// 'segment_id', 'external_user_ids', 'audience' 중 하나는 입력해야 함
// 'segment_id'는 segment에 등록된 사용자에게 발송
// 'external_user_ids', 'user_aliases'는 해당 사용자들에게 직접 발송
// 함께 입력되면 해당 사용자들 중 segment에 등록된 사용자에게 발송
"broadcast": external_user_ids나 aliases가 없으면 true로 설정,
"external_user_ids": 외부 사용자 ID,
"user_aliases": 사용자 alias,
"segment_id": Segment ID,
"audience": Connected Audience,
"campaign_id": Campaign ID,
"send_id": Send ID,
"override_messaging_limits": 캠페인에 대한 전역 rate limit 무시,
"recipient_subscription_state": opted in된 유저에게만 발송 ('opted_in'), 구독했거나 opted in 된 유저에게만 발송 ('subscribed'), 구독하지 않은 유저에게까지 모두에게 발송 ('all'), 마지막 옵션은 transactional 이메일 보내기 등에 유용
"schedule": {
"time": 메시지 전송 시각,
"in_local_time": 각자의 로컬 시각에 보낼 것인가,
"at_optimal_time": 최적 추천 시각에 보낼 것인가,
},
"messages": {
"apple_push": Apple Push Object,
"android_push": Android Push Object,
"windows_push": Windows Phone 8 Push Object,
"windows8_push": Windows Universal Push Object,
"kindle_push": Kindle/FireOS Push Object,
"web_push": Web Push Object,
"email": Email object,
"webhook": Webhook object
}
}
campaigns/trigger/schedule/create
POST https://YOUR_REST_API_URL/campaigns/trigger/schedule/create
{
"api_key": API Key,
"campaign_id": Campaign ID,
"send_id": Send ID,
// 'recipients'는 제공된 사용자 id들 중 캠페인 세그먼트에 포함된 사용자들에게만 발송
"recipients": Recipient Object 배열,
// trigger properties와 Recipient Object간에 충돌이 발생하면, Recipient Object가 사용됨
"audience": Connected Audience,
// 'audience'는 audience 사용자들에게만 발송
// 'recipients'와 'audience'가 설정되지 않았고 broadcast가 false가 아니면 메시지는 캠페인의 대상이 되는 모든 segment들에게 메시지를 발송
"broadcast": recipients가 없으면 true로 설정,
"trigger_properties": 요청의 모든 유저들에게 적용 될 개인화된 key-value 쌍,
"schedule": {
"time": 메시지 전송 시각,
"in_local_time": 각자의 로컬 시각에 보낼 것인가,
"at_optimal_time": 최적 추천 시각에 보낼 것인가,
}
}
POST messages/schedule/update
POST https://YOUR_REST_API_URL/messages/schedule/update
{
"api_key": API Key,
"schedule_id": 수정 할 스케줄 ID,
"schedule": {
// optional, see create schedule documentation
},
"messages": {
// optional, see create schedule documentation
}
}
POST campaigns/trigger/schedule/update
POST https://YOUR_REST_API_URL/campaigns/trigger/schedule/update
{
"api_key": API Key,
"campaign_id": Campaign ID,
"schedule_id": 수정 할 schedule ID,
"schedule": {
// required, see create schedule documentation
}
}
POST messages/schedule/delete
POST https://YOUR_REST_API_URL/messages/schedule/delete
{
"api_key": API Key,
"schedule_id": 삭제 할 schedule ID
}
POST campaigns/trigger/schedule/delete
POST https://YOUR_REST_API_URL/campaigns/trigger/schedule/delete
{
"api_key": API Key,
"campaign_id": Campaign ID,
"schedule_id": 삭제 할 schedule ID
}
메시지 전송 트래킹을 위한 Send IDs 생성
POST /sends/id/create
- 메시지를 보낼 때 마다 따로 캠페인을 생성하지 않고도, 메시지를 전송하고 메시지 퍼포먼스를 트랙킹 할 수 있음
- 프로그램 적으로 메시지를 만들어서 전송 할 때 유용
- 주어진 앱 그룹 당 일간 100개까지 제한
POST https://YOUR_REST_API_URL/sends/id/create
{
"api_key": API Key,
"campaign_id": Campaign ID,
"send_id": Send DI
}
근접한 스케줄의 캠페인과 캔버스 얻기
$ curl https://rest.iad-01.braze.com/messages/scheduled_broadcasts?api_key=X&end_time=2017-09-01T00:00:00-04:00
Subscribe via RSS