PrimLagic

پیامک با SMS.ir یا گیت‌وی روی گوشی؟ طراحی ارسال پیامک در ClassBan

نویسنده علی عبداللهی · · ۲ دقیقه مطالعه

پیامک با SMS.ir یا گیت‌وی روی گوشی؟ طراحی ارسال پیامک در ClassBan

وقتی نرم‌افزار مدرسه باید پیامک بفرستد، دو راه ساده دارید: API یک سرویس‌دهنده‌ی پیامک (مثل SMS.ir) یا یک گیت‌وی روی گوشی که سیم‌کارت خودتان را به یک سرویس HTTP تبدیل می‌کند. ClassBan هر دو را پشتیبانی می‌کند و این نوشته توضیح می‌دهد چرا و با چه ساختاری.

دو روش، دو جور دردسر

سرویس‌دهنده‌ی آنلاین (مثل SMS.ir): نیاز به حساب، کلید API و شارژ دارید. در عوض نیازی به گوشی روشن و متصل نیست و ارسال از یک زیرساخت جدا انجام می‌شود. وابسته‌اید به اینترنت و موجودی حساب.

گیت‌وی روی گوشی: یک گوشی در شبکه‌ی مدرسه به‌صورت سرور HTTP عمل می‌کند و پیامک را با سیم‌کارت خودش می‌فرستد. ClassBan به‌صورت پیش‌فرض یک گیت‌وی از نوع Traccar SMS Gateway را صدا می‌زند. مزیت: هزینه‌ی پیامک همان تعرفه‌ی سیم‌کارت است و به اینترنت بیرونی وابسته نیستید. عیب: گوشی باید روشن، شارژ و در شبکه باشد، و اگر زیاد پیامک بفرستید ممکن است هنگ کند یا سیم‌کارت محدود شود.

عدد هزینه‌ی هر روش را عمداً نمی‌نویسم؛ تعرفه‌ها تغییر می‌کنند و باید از سرویس‌دهنده یا اپراتور خودتان بگیرید.

ساختار ClassBan: اولویت اول و جایگزین

در کد ClassBan ارسال این‌طور کار می‌کند: اول گیت‌وی گوشی صدا زده می‌شود؛ اگر پاسخ موفق نبود، SMS.ir به‌عنوان جایگزین امتحان می‌شود. آدرس‌ها و کلیدها از متغیرهای محیطی خوانده می‌شوند، نه از داخل کد.

صف ارسال

اگر معاون بخواهد برای ۳۰ دانش‌آموز پیام بفرستد و همه را یک‌جا به گوشی بدهیم، گوشی هنگ می‌کند. به همین دلیل پیامک‌ها وارد یک صف می‌شوند:

  • فاصله‌ی پیش‌فرض بین دو ارسال ۵ ثانیه است و با متغیر محیطی قابل تغییر.
  • هر پیام در صورت شکست، دوباره امتحان می‌شود؛ با هر تلاش فاصله بیشتر می‌شود (۱× ، ۲× ، ۳× فاصله‌ی پایه).
  • حداکثر ۱۰ تلاش؛ بعد از آن پیام کنار گذاشته می‌شود و در لاگ ثبت می‌شود.

یک محدودیت صادقانه: این صف داخل حافظه‌ی برنامه است. اگر برنامه وسط ارسال بسته شود، پیام‌های هنوز-ارسال‌نشده از بین می‌روند. برای مدرسه‌ای که چند ده پیام در روز می‌فرستد قابل‌قبول است؛ برای حجم بالا باید صف روی دیتابیس ذخیره شود.

شماره‌ها را نرمال کنید

یکی از ساده‌ترین دلایل «پیامک نرفت»، فرمت شماره است. ClassBan همه‌چیز غیر از رقم را حذف می‌کند و اگر شماره ۱۰ رقمی و با ۹ شروع شود، ۰ ابتدایی را اضافه می‌کند. این کار کوچک جلوی بخش بزرگی از خطاها را می‌گیرد.

کدام را انتخاب کنم؟

  • مدرسه‌ی کوچک، حجم کم، و کسی که گوشی را مراقبت کند: گیت‌وی روی گوشی کافی است.
  • نیاز به پایداری بیشتر یا نبود گوشی اختصاصی: سرویس‌دهنده‌ی آنلاین.
  • اگر هر دو را دارید: همان ساختار «اول یکی، جایگزین دیگری» با صف و لاگ.

در هر حال لاگ ارسال را نگه دارید؛ توضیحش در راهنمای ثبت غیبت و پیامک آمده است.

پیامکClassBanمعماری