ارسال پوش
ویرایش
در ایجاد تعامل با کاربر چابک علاوه بر پنل وب، API هم در اختیار شما قرار میدهد. در این صفحه راهنمای استفاده صحیح و آسان برای ارسال پیام و نوتیفیکیشن از طریق API را با هم بررسی خواهیم کرد.
نکته:
برای ایجاد دسترسی (Access Token) راهنمای استفاده را مطالعه کنید.
نکته:
توجه داشته باشید که پیام چابک به طور پیشفرض شامل نوتیفیکیشن هم میشود. برای اطلاعات بیشتر درباره تفاوت پیام چابک و نوتیفیکیشن این قسمت را مطالعه کنید.
ارسال شخصی
این قسمت مخصوص ارسال تراکنشی یا تعامل یک به یک با کاربر است. پیام شخصی به شما امکان میدهد به یک یا چند شناسه کاربری (userId
) پوش بفرستید:
POST | ارسال شخصی پیام چابک
برای ارسال شخصی پیام چابک میتوانید از لینک https://sandbox.push.adpdigital.com/api/push/toUsers
استفاده کنید.
نمونه زیر یک cURL معتبر است:
curl -X POST \
"https://sandbox.push.adpdigital.com/api/push/toUsers?access_token=<ACCESS_TOKEN>" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"user": "USER_ID",
"content": "Test webpush",
"channel": "default",
"data": {
"key": "value1",
"key2": "value2"
},
"notification": {
"title": "عنوان نوتیفیکیشن شما",
"body": "این یک متن تستی هست که بتونیم باهاش بررسی کنیم آیا بدنه نوتیفیکیشن به خوبی نمایش داده میشه یا نه!",
"mediaUrl": "https://github.com/chabokpush/chabok-assets/raw/master/samples/notification/chabokpush_twitter.jpeg",
"vibrate": [10, 20, 30, 40],
"sound": "toy.mp3",
"dir": "rtl",
"color" : "#FF0000",
"largeIcon": "https://raw.githubusercontent.com/chabok-io/chabok-assets/master/sdk-logo/Android.png",
"chromeBadge": "https://github.com/chabokpush/chabok-assets/raw/master/chaboklogowhite.png",
"actions":[{
"id": "sent",
"title": "Message sent",
"icon": "https://github.com/chabokpush/chabok-assets/raw/master/chaboklogowhite.png",
"url": "https://www.google.com"
},
{
"id": "reply",
"action": "reply",
"title": "Reply",
"icon": "https://github.com/chabokpush/chabok-assets/raw/master/chaboklogowhite.png"
}]
}
}'
جدول پارامترها
پارامترها | توضیح | نوع مقدار | مثال |
---|---|---|---|
User * | شناسه کاربر ثبت شده یا * برای کانال عمومی | string | userTest |
channel | کانال ارسال پیام | string | default |
content * | متن پیام | string | سلام |
data | دیتای پیام به صورت json | JSON | {"offer": "10", "discountCode": "Newapp10"} |
trackId | تعیین شناسه ردگیری جداگانه برای رصد پیام | string | adp-1397-6-11 |
inApp | کاربران در زمان باز بودن برنامه پیام را دریافت میکنند (درونبرنامهای) | boolean | true |
autoNotify | نمایش پیام توسط گوگل صورت میگیرد | boolean | false |
live | فقط کاربرانی که در لحظه ارسال، برنامه را باز دارند دریافت میکنند (زنده) | boolean | false |
useAsAlert | استفاده متن پیام به عنوان متن نوتیفیکیشن | boolean | true |
alertText | استفاده از متن جداگانه برای نوتیفیکیشن | string | سلام خوبی |
ttl | زمان انقضای پیام پس از درخواست (ثانیه) | number | 40 |
fallback | پیامک جایگزین | JSON | { "content": "سلام", "delay": 5, "media": "sms" } |
clientId | شناسهای که کلاینت برای رصد پیام تعیین میکند | string | gybpq0458 |
notification | تنظیمات نوتیفیکیشن | payload | مثال در جدول زیر |
silent | پیام بدون نوتیفیکیشن ارسال شود | boolean | false |
نکته :
نماد * در جدول پارامترها به معنی الزامی بودن پارامتر است و بدون آن درخواست شما صورت نمیگیرد.
نکته:
نام کانال به صورت پیشفرض به عنوان کانال عمومی (public
) در نظر گرفته میشود و اگر شما میخواهید به کاربر روی کانال شخصی پوش ارسال کنید باید قبل از نام کانال عبارت/private
را اضافه نمایید. دقت کنید که کاربر یا کاربرانی که میخواهید برایشان پوش ارسال کنید روی کانالی که میفرستید حتما عضو باشند.
جدول پارامترهای نوتیفیکیشن
پارامترها | توضیح | نوع مقدار | مثال |
---|---|---|---|
title * | عنوان نوتیفیکیشن | string | ثبت درخواست |
body | متن نوتیفیکیشن | string | سفارش شما ثبت شد |
groupId | برای گروهبندی شخصی نوتیفیکیشنها | string | news |
icon | تصویر نوتیفیکیشن | string | نام تصویر |
sound | صدای نوتیفیکیشن (به فرمت صدا دقت داشته باشید) | string | نام صدا |
clickUrl | لینک هنگام کلیک | string | لینک |
ledColor | تنظیم رنگ led (فقط اندروید) | string | کد رنگ HEX |
smallIcon | آیکون کوچک نوتیفیکیشن (فقط اندروید) | string | نام آیکون |
actions | دکمه (اکشن) | array | آرایهای از جدول زیر |
mediaType | نوع رسانه | string | jpeg |
mediaUrl | لینک رسانه | string | لینک |
contentAvailable | برای انجام یک آپدیت بیصدا در بکگراند یا فورگراند مقدار 1 را بگذارید | boolean | 1 |
mutableContent | برای پشتیبانی از نوتیفیکیشن چندرسانهای مقدار 1 را حتما قرار دهید | boolean | 1 |
category | شناسه نوتیفیکیشن برای ذخیره آن | string | delivery |
پارامترها | توضیح | نوع مقدار | مثال |
---|---|---|---|
(id (action | شناسه اکشن | string | forecast_action |
(title (action | عنوان اکشن | string | پیشبینی کن |
(options (action | رفتار اکشن (فقط آیاواس) | number | 1 |
(icon (action | نام آیکون در فولدر drawable (فقط اندروید) | string | نام آیکون |
(url (action | لینک مقصد یا دیپ لینک | string | starter:/detail?id=123 |
نکته :
نماد * در جدول پارامترها به معنی الزامی بودن پارامتر است و بدون آن درخواست شما صورت نمیگیرد.
نکته :
در پارامترهای نوتیفیکیشن، پارامترoptions
یا همان رفتار اکشن (فقط در آیاواس) میتوانید عدد ۱ برای اکشن Authentication Required (اکشن در صورت قفل نبودن دستگاه اجرا میشود)، ۲ برای اکشن Destructive (اکشن تسک مخرب انجام میدهد)، ۴ برای اکشن Foreground (اکشن موجب باز شدن اپ در فورگراند میشود) و جمع این اعداد را برای ترکیب آنها با هم قرار دهید.
مثال ارسال شخصی پیام چابک به یک کاربر
نمونه زیر یک cURL معتبر از ارسال پیام چابک به یک کاربر (با شناسه کاربری Test) است:
curl -X POST \
"https://sandbox.push.adpdigital.com/api/push/toUsers?access_token=<ACCESS_TOKEN>" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{ \"user\": \"Test\", \"content\": \"پرواز شما دچار نیم ساعت تاخیر شده است.\", \"useAsAlert\": true}"
مثال ارسال شخصی پیام چابک به چند کاربر با یک محتوا
برای ارسال پیام چابک به به چند شناسه کاربری میتوانید از روش زیر استفاده کنید:
پیلود:
{
"users": ["USER_1", "USER_2", "USER_3", "USER_4"],
"content": "سفارش شما با موفقیت ثبت شد",
"channel": "default",
"notification": {
"title": "چابک",
"body": "سفارش ثبت شد"
}
}
برای ارسال با پیلود بالا cURL زیر را در ترمینال اجرا کنید:
curl -X POST "https://sandbox.push.adpdigital.com/api/push/toUsers?access_token=<ACCESS_TOKEN>" -H "accept: application/json" -H "Content-Type: application/json" \
-d "{ \"users\": [\"USER_1\", \"USER_2\", \"USER_3\", \"USER_4\"], \"content\": \"سفارش شما با موفقیت ثبت شد\", \"channel\": \"default\", \"notification\": { \"title\": \"چابک\", \"body\": \"سفارش ثبت شد\" } }"
مثال ارسال شخصی پیام چابک به چند کاربر با محتواهای متفاوت
برای ارسال پیام چابک به به چند شناسه کاربری با محتواهای متفاوت میتوانید از روش زیر استفاده کنید:
پیلود:
[
{
"user": "USER_1",
"content": "سفارش شما با موفقیت ثبت شد",
"channel": "default",
"notification": {
"title": "چابک",
"body": "سفارش ثبت شد"
}
},
{
"user": "USER_2",
"content": "سفارش شما با موفقیت ثبت شد",
"channel": "default",
"notification": {
"title": "چابک",
"body": "سفارش ثبت شد"
}
},
{
"user": "USER_2",
"content": "سفارش شما با موفقیت ثبت شد",
"channel": "default",
"notification": {
"title": "چابک",
"body": "سفارش ثبت شد"
}
}
]
برای ارسال با پیلود بالا cURL زیر را در ترمینال اجرا کنید:
curl -X POST "https://sandbox.push.adpdigital.com/api/push/toUsers?access_token=<ACCESS_TOKEN>" -H "accept: application/json" -H "Content-Type: application/json" \
-d [ "{ \"user\": \"USER_1\", \"content\": \"سفارش شما با موفقیت ثبت شد\", \"channel\": \"default\", \"notification\": { \"title\": \"چابک\", \"body\": \"سفارش ثبت شد\" } }, { \"user\": \"USER_2\", \"content\": \"سفارش شما با موفقیت ثبت شد\", \"channel\": \"default\", \"notification\": { \"title\": \"چابک\", \"body\": \"سفارش ثبت شد\" } }, { \"user\": \"USER_2\", \"content\": \"سفارش شما با موفقیت ثبت شد\", \"channel\": \"default\", \"notification\": { \"title\": \"چابک\", \"body\": \"سفارش ثبت شد\" } }" ]
POST | ارسال شخصی نوتیفیکیشن
برای ارسال شخصی نوتیفیکیش میتوانید از لینک https://sandbox.push.adpdigital.com/api/push/notifyUsers
استفاده کنید.
نمونه زیر یک cURL معتبر است:
curl -X POST \
"https://sandbox.push.adpdigital.com/api/push/notifyUsers?access_token=<ACCESS_TOKEN>" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"user": "USER_ID",
"content": "Test webpush",
"data": {
"key": "value1",
"key2": "value2"
},
"notification": {
"title": "عنوان نوتیفیکیشن شما",
"body": "این یک متن تستی هست که بتونیم باهاش بررسی کنیم آیا بدنه نوتیفیکیشن به خوبی نمایش داده میشه یا نه!",
"mediaUrl": "https://github.com/chabokpush/chabok-assets/raw/master/samples/notification/chabokpush_twitter.jpeg",
"vibrate": [10, 20, 30, 40],
"sound": "toy.mp3",
"dir": "rtl",
"color" : "#FF0000",
"largeIcon": "https://raw.githubusercontent.com/chabok-io/chabok-assets/master/sdk-logo/Android.png",
"chromeBadge": "https://github.com/chabokpush/chabok-assets/raw/master/chaboklogowhite.png",
"actions":[{
"id": "sent",
"title": "Message sent",
"icon": "https://github.com/chabokpush/chabok-assets/raw/master/chaboklogowhite.png",
"url": "https://www.google.com"
},
{
"id": "reply",
"action": "reply",
"title": "Reply",
"icon": "https://github.com/chabokpush/chabok-assets/raw/master/chaboklogowhite.png"
}]
}
}'
` نکته:
متد ارسال نوتیفیکیشن پیلودهای ارسال پیام چابک را پشتیبانی میکند، بنابراین میتوانید از مثالهای آن استفاده کنید و فقط کافیست متد را از
toUsersبه
notifyUsers` تغییر دهید.
ارسال گروهی
این قسمت مخصوص ارسال گروهی یا اجرای کمپین است. پیام گروهی به شما امکان میدهد به یک سگمنتی (سگمنت آیدی یا فیلترهای سگمنت) پوش بفرستید:
برای مشاهده نحوه استفاده از سگمنت اینجا را مطالعه کنید.
POST | ارسال گروهی پیام چابک
برای ارسال شخصی پیام چابک میتوانید از لینک https://sandbox.push.adpdigital.com/api/push/byQuery
استفاده کنید.
نمونه زیر یک cURL معتبر است:
curl -X POST \
"https://sandbox.push.adpdigital.com/api/push/byQuery?access_token=<ACCESS_TOKEN>" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"segment\": { \"all\": [ { \"name\": \"deviceType\", \"operator\": \"include\", \"value\": [ \"android\", \"ios\" ] }, { \"name\": \"tags\", \"operator\": \"include\", \"value\": [ \"FEMALE\" ] }, { \"name\": \"purchase.count\", \"operator\": \"greater_than\", \"value\": 1 } ] },\"content\": \"خریدهای عیدتان را از همین الان شروع کنید!\",\"useAsAlert\": \"true\"}"
جدول پارامترها
پارامترها | توضیح | نوع مقدار | مثال |
---|---|---|---|
target * | ویژگیهای گروهبندی | object | {"target":{ "deviceType": "ios" }} |
channel | کانال ارسال پیام | string | default |
content * | متن پیام | string | سلام |
data | دیتای پیام به صورت json | JSON | {"offer": "10", "discountCode": "Newapp10"} |
trackId | تعیین شناسه ردگیری جداگانه برای رصد پیام | string | adp-1397-6-11 |
inApp | کاربران در زمان باز بودن برنامه پیام را دریافت میکنند (درونبرنامهای) | boolean | true |
live | فقط کاربرانی که در لحظه ارسال، برنامه را باز دارند دریافت میکنند (زنده) | boolean | false |
autoNotify | نمایش پیام توسط گوگل صورت میگیرد | boolean | false |
useAsAlert | استفاده متن پیام به عنوان متن نوتیفیکیشن | boolean | true |
alertText | استفاده از متن جداگانه برای نوتیفیکیشن | string | سلام خوبی |
ttl | زمان انقضای پیام پس از درخواست (ثانیه) | number | 40 |
notification | تنظیمات نوتیفیکیشن | payload | مثال در جدول زیر |
silent | پیام بدون نوتیفیکیشن ارسال شود | boolean | false |
نکته :
نماد * در جدول پارامترها به معنی الزامی بودن پارامتر است و بدون آن درخواست شما صورت نمیگیرد.
نکته:
نام کانال به صورت پیشفرض به عنوان کانال عمومی (public
) در نظر گرفته میشود و اگر شما میخواهید به کاربر روی کانال شخصی پوش ارسال کنید باید قبل از نام کانال عبارت/private
را اضافه نمایید. دقت کنید که کاربر یا کاربرانی که میخواهید برایشان پوش ارسال کنید روی کانالی که میفرستید حتما عضو باشند.
جدول پارامترهای نوتیفیکیشن
پارامترها | توضیح | نوع مقدار | مثال |
---|---|---|---|
title * | عنوان نوتیفیکیشن | string | ثبت درخواست |
body | متن نوتیفیکیشن | string | سفارش شما ثبت شد |
groupId | برای گروهبندی شخصی نوتیفیکیشنها | string | news |
icon | تصویر نوتیفیکیشن | string | نام تصویر |
sound | صدای نوتیفیکیشن (به فرمت صدا دقت داشته باشید) | string | نام صدا |
clickUrl | لینک هنگام کلیک | string | لینک |
ledColor | تنظیم رنگ led (فقط اندروید) | string | کد رنگ HEX |
smallIcon | آیکون کوچک نوتیفیکیشن (فقط اندروید) | string | نام آیکون |
actions | دکمه (اکشن) | array | آرایهای از جدول زیر |
mediaType | نوع رسانه | string | jpeg |
mediaUrl | لینک رسانه | string | لینک |
contentAvailable | برای انجام یک آپدیت بیصدا در بکگراند یا فورگراند مقدار 1 را بگذارید | boolean | 1 |
mutableContent | برای پشتیبانی از نوتیفیکیشن چندرسانهای مقدار 1 را حتما قرار دهید | boolean | 1 |
category | شناسه نوتیفیکیشن برای ذخیره آن | string | delivery |
پارامترها | توضیح | نوع مقدار | مثال |
---|---|---|---|
(id (action | شناسه اکشن | string | forecast_action |
(title (action | عنوان اکشن | string | پیشبینی کن |
(options (action | رفتار اکشن (فقط آیاواس) | number | 1 |
(icon (action | نام آیکون در فولدر drawable (فقط اندروید) | string | نام آیکون |
(url (action | لینک مقصد یا دیپ لینک | string | starter:/detail?id=123 |
نکته :
نماد * در جدول پارامترها به معنی الزامی بودن پارامتر است و بدون آن درخواست شما صورت نمیگیرد.
نکته :
در پارامترهای نوتیفیکیشن، پارامترoptions
یا همان رفتار اکشن (فقط در آیاواس) میتوانید عدد ۱ برای اکشن Authentication Required (اکشن در صورت قفل نبودن دستگاه اجرا میشود)، ۲ برای اکشن Destructive (اکشن تسک مخرب انجام میدهد)، ۴ برای اکشن Foreground (اکشن موجب باز شدن اپ در فورگراند میشود) و جمع این اعداد را برای ترکیب آنها با هم قرار دهید.
مثال ارسال گروهی پیام چابک
نمونه زیر یک cURL معتبر از ارسال پیام چابک گروهی است. گروه مخاطب این پیام، خانمهایی هستند که بیش از یک بار خرید داشتهاند و از موبایل (دستگاههای اندروید و آیاواس) استفاده میکنند.
curl -X POST \
"https://sandbox.push.adpdigital.com/api/push/byQuery?access_token=<ACCESS_TOKEN>" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"segment\": { \"all\": [ { \"name\": \"deviceType\", \"operator\": \"include\", \"value\": [ \"android\", \"ios\" ] }, { \"name\": \"tags\", \"operator\": \"include\", \"value\": [ \"FEMALE\" ] }, { \"name\": \"purchase.count\", \"operator\": \"greater_than\", \"value\": 1 } ] },\"content\": \"خریدهای عیدتان را از همین الان شروع کنید!\",\"useAsAlert\": \"true\"}"
POST | ارسال گروهی نوتیفیکیشن
برای ارسال گروهی نوتیفیکیش میتوانید از لینک https://sandbox.push.adpdigital.com/api/push/notifyUsers
استفاده کنید.
نمونه زیر یک cURL معتبر است:
curl -X POST \
"https://sandbox.push.adpdigital.com/api/push/notifyUsers?access_token=<ACCESS_TOKEN>" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"segment\": { \"all\": [ { \"name\": \"deviceType\", \"operator\": \"include\", \"value\": [ \"android\", \"ios\" ] }, { \"name\": \"tags\", \"operator\": \"include\", \"value\": [ \"FEMALE\" ] }, { \"name\": \"purchase.count\", \"operator\": \"greater_than\", \"value\": 1 } ] },\"content\": \"خریدهای عیدتان را از همین الان شروع کنید!\",\"useAsAlert\": \"true\"}"
` نکته:
متد ارسال نوتیفیکیشن پیلودهای ارسال پیام چابک را پشتیبانی میکند، بنابراین میتوانید از مثالهای آن استفاده کنید و فقط کافیست متد را از
byQueryبه
notifyUsers` تغییر دهید.
نحوه استفاده از سگمنتها در API
هر سگمنت میتواند شامل یک یا چند شرط (rule) باشد.
شرطها
هر شرط شامل ۳ قسمت اصلی میباشد:
-
name
: نام فیلد -
operator
: نوع عملوند (مانند بزرگتر، مساوی با و غیره) -
value
: مقداری که سنجش میشود
عملوندهای مجاز (operators)
-
equal_to
: برابر با -
not_equal
: برابر نباشد با -
lesser_than
: کوچکتر از -
lesser_equals
: کوچکتر مساوی -
greater_than
: بزرگتر از -
greater_equals
: بزرگتر مساوی -
include
: یکی از -
not_include
: هیچکدام از -
before
: قبل از -
after
: بعد از
نکته:
عملوندهایbefore
وafter
مخصوص فیلدهایی از جنس زمان هستند، و مقداری که در قسمتvalue
این نوع شرطها قرار میگیرد به صورتxh
میباشد. نمونه:'value: '6h
.
nameهای مجاز
-
installDate
: زمان اولین بازدید -
launchTime
: زمان آخرین بازدید -
launchCount
: تعداد بازدید -
tags
: تگهای کاربر -
deviceType
: نوع دستگاه -
clientVersion
: نسخه برنامه -
osVersion
: نسخه سیستمعامل
مثال زیر کاربرانی را هدف قرار میدهد که بعد از ۶ ساعت پیش، برنامه را نصب کردهاند و بیش از ۲ بار هم آن را باز نمودهاند:
نمونه
"segment": {
"all": [
{
"name": "installDate",
"operator": "after",
"value": "6h"
},
{
"name": "launchCount",
"operator": "greater_than",
"value": 2
}
]
}