وبلاگ
شروع سریع کار با REST API نگین ارتباط (Quick Start در ۵ دقیقه)
مرحله ۱: پیشنیازها و تنظیم کلمه عبور وبسرویسلینک کپی شد!
سرویس REST API نگین ارتباط این امکان را به شما میدهد تا در کمتر از چند دقیقه سیستم، اپلیکیشن یا وبسایت خود را به سامانه پیامک متصل کرده و پیامکهای تراکنشی، کدهای تأیید ورود (OTP) و اعلانات خود را با بیشترین سرعت ارسال نمایید.
اطلاعات پایه جهت اتصال به سرویس:
- آدرس پنل کاربری: panel.3300.ir
- آدرس پایه وبسرویس (Base URL):
https://sms.3300.ir/api - نام کاربری (username): همان نام کاربری ورود شما به پنل پیامک.
- کلمه عبور وبسرویس (password): رمز عبور اختصاصی که باید از داخل پنل تنظیم شود (مشاهده راهنمای تصویری تنظیم رمز).
مراحل تنظیم کلمه عبور وبسرویس:
- ورود به پنل پیامک در آدرس panel.3300.ir.
- کلیک روی «صفحه پروفایل» (واقع در بالای سمت چپ صفحه).
- انتخاب بخش «تنظیمات وبسرویس» و تعیین یک رمز عبور اختصاصی و امن.
مرحله ۲: ارسال اولین پیامک تکی (در ۵ دقیقه)لینک کپی شد!
برای ارسال یک پیامک متنی ساده از خط اختصاصی خود، یک درخواست POST با فرمت JSON به آدرس https://sms.3300.ir/api/wsSend.ashx ارسال کنید. زبان برنامهنویسی مورد نظر خود را از تبهای زیر انتخاب نمایید:
# 1. cURL Terminal Request
curl -X POST "https://sms.3300.ir/api/wsSend.ashx" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"message": "سلام! تست ارسال پیامک با وبسرویس ۳۳۰۰",
"line": "9830003300",
"type": 0
}'
# 2. Python (Requests)
import requests
url = "https://sms.3300.ir/api/wsSend.ashx"
headers = {
"Content-Type": "application/json",
}
payload = {
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"message": "سلام! تست ارسال پیامک با وبسرویس ۳۳۰۰",
"line": "9830003300",
"type": 0
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.status_code)
print(response.text)
<?php
# 3. PHP (cURL)
$curl = curl_init();
$payload = '{
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"message": "سلام! تست ارسال پیامک با وبسرویس ۳۳۰۰",
"line": "9830003300",
"type": 0
}';
curl_setopt_array($curl, [
CURLOPT_URL => "https://sms.3300.ir/api/wsSend.ashx",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
// 4. Node.js (Fetch)
const url = 'https://sms.3300.ir/api/wsSend.ashx';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"message": "سلام! تست ارسال پیامک با وبسرویس ۳۳۰۰",
"line": "9830003300",
"type": 0
})
};
async function sendRequest() {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
}
sendRequest();
// 5. C# .NET (HttpClient)
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://sms.3300.ir/api/wsSend.ashx");
request.Content = new StringContent("{\"username\":\"YOUR_USERNAME\",\"password\":\"YOUR_WEBSERVICE_PASSWORD\",\"mobile\":\"09123456789\",\"message\":\"سلام! تست ارسال پیامک با وبسرویس ۳۳۰۰\",\"line\":\"9830003300\",\"type\":0}", Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
توضیحات پاسخ وبسرویس: در پاسخ دریافتی، فیلد status: -1 به معنای موفقیت است و message_id شناسه یکتای پیامک ارسالی است که برای استعلام وضعیت دلیوری استفاده میشود.
مرحله ۳: ارسال کدهای تایید OTP و پیامک خدماتی (عبور از بلکلیست)لینک کپی شد!
اگر مخاطب شما دریافت پیامکهای تبلیغاتی را مسدود کرده باشد (لیست سیاه مخابرات)، ارسالهای عادی به دست او نخواهد رسید. برای ارسال کدهای تأیید (OTP)، رمز یکبار مصرف و اعلانات تراکنشی، از خطوط خدماتی اشتراکی و قالبهای تاییدشده استفاده کنید.
نحوه ارسال پیامک با قالب خدماتی (Pattern / Template):
- مقدار
typeرا برابر با2قرار دهید. - شماره قالب را در پارامتر
templateمشخص کنید (اندیس از0شروع میشود). - متغیرهای قالب را در فیلد
messageبا کاراکتر|(پایپ) از یکدیگر جدا نمایید.
# 1. cURL Terminal Request
curl -X POST "https://sms.3300.ir/api/wsSendFast.ashx" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"code": "84512",
"template_id": 104
}'
# 2. Python (Requests)
import requests
url = "https://sms.3300.ir/api/wsSendFast.ashx"
headers = {
"Content-Type": "application/json",
}
payload = {
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"code": "84512",
"template_id": 104
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.status_code)
print(response.text)
<?php
# 3. PHP (cURL)
$curl = curl_init();
$payload = '{
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"code": "84512",
"template_id": 104
}';
curl_setopt_array($curl, [
CURLOPT_URL => "https://sms.3300.ir/api/wsSendFast.ashx",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
// 4. Node.js (Fetch)
const url = 'https://sms.3300.ir/api/wsSendFast.ashx';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"mobile": "09123456789",
"code": "84512",
"template_id": 104
})
};
async function sendRequest() {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
}
sendRequest();
// 5. C# .NET (HttpClient)
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://sms.3300.ir/api/wsSendFast.ashx");
request.Content = new StringContent("{\"username\":\"YOUR_USERNAME\",\"password\":\"YOUR_WEBSERVICE_PASSWORD\",\"mobile\":\"09123456789\",\"code\":\"84512\",\"template_id\":104}", Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
توضیح عملکرد: اگر متن قالب ثبتشده شما سلام {0} کد ورود شما {1} است (تاریخ: {2}) باشد، متغیرها به ترتیب جایگذاری شده و پیامک نهایی زیر با خط خدماتی برای کاربر ارسال میشود:
مرحله ۴: پیگیری وضعیت دلیوری و وضعیت ارسال پیامکلینک کپی شد!
پس از ارسال پیامک، میتوانید وضعیت تحویل آن به گوشی مخاطب یا اپراتور را با ارسال شناسه پیامک (message_id) به سرویس wsStates.ashx پیگیری نمایید:
# 1. cURL Terminal Request
curl -X POST "https://sms.3300.ir/api/wsStates.ashx" \
-H "Content-Type: application/json" \
-d '{
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"message_ids": "66110,66111"
}'
# 2. Python (Requests)
import requests
url = "https://sms.3300.ir/api/wsStates.ashx"
headers = {
"Content-Type": "application/json",
}
payload = {
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"message_ids": "66110,66111"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.status_code)
print(response.text)
<?php
# 3. PHP (cURL)
$curl = curl_init();
$payload = '{
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"message_ids": "66110,66111"
}';
curl_setopt_array($curl, [
CURLOPT_URL => "https://sms.3300.ir/api/wsStates.ashx",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
// 4. Node.js (Fetch)
const url = 'https://sms.3300.ir/api/wsStates.ashx';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
"username": "YOUR_USERNAME",
"password": "YOUR_WEBSERVICE_PASSWORD",
"message_ids": "66110,66111"
})
};
async function sendRequest() {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
}
sendRequest();
// 5. C# .NET (HttpClient)
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://sms.3300.ir/api/wsStates.ashx");
request.Content = new StringContent("{\"username\":\"YOUR_USERNAME\",\"password\":\"YOUR_WEBSERVICE_PASSWORD\",\"message_ids\":\"66110,66111\"}", Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
جدول کدهای وضعیت پیامک (Delivery States):
| کد وضعیت | عنوان وضعیت | توضیحات |
|---|---|---|
1 |
رسیده به گوشی (Delivered) | پیامک با موفقیت توسط دستگاه کاربر دریافت شده است. |
2 |
نرسیده به گوشی (Undelivered) | گوشی خاموش، خارج از دسترس یا حافظه آن پر بوده است. |
8 |
تحویل اپراتور شده | پیامک به مرکز پیام اپراتور تحویل داده شده و در انتظار ارسال است. |
16 |
عدم دریافت توسط اپراتور | ارسال توسط اپراتور رد شده است. |
-1 |
ارسال نشده به اپراتور | پیامک در صف ارسال قرار دارد. |
مرحله ۵: نکات کلیدی و الزامات فنی توسعهدهندگانلینک کپی شد!
برای پیادهسازی بهینه و پایدار وبسرویس، رعایت نکات زیر الزامی است:
- قاعده بررسی شناسهها (Message ID Rule):
- اگر مقدار
message_id < 1000باشد، ارسال انجام نشده و این عدد کد خطای عدم ارسال است (مانند خطای5خط نامعتبر،8شماره نامعتبر،9بلکلیست،14اعتبار ناکافی). - اگر مقدار
message_id >= 1000باشد، پیامک با موفقیت ثبت شده و این عدد شناسه یکتای پیگیری دلیوری است.
- اگر مقدار
- محدودیت فاصله زمانی (Rate Limit): حداقل فاصله زمانی بین درخواستهای متوالی ۵ ثانیه است. در صورت فراخوانی سریعتر، خطای
409برگردانده میشود. - فرمتهای استاندارد شماره موبایل: وبسرویس تمام فرمتهای رایج شامل
09151234567،9151234567،989151234567و+989151234567را به صورت خودکار نرمالسازی میکند. - پشتیبانی از انواع فرمتهای ورودی: پارامترهای درخواست علاوه بر
application/json، از طریقx-www-form-urlencoded،multipart/form-dataو حتی Query String نیز قابل ارسال هستند.