وب سرویس پیامکی پیام رسان و API ارسال پیامک
ارسال و دریافت پیامک را به سایت، اپلیکیشن یا نرمافزار خود متصل کنید. با API پیامک پیامرسان، کد تأیید، وضعیت سفارش و پیامهای اطلاعرسانی را از داخل سیستم خود بفرستید و نتیجه ارسالها را پیگیری کنید؛ بدون اینکه برای هر پیام وارد پنل شوید.
پس از ثبتنام، درخواست فعالسازی وب سرویس را از بخش API پنل ثبت کنید و بعد از فعالشدن دسترسی، کلید بسازید. برای شروع، نمونهکد زبان موردنظر خود را ببینید.
curl -X POST 'https://api.sms-webservice.com/api/V3/SendTokenSingle' \
-H 'Content-Type: application/json; charset=utf-8' \
-d @- <<JSON
{
"ApiKey": "$PAYAM_RESAN_API_KEY",
"TemplateKey": "verifycode",
"Destination": 9121112222,
"p1": "123456"
}
JSON$payload = [
'ApiKey' => getenv('PAYAM_RESAN_API_KEY'),
'TemplateKey' => 'verifycode',
'Destination' => 9121112222,
'p1' => '123456',
];
$curl = curl_init('https://api.sms-webservice.com/api/V3/SendTokenSingle');
curl_setopt_array($curl, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
CURLOPT_HTTPHEADER => ['Content-Type: application/json; charset=utf-8'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$raw = curl_exec($curl);
if ($raw === false) {
exit('خطای شبکه: ' . curl_error($curl) . "\n");
}
curl_close($curl);
$response = json_decode($raw, true);
if (empty($response['Success'])) {
exit("ناموفق. کد {$response['ErrorCode']}: {$response['Error']}\n");
}
foreach ($response['Result'] as $message) {
echo "شناسه {$message['Id']} از خط {$message['Sender']}\n";
echo "متن نهایی: {$message['FinalText']}\n";
}import json
import os
import urllib.request
payload = {
"ApiKey": os.environ["PAYAM_RESAN_API_KEY"],
"TemplateKey": "verifycode",
"Destination": 9121112222,
"p1": "123456",
}
request = urllib.request.Request(
"https://api.sms-webservice.com/api/V3/SendTokenSingle",
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={"Content-Type": "application/json; charset=utf-8"},
)
with urllib.request.urlopen(request, timeout=30) as answer:
response = json.load(answer)
if not response["Success"]:
raise SystemExit(f"ناموفق. کد {response['ErrorCode']}: {response['Error']}")
for message in response["Result"]:
print(f"شناسه {message['Id']} از خط {message['Sender']}")
print(f"متن نهایی: {message['FinalText']}")use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let payload = ureq::json!({
"ApiKey": std::env::var("PAYAM_RESAN_API_KEY")?,
"TemplateKey": "verifycode",
"Destination": 9121112222i64,
"p1": "123456",
});
let response: ureq::serde_json::Value =
ureq::post("https://api.sms-webservice.com/api/V3/SendTokenSingle")
.send_json(payload)?
.into_json()?;
if response["Success"] != true {
eprintln!("ناموفق. کد {}: {}", response["ErrorCode"], response["Error"]);
std::process::exit(1);
}
if let Some(messages) = response["Result"].as_array() {
for message in messages {
println!("شناسه {} از خط {}", message["Id"], message["Sender"]);
println!("متن نهایی: {}", message["FinalText"].as_str().unwrap_or(""));
}
}
Ok(())
}import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
let apiKey = ProcessInfo.processInfo.environment["PAYAM_RESAN_API_KEY"] ?? ""
do {
let payload: [String: Any] = [
"ApiKey": apiKey,
"TemplateKey": "verifycode",
"Destination": 9121112222,
"p1": "123456",
]
var request = URLRequest(
url: URL(string: "https://api.sms-webservice.com/api/V3/SendTokenSingle")!)
request.httpMethod = "POST"
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.httpBody = try JSONSerialization.data(withJSONObject: payload)
request.timeoutInterval = 30
let (data, _) = try await URLSession.shared.data(for: request)
let response = try JSONSerialization.jsonObject(with: data) as? [String: Any]
guard let success = response?["Success"] as? Bool, success else {
let code = response?["ErrorCode"] as? Int ?? 0
let message = response?["Error"] as? String ?? ""
FileHandle.standardError.write(Data("ناموفق. کد \(code): \(message)\n".utf8))
exit(1)
}
for message in response?["Result"] as? [[String: Any]] ?? [] {
print("شناسه \(message["Id"] ?? 0) از خط \(message["Sender"] ?? 0)")
print("متن نهایی: \(message["FinalText"] ?? "")")
}
} catch {
FileHandle.standardError.write(Data("درخواست ناتمام ماند: \(error)\n".utf8))
exit(1)
}const payload = {
ApiKey: process.env.PAYAM_RESAN_API_KEY,
TemplateKey: 'verifycode',
Destination: 9121112222,
p1: '123456',
};
const answer = await fetch('https://api.sms-webservice.com/api/V3/SendTokenSingle', {
method: 'POST',
headers: { 'Content-Type': 'application/json; charset=utf-8' },
body: JSON.stringify(payload),
signal: AbortSignal.timeout(30_000),
});
const response = await answer.json();
if (!response.Success) {
console.error(`ناموفق. کد ${response.ErrorCode}: ${response.Error}`);
process.exit(1);
}
for (const message of response.Result) {
console.log(`شناسه ${message.Id} از خط ${message.Sender}`);
console.log(`متن نهایی: ${message.FinalText}`);
}using System.Text;
using System.Text.Json.Nodes;
var payload = new JsonObject
{
["ApiKey"] = Environment.GetEnvironmentVariable("PAYAM_RESAN_API_KEY"),
["TemplateKey"] = "verifycode",
["Destination"] = 9121112222L,
["p1"] = "123456",
};
using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(30) };
var body = new StringContent(payload.ToJsonString(), Encoding.UTF8, "application/json");
var answer = await http.PostAsync(
"https://api.sms-webservice.com/api/V3/SendTokenSingle", body);
var response = JsonNode.Parse(await answer.Content.ReadAsStringAsync());
if (response?["Success"]?.GetValue<bool>() != true)
{
Console.Error.WriteLine($"ناموفق. کد {response?["ErrorCode"]}: {response?["Error"]}");
return 1;
}
foreach (var message in response["Result"]!.AsArray())
{
Console.WriteLine($"شناسه {message!["Id"]} از خط {message["Sender"]}");
Console.WriteLine($"متن نهایی: {message["FinalText"]}");
}
return 0;type TokenSentMessage = {
Id: number;
Sender: number;
FinalText: string;
UserTraceId: null;
};
type Envelope<T> =
| { Success: true; ErrorCode: null; Error: null; Result: T }
| { Success: false; ErrorCode: number; Error: string; Result: null };
const apiKey = process.env.PAYAM_RESAN_API_KEY;
if (!apiKey) {
console.error('متغیر PAYAM_RESAN_API_KEY تعریف نشده است.');
process.exit(1);
}
const payload = {
ApiKey: apiKey,
TemplateKey: 'verifycode',
Destination: 9121112222,
p1: '123456',
};
const answer = await fetch('https://api.sms-webservice.com/api/V3/SendTokenSingle', {
method: 'POST',
headers: { 'Content-Type': 'application/json; charset=utf-8' },
body: JSON.stringify(payload),
signal: AbortSignal.timeout(30_000),
});
const response = (await answer.json()) as Envelope<TokenSentMessage[]>;
if (!response.Success) {
console.error(`ناموفق. کد ${response.ErrorCode}: ${response.Error}`);
process.exit(1);
}
for (const message of response.Result) {
console.log(`شناسه ${message.Id} از خط ${message.Sender}`);
console.log(`متن نهایی: ${message.FinalText}`);
}import java.util.concurrent.TimeUnit;
import okhttp3.*;
public class SendSms {
public static void main(String[] args) throws Exception {
String apiKey = System.getenv("PAYAM_RESAN_API_KEY");
if (apiKey == null || apiKey.isBlank()) {
throw new IllegalStateException("کلید API تعریف نشده است.");
}
OkHttpClient client = new OkHttpClient.Builder()
.callTimeout(30, TimeUnit.SECONDS)
.build();
String json = "{\"ApiKey\":\"" + apiKey
+ "\",\"TemplateKey\":\"verifycode\","
+ "\"Destination\":9121112222,\"p1\":\"123456\"}";
RequestBody body = RequestBody.create(
MediaType.parse("application/json; charset=utf-8"), json);
Request request = new Request.Builder()
.url("https://api.sms-webservice.com/api/V3/SendTokenSingle")
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println("HTTP: " + response.code());
if (response.body() != null) {
System.out.println(response.body().string());
}
}
}
}package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
"time"
)
func main() {
payload, _ := json.Marshal(map[string]any{
"ApiKey": os.Getenv("PAYAM_RESAN_API_KEY"),
"TemplateKey": "verifycode",
"Destination": 9121112222,
"p1": "123456",
})
client := &http.Client{Timeout: 30 * time.Second}
answer, err := client.Post(
"https://api.sms-webservice.com/api/V3/SendTokenSingle",
"application/json; charset=utf-8",
bytes.NewReader(payload),
)
if err != nil {
fmt.Fprintln(os.Stderr, "خطای شبکه:", err)
os.Exit(1)
}
defer answer.Body.Close()
decoder := json.NewDecoder(answer.Body)
decoder.UseNumber()
var response map[string]any
if err := decoder.Decode(&response); err != nil {
fmt.Fprintln(os.Stderr, "پاسخ خوانده نشد:", err)
os.Exit(1)
}
if response["Success"] != true {
fmt.Fprintf(os.Stderr, "ناموفق. کد %v: %v\n", response["ErrorCode"], response["Error"])
os.Exit(1)
}
result, _ := response["Result"].([]any)
for _, item := range result {
message, _ := item.(map[string]any)
fmt.Printf("شناسه %v از خط %v\n", message["Id"], message["Sender"])
fmt.Println("متن نهایی:", message["FinalText"])
}
}مستندات API پیامک و نمونهکد اتصال
مستندات وب سرویس پیامرسان شامل روش احراز دسترسی، پارامترهای ورودی، نمونه درخواست و پاسخ و توضیح خطاهای متدهاست. متناسب با نیاز خود، راهنمای ارسال معمولی، ارسال الگویی، دریافت پیامک یا پیگیری وضعیت تحویل را بررسی کنید.
برای ارسال پیامک از طریق API به زبان خاصی محدود نیستید؛ محیط اجرای شما باید بتواند درخواست HTTP سازگار بفرستد و پاسخ را پردازش کند. نمونهکدهای بالای صفحه برای شروع اتصال در دسترساند. نمونههای TypeScript و Node.js برای اجرا در محیط سمت سرور نوشته شدهاند؛ کتابخانهها و نسخه موردنیاز هر نمونه را با پروژه خود تطبیق دهید.
نمونه ارسال الگویی به کلید API معتبر و الگوی تأییدشده روی حساب شما نیاز دارد. مقدار verifycode، شماره گیرنده و متغیرها را با اطلاعات واقعی خود جایگزین کنید. برای جزئیات بیشتر، راهنمای ارسال پیامک با PHP را ببینید.
کلید API را محرمانه نگه دارید. درخواستهای دارای کلید را در بخش امن سمت سرور اجرا کنید و کلید را در کد قابلمشاهده مرورگر یا مخزن عمومی قرار ندهید. ساختار پاسخ، محدودیت درخواستها و قالب شماره گیرنده را از مستندات همان متد و نسخه بررسی کنید.
با دسترسی معتبر میتوانید متدهای قابلآزمایش را در Swagger اجرا و پاسخ را بررسی کنید. اجرای متد ارسال ممکن است باعث ارسال واقعی پیامک و مصرف اعتبار شود.

