SMS Catcher؛ همون کاری که Mailpit با ایمیل میکنه
خلاصهٔ کاملتر
تو Laravel News معرفی شده که Laravel SMS Catcher، ساختهٔ Michal Skogemann، یه هلپر توسعهٔ محلیه که نوتیفیکیشنهای پیامکی خروجی اپ رو میگیره. ایدهٔ اصلیش دقیقاً همون کاریه که Mailpit برای ایمیل انجام میده: یه داشبورد بصری که بشه متن پیام و متادیتاش رو موقع کار محلی بررسی کرد، بدون این که پیامکی واقعاً برای کسی بره.
مکانیزمش سادهست: پکیج به سیستم نوتیفیکیشن لاراول قلاب میشه. وقتی یه نوتیفیکیشن رو از طریق کانال sms میفرستی، پکیج وسط راه اون رو میگیره و متد toSms کلاس نوتیفیکیشن رو صدا میزنه، بعد فرستنده، گیرنده، متن و زمان رو تو فایل storage/logs/sms-catcher.json مینویسه. برای اینکه پیامها گرفته بشن، کلاس نوتیفیکیشن باید متد toSms() داشته باشه که رشته، آرایه یا یه آبجکت شامل متن پیام برگردونه.
نوشتن روی یه فایل JSON ساده یعنی نه جدول دیتابیسی لازمه و نه مایگریشن. نویسنده اشاره میکنه که چون لاراول بهطور پیشفرض پوشهٔ storage/logs رو از گیت مستثنا کرده، پیامهای تستی هم ریپازیتوری رو شلوغ نمیکنن.
داشبورد تم روشن و تاریک داره. با کلیک روی هر پیام تو سایدبار، یه نمای جزئیات با ماکاپ گوشی باز میشه و یه دراپداون انتخاب دستگاه هست که با اون میتونی بین اندازههای مختلف صفحه جابهجا بشی و ببینی شکست خط، فاصلهگذاری و رفتن متن به خط بعد روی دستگاههای مختلف چطور در میاد.
از نظر امنیت محیط، پیشفرضها محافظهکارانهست: داشبورد فقط وقتی بالا میاد که اپ تو محیط local باشه یا دیباگ روشن باشه، و روی پروداکشن بلاک میشه. مسیر پیشفرضش /sms-catcher هست.
با انتشار فایل کانفیگ، config/sms-catcher.php چند تنظیم میده: روشن و خاموش کردن پکیج با متغیر SMS_CATCHER_ENABLED، تغییر پیشوند مسیر با route.prefix، تنظیم استک میدلور با route.middleware و عوض کردن محل ذخیرهٔ پیامها با storage_path. خود پکیج هم بهعنوان یه وابستگی توسعه (dev dependency) نصب میشه، که برای ابزاری با این کاربرد منطقیه.
نکات کلیدی:
- پیامکهای خروجی رو موقع توسعه میگیره؛ همون نقشی که Mailpit برای ایمیل داره
- به کانال sms نوتیفیکیشن لاراول قلاب میشه و toSms رو صدا میزنه
- ذخیرهسازی تو فایل storage/logs/sms-catcher.json، بدون جدول و مایگریشن
- پیشنمایش داخل ماکاپ گوشی با انتخاب اندازهٔ صفحه برای بررسی شکست خط
- روی پروداکشن بلاک میشه و فقط تو محیط local یا حالت دیباگ فعاله
- مسیر، میدلور و محل ذخیرهسازی همه از طریق فایل کانفیگ قابل تغییرن




