کدهای ورود یکبار مصرف (One-Time Password) حیاتی‌ترین بخش ثبت‌نام، ورود بدون رمز عبور و احراز هویت مالی در پلتفرم‌های اینترنتی ایران هستند. در این راهنما صفر تا صد پیاده‌سازی سریع‌ترین مسیر ارسال OTP با وب‌سرویس پترن فری اس ام اس را بررسی می‌کنیم.

چالش بلک‌لیست مخابرات و چرایی نیاز به وب‌سرویس پترن

طبق آمارهای رسمی رگولاتوری، بیش از ۶۰ درصد شماره‌های فعال در اپراتورهای همراه اول و ایرانسل کدهای *800# را شماره‌گیری کرده و دریافت پیامک‌های تبلیغاتی را مسدود کرده‌اند. اگر شما برای ارسال کد تایید ورود یا فاکتور سفارش از خطوط معمولی تبلیغاتی استفاده کنید، پیامک شما به این دسته از کاربران نخواهد رسید و کاربر از فرایند خرید یا ثبت‌نام منصرف می‌شود.

راهکار قطعی: خط خدماتی اشتراکی بدون سفته. در سامانه فری اس ام اس، شما بدون نیاز به ارائه مدارک شرکتی یا وثیقه‌های سنگین مالی، به خطوط خدماتی اشتراکی پرسرعت با پیش‌شماره‌های ۱۰۰۰، ۲۰۰۰، ۳۰۰۰ و ۵۰۰۰ دسترسی پیدا می‌کنید که برای ارسال کدهای OTP تضمین تحویل ۱۰۰ درصدی به بلک‌لیست دارند.

پترن (الگوی پیامک) چیست و چگونه کار می‌کند؟

به منظور رعایت قوانین سازمان تنظیم مقررات و جلوگیری از ارسال هرزنامه از خطوط خدماتی، پیامک‌های اعتبارسنجی در قالب پترن (الگو) از پیش تعریف می‌شوند. در یک پترن، متن ثابت است و فقط متغیرها (نظیر کد تایید، نام کاربر یا شماره سفارش) به صورت پارامتر جایگزین می‌شوند:

کد تایید ورود شما به سایت فری اس ام اس: %code%
لغو ۱۱

چون این قالب قبلاً توسط ناظران هوش مصنوعی و اپراتورهای مخابراتی تایید شده است، هنگام فراخوانی API پیامک در صف بررسی اپراتور معطل نمی‌شود و به صورت مستقیم و آنی (زیر ۲ ثانیه) به مخابرات تزریق می‌شود.

مشخصات اندپوینت ارسال OTP

آدرس پایه وب‌سرویس: https://api.free-sms.ir/v1

برای ارسال کد تایید، یک درخواست POST به اندپوینت /otp ارسال کنید:

پارامترنوع دادهالزامی؟توضیحات
toStringبلهشماره موبایل گیرنده با فرمت 09xxxxxxxxx
pattern_codeStringبلهکد شناسه الگوی تایید شده در پنل کاربری
paramsObjectبلهکلید و مقدارهای متغیرهای پترن (مثلاً code: 12345)

نمونه کد اجرایی در پایتون (Python Requests)

import requests url = "https://api.free-sms.ir/v1/otp" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } payload = { "to": "09121234567", "pattern_code": "auth_login_v1", "params": { "code": "84920" } } response = requests.post(url, headers=headers, json=payload) print(response.json())

نمونه کد اجرایی در جاوااسکریپت / نودجی‌اس (Node.js Axios)

import axios from 'axios'; async function sendOtp(mobile, code) { try { const res = await axios.post('https://api.free-sms.ir/v1/otp', { to: mobile, pattern_code: 'auth_login_v1', params: { code: String(code) } }, { headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, timeout: 5000 }); return res.data; } catch (err) { console.error('OTP delivery failed:', err.response?.data || err.message); throw err; } }

نمونه پاسخ موفق و ساختار بازگشتی JSON

{ "status": true, "code": 200, "message": "پیامک با موفقیت در صف ارسال آنی قرار گرفت", "data": { "message_id": "msg_98234710239", "recipient": "09121234567", "cost_toman": 92, "sent_at": "2026-09-29T12:40:15Z" } }

بهترین اقدامات امنیتی در پیاده‌سازی OTP (جلوگیری از SMS Fraud)

  • محدودیت تعداد درخواست (Rate Limiting): اجازه ندهید یک شماره در هر ۲ دقیقه بیش از یک بار کد تایید درخواست کند.
  • محدودسازی بر اساس آدرس IP: مانع از ارسال اسپم و فیشینگ توسط بات‌های اینترنتی شوید.
  • کپچا (CAPTCHA): در صورتی که کاربری چندین بار متوالی درخواست پیامک تکراری ارسال کرد، کپچای نامرئی را فعال کنید.
  • جایگزینی تماس صوتی (Voice OTP Fallback): اگر کاربر در منطقه‌ای بدون پوشش آنتن دکل مخابراتی باشد، پس از ۹۰ ثانیه گزینه «دریافت تماس صوتی کد تایید» را در اختیار او بگذارید.

سوالات متداول

چرا پیامک‌های OTP باید با خط خدماتی ارسال شوند؟+

بیش از ۶۰ درصد کاربران دریافت پیامک تبلیغاتی را مسدود کرده‌اند. خطوط خدماتی اشتراکی این فیلتر را دور زده و کد تایید را ۱۰۰٪ تحویل می‌دهند.

سرعت ارسال کد با وب‌سرویس پترن چقدر است؟+

میانگین زمان تحویل پیامک‌های OTP در سامانه فری اس ام اس بین ۲ الی ۳ ثانیه است که بالاترین رکورد سرعت در میان اپراتورهای پیامکی کشور است.

آیا ثبت پترن هزینه دارد؟+

خیر، ثبت و تایید پترن‌ها در فری اس ام اس کاملاً رایگان است و ظرف کمتر از ۱۵ دقیقه توسط پشتیبانی بررسی و تایید می‌گردد.

زمان تحویل (Delivery Latency) پیامک‌های OTP در فری اس ام اس چقدر است؟+

ارسال پترن از صف‌های اولویت‌دار فوق سریع عبور کرده و به طور میانگین بین ۲ تا ۳ ثانیه بر روی گوشی مخاطب دریافت می‌شود.

آیا برای استفاده از خط خدماتی پترن نیاز به ارائه سفته یا ثبت شرکت رسمی دارم؟+

خیر، خطوط خدماتی اشتراکی فری اس ام اس برای تمام کاربران حقیقی و حقوقی بلافاصله پس از ثبت نام و احراز هویت اولیه کاملاً رایگان و فعال است.

در صورت نرسیدن پیامک به دلیل عدم آنتن‌دهی مخاطب چه راهکاری وجود دارد؟+

اندپوینت صوتی Voice OTP در وب‌سرویس فری اس ام اس فعال است؛ چنانچه کاربر پیامک را دریافت نکرد، می‌توانید با یک فراخوانی خودکار تماس صوتی برقرار کرده و کد را برای مخاطب بخوانید.