# GreenHome.Sms.Ippanel سرویس ارسال پیامک IPPanel برای پروژه GreenHome ## نصب و راه‌اندازی ### 1. اضافه کردن Reference به پروژه در فایل `.csproj` پروژه خود: ```xml ``` ### 2. ثبت سرویس در Program.cs ```csharp using GreenHome.Sms.Ippanel; // روش 1: استفاده از Configuration (پیشنهادی) builder.Services.AddIppanelSms(builder.Configuration); // روش 2: استفاده از Configuration Section builder.Services.AddIppanelSms(builder.Configuration.GetSection("IppanelSms")); // روش 3: تنظیم دستی builder.Services.AddIppanelSms(options => { options.BaseUrl = "https://edge.ippanel.com/v1"; options.AuthorizationToken = "YOUR_TOKEN_HERE"; options.DefaultSender = "10001001"; // اختیاری }); ``` ### 3. تنظیمات در appsettings.json ```json { "IppanelSms": { "BaseUrl": "https://edge.ippanel.com/v1", "AuthorizationToken": "YOUR_IPPANEL_TOKEN_HERE", "DefaultSender": "10001001" } } ``` ## استفاده ### تزریق سرویس ```csharp public class MyController : ControllerBase { private readonly ISmsService smsService; public MyController(ISmsService smsService) { this.smsService = smsService; } } ``` ### ارسال Webservice SMS ```csharp var request = new WebserviceSmsRequest { Sender = "10001001", Recipient = "09123456789", // یا چند شماره با کاما: "09123456789,09187654321" Message = "سلام، این یک پیامک تست است" }; var result = await smsService.SendWebserviceSmsAsync(request); // result.BulkId برای ردیابی پیامک استفاده می‌شود ``` ### ارسال Pattern SMS ```csharp var request = new PatternSmsRequest { PatternCode = "your-pattern-code", Recipient = "09123456789", Variables = new Dictionary { { "code", "12345" }, { "name", "کاربر" } }, Originator = "10001001" // اختیاری، اگر نباشد از DefaultSender استفاده می‌شود }; var result = await smsService.SendPatternSmsAsync(request); ``` ## ساختار پروژه ``` GreenHome.Sms.Ippanel/ ├── IppanelSmsService.cs # پیاده‌سازی سرویس ├── IppanelSmsOptions.cs # تنظیمات └── ServiceCollectionExtensions.cs # Extension Methods برای ثبت سرویس ``` ## نکات مهم 1. **توکن IPPanel**: حتماً توکن معتبر خود را از پنل IPPanel دریافت و در تنظیمات قرار دهید 2. **Webservice SMS**: می‌توانید چند گیرنده را با کاما جدا کنید 3. **Pattern SMS**: معمولاً یک گیرنده در هر درخواست پشتیبانی می‌شود 4. **خطاها**: تمام خطاها لاگ می‌شوند و به صورت Exception پرتاب می‌شوند ## استفاده در پروژه‌های دیگر این پروژه مستقل است و می‌توانید آن را در هر پروژه .NET دیگری استفاده کنید: 1. پروژه را به Solution خود اضافه کنید 2. Reference را اضافه کنید 3. `GreenHome.Application` را نیز Reference کنید (برای Interface و DTOs) 4. سرویس را ثبت کنید ## تغییر سرویس SMS اگر بخواهید از سرویس SMS دیگری استفاده کنید: 1. یک پیاده‌سازی جدید از `ISmsService` ایجاد کنید 2. در `Program.cs` به جای `AddIppanelSms` از متد ثبت سرویس جدید استفاده کنید Interface و DTOs در `GreenHome.Application` باقی می‌مانند و نیازی به تغییر کدهای استفاده‌کننده نیست.