ارسال با شناسه سفارشی (شناسه سفارشی (Custom Alias))
ارسال اعلان پوش به همه مشترکینی که یک شناسه سفارشی با برچسب و مقدار مشخص دارند.
کاربرد
اگر با addAlias مشترکین را برچسبگذاری کردهاید، میتوانید پیام را به همه مشترکینی که برچسب label برابر یکی از مقادیر values داشته باشند بفرستید. بهشکل هوشمندانه، پیام فقط به بهترین دستگاه این شناسه ارسال میشود؛ بنابراین پیام تنها به یک دستگاه خواهد رسید.
پارامترهای ورودی
| پارامتر | مقدار | اجباری |
|---|---|---|
| label | نام برچسب (مثل crm_id، tier) | بله |
| values[] | آرایه مقادیری که میخواهید هدف باشند | بله |
| only_last_device | اگر true باشد، برای هر مشترک منطبق فقط به آخرین دستگاه استفادهشده ارسال میشود. اولویتبندی بر اساس visit_at و در صورت برابری، updated_at (جدیدتر = برتر). پیشفرض: false | خیر |
| smart_targeting | بهشکل هوشمندانه، پیام فقط به بهترین دستگاه این شناسه ارسال میشود؛ بنابراین پیام تنها به یک دستگاه خواهد رسید. | خیر |
| device | محدودیت دستگاه: all، mobile یا desktop | خیر |
| api_public_key | کلید عمومی سرویس پوشفا | بله |
| api_private_key | کلید خصوصی سرویس پوشفا | بله |
| title | عنوانی که بالای اعلان نمایش داده میشود | بله |
| body | متن اصلی که زیر عنوان اعلان نمایش داده میشود | بله |
| link_url | لینک مقصد پس از کلیک روی اعلان (مثال: https://example.com) | خیر |
| image_url | آدرس تصویر ضمیمه اعلان | خیر |
| use_brackets | برای شخصیسازی پیام، مقدار true را بفرستید. در این حالت بخشهای متغیر عنوان (title) و متن (body) با اطلاعات پروفایل هر گیرنده پر میشوند. مقدار پیشفرض false است. | خیر |
| throttle_rate_per_minute | نرخ ارسال این پیام بر حسب پیام در دقیقه. فقط وقتی Push Throttling سرویس فعال و اجازه Override روشن باشد مقدار ارسالی جایگزین نرخ پیشفرض میشود. | خیر |
| silentپوش بیصدا | مقدار true اعلان را بدون صدا و لرزش نمایش میدهد؛ این گزینه اعلان را پنهان نمیکند. | خیر |
| collapse_idCollapse ID | Collapse ID — رشته متنی حداکثر ۱۰۰ کاراکتر برای جایگزینی اعلان قبلی با اعلان جدید دارای همان شناسه. | خیر |
| additional_dataAdditional DataPro | Additional Data (JSON) — شیء JSON دلخواه که همراه پیام ارسال میشود و در SDK/Service Worker قابل خواندن است. | خیر - فقط Pro |
| last_visit[operator] | شرط اختیاری آخرین بازدید مخاطب — عملگر مقایسه: >=، >، <=، < یا = | اگر last_visit ارسال شود، الزامی است |
| last_visit[date] | تاریخ مبنای شرط: today (امروز)، today-N (N روز قبل، مثلاً today-7) یا تاریخ میلادی با قالب Y-m-d. پیام فقط برای مخاطبانی ارسال میشود که روز آخرین بازدیدشان (به وقت تهران) با این شرط بخواند؛ مثلاً operator برابر >= و date برابر today یعنی فقط کسانی که امروز بازدید داشتهاند. اگر last_visit را نفرستید، ارسال بدون این شرط انجام میشود. | اگر last_visit ارسال شود، الزامی است |
| send_time | زمان ارسال؛ current برای ارسال فوری و delay برای زمانبندیشده. اختیاری و پیشفرض current است. نام قدیمی sendTime فعلاً پشتیبانی میشود، اما نباید هر دو نام همزمان ارسال شوند. | خیر |
| time | تاریخ میلادی و ساعت تهران (Asia/Tehran) را با قالب Y-m-d H:i وارد کنید؛ ثانیه صفر در نظر گرفته میشود. در حالت delay زمان باید بعد از اکنون باشد. تاریخ شمسی پذیرفته نمیشود. این قرارداد برای همه وبسرویسهای ارسال، از جمله ارسال به تاپیک، یکسان است. | اگر send_time برابر delay باشد، الزامی است |
| ttl | مدت اعتبار پیام برای تحویل، بر حسب ثانیه. مقدار پیشفرض 86400 ثانیه، یعنی ۲۴ ساعت است. | خیر |
نمونه درخواست
curl -X POST https://pushfa.com/api/webservices/send-via-alias \
-H "Content-Type: application/json" \
-d '{
"api_public_key": "YOUR_PUBLIC_KEY",
"api_private_key": "YOUR_PRIVATE_KEY",
"label": "crm_id",
"values": ["CRM-123", "CRM-456"],
"smart_targeting": true,
"title": "پیام برای مشتریان خاص",
"body": "{name:کاربر} عزیز، سفارش {custom_alias:order_id:شما} آماده است.",
"use_brackets": true,
"send_time": "current"
}'
شرط اختیاری آخرین بازدید (last_visit)
با پارامتر اختیاری last_visit پیام فقط برای مخاطبانی ارسال میشود که روز آخرین بازدیدشان از سایت یا اپ (به وقت تهران) با شرط شما بخواند. نمونه زیر فقط برای کسانی ارسال میشود که امروز بازدید داشتهاند. شرط برای هر دستگاه جداگانه بررسی میشود و مقدارهایی از values که هیچ دستگاه واجد شرطی ندارند، با کد LAST_VISIT_CONDITION_NOT_MET در rejected_recipients برمیگردند. smart_targeting بهترین دستگاه را از میان دستگاههای واجد شرط انتخاب میکند و با only_last_device شرط روی همان آخرین دستگاه بررسی میشود.
{
"api_public_key": "YOUR_PUBLIC_KEY",
"api_private_key": "YOUR_PRIVATE_KEY",
"label": "crm_id",
"values": ["CRM-123", "CRM-456"],
"title": "پیشنهاد امروز",
"body": "ویژه کاربرانی که امروز به ما سر زدهاند",
"last_visit": { "operator": ">=", "date": "today" },
"send_time": "current"
}
خطاها و کدهای پاسخ
خطاهای عمومی مانند INVALID_API_KEYS، VALIDATION_ERROR و INSUFFICIENT_BALANCE در همه وبسرویسهای ارسال مشترکاند. مقدارهایی از values که مشترکی ندارند یا مشترک فعال ندارند، با CUSTOM_ALIAS_NOT_FOUND یا NO_ACTIVE_PUSH_SUBSCRIPTION در data.rejected_recipients برمیگردند و اگر هیچ مقداری قابل ارسال نباشد، درخواست با کد مشترک مقدارها یا NO_VALID_RECIPIENTS رد میشود. اگر هیچ دستگاهی با فیلترها مطابقت نداشته باشد یا همه به سقف ارسال رسیده باشند، کل درخواست با NO_MATCHING_DEVICE یا FREQUENCY_CAP_REACHED رد میشود. اگر only_last_device را بدون smart_targeting بفرستید و ثبت آخرین بازدید سرویس خاموش باشد، خطای LAST_VISIT_TRACKING_DISABLED برمیگردد. اگر شرط اختیاری last_visit را بفرستید، LAST_VISIT_TRACKING_DISABLED و LAST_VISIT_CONDITION_NOT_MET هم ممکن است برگردند. معنی هر کد و اینکه چه زمانی باید توکن یا شناسه را حذف کنید در صفحه خطاها آمده است.
send_time برابر delay)، time باید تاریخ میلادی با قالب Y-m-d H:i و ساعت تهران (Asia/Tehran) باشد. قالب نامعتبر با VALIDATION_ERROR و زمان گذشته یا همین لحظه با خطای 422 و کد INVALID_SEND_TIME رد میشود؛ در هر دو حالت پیامی ساخته نمیشود و هزینهای کسر نمیشود.