{% extends "./base.html" %} {% block bodyPage %}

تنظیمات سامانه پیامک

{% csrf_token %}

اتصال به سامانه پیامک

این بخش مشخص می‌کند پیامک‌ها از چه مسیری و با چه حساب کاربری به اپراتور سپرده می‌شوند. تا وقتی «وضعیت ارسال» روشن نباشد، هیچ‌کدام از سرویس‌های پس‌زمینه (worker) پیامکی نمی‌فرستند.

مسیر فنی ارسال را تعیین می‌کند و روی بقیهٔ فیلدها اثر دارد:
• 0098SMS (لینکی HTTP): ساده‌ترین حالت؛ درخواست به آدرس api_url زده می‌شود. شناسهٔ پیامک برنمی‌گردد، پس استعلام «تحویل به گوشی» ممکن نیست.
• 0098SMS (وب‌سرویس): ارسال SOAP به webservice_url؛ شناسهٔ پیامک (smsid) برمی‌گردد و می‌توان وضعیت واقعی تحویل را استعلام کرد.
• HTTP عمومی: برای سرویس‌های دلخواه؛ با api_token احراز هویت می‌شود.
• Console: فقط برای تست/دیباگ؛ پیامک واقعی نمی‌رود و متن در لاگ چاپ می‌شود.

کلید اصلی خاموش/روشن ارسال. اگر تیک نخورد، سرویس worker هیچ پیامکی نمی‌فرستد (ردیف‌ها در صف می‌مانند). اسکنر و صف‌کردن مستقل از این است، پس می‌توانید پیامک‌ها را از قبل در صف بچینید و بعد ارسال را روشن کنید.

حداکثر زمان انتظار worker برای پاسخ سرویس‌دهنده در هر تلاش. اگر پاسخ دیرتر بیاید، آن تلاش «ناموفق» ثبت می‌شود و بر اساس سیاست تلاش مجدد دوباره در نوبت قرار می‌گیرد. مقدار کم (مثل ۵) ممکن است در سرویس کند، ارسال‌های سالم را هم ناموفق کند؛ مقدار زیاد (مثل ۱۲۰) در قطعی سرویس، worker را بیکار نگه می‌دارد. پیش‌فرض ۳۰ ثانیه متعادل است.

