# 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` باقی میمانند و نیازی به تغییر کدهای استفادهکننده نیست.