ارسال خدماتی به گروه تاییدشده
این قابلیت برای مشتریانی است که فهرست مخاطبان خود را از طریق فرآیند اداری، نامه و تعهدنامه به SMSDaily اعلام کردهاند و فهرست پس از بررسی تایید شده است.
کاربر API نمیتواند از طریق وبسرویس شماره جدیدی را به گروه تاییدشده اضافه کند یا عضویت گروه را تغییر دهد. این محدودیت عمداً در مرز Public Service اعمال شده است. پس از تایید گروه، مشتری میتواند به همان فهرست متن خدماتی مجاز خود را بدون انتخاب Pattern ارسال کند.
۱. دریافت گروههای قابل استفاده
GET /v1/approved-groups
X-API-Key: YOUR_API_KEY
نمونه پاسخ:
[
{
"code": "customers-1405",
"name": "مشتریان تاییدشده ۱۴۰۵",
"recipientCount": 824,
"approvedAt": "2026-08-01T08:15:00Z"
}
]
| فیلد | نوع | توضیح |
|---|---|---|
code |
string | کد پایدار گروه برای استفاده در URL ارسال |
name |
string | نام نمایشی گروه |
recipientCount |
integer | تعداد مخاطبان تاییدشده گروه |
approvedAt |
datetime/null | زمان تایید گروه، در صورت ثبت |
۲. ارسال پیام به گروه
POST /v1/approved-groups/customers-1405/messages
X-API-Key: YOUR_API_KEY
Idempotency-Key: campaign-1405-05-18-01
Content-Type: application/json
{
"sender": "300099000121",
"message": "{{fullName}} عزیز، درخواست شما ثبت شد.",
"clientReference": "campaign-781"
}
فیلدهای درخواست
| فیلد | نوع | الزام | توضیح |
|---|---|---|---|
sender |
string/null | مطابق دسترسی حساب | فرستندهای که برای این ارسال استفاده میشود |
message |
string | الزامی | متن خدماتی ارسالشونده به اعضای گروه |
clientReference |
string/null | اختیاری | شناسه کمپین یا عملیات در سیستم مشتری |
groupCode در URL باید یکی از گروههایی باشد که از GET /v1/approved-groups دریافت کردهاید.
۳. شخصیسازی متن
برای فهرستهایی که نام و نام خانوادگی مخاطبان در فرآیند تایید ثبت شده است، متغیرهای زیر برای شخصیسازی متن گروه قابل استفادهاند:
{{firstName}}{{lastName}}{{fullName}}{{mobile}}
نمونه:
{{firstName}} عزیز، قرارداد شما آماده بررسی است.
مخاطبان و دادههای شخصیسازی از گروه تاییدشده خوانده میشوند؛ Public API امکان تزریق شماره جدید به این فهرست را ندارد.
۴. پاسخ و رهگیری
پاسخ 202 Accepted یک آرایه از رکوردهای ارسال است. برای هر مخاطب trackingCode مستقل صادر میشود:
[
{
"trackingCode": "SMS-20260810-001A12BC",
"status": "queued",
"encoding": "Persian",
"characterCount": 31,
"partCount": 1,
"submittedAt": "2026-08-10T07:20:00Z",
"duplicate": false
},
{
"trackingCode": "SMS-20260810-001A12BD",
"status": "queued",
"encoding": "Persian",
"characterCount": 35,
"partCount": 1,
"submittedAt": "2026-08-10T07:20:00Z",
"duplicate": false
}
]
هر trackingCode را میتوان مستقل با GET /v1/messages/{trackingCode} رهگیری کرد. برای بررسی چند کد بهصورت همزمان نیز POST /v1/messages/status در دسترس است.
۵. نمونه C# / .NET
using System.Net.Http.Json;
using System.Text.Json;
var client = new HttpClient
{
BaseAddress = new Uri("https://service.smsdaily.ir")
};
client.DefaultRequestHeaders.Add("X-API-Key", apiKey);
// ابتدا گروههای مجاز حساب را بخوانید.
using var groupsResponse = await client.GetAsync("/v1/approved-groups");
groupsResponse.EnsureSuccessStatusCode();
var groupsJson = await groupsResponse.Content.ReadAsStringAsync();
Console.WriteLine(groupsJson);
// سپس فقط به یکی از groupCodeهای تاییدشده ارسال کنید.
var request = new HttpRequestMessage(
HttpMethod.Post,
"/v1/approved-groups/customers-1405/messages");
request.Headers.Add("Idempotency-Key", "campaign-1405-05-18-01");
request.Content = JsonContent.Create(new
{
sender = "300099000121",
message = "{{fullName}} عزیز، درخواست شما ثبت شد.",
clientReference = "campaign-781"
});
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
using var json = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
foreach (var item in json.RootElement.EnumerateArray())
{
Console.WriteLine(item.GetProperty("trackingCode").GetString());
}
۶. خطاهای مهم
| HTTP | کاربرد |
|---|---|
202 |
ارسال گروه برای پردازش پذیرفته شد |
400 |
درخواست نامعتبر |
401 |
API Key نامعتبر |
404 |
گروه برای این حساب پیدا نشد |
409 |
گروه یا وضعیت آن اجازه ارسال نمیدهد |
429 |
محدودیت نرخ |
۷. نکات اجرایی
- برای هر کمپین یک
Idempotency-Keyپایدار تولید کنید تا Retry شبکه باعث ارسال دوباره کل گروه نشود. recipientCountرا قبل از ارسال بررسی کنید تا حجم عملیات برای شما روشن باشد.- وضعیت نهایی هر گیرنده مستقل است؛ موفقیت پذیرش کل درخواست به معنی تحویل همه پیامها نیست.
- تغییر فهرست گروه از مسیر Public API انجام نمیشود و نیازمند فرآیند تایید اداری SMSDaily است.