آدرس درخواست ارسال برای providerهای «لینکی HTTP» و «HTTP عمومی».
• برای 0098SMS لینکی همین آدرس است (http://www.0098sms.com/sendsmslink.aspx)؛ این سرویس WSDL/SOAP ندارد و اگر آدرس WSDL بگذارید خطای «Invalid XML content» می‌گیرید.
• برای provider وب‌سرویس، این فیلد استفاده نمی‌شود (آن یکی webservice_url را می‌خواند).
• اگر آدرس اشتباه یا در دسترس نباشد، پیامک‌ها «ناموفق» می‌شوند و در صف تلاش مجدد می‌خورند.

فقط وقتی provider = «وب‌سرویس» معنا دارد. هم ارسال با شناسهٔ پیامک (smsid) و هم استعلام تحویل به گوشی از همین آدرس انجام می‌شود. با providerهای دیگر این فیلد نادیده گرفته می‌شود. پیش‌فرض: https://webservice.0098sms.com/service.asmx

شمارهٔ اختصاصی حساب شما در وب‌سرویس (فقط provider وب‌سرویس). اگر خالی بماند، سیستم از «شماره خط فرستنده» استفاده می‌کند. مقدار اشتباه باعث رد شدن ارسال با خطای احراز هویت می‌شود.

نام کاربری حساب سامانهٔ پیامک (در همهٔ providerها به‌جز Console لازم است). اگر اشتباه باشد، ارسال‌ها رد می‌شوند و در «خطا» صف ثبت می‌گردد.

رمز حساب سامانهٔ پیامک. برای امنیت، مقدار ذخیره‌شده بازخوانی نمی‌شود؛ این کادر را خالی بگذارید تا رمز قبلی بماند و فقط وقتی رمز عوض شده، مقدار جدید را وارد کنید.

شماره یا عنوان خطی که پیامک با آن به دست مشتری می‌رسد. باید جزو خطوط مجاز حساب شما باشد؛ در غیر این صورت اپراتور ارسال را رد می‌کند. همچنین در provider وب‌سرویس، اگر «شمارهٔ پنل» خالی باشد همین مقدار جای آن استفاده می‌شود.

کلید/توکن احراز هویت providerهای «HTTP عمومی». برای 0098SMS لازم نیست. مثل رمز، خالی گذاشتن آن یعنی «بدون تغییر».


کنترل جریان ارسال

این بخش تعیین می‌کند اسکنر دوره‌ای چه چیزی و چقدر در هر اجرا در صف بگذارد. اسکنر هر چند دقیقه یک‌بار اجرا می‌شود و بر اساس «سررسیدها» تصمیم می‌گیرد کدام مشتری باید یادآوری بگیرد. منطق بودجه به این شکل است: سقف هر اجرا ← تعیین می‌کند کلاً چند مورد صف شود؛ خط شروع ← موارد قدیمی‌تر از آن را کنار می‌گذارد؛ اجازهٔ موارد قدیمی + سقف آن ← تصمیم می‌گیرد از آن موارد کنارگذاشته‌شده چند تا (اگر لازم بود) ارسال شود.

خط جداکنندهٔ «موارد جدید» از «موارد قدیمی». هر مورد (چک، نسیه، بازدید) یک «لحظهٔ باز شدن پنجرهٔ یادآوری» دارد. اگر این لحظه از این تاریخ به بعد باشد، مورد «جدید» است و آزادانه صف می‌شود؛ اگر قبل از آن باشد، «قدیمی» (backlog) حساب می‌شود.
• هدف اصلی: در نخستین راه‌اندازی، هزاران مشتری قدیمیِ واجد شرط یک‌باره پیامک نگیرند.
• قالب: YYYY/MM/DD شمسی — خالی = همین حالا.
• عوض‌کردن آن به گذشته، مشتریان قدیمی‌تر را «جدید» می‌کند و ممکن است سیل پیامک بسازد؛ با احتیاط تغییر دهید.

سقف کل صف‌کردن در یک اجرا — به‌ازای هر اسکنر جداگانه.
• «هر اسکنر» یعنی این عدد برای هر نوع یادآوری مستقل اعمال می‌شود (تأمین موجودی چک، سررسید نسیه، بازدید دورهای)؛ پس اگر ۱۰۰ باشد و هر سه اسکنر واجد شرط باشند، در یک اجرا حداکثر ۱۰۰ + ۱۰۰ + ۱۰۰ = ۳۰۰ ردیف صف می‌شود.
• شمارش از مجموع «جدیدها + موارد قدیمی» است، نه فقط جدیدها.
• ۰ = بی‌نهایت (هیچ سقفی اعمال نمی‌شود).
• چون اسکنر دوره‌ای اجرا می‌شود، سقف باعث «دسته‌دسته» شدن ارسال‌های انبوه می‌شود (بقیه در اجراهای بعدی می‌آیند) و از ریختن یک‌بارهٔ صدها پیامک روی ارسال جلوگیری می‌کند.
• نکته: این سقف‌ها روی «صف‌کردن» اثر دارند، نه سرعت ارسال واقعی؛ سرعت ارسال به «فاصلهٔ بین هر پیامک» بستگی دارد.

مکث سرویس worker پس از هر ارسال تا اپراتور زیر بار زیاد نرود. مثال: با مقدار ۳، ارسال ۱۰۰ پیامک حدود ۵ دقیقه طول می‌کشد. مقدار ۰ یعنی بدون مکث (سریع ولی پرخطر — ممکن است سرویس‌دهنده محدودتان کند).

دربِ موارد «قدیمی‌تر از تاریخ شروع دوره». به‌صورت پیش‌فرض بسته است. تا وقتی بسته باشد، موارد قدیمی هرگز صف نمی‌شوند (حتی اگر سقف باقی باشد). اگر لازم بود این موارد هم پردازش شوند، آن را روشن کنید و مقدار «حداکثر موارد قدیمی در هر اجرا» را تعیین کنید.

سقف ارسال موارد قدیمی در هر اجرا، به‌ازای هر اسکنر.
• فقط وقتی «اجازهٔ ارسال موارد قدیمی» روشن باشد اثر دارد.
• صفر = هیچ مورد قدیمی ارسال نمی‌شود (حتی با روشن‌بودن کلید).
• این سقف در کنار «حداکثر پیامک هر اسکنر» اعمال می‌شود؛ پس ممکن است ابتدا سقف کل (max_per_run) پر شود.
• برای پاک‌کردن تدریجی انبار قدیمی، عدد کوچکی مثل ۵۰ بگذارید تا در هر اجرا دسته‌ای ارسال شود.

ارسال پیامک آزمایشی

{% csrf_token %}

این متن ذخیره می‌شود و در ارسال‌های بعدی هم استفاده خواهد شد.

پیامک آزمایشی در صف قرار می‌گیرد و توسط worker ارسال می‌شود.

{% endblock %}