امکانات وب سرویس ارسال و دریافت پیامک
با API پیامرسان، عملیات پیامکی را از داخل سایت یا نرمافزار خود مدیریت کنید. هر متد، عملیات مشخصی مانند ارسال، استعلام وضعیت یا دریافت اطلاعات حساب را انجام میدهد و ورودیها و محدودیتهای خودش را دارد.
ارسال پیامک تکی، گروهی و متناظر
یک متن را به یک یا چند شماره بفرستید یا برای هر گیرنده، پیام متفاوتی آماده کنید. ارسال متناظر برای مواردی مثل اعلام مبلغ بدهی یا اطلاعات اختصاصی هر مشتری کاربرد دارد. متد مناسب و سقف گیرندگان هر درخواست را از مستندات انتخاب کنید.
ارسال با الگو و متغیرهای اختصاصی
برای پیامهایی با ساختار ثابت، متن را بهصورت پترن ثبت کنید و پس از تأیید، مقادیری مثل نام، شماره سفارش یا کد تأیید را در هر درخواست بفرستید. شناسه الگو و نام متغیرها باید با الگوی تأییدشده حساب مطابقت داشته باشند.
ارسال کد تأیید و پیامهای تراکنشی
ارسال کد ورود و ثبتنام، تأیید سفارش و اعلانهای سیستمی را به رویدادهای نرمافزار متصل کنید. در فرایند OTP، تولید یا دریافت کد، زمان اعتبار، محدودیت دفعات تلاش و بررسی کد باید در طراحی اتصال شما مشخص باشد. راهنمای ارسال کد تأیید جزئیات این کاربرد را توضیح میدهد.
دریافت پیامک و پاسخ مخاطبان
پیامهای ورودی خط دارای قابلیت دریافت را به نرمافزار منتقل کنید تا پاسخ مخاطب در فرایندهایی مانند پیگیری درخواست یا ارتباط با مشتری قابلاستفاده باشد. برای دریافت از طریق آدرس مقصد، تنظیمات مربوط را در پنل و برنامه خود انجام دهید.
پیگیری وضعیت تحویل پیامک
شناسه برگشتی هر پیام را ذخیره کنید و با متد استعلام وضعیت، نتیجه ارسال را در سیستم خود پیگیری کنید. پذیرش درخواست، تحویل پیامک و خواندهشدن آن یکسان نیستند؛ گزارش دلیوری، خواندن پیام توسط مخاطب را تأیید نمیکند.
بررسی اعتبار و اطلاعات حساب
با متد اطلاعات حساب، اعتبار باقیمانده و خطوط در دسترس را بررسی کنید. میتوانید بررسی دورهای اعتبار را در نرمافزار خود پیادهسازی کنید تا پیش از تمامشدن موجودی، برای شارژ حساب اقدام شود.
ارسال پیامک از طریق پترن و شرایط ارسال خدماتی
اگر ساختار پیام ثابت است و فقط بخشهایی مثل کد تأیید، نام مشتری یا شماره سفارش تغییر میکند، از ارسال الگویی استفاده کنید. متن ثابت و متغیرها را یکبار بهصورت الگو ثبت کنید و پس از تأیید، شناسه الگو و مقادیر متغیر را در درخواست API بفرستید.
ارسال الگویی برای پیامهای خدماتی و اطلاعرسانی تأییدشده کاربرد دارد. برای ارسال به شمارههایی که دریافت پیامک تبلیغاتی را مسدود کردهاند، شرایط خط، نوع پیام و ضوابط سرویس باید رعایت شود. صرف استفاده از API یا تأیید الگو، پیام تبلیغاتی را به پیام خدماتی تبدیل نمیکند و تضمینکننده تحویل نیست.
پیش از راهاندازی کد تأیید یا اعلان سفارش، شرایط خط خدماتی پیامک را بررسی کنید تا مسیر ارسال متناسب با کاربرد خود را انتخاب کنید.
دریافت و فعالسازی وب سرویس پیامکی؛ از کلید API تا اولین ارسال
پیش از شروع، کاربرد موردنظر، روش اتصال و مسیر ارسال را مشخص کنید: چه رویدادی باید پیامک ایجاد کند، چه اطلاعاتی در پیام قرار میگیرد و آیا نرمافزار شما افزونه یا اتصال آماده دارد؟ برای ارسال آزمایشی نیز دسترسی فعال، اعتبار کافی و خط یا الگوی متناسب با متد انتخابی لازم است.
۱. ثبتنام و دریافت کلید API
پس از ساخت حساب، از منوی «API» وارد بخش «کلید API» شوید و «درخواست فعالسازی» را ثبت کنید. پس از فعالشدن دسترسی، با گزینه «ساخت کلید» کلید خود را بسازید و آن را در تنظیمات امن نرمافزار یا افزونه قرار دهید.
۲. انتخاب مسیر ارسال و خط فرستنده
برای ارسال معمولی، خط فعال و مجاز حساب را مطابق مستندات متد مشخص کنید. برای کد تأیید و پیام خدماتی به شمارههای مسدودکننده تبلیغات، شرایط استفاده از مسیر خدماتی و الگو را بررسی کنید. تنظیمات محدودیت دسترسی، از جمله آیپیهای مجاز در صورت استفاده، باید با سرور ارسالکننده هماهنگ باشد.
۳. ثبت الگو در صورت نیاز
اگر ارسال شما الگویی است، از زیرمنوی «وب سرویس ارسال پترن» متن و متغیرها را ثبت کنید. پس از تأیید، مقدار TemplateKey همان الگو را در درخواست بفرستید. نام و تعداد متغیرها باید با الگوی ثبتشده مطابقت داشته باشد.
۴. ارسال آزمایشی و بررسی پاسخ
با نمونهکد متناسب با زبان خود، یک پیام به شماره خودتان بفرستید. کلید، الگو، متغیرها و شماره گیرنده را جایگزین کنید و قالب شماره را از مستندات همان متد بخوانید. علاوه بر وضعیت HTTP، بدنه پاسخ و نتیجه عملیات را بررسی کنید.
۵. ذخیره شناسه و پیگیری تحویل
در صورت موفقیت عملیات، شناسه پیام برگشتی را ذخیره کنید و با متد StatusById وضعیت تحویل آن را استعلام بگیرید. پیش از فعالکردن ارسال برای کاربران، مسیر ثبت خطا و جلوگیری از ارسال تکراری را هم در نرمافزار بررسی کنید.
۶. تنظیم دریافت پیامک در صورت نیاز
اگر میخواهید پاسخ مخاطبان را در سیستم خود داشته باشید، برای خط دارای قابلیت دریافت، از بخش «دریافت از طریق وب سرویس» آدرس مقصد را معرفی کنید. برنامه شما باید بتواند اطلاعات ورودی را مطابق مستندات دریافت و پردازش کند.

