Files
shopship/apps/landing/migrations/0002_seed_articles.py
T

211 lines
12 KiB
Python
Raw Normal View History

2026-08-24 15:54:08 +03:30
import datetime
from django.db import migrations
ARTICLES = [
{
"slug": "peyam-goruhi-ba-shomare",
"title": "پیام گروهی با شماره چیست و چطور بدون مسدود شدن ارسال کنیم؟",
"meta_description": "راهنمای ارسال پیام گروهی با شماره: فرق روش رسمی (Business/Bot API) با روش‌های غیررسمی، و چرا روش دوم دیر یا زود منجر به مسدود شدن می‌شود.",
"excerpt": "فرق ارسال گروهی رسمی با روش‌های غیررسمی، و چرا مسیر Business/Bot API تنها راه پایدار است.",
"read_minutes": 4,
"content_html": """
<p>
«پیام گروهی با شماره» یعنی ارسال یک پیام (پیامک، واتساپ، تلگرام و…) به
لیستی از شماره‌ها، معمولاً با متنی که برای هر گیرنده کمی شخصی‌سازی
شده — مثلاً با نام یا یک اطلاعات اختصاصی دیگر. سوالی که همیشه پشت این
نیاز می‌آید این است: چطور این کار را انجام بدهیم بدون این‌که شماره یا
اکانت فرستنده مسدود شود؟
</p>
<h2>چرا اکانت‌ها مسدود می‌شوند</h2>
<p>
واتساپ، تلگرام، بله و ایتا همه یک سیستم ضدهرزنامه دارند که رفتار
غیرطبیعی (ارسال حجم بالا از یک شماره‌ی معمولی، چرخاندن چند دستگاه/سشن،
شبیه‌سازی رفتار انسانی برای فرار از تشخیص) را شناسایی و مسدود می‌کند.
این محدودیت تصادفی نیست — دقیقاً همان مکانیزمی است که جلوی اسپم واقعی
را می‌گیرد.
</p>
<h2>راه پایدار: مسیر رسمی هر پلتفرم</h2>
<p>
هر پلتفرم یک راه رسمی برای ارسال حجمی به کسب‌وکارها دارد:
</p>
<p>
<strong>پیامک</strong> از طریق درگاه‌های بالک اپراتور، <strong>واتساپ</strong>
از طریق WhatsApp Business Platform (نیاز به تایید Template پیام دارد)،
و <strong>تلگرام/بله/ایتا</strong> از طریق Bot API — با یک محدودیت مهم:
بات فقط می‌تواند به کسانی پیام بدهد که خودشان قبلاً چت را با بات شروع
کرده‌اند (opt-in).
</p>
<h2>یعنی چه چیزی امکان‌پذیر نیست؟</h2>
<p>
ارسال خودکار به هر شماره‌ی دلخواه در تلگرام/بله/ایتا بدون این‌که آن
شخص قبلاً با بات تعامل داشته باشد، از مسیر رسمی امکان‌پذیر نیست — و
هیچ روش «دور زدن» پایداری هم برایش وجود ندارد. کاسبیار برای این
موارد به‌جای اتوماسیون مخفی، یک صف ارسال دستیِ یک‌لمسی نشان می‌دهد:
اپلیکیشن مقصد را با متن آماده باز می‌کند، خودت دستی می‌زنی ارسال.
</p>
<h2>جمع‌بندی</h2>
<p>
پیام گروهی پایدار یعنی حجم را از مسیر رسمی هر پلتفرم رد کنی، نه این‌که
رفتار انسانی را شبیه‌سازی کنی. کندتر شروع می‌شود (چون باید Template یا
Bot تاییدشده داشته باشی) ولی هرگز اکانتت را به خطر نمی‌اندازد.
</p>
""",
},
{
"slug": "field-sefareshi-dar-template",
"title": "فیلد سفارشی در قالب پیام یعنی چه؟",
"meta_description": "چطور برای هر گروه مخاطب فیلدهای سفارشی مثل شماره گذرنامه یا کد ملی تعریف کنی و در قالب پیام همان گروه استفاده کنی.",
"excerpt": "چطور برای هر گروه مخاطب، فیلدهای مخصوص خودش را تعریف کنی و در متن پیام استفاده کنی.",
"read_minutes": 3,
"content_html": """
<p>
قالب پیام معمولی یک متن ثابت با چند جای‌خالی است، مثلاً «سلام {نام}
عزیز». اما خیلی از کسب‌وکارها به بیشتر از نام و شماره نیاز دارند — یک
آژانس مسافرتی به «شماره گذرنامه» نیاز دارد، یک کلینیک به «تاریخ نوبت»،
یک باشگاه به «کد عضویت». این‌جاست که فیلد سفارشی وارد می‌شود.
</p>
<h2>فیلد سفارشی مال یک گروه است، نه کل مخاطبین</h2>
<p>
در کاسبیار، مخاطبین را در گروه‌هایی مثل «تور»، «مشتریان VIP» یا
«دانشجویان» دسته‌بندی می‌کنی. هر گروه فیلدهای سفارشی مخصوص خودش را
دارد — یعنی گروه «تور» می‌تواند «شماره گذرنامه» داشته باشد بدون این‌که
این فیلد بی‌ربط در گروه «دانشجویان» هم ظاهر شود.
</p>
<h2>گروه عمومی برای وقتی که پیچیدگی لازم نیست</h2>
<p>
اگر نیازی به فیلد سفارشی نداری، همان گروه «عمومی» پیش‌فرض کافیست —
فقط نام و شماره. هیچ فیلدی مجبور نیستی اضافه کنی.
</p>
<h2>استفاده در قالب پیام</h2>
<p>
بعد از تعریف فیلد در یک گروه، هنگام نوشتن قالب پیام برای همان گروه،
اسم فیلد به‌عنوان یک تگ قابل‌درج (مثل <code>{شماره گذرنامه}</code>)
کنار فیلدهای پایه (نام، شماره) نمایش داده می‌شود. برای هر گیرنده، اپ
خودکار مقدار واقعی همان مخاطب را جایگزین می‌کند.
</p>
""",
},
{
"slug": "merge-mokhatebin-ganoshi",
"title": "مرج مخاطبین گوشی با اپ",
"meta_description": "سریع‌ترین راه برای شروع ارسال گروهی: مخاطبین گوشی‌ات را بدون تایپ دستی وارد کاسبیار کن و به گروه دلخواه اضافه کن.",
"excerpt": "سریع‌ترین راه برای شروع: مخاطبین گوشی‌ات را بدون تایپ دستی وارد کاسبیار کن.",
"read_minutes": 2,
"content_html": """
<p>
اگر لیست مخاطبینت همین حالا در دفترچه‌تلفن گوشی‌ات است، نیازی به
تایپ دوباره‌ی تک‌تک شماره‌ها نیست. کاسبیار می‌تواند مستقیم به
مخاطبین گوشی‌ات دسترسی بگیرد (با اجازه‌ی خودت) و هرکدام را که خواستی
یک‌جا وارد اپ کند.
</p>
<h2>چطور کار می‌کند</h2>
<p>
از صفحه‌ی «مخاطبین» گزینه‌ی «مرج از مخاطبین گوشی» را بزن. اپ لیست
مخاطبین گوشی‌ات را نشان می‌دهد (فقط آن‌هایی که هنوز در کاسبیار
نیستند)، هرکدام را انتخاب می‌کنی، یک گروه مقصد مشخص می‌کنی، و همه
یک‌جا اضافه می‌شوند.
</p>
<h2>دوباره‌کاری نمی‌شود</h2>
<p>
مخاطبینی که شماره‌شان از قبل در اپ ثبت شده، دوباره در لیست مرج نشان
داده نمی‌شوند — تطبیق بر اساس شماره‌ی نرمال‌شده انجام می‌شود، نه اسم.
</p>
<h2>حریم خصوصی</h2>
<p>
دسترسی به مخاطبین فقط برای همین عملیات استفاده می‌شود؛ چیزی خودکار یا
در پس‌زمینه آپلود نمی‌شود — فقط همان مخاطبینی که خودت تیک می‌زنی.
</p>
""",
},
{
"slug": "sms-ya-whatsapp-business",
"title": "پیامک یا واتساپ‌بیزینس؟ کدام برای ارسال گروهی بهتر است",
"meta_description": "مقایسه‌ی پیامک و واتساپ‌بیزینس برای ارسال پیام گروهی: هزینه، نرخ باز شدن، محدودیت Template، و کدام برای چه کسب‌وکاری مناسب‌تر است.",
"excerpt": "مقایسه‌ی هزینه، نرخ باز شدن، و محدودیت‌های هرکدام برای پیام گروهی کسب‌وکارها.",
"read_minutes": 5,
"content_html": """
<p>
هر دو کانال جای خودشان را دارند و در کاسبیار می‌توانی همزمان از
هردو (به‌علاوه‌ی تلگرام، بله و ایتا) استفاده کنی. اما اگر مجبوری یکی
را اول انتخاب کنی، این تفاوت‌ها کمک می‌کند:
</p>
<h2>پیامک</h2>
<p>
به هر شماره‌ای می‌رسد، حتی بدون اینترنت یا اپ نصب‌شده — قابل‌اطمینان‌ترین
کانال از نظر تحویل. هزینه‌ی هر پیام مشخص و قابل‌پیش‌بینی است. محدودیت:
طول پیام (پیامک‌های بلند چند-قسمتی حساب می‌شوند) و نداشتن تصویر/دکمه.
</p>
<h2>واتساپ‌بیزینس</h2>
<p>
نرخ باز شدن پیام معمولاً بالاتر از پیامک است و امکاناتی مثل دکمه و
رسانه دارد. اما برای ارسال گروهی (business-initiated) باید از یک
Template از پیش تاییدشده در Meta Business Manager استفاده کنی —
یعنی نمی‌توانی هر متن دلخواهی را بی‌محدودیت به هرکسی بفرستی؛ باید
ساختار پیام از قبل تایید شده باشد.
</p>
<h2>تلگرام، بله، ایتا</h2>
<p>
این‌ها فقط به کسانی می‌رسند که قبلاً با بات کسب‌وکارت چت را شروع
کرده‌اند. برای مخاطبینی که این کار را نکرده‌اند، کاسبیار یک صف
ارسال دستیِ یک‌لمسی نشان می‌دهد.
</p>
<h2>جمع‌بندی</h2>
<p>
اگر تحویل تضمینی برایت مهم‌تر است، پیامک را انتخاب کن. اگر مخاطبینت
بیشتر واتساپی هستند و Template تاییدشده داری، واتساپ‌بیزینس گزینه‌ی
بهتری است. بهترین نتیجه معمولاً ترکیب چند کانال است — دقیقاً همان
چیزی که کاسبیار از یک صفحه انجام می‌دهد.
</p>
""",
},
]
def seed_articles(apps, schema_editor):
Article = apps.get_model("landing", "Article")
published_at = datetime.date(2025, 8, 23)
for data in ARTICLES:
Article.objects.update_or_create(
slug=data["slug"],
defaults={
"title": data["title"],
"meta_description": data["meta_description"],
"excerpt": data["excerpt"],
"content_html": data["content_html"],
"read_minutes": data["read_minutes"],
"is_published": True,
"published_at": published_at,
},
)
def remove_articles(apps, schema_editor):
Article = apps.get_model("landing", "Article")
Article.objects.filter(slug__in=[a["slug"] for a in ARTICLES]).delete()
class Migration(migrations.Migration):
dependencies = [
("landing", "0001_initial"),
]
operations = [
migrations.RunPython(seed_articles, remove_articles),
]