ارسال با شناسه سفارشی (شناسه سفارشی (Custom Alias))

ارسال اعلان پوش به همه مشترکینی که یک شناسه سفارشی با برچسب و مقدار مشخص دارند.

POST
https://pushfa.com/api/webservices/send-via-alias
دانلود کالکشن Postman

کاربرد

اگر با 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 شرط روی همان آخرین دستگاه بررسی می‌شود.

مقدار date می‌تواند today، today-N (مثلاً today-7) یا تاریخ میلادی Y-m-d باشد و operator یکی از >=، >، <=، < یا = است. شرط و مقدار today هنگام ثبت درخواست محاسبه می‌شوند، حتی در ارسال زمان‌بندی‌شده. این شرط به روشن‌بودن ثبت آخرین بازدید در تنظیمات سرویس نیاز دارد؛ در غیر این صورت خطای 403 با کد LAST_VISIT_TRACKING_DISABLED برمی‌گردد.
{
  "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 رد می‌شود؛ در هر دو حالت پیامی ساخته نمی‌شود و هزینه‌ای کسر نمی‌شود.
Ctrl+I