اتصال بدون کدنویسی با افزونهها و نرمافزارهای سازگار
اگر سایت یا نرمافزار شما اتصال آماده داشته باشد، برای استفاده از وب سرویس لزوماً به کدنویسی اختصاصی نیاز ندارید. افزونه سازگار را انتخاب کنید، اطلاعات دسترسی را وارد کنید و رویدادهای ارسال را از میان امکانات آن تنظیم کنید. پشتیبانی از ارسال معمولی، پترن و دریافت پیامک به قابلیتها و نسخه همان افزونه بستگی دارد.
افزونه رسمی پیامرسان برای وردپرس
برای اتصال سایت وردپرسی، امکانات افزونه رسمی پیامرسان را بررسی کنید. ورود و ثبتنام پیامکی، فرمساز و تأیید شماره خریدار در ووکامرس از قابلیتهایی هستند که میتوانید متناسب با نیاز سایت خود به کار بگیرید.
اطلاعات دسترسی را مطابق راهنمای افزونه وارد کنید و سناریوی موردنظر را ابتدا آزمایش کنید. اگر به قابلیت مشخصی نیاز دارید، پیش از راهاندازی، پشتیبانی نسخه افزونه از همان قابلیت و روش ارسال معمولی یا الگویی را بررسی کنید.
ورود و ثبتنام با شماره موبایل
ارسال با الگو (پترن)
فرمساز اختصاصی
تأیید شماره در ووکامرس
کپچا و ضدربات
گزارش ارسالها
سؤالات متداول وب سرویس پیامکی و API پیامک
وب سرویس پیامکی برای چه کارهایی استفاده میشود؟
برای اتصال عملیات پیامکی به سایت، اپلیکیشن یا نرمافزار؛ مانند ارسال کد تأیید، وضعیت سفارش، یادآوری نوبت، اعلان فاکتور و پیگیری درخواست مشتری. اجرای هر سناریو به منطق نرمافزار یا امکانات افزونه سازگار نیاز دارد.
تفاوت وب سرویس پیامکی با API پیامک چیست؟
در خدمات پیامکی، این دو عبارت معمولاً به رابط اتصال نرمافزار به سامانه پیامک اشاره دارند. API مفهوم عمومیتری دارد و وب سرویس، ارتباط را از طریق شبکه فراهم میکند. برای اتصال به پیامرسان، ساختار درخواست و پاسخ و روش احراز دسترسی هر متد را از مستندات بررسی کنید.
فرق API پیامکی با پنل پیامکی چیست؟
پنل، محیط آماده مدیریت پیامک برای کاربر است؛ API امکان اجرای عملیات پیامکی از داخل سایت یا نرمافزار را میدهد. پنل هم میتواند قابلیت زمانبندی و خودکارسازی داشته باشد. تفاوت اصلی این است که در اتصال API، درخواستها براساس دادهها و رویدادهای نرمافزار شما ایجاد میشوند.
چطور کلید API پیامرسان را دریافت کنم؟
پس از ثبتنام، در پنل وارد منوی «API» و بخش «کلید API» شوید و درخواست فعالسازی را ثبت کنید. بعد از فعالشدن دسترسی، با گزینه «ساخت کلید» کلید خود را بسازید و آن را در تنظیمات امن نرمافزار یا افزونه وارد کنید.
آیا استفاده از API به معنی ارسال پیامک رایگان است؟
خیر. هزینه دسترسی یا افزونه را باید از هزینه ارسال پیامک جدا بررسی کرد. رایگانبودن احتمالی یک ابزار اتصال، به معنی رایگانبودن پیامک نیست. شرایط حساب، تعرفه ارسال، خط و هزینه احتمالی پیادهسازی را پیش از شروع مشخص کنید.
برای اتصال به وب سرویس باید چه زبان برنامهنویسی بلد باشم؟
به زبان خاصی محدود نیستید؛ محیط اجرای شما باید بتواند درخواست HTTP سازگار با مستندات بفرستد و پاسخ را پردازش کند. در این صفحه نمونهکد زبانهایی مانند PHP، Python، Node.js، سیشارپ، Java و Go قرار دارد. درخواستهای دارای کلید محرمانه را در محیط امن سمت سرور اجرا کنید.
برای سایت وردپرسی هم باید کد بنویسم؟
اگر افزونه سازگار، قابلیت موردنیاز شما را داشته باشد، معمولاً به کدنویسی اختصاصی نیاز ندارید. افزونههای معرفیشده برای وردپرس، ووکامرس، دیجیتس و گرویتی فرم را بررسی کنید. روش واردکردن کلید و پشتیبانی از ارسال معمولی یا پترن به نسخه و امکانات همان افزونه بستگی دارد.
آیا میتوان با API به شمارههای مسدودکننده پیامک تبلیغاتی ارسال کرد؟
برای پیامهای خدماتی مجاز، باید شرایط مسیر خدماتی، خط و الگوی تأییدشده رعایت شود. صرف استفاده از API، محدودیت پیامک تبلیغاتی را برطرف نمیکند. نوع پیام و شرایط سرویس را پیش از راهاندازی بررسی کنید و نتیجه را از گزارش تحویل پیگیری کنید.
در یک درخواست به چند شماره میتوانم پیامک بفرستم؟
تعداد گیرندگان به متد و نسخه API بستگی دارد. برای ارسال یک متن به چند شماره یا متن جداگانه برای هر گیرنده، متد مناسب را انتخاب کنید و سقف گیرندگان هر درخواست را از مستندات همان متد بخوانید. تعداد بیشتر از سقف مجاز باید در نرمافزار به درخواستهای سازگار تقسیم شود.
چطور بفهمم پیامک به دست گیرنده رسیده است؟
شناسه پیام برگشتی را ذخیره کنید و با متد StatusById وضعیت آن را استعلام بگیرید. ساختار شناسه و پارامترهای استعلام را با مستندات نسخه خود تطبیق دهید. گزارش دلیوری نتیجه تحویل را نشان میدهد و خواندهشدن پیام توسط مخاطب را تأیید نمیکند.
چرا با اینکه پاسخ HTTP ۲۰۰ گرفتم، پیامک به مقصد نرسید؟
پاسخ HTTP ۲۰۰ بهتنهایی موفقیت عملیات یا تحویل پیامک را تأیید نمیکند. ابتدا نتیجه عملیات و کد خطا را در بدنه پاسخ بررسی کنید. اگر درخواست پذیرفته شده است، با شناسه پیام گزارش تحویل را بگیرید تا وضعیت نهایی مشخص شود.
اگر درخواست Timeout شد، پیامک را دوباره بفرستم؟
ارسال مجدد را بدون بررسی انجام ندهید. نرسیدن پاسخ الزاماً به معنی ردشدن درخواست نیست؛ ممکن است پیام قبلی وارد فرایند ارسال شده باشد. سوابق درخواست و وضعیت قابلپیگیری را بررسی کنید و منطق تکرار تلاش را طوری پیادهسازی کنید که احتمال پیامک تکراری کاهش یابد.
خطای فرمت شماره گیرنده را چطور برطرف کنم؟
شماره ورودی کاربر را با قالب موردنیاز همان متد تطبیق دهید. صفر ابتدایی، کد کشور، فاصلهها و رقمهای فارسی میتوانند در آمادهسازی شماره اهمیت داشته باشند. معنی کد خطای برگشتی و قالب معتبر را از مستندات بخوانید؛ قالب همه متدها یا سرویسها را یکسان فرض نکنید.
بعد از تغییر سرور، ارسالهایم قطع شده است. چه چیزی را بررسی کنم؟
بدنه پاسخ و کد خطا را بررسی کنید. اگر دسترسی حساب به آیپی محدود شده است، آیپی خروجی سرور جدید باید در تنظیمات مجاز باشد. اتصال شبکه، تنظیمات کلید API و متغیرهای محیطی سرور جدید را هم کنترل کنید؛ علت را فقط از روی تغییر سرور نمیتوان قطعی دانست.
چطور از کمشدن اعتبار حساب باخبر شوم؟
از متد AccountInfo برای بررسی اطلاعات حساب و اعتبار باقیمانده استفاده کنید. میتوانید استعلام دورهای و هشدار رسیدن موجودی به حد مشخص را در نرمافزار خود پیادهسازی کنید. ورودیها و ساختار پاسخ این متد در مستندات آمده است.
تفاوت ارسال با وب سرویس و ارسال با URL چیست؟
URL آدرس فراخوانی است و بهخودیخود روشی جدا از وب سرویس محسوب نمیشود؛ متدهای API هم از طریق آدرس مشخص فراخوانی میشوند. برای انتخاب روش اتصال، نوع درخواست، امنیت اطلاعات دسترسی و امکانات موردنیاز مانند ارسال الگویی، دریافت پیامک و گزارش وضعیت را مقایسه کنید.
برای اتصال سایت یا نرمافزار خود از کجا شروع کنید؟
اگر مسیر اتصال را میشناسید، ثبتنام کنید و درخواست فعالسازی API را در پنل ثبت کنید. اگر هنوز درباره افزونه سازگار، خط خدماتی، ارسال کد تأیید یا هزینه راهاندازی سؤال دارید، نام نرمافزار و کاربرد موردنظر را با کارشناسان در میان بگذارید تا روش مناسب مشخص شود.
نام و شماره تماس خود را ثبت کنید تا کارشناسان ما در سریعترین زمان با شما تماس بگیرند.
وب سرویس پیامکی چیست و چه زمانی به آن نیاز دارید؟
وب سرویس پیامکی، رابط اتصال سایت یا نرمافزار شما به سامانه پیامک است. نرمافزار از طریق این رابط درخواست ارسال پیامک میفرستد و پاسخ سرویس را دریافت میکند. دریافت پیامهای ورودی و پیگیری وضعیت تحویل هم از امکاناتی هستند که میتوانید متناسب با شرایط خط و متدهای سرویس به سیستم خود اضافه کنید.
برای مثال، پس از ثبت سفارش مشتری، فروشگاه شماره گیرنده و مشخصات پیام را به سرویس میفرستد تا پیامک تأیید سفارش ارسال شود. این درخواست میتواند شامل متن پیام یا شناسه الگو و مقادیر متغیر آن باشد. پاسخ سرویس نیز نتیجه عملیات، شناسه پیام یا توضیح خطا را در اختیار نرمافزار قرار میدهد.
اگر پیامک باید با ثبتنام، خرید، تغییر وضعیت سفارش، ثبت درخواست در CRM یا زمان مراجعه مشتری هماهنگ شود، اتصال از طریق وب سرویس کاربرد دارد. زمان و علت ارسال را نرمافزار شما تعیین میکند؛ API راه اجرای عملیات پیامکی را فراهم میکند. این اتصال با کد اختصاصی، افزونه سازگار یا امکانات آماده نرمافزار پیادهسازی میشود.
API پیامکی چه تفاوتی با وب سرویس پیامکی دارد؟
API مخفف Application Programming Interface و به معنی رابط برنامهنویسی کاربردی است؛ یعنی قواعدی که مشخص میکند یک نرمافزار چگونه از امکانات نرمافزار دیگر استفاده کند. وب سرویس این ارتباط را از طریق شبکه فراهم میکند. در خدمات پیامکی، عبارتهای «API پیامک» و «وب سرویس پیامکی» معمولاً به همین مسیر اتصال نرمافزاری اشاره دارند؛ هرچند مفهوم API عمومیتر است.
کاربرد وب سرویس پیامکی برای سایتها و نرمافزارها
سایت فروشگاهی، اپلیکیشن، نرمافزار حسابداری، CRM و سامانه نوبتدهی میتوانند به وب سرویس متصل شوند؛ به شرط اینکه امکان ارسال درخواست مطابق مستندات یا استفاده از افزونه سازگار را داشته باشند. نقطه شروع، مشخصکردن رویدادی است که باید پیامک ایجاد کند.
| سایت یا نرمافزار | رویداد شروع ارسال | کاربرد پیامک |
|---|---|---|
| سایت و اپلیکیشن | درخواست ورود یا ثبتنام کاربر | ارسال کد تأیید شماره موبایل |
| فروشگاه اینترنتی | ثبت سفارش یا تغییر وضعیت آن | اعلام ثبت، آمادهسازی یا ارسال سفارش |
| نرمافزار حسابداری | صدور فاکتور یا رسیدن موعد پرداخت | اطلاعرسانی مبلغ و یادآوری پرداخت |
| CRM و پشتیبانی | ثبت سرنخ، درخواست یا تغییر وضعیت تیکت | تأیید دریافت درخواست و اطلاعرسانی پیگیری |
| سامانه نوبتدهی | ثبت، تغییر یا نزدیکشدن زمان نوبت | تأیید نوبت و یادآوری مراجعه |
| ابزار پایش سیستم | تشخیص خطا یا اختلال | هشدار به مسئول مربوط، در صورت برقرار بودن مسیر اتصال |
این سناریوها به منطق نرمافزار یا امکانات افزونه شما نیاز دارند. برای مثال، در یادآوری نوبت، زمان مراجعه باید در سیستم ثبت شود و درخواست ارسال در زمان مناسب ایجاد شود. دریافت کلید API بهتنهایی این فرایندها را فعال نمیکند.
ارسال پیامک از طریق API چگونه کار میکند؟
فرض کنید سفارش مشتری در فروشگاه ثبت نهایی شده است و میخواهید شماره سفارش را برای او بفرستید. پس از پیادهسازی اتصال، مسیر ارسال به این شکل است:
- تشخیص رویداد: فروشگاه، ثبت نهایی سفارش را تشخیص میدهد.
- آمادهکردن اطلاعات: شماره مشتری و متن پیام یا شناسه الگو و متغیرهای آن آماده میشود.
- ارسال درخواست: نرمافزار اطلاعات را همراه با کلید API از سمت سرور به متد مربوط میفرستد.
- بررسی پاسخ: نتیجه عملیات بررسی میشود؛ در صورت موفقیت، شناسه پیام برای پیگیری ذخیره میشود.
- پیگیری تحویل: نرمافزار وضعیت پیام را استعلام میگیرد و نتیجه یا خطای احتمالی را ثبت میکند.
نمونه متن پیامک این سناریو:
مشتری گرامی، سفارش شماره ۱۲۳۴ شما ثبت شد. پس از آمادهسازی، وضعیت ارسال به شما اطلاع داده میشود.

