메시지 API
createMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
새로운 푸시 알림을 생성합니다.
요청 본문
Anchor link to| 이름 | 타입 | 설명 |
|---|---|---|
| auth* | string | Pushwoosh Control Panel의 API 액세스 토큰입니다. |
| application* | string | Pushwoosh 애플리케이션 코드 |
| notifications* | array | 메시지 파라미터의 JSON 배열입니다. 자세한 내용은 아래 요청 예시를 참조하세요. |
{ "status_code": 200, "status_message": "OK", "response": { "Messages": [ "C3F8-C3863ED4-334AD4F1" ] }}요청 예시
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // 필수. Pushwoosh 애플리케이션 코드. "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰. "notifications": [{ "send_date": "now", // 선택 사항. YYYY-MM-DD HH:mm 또는 'now' "content": { // 선택 사항. 객체 또는 문자열. "en": "English", // Windows의 경우 대신 "wns_content"를 사용하세요. "fr": "French" }, "title": { // 선택 사항. 객체 또는 문자열. "en": "Title", // 플랫폼별 제목이 지정된 경우 무시됩니다 "fr": "Titre" // 'ios_title', 'android_header' 등. }, // 아래의 플랫폼별 파라미터 예시를 참조하세요. "subtitle":{ // 선택 사항. 객체 또는 문자열. "en": "Subtitle", // 플랫폼별 제목이 지정된 경우 무시됩니다 "fr": "Sous-titre" // 'ios_subtitle' 등. }, // 아래의 플랫폼별 파라미터 예시를 참조하세요. "ignore_user_timezone": true, // 선택 사항. "timezone": "America/New_York", // 선택 사항. 무시될 경우 "send_date"의 기본값은 UTC-0입니다. // 지원되는 시간대는 https://php.net/manual/timezones.php를 참조하세요. "campaign": "CAMPAIGN_CODE", // 선택 사항. 이 푸시 메시지를 할당하려는 캠페인 코드. "geozone": { // 선택 사항. Geozone으로 보내기 "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // 선택 사항. Pushwoosh Control Panel의 Rich Media 편집기 페이지 URL 바에서 // Rich Media 코드를 복사하세요. "link": "https://google.com", // 선택 사항. 딥링크의 경우 "minimize_link": 0을 추가하세요. "minimize_link": 0, // 선택 사항. 0 — 최소화 안 함, 2 — bitly. 기본값 = 2. // 단축기는 호출 횟수에 제한이 있습니다. "data": { // 선택 사항. JSON 문자열 또는 JSON 객체, 페이로드에서 "u" 파라미터로 "key": "value" // 전달됩니다 (JSON 문자열로 변환됨). }, "transactionId": "unique UUID", // 선택 사항. 네트워크 문제 발생 시 중복을 방지하기 위한 고유 메시지 식별자. // Pushwoosh 측에 5분 동안 저장됩니다. "platforms": [ // 선택 사항. 1 — iOS; 3 — Android; 7 — Mac OS X; 8 — Windows; 1, 3, 7, 8, 9, 10, // 9 — Amazon; 10 — Safari; 11 — Chrome; 11, 12, 17 // 12 — Firefox; 17 — Huawei ], "preset": "XXXXX-XXXXX", // 선택 사항. Control Panel의 푸시 프리셋 코드. // 요청에 특정 파라미터가 전송되면, // 프리셋의 파라미터를 덮어씁니다. "send_rate": 100, // 선택 사항. 스로틀링. 유효한 값은 100에서 1000 푸시/초입니다. "send_rate_avoid": true, // 선택 사항. true로 설정하면, 이 특정 푸시 알림에는 // 스로틀링 제한이 적용되지 않습니다. // 템플릿 관련, 자세한 내용은 템플릿 엔진 가이드를 참조하세요 "template_bindings": { // 선택 사항. "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // 선택 사항. 기기 태그 대신 동적 콘텐츠를 위한 플레이스홀더. "firstname": "John", "lastname": "Doe" }, "message_type": "marketing", // 선택 사항. "marketing" 또는 "transactional". // 생략하면 PW_ControlGroup: true인 사용자는 메시지를 받지 않습니다.
// 빈도 제한 파라미터. Control Panel에서 전역 빈도 제한이 구성되었는지 확인하세요. // 빈도 제한은 트랜잭션 메시지에는 적용되지 않습니다. // "message_type"이 생략된 경우를 포함한 다른 모든 경우에는 빈도 제한이 적용됩니다. "capping_days": 30, // 선택 사항. 빈도 제한 일수 (최대 30일) "capping_count": 10, // 선택 사항. 'capping_days' 기간 내에 특정 앱에서 // 특정 기기로 보낼 수 있는 최대 푸시 수. // 생성된 메시지가 기기의 'capping_count' 제한을 // 초과하면 해당 기기로 전송되지 않습니다. "capping_exclude": true, // 선택 사항. true로 설정하면, 이 푸시 알림은 // 향후 푸시에 대한 제한에 포함되지 않습니다. "capping_avoid": true, // 선택 사항. true로 설정하면, 이 특정 푸시 알림에는 // 제한이 적용되지 않습니다.
// API를 통해 메시지를 받은 편지함에 저장하려면 "inbox_date" 또는 "inbox_image"를 사용하세요. // 이 파라미터 중 하나 이상이 사용될 때 메시지가 저장됩니다. "inbox_date": "2017-02-02", // 선택 사항. 받은 편지함에서 메시지를 제거할 시기를 지정합니다. // 메시지는 지정된 날짜의 00:00:01 UTC에 받은 편지함에서 // 제거되므로, 이전 날짜가 사용자가 받은 편지함에서 // 메시지를 볼 수 있는 마지막 날입니다. // 지정하지 않으면 기본 제거 날짜는 전송 날짜 다음 날입니다. "inbox_image": "Inbox image URL", // 선택 사항. 메시지 옆에 표시될 이미지. "inbox_days": 5, // 선택 사항. 받은 편지함에서 메시지를 제거할 시기를 // 지정합니다 (받은 편지함 메시지의 수명(일)). // "inbox_date" 파라미터 대신 사용할 수 있습니다. // 최대 30일.
"devices": [ // 선택 사항. 대상 푸시 알림을 보내기 위해 토큰 또는 hwid를 지정합니다. "hwid_XXXX" // 배열에 1000개 이하의 토큰/hwid. ], // 설정된 경우, 메시지는 목록에 있는 기기로만 전송됩니다. // 기기 목록에 대한 애플리케이션 그룹은 허용되지 않습니다. // iOS 푸시 토큰은 소문자만 가능합니다. "to": [ // 선택 사항. 이메일, SMS 및 유사한 채널용. 수신자 목록 "email_1", "email_2" // (예: 이메일 주소, 전화번호). 최대 1000개 항목. ], // 푸시의 경우 대신 "devices"를 사용하세요. // 사용자 중심 푸시 알림 "users": [ // 선택 사항. 설정된 경우, 메시지는 지정된 사용자 ID로만 "user_XXXX" // 전달됩니다 (/registerUser 호출을 통해 설정). ], // devices 또는 to와 함께 지정된 경우, // 후자는 무시됩니다. 배열에 1000개 이하의 사용자 ID. // 사용자 목록에 대한 애플리케이션 그룹은 허용되지 않습니다.
// 필터 및 조건 "filter": "FILTER_NAME", // 선택 사항. "conditions": [ // 선택 사항. 아래 설명을 참조하세요. ["Country", "EQ", "fr"], ["Language", "EQ", "en"] ], "conditions_operator": "AND" // 선택 사항. 조건 배열에 대한 논리 연산자. // 가능한 값: AND | OR. 기본값은 AND입니다. }] }}VoIP 알림 요청 예시
Anchor link toPushwoosh는 iOS 및 Android용 VoIP 스타일 통화 알림을 지원합니다.
아래에서 각 플랫폼에 대한 API createMessage 요청 예시를 찾을 수 있습니다.
{ "request": { "application": "XXXXX-XXXXX", // 필수. Pushwoosh 애플리케이션 코드. "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰. "notifications": [ { "voip_push": true, // 필수. VoIP 푸시 알림을 보내려면 이 파라미터가 필요합니다. "ios_root_params": { "aps": { "mutable-content": 1 // iOS10+ 미디어 첨부에 필요합니다. }, "callerName": "CallerName", // 선택 사항. 발신자 이름. 지정하지 않으면 "알 수 없는 발신자"가 표시됩니다. "video": true, // 선택 사항. 화상 통화 지원 여부를 나타냅니다. "supportsHolding": true, // 선택 사항. 통화 보류 기능 지원 여부를 나타냅니다. "supportsDTMF": false, // 선택 사항. 듀얼 톤 다중 주파수 신호 지원을 제어합니다. "callId": "42", // 선택 사항. 취소할 통화의 고유 식별자. "cancelCall": true // 선택 사항. 지정된 "callId"로 통화를 취소하려면 "true"로 설정합니다. } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // 필수. Pushwoosh 애플리케이션 코드. "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰. "notifications": [ { "voip_push": true, // 필수. VoIP 푸시 알림을 보내려면 이 파라미터가 필요합니다. "android_root_params": { "callerName": "callerName", // 선택 사항. 발신자 이름. 지정하지 않으면 "알 수 없는 발신자"가 표시됩니다. "video": true, // 선택 사항. 화상 통화 지원 여부를 나타냅니다. "callId": 42, // 선택 사항. 취소할 통화의 고유 식별자. "cancelCall": true // 선택 사항. 지정된 "callId"로 통화를 취소하려면 "true"로 설정합니다. } } ] }}플랫폼별 파라미터
Anchor link toiOS 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "ios_title": { // 선택 사항. 객체 또는 문자열. 푸시 알림에 iOS 특정 제목을 추가합니다. "en": "title" }, "ios_subtitle": { // 선택 사항. 객체 또는 문자열. 푸시 알림에 iOS 특정 부제목을 추가합니다. "en": "subtitle" }, "ios_content": { // 선택 사항. 객체 또는 문자열. 푸시 알림에 iOS 특정 콘텐츠를 추가합니다. "en": "content" }, "ios_badges": 5, // 선택 사항. iOS 애플리케이션 배지 번호. // "+n" 또는 "-n"을 사용하여 배지 값을 n만큼 증가/감소시킵니다. "ios_sound": "sound file.wav", // 선택 사항. 애플리케이션의 메인 번들에 있는 사운드 파일 이름. // 비워두면 기기에서 기본 시스템 사운드를 생성합니다. "ios_sound_off": true, // 선택 사항. "ios_sound" 필드로 설정된 사운드를 활성화/비활성화합니다. "ios_ttl": 3600, // 선택 사항. Time to live 파라미터 - 최대 메시지 수명(초). "ios_silent": 1, // 선택 사항. 무음 알림을 활성화합니다("sound" 및 "content" 무시). "ios_category_id": "1", // 선택 사항. Pushwoosh의 iOS8 카테고리 ID. "ios_root_params": { // 선택 사항. aps 딕셔너리에 대한 루트 수준 파라미터. "aps": { "content-available": "0", // 선택 사항. 무음 푸시를 보내려면 "1"로, 일반 푸시를 보내려면 "0"으로 설정합니다. "mutable-content": 1 // iOS10+ 미디어 첨부에 필요합니다. }, "callerName": "CallerName", // 선택 사항 VoIP 파라미터. 발신자 이름. 지정하지 않으면 "알 수 없는 발신자"가 표시됩니다. "video": true, // 선택 사항 VoIP 파라미터. 화상 통화 지원 여부를 나타냅니다. "supportsHolding": true, // 선택 사항 VoIP 파라미터. 통화 보류 기능 지원 여부를 나타냅니다. "supportsDTMF": false, // 선택 사항 VoIP 파라미터. 듀얼 톤 다중 주파수 신호 지원을 제어합니다. "data": {} // 선택 사항. 사용자가 제공한 데이터, 최대 4KB }, "ios_attachment": "URL", // 선택 사항. 알림에 미디어 콘텐츠를 삽입합니다. "ios_thread_id": "some thread id", // 선택 사항. 관련 알림을 그룹화하는 식별자. // 동일한 스레드 ID를 가진 메시지는 잠금 화면과 // 알림 센터에서 그룹화됩니다. "ios_critical": true, // 선택 사항. iOS 알림을 긴급 알림으로 표시하여 // 기기가 음소거 상태이거나 방해 금지 모드가 // 켜져 있어도 소리를 재생합니다. "ios_category_custom": "category", // 선택 사항. 사용자 지정 APNS 카테고리. "ios_interruption_level": "active", // 선택 사항. "passive", "active", "time-sensitive", // "critical" 중 하나. 알림의 중요도와 // 전달 시기를 나타냅니다. 자세한 내용은 // 일회성 푸시 가이드를 참조하세요. "apns_trim_content": 1 // 선택 사항. (0|1) 초과하는 콘텐츠 문자열을 줄임표로 자릅니다. }] }}Android 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "android_header": { // 선택 사항. Android 알림 헤더. "en": "header" }, "android_content": { // 선택 사항. Android 알림 콘텐츠. "en": "content" }, "android_root_params": { // 선택 사항. 사용자 지정 키-값 객체. "key": "value", // android 페이로드 수신자를 위한 루트 수준 파라미터. "CancelID": 12345678, // 선택 사항. 지정된 메시지 ID로 푸시 알림을 취소합니다 "voip": true, // 필수 VoIP 파라미터. VoIP 푸시 알림을 보내려면 이 파라미터가 필요합니다. "callerName": "callerName", // 선택 사항 VoIP 파라미터. 발신자 이름. 지정하지 않으면 "알 수 없는 발신자"가 표시됩니다. "video": true, // 선택 사항 VoIP 파라미터. 화상 통화 지원 여부를 나타냅니다. }, // (메시지 기록에서 ID를 가져옵니다) "android_sound": "soundfile", // 선택 사항. 파일 확장자 없음. 비워두면, // 기기에서 기본 시스템 사운드를 생성합니다. "android_sound_off": true, // 선택 사항. "android_sound" 필드로 설정된 사운드를 활성화/비활성화합니다 "android_icon": "icon.png", // 선택 사항. "android_custom_icon": "URL.png", // 선택 사항. 이미지 파일의 전체 URL. "android_banner": "URL.png", // 선택 사항. 이미지 파일의 전체 URL. "android_badges": 5, // 선택 사항. Android 애플리케이션 아이콘 배지 번호. // "+n" 또는 "-n"을 사용하여 배지 값을 n만큼 증가/감소시킵니다. "android_gcm_ttl": 3600, // 선택 사항. Time to live 파라미터 — 최대 메시지 수명(초). "android_vibration": 0, // 선택 사항. 고우선순위 푸시에 대한 Android 강제 진동. "android_led": "#rrggbb", // 선택 사항. LED 16진수 색상, 기기는 최선을 다해 근사치를 표현합니다. "android_priority": -1, // 선택 사항. Android 8.0 이상 기기의 "importance" 파라미터와 // Android 7.1 이하 기기의 "priority" 파라미터를 설정합니다. // 알림 채널 또는 특정 알림의 // 중단 수준을 설정합니다. 유효한 값은 -2, -1, 0, 1, 2입니다. "android_delivery_priority": "normal", // 선택 사항. "normal" 또는 "high". // 기기가 절전 모드일 때 알림 전달을 // 활성화합니다. "android_ibc": "#RRGGBB", // 선택 사항. Lollipop의 아이콘 배경색, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" 등. "android_silent": 1, // 선택 사항. 0 또는 1. 무음 알림을 활성화합니다. // 사운드와 콘텐츠 무시 "android_group_id": "123" // 선택 사항. 관련 알림을 그룹화하는 식별자. 동일한 // 스레드 ID를 가진 메시지는 알림 센터에서 // 그룹화됩니다. }] }}Huawei 파라미터
{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "huawei_android_header": { // 선택 사항. 객체 또는 문자열. 알림 제목 "en": "header" }, "huawei_android_content": { // 선택 사항. 객체 또는 문자열. 알림 콘텐츠 "en": "content" }, "huawei_android_badges": true, // 선택 사항. "huawei_android_silent": 0, // 선택 사항. 0 또는 1. 무음 알림을 활성화합니다. // 사운드와 콘텐츠 무시 "huawei_android_icon": "URL.png", // 선택 사항. "huawei_android_led": "#FF0011", // 선택 사항. LED 16진수 색상, 기기는 최선을 다해 근사치를 표현합니다 "huawei_android_vibration": 1, // 선택 사항. 고우선순위 푸시에 대한 Huawei 강제 진동 "huawei_android_sound": "sound.wav", // 선택 사항. 비워두면 기기에서 기본 // 시스템 사운드를 생성합니다 "huawei_android_sound_off": true, // 선택 사항. "huawei_android_sound" 필드로 // 설정된 사운드를 활성화/비활성화합니다 "huawei_android_custom_icon": "URL.png", // 선택 사항 "huawei_android_gcm_ttl": 2400, // 선택 사항. Time to live 파라미터 - 최대 // 메시지 수명(초) "huawei_android_banner": "URL.png", // 선택 사항. 이미지 파일의 전체 경로 URL "huawei_android_root_params": { // 선택 사항. 사용자 지정 키-값 객체. "key": "value" // Huawei 페이로드 수신자를 위한 루트 수준 파라미터. }, "huawei_android_priority": 0, // 선택 사항. 유효한 값: -2, -1, 0, 1, 2 "huawei_android_ibc": "#0011AA", // 선택 사항. Lollipop의 아이콘 배경색 "huawei_android_lockscreen": 1, // 선택 사항 "huawei_android_delivery_priority": "normal", // 선택 사항. "normal" 또는 "high". 절전 모드에서 // 알림 전달 활성화 "huawei_android_group_id": "group_id" // 선택 사항. 관련 알림을 그룹화하는 식별자 }] }}Safari 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "safari_url_args": [ // 필수, 하지만 값은 비어 있을 수 있습니다 "firstArgument", "secondArgument" ], "safari_title": { // 선택 사항. 객체 또는 문자열. 알림의 제목. "en": "content" }, "safari_content": { // 선택 사항. 객체 또는 문자열. 알림의 콘텐츠. "en": "content" }, "safari_action": "Click here", // 선택 사항. "safari_ttl": 3600 // 선택 사항. Time to live 파라미터 — 메시지의 최대 // 수명(초). }] }}Chrome 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "chrome_title": { // 선택 사항. 객체 또는 문자열. 이 파라미터에서 "en": "title" // 메시지의 헤더를 지정할 수 있습니다. }, "chrome_content": { // 선택 사항. 객체 또는 문자열. 이 파라미터에서 "en": "content" // 메시지의 콘텐츠를 지정할 수 있습니다. }, "chrome_icon": "URL.png", // 선택 사항. 아이콘의 전체 URL 또는 확장 리소스 파일 경로 "chrome_gcm_ttl": 3600, // 선택 사항. Time to live 파라미터 – 최대 메시지 수명(초). "chrome_duration": 20, // 선택 사항. 최대 50초. 크롬 푸시 표시 시간을 변경합니다. // 사용자가 상호 작용할 때까지 푸시를 표시하려면 0으로 설정합니다. "chrome_image": "image_URL", // 선택 사항. 큰 이미지의 URL. "chrome_root_params": { // 선택 사항. Chrome으로 전송되는 메시지에 특정한 파라미터를 설정합니다. "key": "value" }, "chrome_button_text1": "text1", // 선택 사항 "chrome_button_url1": "button1_URL", // 선택 사항. chrome_button_text1이 설정되지 않으면 무시됩니다. "chrome_button_text2": "text2", // 선택 사항 "chrome_button_url2": "button2_url" // 선택 사항. chrome_button_text2가 설정되지 않으면 무시됩니다. }] }}Firefox 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "firefox_title": { // 선택 사항. 객체 또는 문자열. 여기에 메시지 헤더를 지정할 수 있습니다. "en": "title" }, "firefox_content": { // 선택 사항. 객체 또는 문자열. 여기에 메시지 콘텐츠를 지정할 수 있습니다. "en": "content" }, "firefox_icon": "URL.png", // 선택 사항. 아이콘의 전체 경로 URL 또는 확장 리소스의 // 파일 경로. "firefox_root_params": { // 선택 사항. Firefox로 전송되는 메시지에 특정한 파라미터를 설정합니다. "key": "value" } }] }}Amazon 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "adm_header": { // 선택 사항. 객체 또는 문자열. 여기에 메시지 헤더를 지정할 수 있습니다. "en": "header" }, "adm_content": { // 선택 사항. 객체 또는 문자열. 여기에 메시지 콘텐츠를 지정할 수 있습니다. "en": "content" }, "adm_root_params": { // 선택 사항. 사용자 지정 키-값 객체 "key": "value" }, "adm_sound": "push.mp3", // 선택 사항. "adm_sound_off": true, // 선택 사항. "adm_sound" 필드로 설정된 사운드를 활성화/비활성화합니다 "adm_icon": "icon.png", // 선택 사항. 아이콘의 전체 URL. "adm_custom_icon": "URL.png", // 선택 사항. "adm_banner": "URL.png", // 선택 사항. "adm_ttl": 3600, // 선택 사항. Time to live 파라미터 — 최대 메시지 // 수명(초). "adm_priority": -1 // 선택 사항. Amazon 푸시 서랍에서 푸시의 우선순위, // 유효한 값은 -2, -1, 0, 1, 2입니다. }] }}Mac OS X 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "mac_title": { // 선택 사항. 객체 또는 문자열. 푸시 알림에 제목을 추가합니다. "en": "title" }, "mac_subtitle": { // 선택 사항. 푸시 알림에 부제목을 추가합니다. "en": "subtitle" }, "mac_content": { // 선택 사항. 푸시 알림에 콘텐츠를 추가합니다. "en": "content" }, "mac_badges": 3, // 선택 사항. "mac_sound": "sound.caf", // 선택 사항. "mac_sound_off": true, // 선택 사항. "mac_sound" 필드로 설정된 사운드를 활성화/비활성화합니다 "mac_root_params": { // 선택 사항. "content-available": 1 }, "mac_ttl": 3600 // 선택 사항. Time to live 파라미터 — 최대 메시지 수명(초). }] }}Windows 파라미터
Anchor link to{ "request": { "application": "12345-67891", // 필수. Pushwoosh 애플리케이션 코드 "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "notifications": [{ "wns_content": { // 필수. MIME의 base64로 인코딩된 알림 콘텐츠(XML 또는 원시) // 객체 또는 문자열 형식 "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 선택 사항. 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // 선택 사항. 타일 교체 정책에 사용됩니다. // 16자 이하의 영숫자 문자열. "wns_cache": 1, // 선택 사항. (1|0) X-WNS-Cache-Policy 값으로 변환됩니다. "wns_ttl": 600 // 선택 사항. 알림의 만료 시간(초). }] }}응답:
| HTTP 상태 코드 | status_code | 설명 |
|---|---|---|
| 200 | 200 | 메시지가 성공적으로 생성되었습니다 |
| 200 | 210 | 인수 오류. 자세한 내용은 status_message를 참조하세요 |
| 400 | N/A | 잘못된 형식의 요청 문자열 |
| 500 | 500 | 내부 오류 |
API 메시징 추적
Anchor link to로드 밸런싱을 위해, 배열에 10개 미만의 기기를 포함하는 “devices” 파라미터를 통해 API로 전송된 메시지는 저장하지 않습니다. 이로 인해 이러한 메시지는 메시지 기록에 표시되지 않습니다.
테스트 단계에서 푸시 리포트를 보려면 API 메시징 추적을 사용하세요. 이 옵션을 ON으로 설정하면 1시간 동안 이 제한을 무시하고 이러한 푸시를 메시지 기록에 저장할 수 있습니다. API 메시징 추적은 1시간 후에 자동으로 OFF로 전환됩니다.
API 메시징 추적은 메시지 기록 페이지의 오른쪽 상단에 있는 API 메시징 추적 시작을 클릭하여 활성화할 수 있습니다.
태그 조건
Anchor link to각 태그 조건은 [tagName, operator, operand]와 같은 배열입니다. 여기서
- tagName: 태그 이름
- operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
- operand: 문자열 | 정수 | 배열 | 날짜
연산자 설명
Anchor link to- EQ: 태그 값이 피연산자와 같습니다;
- IN: 태그 값이 피연산자와 교차합니다 (피연산자는 항상 배열이어야 합니다);
- NOTEQ: 태그 값이 피연산자와 같지 않습니다;
- NOTIN: 태그 값이 피연산자와 교차하지 않습니다 (피연산자는 항상 배열이어야 합니다);
- GTE: 태그 값이 피연산자보다 크거나 같습니다;
- LTE: 태그 값이 피연산자보다 작거나 같습니다;
- BETWEEN: 태그 값이 최소 피연산자 값보다 크거나 같고 최대 피연산자 값보다 작거나 같습니다 (피연산자는 항상 배열이어야 합니다);
- NOTSET: 태그가 설정되지 않았습니다. 피연산자는 고려되지 않습니다;
- ANY: 태그에 어떤 값이든 있습니다. 피연산자는 고려되지 않습니다.
문자열 태그
Anchor link to유효한 연산자: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
유효한 피연산자:
- EQ, NOTEQ: 피연산자는 문자열이어야 합니다;
- IN, NOTIN: 피연산자는
["value 1", "value 2", "value N"]와 같은 문자열 배열이어야 합니다; - NOTSET: 태그가 설정되지 않았습니다. 피연산자는 고려되지 않습니다;
- ANY: 태그에 어떤 값이든 있습니다. 피연산자는 고려되지 않습니다.
정수 태그
Anchor link to유효한 연산자: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
유효한 피연산자:
- EQ, NOTEQ, GTE, LTE: 피연산자는 정수여야 합니다;
- IN, NOTIN: 피연산자는
[value 1, value 2, value N]와 같은 정수 배열이어야 합니다; - BETWEEN: 피연산자는
[min_value, max_value]와 같은 정수 배열이어야 합니다; - NOTSET: 태그가 설정되지 않았습니다. 피연산자는 고려되지 않습니다;
- ANY: 태그에 어떤 값이든 있습니다. 피연산자는 고려되지 않습니다.
날짜 태그
Anchor link to유효한 연산자: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
유효한 피연산자:
"YYYY-MM-DD 00:00"(문자열)- 유닉스 타임스탬프
1234567890(정수) - 연산자 EQ, BETWEEN, GTE, LTE에 대해
"N days ago"(문자열)
불리언 태그
Anchor link to유효한 연산자: EQ, NOTSET, ANY
유효한 피연산자: 0, 1, true, false
목록 태그
Anchor link to유효한 연산자: IN, NOTIN, NOTSET, ANY
유효한 피연산자: 피연산자는 ["value 1", "value 2", "value N"]와 같은 문자열 배열이어야 합니다.
/createMessage 스니펫
Anchor link to샘플 /createMessage 요청:
#!/bin/bash
#Usageif [ ! -n "$1" ] || [ ! -n "$2" ]then echo "`basename $0` usage: api_token appid message"; exit 1;fi;MESSAGE="$3";if [ -z "$3" ]thenMESSAGE='One push to rule them all!'fi;
echo -e "Response:"curl --data-binary "{\"request\": {\"application\":\"$2\", \"auth\":\"$1\", \"notifications\": [{ \"send_date\": \"now\", \"content\": \"$MESSAGE\" }] }}" \-H "Content-type: application/json" \"https://api.pushwoosh.com/json/1.3/createMessage"echo "";exit 0;<?phpdefine('PW_AUTH', 'API TOKEN');define('PW_APPLICATION', 'APPLICATION CODE');define('PW_DEBUG', true);
function pwCall($method, $data) { $url = 'https://api.pushwoosh.com/json/1.3/' . $method; $request = json_encode(['request' => $data]);
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
if (defined('PW_DEBUG') && PW_DEBUG) { print "[PW] request: $request"; print "[PW] response: $response"; print '[PW] info: ' . print_r($info, true); }}
pwCall('createMessage', array( 'application' => PW_APPLICATION, 'auth' => PW_AUTH, 'notifications' => array( array( 'send_date' => 'now', 'content' => 'test', 'data' => array('custom' => 'json data'), 'link' => 'https://pushwoosh.com/' ) ) ));-module(pushwoosh).-export([run/0, stop/0, sendMessage/1]).%% sendMessage argument: message text %%
%% Authentication & App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% KickStart %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% HTTP Client verbosity options flase, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% JSON Wars !encode(S) -> encode(S, [$"]).encode([], Acc) -> lists:reverse([$" | Acc]);encode([C | Cs], Acc) -> Hex = lists:flatten(io_lib:format("~4.16.0b", [C])), encode(Cs, lists:reverse(Hex) ++ "u\" ++ Acc).
sendMessage(Message_text) -> %% URL to JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Method post, %%Request {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%HTTP options [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Options []), io:format("And received ~p", [Response]).class PushNotification
#- PushWoosh API Documentation https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- Two methods here: # - PushNotification.new.notify_all(message) Notifies all with the same option # - PushNotification.new.notify_devices(notification_options = {}) Notifies specific devices with custom options
include HTTParty #Make sure to have the HTTParty gem declared in your gemfile https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- Change to your settings @auth = {:application => "00000-00000",:auth => "auth_token"} end
# PushNotification.new.notify_all("This is a test notification to all devices") def notify_all(message) notify_devices({:content => message}) end
# PushNotification.new.notify_device({ # :content => "TEST", # :data => {:custom_data => value}, # :devices => array_of_tokens #}) def notify_devices(notification_options = {}) #- Default options, uncomment :data or :devices if needed default_notification_options = { # YYYY-MM-DD HH:mm OR 'now' :send_date => "now", # Object( language1: 'content1', language2: 'content2' ) OR string :content => { :fr => "Test", :en => "Test" }, # JSON string or JSON object "custom": "json data" #:data => { # :custom_data => value #}, # omit this field (push notification will be delivered to all the devices for the application), or provide the list of devices IDs #:devices => {} }
#- Merging with specific options final_notification_options = default_notification_options.merge(notification_options)
#- Constructing the final call options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- Executing the POST API Call with HTTPARTY - :body => options.to_json allows us to send the json as an object instead of a string response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// Uses JSON classes from https://json.org/java/
package com.arellomobile;
import org.json.*;import java.io.*;import java.net.*;
public class SendPushNotificationSample{ public static final String PUSHWOOSH_SERVICE_BASE_URL = "https://api.pushwoosh.com/json/1.3/"; private static final String AUTH_TOKEN = "YOUR_AUTH_TOKEN"; private static final String APPLICATION_CODE = "PW_APPLICATION_CODE";
public static void main(String[] args) throws JSONException, MalformedURLException { String method = "createMessage"; URL url = new URL(PUSHWOOSH_SERVICE_BASE_URL + method);
JSONArray notificationsArray = new JSONArray() .put(new JSONObject().put("send_date", "now") .put("content", "test") .put("link", "https://pushwoosh.com/"));
JSONObject requestObject = new JSONObject() .put("application", APPLICATION_CODE) .put("auth", AUTH_TOKEN) .put("notifications", notificationsArray);
JSONObject mainRequest = new JSONObject().put("request", requestObject); JSONObject response = SendServerRequest.sendJSONRequest(url, mainRequest.toString());
System.out.println("Response is: " + response); }}
class SendServerRequest{ static JSONObject sendJSONRequest(URL url, String request) { HttpURLConnection connection = null; try { connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoInput(true); connection.setDoOutput(true);
DataOutputStream writer = new DataOutputStream(connection.getOutputStream()); writer.write(request.getBytes("UTF-8")); writer.flush(); writer.close();
return parseResponse(connection); } catch (Exception e) { System.out.println("An error occurred: " + e.getMessage()); return null; } finally { if (connection != null) { connection.disconnect(); } } }
static JSONObject parseResponse(HttpURLConnection connection) throws IOException, JSONException { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) { response.append(line).append(''); } reader.close();
return new JSONObject(response.toString()); }}import json
PW_AUTH = 'API TOKEN'PW_APPLICATION_CODE = 'APPLICATION CODE'
try: # For Python 3.0 and later from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Fall back to Python 2's urllib2 from urllib2 import urlopen from urllib2 import Request
def pw_call(method, data): url = 'https://api.pushwoosh.com/json/1.3/' + method data = json.dumps({'request': data}) req = Request(url, data.encode('UTF-8'), {'Content-Type': 'application/json'}) try: f = urlopen(req) response = f.read() f.close() print('Pushwoosh response: ' + str(response)) except Exception as e: print ('Request error: ' + str(e))
if __name__ == '__main__': pw_call('createMessage', { 'auth': PW_AUTH, 'application': PW_APPLICATION_CODE, 'notifications': [ { 'send_date': 'now', 'content': 'test', 'data': {"custom": "json data"}, 'link': 'https://pushwoosh.com' } ] } )using System;using System.IO;using System.Net;using Newtonsoft.Json.Linq;
namespace WebApplication1{ public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string pwAuth = "YOUR_AUTH_TOKEN"; string pwApplication = "PW_APPLICATION_CODE"; JObject json = new JObject( new JProperty("application", pwApplication), new JProperty("auth", pwAuth), new JProperty("notifications", new JArray( new JObject( new JProperty("send_date", "now"), new JProperty("content", "test"), new JProperty("wp_type", "Toast"), new JProperty("wp_count", 3), new JProperty("data", new JObject( new JProperty("custom", "json data"))), new JProperty("link", "https://pushwoosh.com/"), new JProperty("conditions", new JArray( (object)new JArray("Color", "EQ", "black"))))))); PWCall("createMessage", json); } private void PWCall(string action, JObject data) { Uri url = new Uri("https://api.pushwoosh.com/json/1.3/" + action); JObject json = new JObject(new JProperty("request", data)); DoPostRequest(url, json); } private void DoPostRequest(Uri url, JObject data) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.ContentType = "text/json"; req.Method = "POST"; using (var streamWriter = new StreamWriter(req.GetRequestStream())) { streamWriter.Write(data.ToString()); } HttpWebResponse httpResponse; try { httpResponse = (HttpWebResponse)req.GetResponse(); } catch (Exception exc) { throw new Exception(string.Format("Problem with {0}, {1}", url, exc.Message)); } using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var responseText = streamReader.ReadToEnd(); Page.Response.Write(responseText); } } }}package main
import( "fmt" "encoding/json" "net/http" "bytes" "io/ioutil")
const ( PW_APPLICATION = "APPLICATION CODE" PW_AUTH = "API TOKEN" PW_ENDPOINT = "https://api.pushwoosh.com/json/1.3/")
func pwCall(method string, data []byte) (bool) { url := PW_ENDPOINT + method request, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) request.Header.Set("Content-Type", "application/json")
client := http.Client{} response, err := client.Do(request) if err != nil { fmt.Println("Error occur: " + err.Error()) return false } defer response.Body.Close()
fmt.Println("Response Status: ", response.Status) if (response.StatusCode == 200) { body, _ := ioutil.ReadAll(response.Body) fmt.Println("Response Body: ", string(body)) return true } return false}
func main() { requestData := map[string]interface{}{ "request": map[string]interface{} { "auth": PW_AUTH, "application": PW_APPLICATION, "notifications": []interface{}{ map[string]interface{} { "send_date": "now", "content": "test", "link": "https://pushwoosh.com", }, }, }, } jsonRequest, _ := json.Marshal(requestData) requestString := string(jsonRequest) fmt.Println("Request body: " + requestString)
pwCall("createMessage", jsonRequest)}$.ajax({ type: "POST", url: "https://api.pushwoosh.com/json/1.3/createMessage", data: JSON.stringify({ "request": { "application": "APPLICATION CODE", "auth": "API TOKEN", "notifications": [{ "send_date": "now", "ignore_user_timezone": true, "content": "Hello world!" }] } }), dataType: "json"}).done(function(data) { console.log(data);});deleteMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/deleteMessage
예약된 메시지를 삭제합니다.
요청 본문
Anchor link to| 이름 | 타입 | 설명 |
|---|---|---|
| auth* | string | Pushwoosh Control Panel의 API 액세스 토큰입니다. |
| message* | string | /createMessage 요청에서 얻은 메시지 코드입니다. |
{ "status_code": 200, "status_message": "OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "message": "xxxx-xxxxxxx-xxxxxx" // 필수. /createMessage에서 얻은 메시지 코드 }}상태 코드:
| HTTP 상태 코드 | status_code | 설명 |
|---|---|---|
| 200 | 200 | 메시지가 성공적으로 삭제되었습니다 |
| 200 | 210 | 인수 오류. 자세한 내용은 status_message를 참조하세요 |
| 400 | N/A | 잘못된 형식의 요청 문자열 |
| 500 | 500 | 내부 오류 |
<?php// see https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// creates request instance$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// call '/deleteMessage' Web Service$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) { print 'Great, my message has been deleted !';} else { print 'Oups, the deletion failed :-('; print 'Status code : ' . $response->getStatusCode(); print 'Status message : ' . $response->getStatusMessage();}getMessageDetails
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getMessageDetails
메시지 세부 정보를 검색합니다.
요청 본문
Anchor link to| 이름 | 타입 | 설명 |
|---|---|---|
| auth* | string | Pushwoosh Control Panel의 API 액세스 토큰입니다. |
| message* | string | 메시지 코드 또는 메시지 ID입니다. |
{ "status_code": 200, "status_message": "OK", "response": { "message": { "id": 2068991743, "created": "2016-09-14 17:19:42", "send_date": "2016-09-14 17:19:41", "status": "done", "content": { "en": "Hello {Name|CapitalizeFirst|friend}! 🚀" }, "platforms": "[1]", "ignore_user_timezone": "1", "code": "XXXX-92B4C3C5-A7F5EF70", "data": { "key": "value" } } }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "message": "xxxx-xxxxxxx-xxxxxx" // 필수. 메시지 코드 또는 메시지 ID }}createTargetedMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
새로운 대상 푸시 알림을 생성합니다.
요청 본문
Anchor link to| 이름 | 타입 | 설명 |
|---|---|---|
| auth* | string | Pushwoosh Control Panel의 API 액세스 토큰입니다. |
| devices_filter* | string | 아래 설명을 참조하세요. |
| send_date* | string | YYYY-MM-DD HH:mm 또는 ‘now’. |
| ignore_user_timezone | boolean | 무시될 경우, “send_date”의 기본값은 UTC-0입니다. |
| timezone | string | 무시될 경우, “send_date”의 기본값은 UTC-0입니다. |
| campaign | string | 이 푸시 메시지를 할당하려는 캠페인 코드입니다. |
| content* | string | 알림 콘텐츠. 자세한 내용은 요청 예시를 참조하세요. |
| transactionId | string | 네트워크 문제 발생 시 메시지 중복을 방지하기 위한 고유 메시지 식별자. Pushwoosh 측에 5분 동안 저장됩니다. |
| link | string | 사용자가 푸시 메시지를 열 때 열리는 링크입니다. |
| minimize_link | integer | 0 - 최소화 안 함, 2 - bit.ly. 기본값 = 2. |
| data | object | JSON 문자열 또는 JSON 객체. 페이로드에서 “u” 파라미터로 전달됩니다 (JSON 문자열로 변환됨). |
| preset | string | 프리셋 코드. |
| send_rate | integer | 스로틀링. 유효한 값은 초당 100에서 1000 푸시입니다. |
| inbox_date | string | 받은 편지함에서 메시지를 제거할 시기를 지정합니다. |
| inbox_image | string | 받은 편지함에서 메시지 옆에 표시될 이미지의 URL입니다. |
{ "status_code": 200, "status_message": "OK", "response": { "messageCode": "97B0-C7473871-2FBDFDC6" }}잘못된 구문으로 인해 요청을 처리할 수 없습니다.더 많은 응답 예시:
{ "status_code": 210, "status_message": "필터 컴파일 중 오류가 발생했습니다", "response": { "errors": [{ "message": "잘못된 태그 집합 사양입니다. \")\"가 필요합니다.", "type": "syntax" }] }}{ "status_code": 210, "status_message": "필터 컴파일 중 오류가 발생했습니다", "response": { "errors": [{ "message": "애플리케이션 \"11111-11111\"을(를) 찾을 수 없습니다", "type": "semantic", "near": "\"11111-11111\"" }] }}{ "status_code": 210, "status_message": "필터 컴파일 중 오류가 발생했습니다", "response": { "errors": [{ "message": "1:19에 잘못된 문자 \"/\"가 있습니다", "type": "lexical" }] }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // 필수. 구문은 아래에 설명되어 있습니다 "send_date": "now", // 선택 사항. YYYY-MM-DD HH:mm 또는 'now' "ignore_user_timezone": true, // 선택 사항. "timezone": "America/New_York", // 선택 사항. 무시될 경우 "send_date"의 기본값은 UTC-0입니다. // 자세한 정보 https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // 선택 사항. 이 푸시 메시지를 할당하려는 캠페인 코드. "content": { // 선택 사항. 객체 또는 문자열. Windows의 경우 대신 "wns_content"를 사용하세요. "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // 선택 사항. 네트워크 문제 발생 시 메시지 중복을 방지하기 위한 // 고유 메시지 식별자. Pushwoosh 측에 5분 동안 저장됩니다. "rich_media": "XXXXX-XXXXX", // 선택 사항. Pushwoosh Control Panel의 Rich Media 편집기 페이지 // URL 바에서 Rich Media 코드를 복사하세요. "link": "https://google.com", // 선택 사항. 딥링크의 경우 "minimize_link": 0을 추가하세요 "minimize_link": 0, // 선택 사항. 0 — 최소화 안 함, 2 — bitly. 기본값 = 2. // Google URL 단축기는 2019년 3월 30일부터 비활성화되었습니다. // 단축기는 호출 횟수에 제한이 있습니다. "data": { // 선택 사항. JSON 문자열 또는 JSON 객체. "key": "value" // 페이로드에서 "u" 파라미터로 전달됩니다 }, // (JSON 문자열로 변환됨). "preset": "XXXXX-XXXXX", // 선택 사항. Control Panel의 푸시 프리셋 코드. "send_rate": 100, // 선택 사항. 스로틀링. 유효한 값은 100에서 1000 푸시/초입니다. "dynamic_content_placeholders": { // 선택 사항. 기기 태그 대신 동적 콘텐츠를 위한 플레이스홀더. "firstname": "John", "lastname": "Doe" },
// API를 통해 메시지를 받은 편지함에 저장하려면 "inbox_date" 또는 "inbox_image"를 사용하세요. // 이 파라미터 중 하나 이상이 사용될 때 메시지가 저장됩니다. "inbox_image": "Inbox image URL", // 선택 사항. 메시지 옆에 표시될 이미지. "inbox_date": "2017-02-02" // 선택 사항. 받은 편지함에서 메시지를 제거할 시기를 지정합니다. // 메시지는 지정된 날짜의 00:00:01 UTC에 받은 편지함에서 // 제거되므로, 이전 날짜가 사용자가 받은 편지함에서 // 메시지를 볼 수 있는 마지막 날입니다. // 지정하지 않으면 기본 제거 날짜는 전송 날짜 // 다음 날입니다. }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "devices_filter": "FILTER CONDITION", "send_date": "now", // 선택 사항. YYYY-MM-DD HH:mm 또는 'now' "content": { // 선택 사항. 객체 또는 문자열. "en": "English", // Windows의 경우 대신 "wns_content"를 사용하세요. "de": "Deutsch" }, "ignore_user_timezone": true, // 선택 사항. "timezone": "America/New_York", // 선택 사항. 무시될 경우 "send_date"의 기본값은 UTC-0입니다. // 자세한 정보 https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // 선택 사항. 이 푸시 메시지를 할당하려는 캠페인 코드.
// iOS 관련 파라미터 "ios_badges": 5, // 선택 사항. iOS 애플리케이션 배지 번호. // "+n" 또는 "-n"을 사용하여 배지 값을 n만큼 증가/감소시킵니다. "ios_sound": "sound file.wav", // 선택 사항. 애플리케이션의 메인 번들에 있는 사운드 파일 이름. // 비워두면 기기는 푸시를 받을 때 // 소리를 내지 않습니다. "ios_sound_off": true, // 선택 사항. "ios_sound" 필드로 설정된 사운드를 활성화/비활성화합니다. "ios_ttl": 3600, // 선택 사항. Time to live 파라미터 — 최대 메시지 수명(초). "ios_silent": 1, // 선택 사항. 무음 알림을 활성화합니다("sound" 및 "content" 무시). "ios_category_id": "1", // 선택 사항. Pushwoosh의 iOS8 카테고리 ID. "ios_category_custom": "category", // 선택 사항. 사용자 지정 APNS 카테고리. "ios_root_params": { // 선택 사항. aps 딕셔너리에 대한 루트 수준 파라미터. "aps": { "content-available": "0", // 선택 사항. 무음 푸시를 보내려면 "1"로, 일반 푸시를 보내려면 "0"으로 설정합니다. "mutable-content": 1 // iOS10+ 미디어 첨부에 필요합니다. }, "attachment": "YOUR_ATTACHMENT_URL", // iOS10+ 미디어 첨부 URL. "data": {} // 선택 사항. 사용자가 제공한 데이터, 최대 4KB }, "apns_trim_content": 1, // 선택 사항. (0|1) 초과하는 콘텐츠 문자열을 줄임표로 자릅니다. "ios_title": { // 선택 사항. iOS 푸시 알림에 제목을 추가합니다. "en": "title" }, "ios_subtitle": { // 선택 사항. iOS 푸시 알림에 부제목을 추가합니다. "en": "subTitle" }, "ios_content": { // 선택 사항. iOS 푸시 알림에 콘텐츠를 추가합니다. "en": "content" },
// Android 관련 파라미터 "android_root_params": { // 선택 사항. 사용자 지정 키-값 객체. "key": "value" // android 페이로드 수신자를 위한 루트 수준 파라미터. }, "android_sound": "soundfile", // 선택 사항. 파일 확장자 없음. 비워두면, 기기는 // 푸시를 받을 때 소리를 내지 않습니다. "android_sound_off": true, // 선택 사항. "android_sound" 필드로 설정된 사운드를 활성화/비활성화합니다 "android_header": { // 선택 사항. 객체 또는 문자열. Android 알림 헤더. "en": "header" }, "android_content": { // 선택 사항. 객체 또는 문자열. Android 알림 콘텐츠. "en": "content" }, "android_icon": "icon.png", "android_custom_icon": "URL.png", // 선택 사항. 이미지 파일의 전체 경로 URL. "android_banner": "URL.png", // 선택 사항. 이미지 파일의 전체 경로 URL. "android_badges": 5, // 선택 사항. 정수. Android 애플리케이션 아이콘 배지 번호. // "+n" 또는 "-n"을 사용하여 배지 값을 n만큼 증가/감소시킵니다. "android_gcm_ttl": 3600, // 선택 사항. Time to live 파라미터 — 최대 메시지 수명(초). "android_vibration": 0, // 선택 사항. 고우선순위 푸시에 대한 Android 강제 진동. "android_led": "#rrggbb", // 선택 사항. LED 16진수 색상, 기기는 최선을 다해 근사치를 표현합니다. "android_priority": -1, // 선택 사항. Android 8.0 이상 기기의 "importance" 파라미터와 // Android 7.1 이하 기기의 "priority" 파라미터를 설정합니다. // 알림 채널 또는 특정 알림의 중단 수준을 // 설정합니다. // 유효한 값은 -2, -1, 0, 1, 2입니다. "android_delivery_priority": "normal", // 선택 사항. "normal" 또는 "high". 기기가 절전 모드일 때 // 알림 전달을 활성화합니다. "android_ibc": "#RRGGBB", // 선택 사항. Lollipop의 아이콘 배경색, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" 등. "android_silent": 1, // 선택 사항. 0 또는 1. 무음 알림을 활성화합니다. // 사운드와 콘텐츠 무시
// Amazon 관련 파라미터 "adm_root_params": { // 선택 사항. 사용자 지정 키-값 객체 "key": "value" }, "adm_sound": "push.mp3", "adm_sound_off": true, // 선택 사항. "adm_sound" 필드로 설정된 사운드를 활성화/비활성화합니다 "adm_header": { "en": "Header" }, "adm_content": { "en": "content" }, "adm_icon": "icon.png", "adm_custom_icon": "URL.png", "adm_banner": "URL.png", "adm_ttl": 3600, // 선택 사항. Time to live 파라미터 — 최대 메시지 // 수명(초). "adm_priority": -1, // 선택 사항. Amazon 푸시 서랍에서 푸시의 우선순위, // 유효한 값은 -2, -1, 0, 1, 2입니다.
// Mac OS X 관련 파라미터 "mac_badges": 3, "mac_sound": "sound.caf", "mac_sound_off": true, "mac_root_params": { "content-available": 1 }, "mac_ttl": 3600, // 선택 사항. Time to live 파라미터 — 최대 메시지 수명(초). "mac_title": { // 선택 사항. 푸시 알림에 제목을 추가합니다. "en": "title" }, "mac_subtitle": { // 선택 사항. MacOS 푸시 알림에 부제목을 추가합니다. "en": "subtitle" }, "mac_content": { // 선택 사항. MacOS 푸시 알림에 콘텐츠를 추가합니다. "en": "content" },
// Windows 관련 파라미터 "wns_content": { // 필수. MIME의 base64로 인코딩된 알림 콘텐츠 // (XML 또는 원시) 객체 또는 문자열 형식 "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // 선택 사항. 타일 교체 정책에 사용됩니다. // 16자 이하의 영숫자 문자열. "wns_cache": 1, // 선택 사항. (1|0) X-WNS-Cache-Policy 값으로 변환됩니다. "wns_ttl": 600, // 선택 사항. 알림의 만료 시간(초).
// Safari 관련 파라미터 "safari_title": { // 선택 사항. 객체 또는 문자열. 알림의 제목. "en": "title" }, "safari_content": { // 선택 사항. 객체 또는 문자열. 알림의 콘텐츠. "en": "content" }, "safari_action": "Click here", // 선택 사항. "safari_url_args": [ // 필수. 하지만 값은 비어 있을 수 있습니다 "firstArgument", "secondArgument" ], "safari_ttl": 3600, // 선택 사항. Time to live 파라미터 — 메시지의 최대 // 수명(초).
// Chrome 관련 파라미터 "chrome_title": { // 선택 사항. 이 파라미터에서 메시지의 헤더를 지정할 수 있습니다. "en": "title" }, "chrome_content": { // 선택 사항. 이 파라미터에서 메시지의 콘텐츠를 지정할 수 있습니다. "en": "content" }, "chrome_icon": "icon_URL", // 선택 사항. 아이콘의 전체 경로 URL 또는 확장 리소스 파일 경로 "chrome_gcm_ttl": 3600, // 선택 사항. Time to live 파라미터 – 최대 메시지 수명(초). "chrome_duration": 20, // 선택 사항. 크롬 푸시 표시 시간을 변경합니다. 사용자가 상호 작용할 때까지 // 푸시를 표시하려면 0으로 설정합니다. "chrome_image": "image_URL", // 선택 사항. 큰 이미지의 URL "chrome_root_params": { // 선택 사항. Chrome으로 전송되는 메시지에 특정한 파라미터를 설정합니다. "key": "value" }, "chrome_button_text1": "text1", // 선택 사항. "chrome_button_url1": "button1_URL", // 선택 사항. chrome_button_text1이 설정되지 않으면 무시됩니다. "chrome_button_text2": "text2", // 선택 사항. "chrome_button_url2": "button2_url", // 선택 사항. chrome_button_text2가 설정되지 않으면 무시됩니다.
// Firefox 관련 파라미터 "firefox_title": { // 선택 사항. 객체 또는 문자열. 여기에 메시지 헤더를 지정할 수 있습니다. "en": "title" }, "firefox_content": { // 선택 사항. 객체 또는 문자열. 여기에 메시지 콘텐츠를 지정할 수 있습니다. "en": "content" }, "firefox_icon": "icon_URL", // 선택 사항. 아이콘의 전체 경로 URL 또는 확장 리소스의 // 파일 경로. "firefox_root_params": { // 선택 사항. Firefox로 전송되는 메시지에 특정한 파라미터를 설정합니다. "key": "value" } }}기본은 매우 간단합니다 – 모든 필터는 엔티티의 집합에 대해 수행됩니다.
집합은 다음과 같이 정의됩니다:
1. 특정 앱에 구독된 기기 (A);
2. 지정된 태그 값 (T) 또는 앱별 태그 값 (AT)과 일치하는 기기;\
위 목록에 따라 몇 가지 샘플로 시도해 보겠습니다.
앱 구독자 타겟팅
Anchor link to“A” 필터는 특정 앱에 구독된 기기 집합을 정의합니다:
A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])
여기서
- “XXXXX-XXXXX” – Pushwoosh 애플리케이션 코드
- [“iOS”, “Android”, …] – 대상 플랫폼 배열. 생략하면 메시지는 이 앱에서 사용 가능한 모든 플랫폼으로 전송됩니다.
태그 값으로 필터링
Anchor link to“T” 필터는 지정된 태그 값이 할당된 기기 집합을 정의합니다.
T(\"Age\", IN, [17,20])
“age” 태그가 17, 18, 19, 20 중 하나의 값으로 설정된 기기 집합을 정의합니다.
태그 유형 및 연산자
Anchor link to이해해야 할 매우 중요한 점은 태그가 앱 간에 공유된다는 것이며, 이는 특정 앱에 얽매이지 않고 대상 사용자를 세분화하고 필터링하는 매우 강력한 도구를 제공한다는 것입니다.
태그는 문자열, 정수, 목록의 세 가지 유형 중 하나일 수 있습니다. 태그 유형은 특정 태그에 사용할 수 있는 연산자를 정의합니다.
문자열 태그
Anchor link to적용 가능한 연산자:
- EQ – 지정된 태그 값을 가진 기기를 대상으로 합니다
- IN – 지정된 태그 값 중 하나를 가진 기기를 대상으로 합니다
- NOTIN – 지정된 태그 값이 없는 기기를 대상으로 합니다
- NOTEQ – 지정된 값과 다른 태그 값을 가진 기기를 대상으로 합니다
- NOTSET – 지정된 태그에 대한 값이 없는 기기를 대상으로 합니다
- ANY – 지정된 태그에 대해 어떤 값이든 설정된 기기를 대상으로 합니다
예시:
T (\"Age\", EQ, 30) – 30세 사용자를 필터링합니다
T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – 좋아하는 색으로 빨강, 초록, 파랑을 선택한 사용자를 필터링합니다.
T (\"Name", NOTSET, \"\") – Name 태그에 대한 값이 없는 기기를 대상으로 합니다.
문자열 태그와 함께 숫자 값을 사용할 수 있지만, 이러한 값은 문자열로 변환됩니다.
정수 태그
Anchor link to적용 가능한 연산자:
- GTE – 지정된 값보다 크거나 같습니다
- LTE– 지정된 값보다 작거나 같습니다
- EQ – 지정된 값과 같습니다
- BETWEEN – 지정된 최소값과 최대값 사이입니다
- IN – 지정된 값 중 하나입니다
- NOTIN – 기기에 지정된 값이 할당되지 않았습니다
- NOTEQ – 지정된 값과 다른 태그 값을 가진 기기입니다
- NOTSET – 지정된 태그에 대한 값이 없는 기기입니다
- ANY – 지정된 태그에 대해 어떤 값이든 설정된 기기입니다
예시:
T (\"Level\", EQ, 14) – 14 레벨의 사용자만 필터링합니다.
T (\"Level\", BETWEEN, [1,5) – 1, 2, 3, 4, 5 레벨의 사용자를 필터링합니다.
T (\"Level", GTE, 29) – 최소 29 레벨에 도달한 사용자를 대상으로 합니다.
목록 태그
Anchor link to적용 가능한 연산자:
- IN – 지정된 태그 값 중 하나를 가진 기기
예시: T("Category", IN, ["breaking_news","business","politics"])
날짜 태그
Anchor link to적용 가능한 연산자:
- GTE – 지정된 값보다 크거나 같습니다
- LTE– 지정된 값보다 작거나 같습니다
- EQ – 지정된 값과 같습니다
- BETWEEN – 지정된 최소값과 최대값 사이입니다
- NOTEQ – 지정된 값과 다른 태그 값을 가진 기기입니다
- NOTSET – 지정된 태그에 대한 값이 없는 기기입니다
- ANY – 지정된 태그에 대해 어떤 값이든 설정된 기기입니다
예시:
AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])
AT("7777D-322A7","Last Application Open", GTE, "90 days ago")
- “+” – 두 집합을 결합합니다 (OR과 같음)
- “*” – 두 집합을 교차합니다 (AND와 같음)
- “\” – 한 집합에서 다른 집합을 뺍니다 (NOT과 같음)
모든 연산은 왼쪽 결합입니다. ”+“와 ”*“는 동일한 우선순위를 가집니다. ""는 더 높은 우선순위를 가집니다. 괄호를 사용하여 계산의 우선순위를 정의할 수 있습니다.
“\” 연산은 교환 법칙이 성립하지 않습니다. A("12345-12345") \ A("67890-67890")는 A("67890-67890") \ A("12345-12345")와 같지 않습니다.
getPushHistory 사용 중단됨
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
푸시 세부 정보가 포함된 메시지 기록을 가져옵니다.
요청 본문
Anchor link to| 이름 | 타입 | 설명 |
|---|---|---|
| auth* | string | Pushwoosh Control Panel의 API 액세스 토큰입니다. |
| limitMessages | integer | 응답의 메시지 수를 제한합니다. 가능한 값은 10에서 1000까지입니다. |
| source | string | 푸시 기록 소스. null 또는 “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”일 수 있습니다. |
| searchBy | string | 검색할 수 있는 값. null 또는 “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”일 수 있습니다. |
| value | string | ”searchBy” 필드에 따라 설정된 검색 값입니다. |
| lastNotificationID | string | 페이지네이션에 사용됩니다. 이전 /getPushHistory 호출의 마지막 messageId. 아래 세부 정보를 참조하세요. |
{ "status_code": 200, "status_message": "OK", "response": { "rows": [{ "id": 10191611434, "code": "8071-07AD1171-77238AD1", "createDate": "2020-09-14 12:26:21", "sendDate": "2020-09-14 12:26:21", "content": { "en": "Hello!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": "E3A64-A5F3C", "filter_conditions": "#In-app Purchase(≠0)", "filter_name": "Purchased something", "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": null, "open": { "C90C0-0E786": { "IOS": 0 } }, "sent": { "C90C0-0E786": { "IOS": 1 } }, "ctr": { "C90C0-0E786": 0 } }, { "id": 10191609202, "code": "41CA-83F8E0D7-7A63822B", "createDate": "2020-09-14 12:25:55", "sendDate": "2020-09-14 12:25:55", "content": { "en": "Hi!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": null, "filter_conditions": null, "filter_name": null, "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": { "2D732-BB981": "News" }, "open": { "C90C0-0E786": { "CHROME": 0, "IOS": 0 } }, "sent": { "C90C0-0E786": { "CHROME": 1, "IOS": 2 } }, "ctr": { "C90C0-0E786": 0 } }] }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "source": null, // 선택 사항. 가능한 값은 null, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // 선택 사항. 가능한 값은 "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // 선택 사항. "searchBy" 필드에 따라 설정된 검색 값. "lastNotificationID": 0, // 선택 사항. 페이지네이션에 사용됩니다. 이전 /getPushHistory // 호출의 마지막 messageId. 아래 세부 정보를 참조하세요. "limitMessages": 1000 // 선택 사항. 가능한 값은 10에서 1000까지입니다. }}이 메서드는 메시지 ID별로 정렬된 계정의 1000개 메시지를 반환합니다. 두 번째 페이지를 얻으려면 이전 응답의 마지막 메시지 ID를 lastNotificationId 파라미터에 지정하세요.
응답 데이터 유형
Anchor link toid -- int | 0code -- stringcreateDate -- string (date: %Y-%m-%d %H:%M:%S)sendDate -- string (date: %Y-%m-%d %H:%M:%S)content -- array ( dict {lang: value} | list [])title -- array ( dict {lang: value} | list [])subtitle -- array ( dict {lang: value} | list [])url -- stringios_title -- string | array ( dict {lang: value} ) | nullios_subtitle -- string | array ( dict {lang: value} ) | nullios_root_params -- dict (JSON) | nullandroid_header -- string | array ( dict {lang: value} ) | nullandroid_root_params -- dict (JSON) | nullconditions -- list (JSON) | nullconditions_operator -- string | nullfilter_code -- string | nullfilter_name -- string | nullfilter_conditions -- string | nullgeozone -- string | nullcampaignId -- string | ""campaignName -- string | ""subscription_segments (obsolete) -- list (JSON) | nulldata -- dict (JSON) | nullopen -- dict [dict [string: int]] | "" Example: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}sent -- dict [dict [string: int]] | "" Example: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}ctr -- dict [string: int] | "" Example: {'AAAAA-BBBBB': 1}errors -- dict [string: int] | "" Example: {'ANDROID': 1, 'IOS': 1}cancelMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/cancelMessage
예약된 메시지를 삭제합니다.
요청 본문
Anchor link to| 이름 | 타입 | 설명 |
|---|---|---|
| auth* | string | Pushwoosh Control Panel의 API 액세스 토큰입니다. |
| message* | string | /createMessage 응답에서 얻은 메시지 코드입니다. |
{ "status_code":200, "status_message":"OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh Control Panel의 API 액세스 토큰 "message": "xxxx-xxxxxxx-xxxxxx" // 필수. /createMessage 응답에서 얻은 메시지 코드 }}상태 코드:
| HTTP 상태 코드 | status_code | 설명 |
|---|---|---|
| 200 | 200 | 메시지가 성공적으로 취소되었습니다 |
| 200 | 210 | 인수 오류. 자세한 내용은 status_message를 참조하세요. |
| 400 | N/A | 잘못된 형식의 요청 문자열 |
| 500 | 500 | 내부 오류 |