پاسخ موفق درخواست به معنی تحویل قطعی پیامک نیست. نتیجه نهایی را از گزارش وضعیت پیگیری کنید. اگر پاسخ درخواست نرسید یا Timeout رخ داد، پیش از ارسال مجدد وضعیت را بررسی کنید؛ ممکن است درخواست قبلی پذیرفته شده باشد و تکرار آن باعث ارسال پیامک تکراری شود.
تفاوت پنل پیامکی و وب سرویس پیامکی؛ کدام روش مناسب شماست؟
پنل پیامکی محیط آماده مدیریت پیامک برای کاربر است؛ وب سرویس، مسیر ارتباط نرمافزار با سامانه را فراهم میکند. تفاوت اصلی در شیوه استفاده است. پنل هم میتواند امکانات زمانبندی و ارسال خودکار داشته باشد، اما API برای هماهنگی عملیات پیامکی با دادهها و رویدادهای سیستم شما کاربرد دارد.
| معیار انتخاب | پنل پیامکی | وب سرویس پیامکی |
|---|---|---|
| شیوه استفاده | کار با محیط آماده سامانه | ارسال درخواست از سایت یا نرمافزار |
| نیاز به کدنویسی | برای امکانات آماده، معمولاً ندارد | کد اختصاصی، افزونه سازگار یا اتصال آماده لازم است |
| منبع اطلاعات | ورودی کاربر، فایل یا دادههای موجود در پنل | اطلاعات و رویدادهای نرمافزار متصل |
| خودکارسازی | در محدوده امکانات پنل | براساس منطق نرمافزار و قابلیتهای سرویس |
| پیگیری ارسالها | مشاهده گزارش در پنل | دریافت و پردازش نتیجه در نرمافزار |
| نمونه استفاده | اجرای کمپین برای فهرست مخاطبان | ارسال پیامک پس از ثبت سفارش مشتری |
این دو روش میتوانند کنار هم استفاده شوند؛ تیم بازاریابی کمپین را از پنل مدیریت کند و فروشگاه، پیامک سفارش را از طریق API بفرستد. اگر فقط فهرستی از شمارهها دارید، ممکن است ارسال پیامک با اکسل نیازتان را برطرف کند. اگر ارسال باید به اتفاقی در سایت یا نرمافزار وابسته باشد، اتصال وب سرویس را بررسی کنید.
هزینه استفاده از وب سرویس پیامکی شامل چه مواردی است؟
برای برآورد هزینه اتصال، دسترسی به API را از هزینه ارسال و پیادهسازی جدا بررسی کنید. مبلغ نهایی به شرایط حساب، تعرفه پیامک، مسیر ارسال و روش اتصال سایت یا نرمافزار شما بستگی دارد.
- حساب و دسترسی وب سرویس: طرح موردنیاز و شرایط فعالسازی API را پیش از شروع مشخص کنید.
- ارسال پیامک: تعداد پیامها، تعداد بخشهای هر پیام و تعرفه مسیر ارسال را در برآورد مصرف در نظر بگیرید.
- خط و ارسال خدماتی: نیاز به خط اختصاصی یا استفاده از مسیر خدماتی را براساس نوع پیام بررسی کنید.
- اتصال نرمافزار: هزینه احتمالی افزونه، توسعه اختصاصی و نگهداری اتصال به ابزار و نیاز شما وابسته است.
رایگانبودن احتمالی دسترسی یا یک افزونه، به معنی رایگانبودن ارسال پیامک نیست. برای اطلاع از شرایط فعلی، کاربرد خود، حجم تقریبی ارسال و نام نرمافزار را در درخواست مشاوره اتصال بنویسید تا موارد لازم پیش از راهاندازی مشخص شود.
دریافت پیامک در نرمافزار؛ وبهوک و بررسی دورهای
اگر قرار است پاسخ مخاطبان هم وارد سیستم شما شود، دریافت پیامک را جدا از ارسال تنظیم کنید. خط باید قابلیت دریافت داشته باشد و نرمافزار شما نیز بتواند پیام ورودی را به مشتری یا درخواست مربوط مرتبط کند.
در اتصالهای پیامکی، دو روش رایج برای دسترسی به اطلاعات ورودی وجود دارد. روش قابلاستفاده برای حساب و نسخه سرویس خود را از مستندات بررسی کنید:
- بررسی دورهای یا Polling: نرمافزار در فاصلههای مشخص، وجود پیام جدید را از طریق متد مربوط بررسی میکند.
- وبهوک یا فراخوانی آدرس مقصد: سرویس هنگام دریافت پیام، اطلاعات را به آدرسی که معرفی کردهاید میفرستد. در این روش، نرمافزار شما دریافتکننده اطلاعات است.
در پیامرسان میتوانید آدرس دریافت را از بخش «دریافت از طریق وب سرویس» معرفی کنید. قالب اطلاعات، روش پاسخدادن و الزامات آدرس مقصد را مطابق مستندات تنظیم کنید. برای آشنایی با سازوکار این ارتباط، راهنمای وبهوک چیست و چگونه کار میکند را ببینید.
دریافت پیامک و تغییر وضعیت تحویل، دو رویداد متفاوتاند. تنظیم آدرس دریافت پیامک به معنی فعالشدن اعلان دلیوری نیست؛ برای گزارش تحویل، از روش مشخصشده در مستندات همان سرویس استفاده کنید.
اگر پیامک ارسال نشد، اتصال را از کجا بررسی کنید؟
ابتدا مشخص کنید مشکل در برقراری ارتباط، پذیرش درخواست یا تحویل پیامک است. دریافت پاسخ HTTP موفق بهتنهایی کافی نیست؛ نتیجه عملیات در بدنه پاسخ و سپس وضعیت پیام را بررسی کنید.
| نشانه مشکل | بررسی اولیه |
|---|---|
| خطای احراز دسترسی | کلید API، فعالبودن سرویس و محدودیتهای دسترسی حساب را بررسی کنید. |
| ردشدن شماره یا اطلاعات درخواست | قالب شماره، نام پارامترها و ساختار داده را با مستندات همان متد تطبیق دهید. |
| ردشدن ارسال الگویی | تأیید الگو، مقدار TemplateKey و نام و تعداد متغیرها را بررسی کنید. |
| نرسیدن پاسخ یا Timeout | ارتباط شبکه و زمان درخواست را بررسی کنید؛ پیش از تکرار ارسال، احتمال پذیرش درخواست قبلی را در نظر بگیرید. |
| پذیرش درخواست بدون رسیدن پیامک | شناسه پیام و گزارش دلیوری را بررسی کنید؛ شرایط خط، گیرنده و مسیر ارسال هم اهمیت دارند. |
| اختلال پس از تغییر سرور | آیپی خروجی جدید، تنظیمات آیپیهای مجاز در صورت استفاده و دسترسی شبکه به سرویس را بررسی کنید. |
| نرسیدن پیام ورودی به نرمافزار | قابلیت دریافت خط، تنظیم آدرس مقصد، دسترسی به آن و پردازش اطلاعات ورودی را بررسی کنید. |
| خطای مربوط به اعتبار | موجودی حساب و هزینه ارسال را بررسی کنید؛ برای پایش دورهای میتوانید از متد اطلاعات حساب استفاده کنید. |
برای پیگیری، زمان درخواست، نام متد، شناسه پیام و پاسخ سرویس را ثبت کنید؛ کلید API و اطلاعات حساس را در گزارشها نمایش ندهید. معنی دقیق کدهای خطا را از مستندات خطاهای پیامرسان بخوانید. راهنمای خطای وب سرویس نیز برای بررسی مرحلهبهمرحله مشکلات اتصال در دسترس است.









