S M S A F Z A R
تلفن تماس

031-34369080

آدرس ایمیل

Info@SMSAfzar.com

آدرس

اصفهان، خیابان 5 آذر، مجتمع آذر

تلفن تماس
031-34369080
آدرس ایمیل
Info@SMSAfzar.com
آدرس
اصفهان، خیابان 5 آذر، مجتمع آذر

وب سرویس ارسال و دریافت پیامک

ارسال پیام از طریق قالب ارسال پیام
نام متد : messages/send/template
از این متد جهت ارسال یک پیام از طریق شناسه قالب ارسال پیام مورد نظر به یک شماره گیرنده استفاده می شود.
آدرس فراخوانی متد : https://api.smsafzar.ir/messages/send/template
روش فراخوانی متد با Http : POST
پارامترهای ورودی :
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
templateId شناسه قالب ارسال پیام
parameters آرایه پارامترهای قالب ارسال پیام
sendTimestamp این پارامتر اختیاری می باشد و جهت تعیین تاریخ و زمان ارسال پیام مورد استفاده قرار می گیرد. مقدار این پارامتر می بایست بر اساس Unix Time (تعداد ثانیه از 00:00:00 01-01-1970 UTC) ارائه گردد و مقدار تاریخ و زمان ارسالی می بایست بزرگتر از تاریخ و زمان جاری سیستم باشد. جهت استعلام وضعیت ارسال پیام زمان بندی شده از متد messages/status (گزارش وضعیت پیام های ارسالی بر اساس شناسه یکتای مجموعه پیام های ارسالی (batchId)) اسنفاده نمایید.
مقدار پارامتر senderNumber (شماره فرستنده) می تواند به یکی از صورت های زیر باشد :

1000xxxx
00981000xxxx
+981000xxxx
981000xxxx

در صورتی که هنگام تعریف قالب ارسال پیام، برای آن شماره خط فرستنده تعیین شده باشد، در زمان فراخوانی متد API نیازی به ارسال پارامتر شماره فرستنده [senderNumber] نمی باشد و پیام با شماره خط فرستنده‌ی تعیین شده برای قالب ارسال پیام مورد نظر، ارسال خواهد شد. چنانچه در زمان تعریف قالب ارسال پیام، یکی از گزینه های شماره خط خدماتی سیستمی و یا شماره خط تبلیغاتی سیستمی به ‌عنوان شماره فرستنده انتخاب شده باشد و در زمان فراخوانی متد API نیز مقداری برای ارسال پارامتر شماره فرستنده [senderNumber] ارسال نگردد، پیام به ‌صورت خودکار از طریق شماره خطوط خدماتی و یا تبلیغاتی مربوط به سیستم ارسال می‌گردد. در تمامی حالات، اگر در زمان فراخوانی متد API، پارامتر شماره فرستنده [senderNumber] تعیین گردد، پیام با شماره فرستنده‌ی تعیین شده در درخواست فراخوانی متد API ارسال می گردد (حتی اگر برای قالب ارسال پیام، شماره خط فرستنده تعیین شده باشد).
مقدار پارامتر recipientNumber (شماره گیرنده) می تواند به یکی از صورت های زیر باشد :

09xxxxxxxxx
9xxxxxxxxx
00989xxxxxxxxx
+989xxxxxxxxx
989xxxxxxxxx

پارامتر templateId شناسه قالب ارسال پیام تایید شده توسط کارشناسان فروش می باشد.
پارامتر parameters آرایه ای حاوی نام پارامتر ها و مقدار مربوط به هر پارامتر در قالب ارسال پیام می باشد. پارامتر های هر عنصر از این آرایه عبارتند از :
name نام پارامتر
value مقدار پارامتر (حداکثر 100 کاراکتر)
نحوه ی ارسال پارامترهای ورودی در قالب Json و به صورت ذیل می باشد :
{
  "senderNumber": "10001000",
  "recipientNumber": "09100000000",
  "templateId": "TydSt1skQE",
  "parameters": [
    {
      "name": "code",
      "value": "123456"
    },
    {
      "name": "price",
      "value": "1,000,000"
    }
  ]
}
{
  "senderNumber": "10001000",
  "recipientNumber": "09100000000",
  "templateId": "TydSt1skQE",
  "parameters": [
    {
      "name": "code",
      "value": "123456"
    },
    {
      "name": "price",
      "value": "1,000,000"
    }
  ],
  "sendTimestamp": 1770177035
}
خروجی :
کد های وضعیت که در پاسخ Http توسط این متد بازگشت داده می شوند عبارتند از :
400 درخواست ارسالی صحیح نمی باشد. در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند و یا فراخوانی متد با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود کد وضعیت پاسخ Http برابر با ۴۰۰ خواهد بود. مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد. در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند، پارامتر validationErrors، آرایه ای شامل نام پارامتر (field) و شرح خطای مربوط به نامعتبر بودن مقدار پارامتر (errorMessage) می باشد. ( لیست کدهای خطا )
نمونه های مختلف خروجی :
{
  "errorCode": 1001,
  "errorMessage": ".مقادیر پارامترهای ارسالی معتبر نمی باشند",
  "validationErrors": [
    {
      "field": "senderNumber",
      "errorMessage": ".فیلد [ شماره فرستنده ] را وارد نمایید"
    },
    {
      "field": "recipientNumber",
      "errorMessage": ".فیلد [ شماره گیرنده ] را وارد نمایید"
    },
    {
      "field": "content",
      "errorMessage": ".فیلد [ متن پیام ] را وارد نمایید"
    }
  ]
}
{
  "errorCode": 1053,
  "errorMessage": ".شماره خط فرستنده در حساب کاربر تعریف نشده است"
}
{
  "errorCode": 1107,
  "errorMessage": ".شناسه قالب ارسال پیام مورد نظر معتبر نمی باشد"
}
401 خطای اهراز هویت رخ داده است. (Api Key یا توکن ارسالی معتبر نمی باشد.) (مقدار پارامتر errorCode در خروجی، برابر با عدد ۴۰۱ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 401,
  "errorMessage": ".خطای احراز هویت رخ داده است"
}
403
مجوز دسترسی به متد برای حساب کاربری تعریف نشده است. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۵ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
آدرس IP جهت دسترسی به سرویس معتبر نمی باشد. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۶ و مقدار پارامتر errorMessage علت عدم دسترسی کاربر به سرویس می باشد.)
نمونه خروجی :
{
  "errorCode": 1005,
  "errorMessage": ".مجوز دسترسی به متد برای حساب کاربری تعریف نشده است"
}
{
  "errorCode": 1006,
  "errorMessage": ".آدرس آی پی جهت دسترسی به سرویس معتبر نمی باشد"
}
500 خطایی در سرور رخ داده است. (مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه جهت ارائه به بخش پشتیبانی و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 1000011011,
  "errorMessage": "خطایی در سرور رخ داده است. | شناسه خطا : 1000011011"
}
200 اجرای موفقیت آمیز عملیات و خروجی حاوی یک شناسه یکتا برای مجموعه پیام ارسالی (batchId) و یک شی حاوی اطلاعات پیام ارسالی به نام message می باشد. پارامترهای شی message عبارتند از :
sentMessageId شناسه پیام
senderNumber شماره فرستنده
recipientNumber شماره گیرنده
content متن پیام
language زبان متن پیام
operator اپراتور شماره گیرنده
parts تعداد بخش متن پیام
cost هزینه ارسال پیام
messageStatus وضعیت پیام
errorCode در صورتی که پیام با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود، کد خطای مربوطه توسط این پارامتر نمایش داده می شود.
errorMessage در صورتی که پیام با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود، شرح خطای مربوطه توسط این پارامتر نمایش داده می شود.
پارامتر messageStatus (وضعیت پیام) حاوی یکی از مقادیر ذیل می باشد :
0 در انتظار ارسال
1 ارسال شده به درگاه اپراتور
2 رسیده به مخاطب
3 نرسیده به مخاطب
4 ارسال نشده
نمونه خروجی :
{
  "batchId": "03bd52ed-8cb0-4a43-b9e7-dafff83c9565",
  "message": {
    "sentMessageId": "ec28329d-503f-4e9e-be82-c88bbd6f88d6",
    "senderNumber": "10001000",
    "recipientNumber": "09100000000",
    "content": "Your message content",
    "language": "English",
    "operator": "Mci",
    "parts": "1",
    "cost": "1,800",
    "messageStatus": 1
  }
}
نمونه کدها :

Api Key
curl -X POST "https://api.smsafzar.ir/messages/send/template" \
-H "X-Api-Key: Your_Api_Key-Value" \
-H "Cache-Control: no-cache" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"senderNumber": "10001000",
"recipientNumber": "09100000000",
"templateId": "TydSt1skQE",
"parameters": [{"name":"code","value":"123456"},{"name":"price","value":"1,000,000"}]
}'
JWT Token
curl -X POST "https://api.smsafzar.ir/messages/send" \
-H "Authorization: Bearer YourToken" \
-H "Cache-Control: no-cache" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"senderNumber": "10001000",
"recipientNumber": "09100000000",
"templateId": "TydSt1skQE",
"parameters": [{"name":"code","value":"123456"},{"name":"price","value":"1,000,000"}]
}'

Api Key
using RestSharp;

var apiBaseUrl = "https://api.smsafzar.ir";
var apiKey = "YourApiKey";

// Options
var options = new RestClientOptions(apiBaseUrl);

// Client
var client = new RestClient(options);

// Request

var messageJson = new
{
senderNumber = "10001000",
recipientNumber = "09100000000",
templateId = "TydSt1skQE",
parameters = new[]{new { name = "code", value = "123456" },new { name = "price", value = "1,000,000" }}
};

var request = new RestRequest("messages/send/template");
request.AddHeader("X-Api-Key", apiKey);
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddJsonBody(messageJson);

// Call
var response = await client.PostAsync(request);

// Response
Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
Console.WriteLine($"Response Content: {response.Content}");
JWT Token
using RestSharp;

var apiBaseUrl = "https://api.smsafzar.ir";
var jwtToken = "YourToken";

// Options
var options = new RestClientOptions(apiBaseUrl);

// Client
var client = new RestClient(options);

// Request

var messageJson = new
{
senderNumber = "10001000",
recipientNumber = "09100000000",
templateId = "TydSt1skQE",
parameters = new[]{new { name = "code", value = "123456" },new { name = "price", value = "1,000,000" }}
};

var request = new RestRequest("messages/send/template");
request.AddHeader("Authorization", $"Bearer {jwtToken}");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddJsonBody(messageJson);

// Call
var response = await client.PostAsync(request);

// Response
Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
Console.WriteLine($"Response Content: {response.Content}");

Api Key
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.fasterxml.jackson.databind.ObjectMapper;

try {
String apiBaseUrl = "https://api.smsafzar.ir";
String apiKey = "YourApiKey";

Map<String, String> message = new HashMap<>();
messageJson.put("senderNumber", "10001000");
messageJson.put("recipientNumber", "09100000000");
messageJson.put("templateId", "TydSt1skQE");
List<Map<String, String>> parameters = List.of(Map.of("name", "code", "value", "123456"),Map.of("name", "price", "value", "1,000,000"));
messageJson.put("parameters", parameters);

ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(message);

// Client
HttpClient client = HttpClient.newHttpClient();

//Request
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiBaseUrl + "/messages/send/template"))
.header("X-Api-Key", apiKey)
.header("Cache-Control", "no-cache")
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();

// Call
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

//Response
int responseStatusCode = response.statusCode();
String responseContent = response.body();

System.out.println("Response Status Code: " + responseStatusCode);
System.out.println("Response Content: " + responseContent);
} catch (Exception e) {
e.printStackTrace();
}
JWT Token
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.fasterxml.jackson.databind.ObjectMapper;

try {
String apiBaseUrl = "https://api.smsafzar.ir";
String jwtToken = "YourToken";

Map<String, String> message = new HashMap<>();
messageJson.put("senderNumber", "10001000");
messageJson.put("recipientNumber", "09100000000");
messageJson.put("templateId", "TydSt1skQE");
List<Map<String, String>> parameters = List.of(Map.of("name", "code", "value", "123456"),Map.of("name", "price", "value", "1,000,000"));
messageJson.put("parameters", parameters);

ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(message);

// Client
HttpClient client = HttpClient.newHttpClient();

//Request
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiBaseUrl + "/messages/send/template"))
.header("Authorization", "Bearer " + jwtToken)
.header("Cache-Control", "no-cache")
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();

// Call
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

//Response
int responseStatusCode = response.statusCode();
String responseContent = response.body();

System.out.println("Response Status Code: " + responseStatusCode);
System.out.println("Response Content: " + responseContent);
} catch (Exception e) {
e.printStackTrace();
}

Api Key
import requests

api_base_url = "https://api.smsafzar.ir"
api_key = "YourApiKey"

message_json = {
"senderNumber": "10001000",
"recipientNumber": "09100000000",
"templateId": "TydSt1skQE",
"parameters": [{"name": "code", "value": "123456"},{"name": "price", "value": "1,000,000"}]
}

headers = {
"X-Api-Key": api_key,
"Cache-Control": "no-cache",
"Accept": "application/json",
"Content-Type": "application/json"
}

# Call
response = requests.post(f"{api_base_url}/messages/send/template", json=message_json, headers=headers)

# Response
print("Response Code:", response.status_code)
print("Response Content:", response.json())
JWT Token
import requests

api_base_url = "https://api.smsafzar.ir"
jwt_token = "YourToken"

message_json = {
"senderNumber": "10001000",
"recipientNumber": "09100000000",
"templateId": "TydSt1skQE",
"parameters": [{"name": "code", "value": "123456"},{"name": "price", "value": "1,000,000"}]
}

headers = {
"Authorization": f"Bearer {jwt_token}",
"Cache-Control": "no-cache",
"Accept": "application/json",
"Content-Type": "application/json"
}

# Call
response = requests.post(f"{api_base_url}/messages/send/template", json=message_json, headers=headers)

# Response
print("Response Code:", response.status_code)
print("Response Content:", response.json())

Api Key
    
<?php
$apiBaseUrl = "https://api.smsafzar.ir";
$apiKey = "YourApiKey";

$messageJson = json_encode([
'senderNumber' => '10001000',
'recipientNumber' => '09100000000',
'templateId' => 'TydSt1skQE',
'parameters' => [['name' => 'code', 'value' => '123456'],['name' => 'price', 'value' => '1,000,000']]
]);

// Initialize CURL session
$ch = curl_init();

// Set CURL options
curl_setopt($ch, CURLOPT_URL, "{$apiBaseUrl}/messages/send/template");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $messageJson);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-Api-Key: $apiKey",
    "Cache-Control: no-cache",
    "Accept: application/json",
    "Content-Type: application/json"
]);

// Call
$response = curl_exec($ch);

// Response
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "Response Status Code: " . $httpStatusCode . "\n";
echo "Response Content: " . $response . "\n";
}

// Close the CURL session
curl_close($ch);
?>
JWT Token
<?php
$apiBaseUrl = "https://api.smsafzar.ir";
$jwtToken = "YourToken";

$messageJson = json_encode([
'senderNumber' => '10001000',
'recipientNumber' => '09100000000',
'templateId' => 'TydSt1skQE',
'parameters' => [['name' => 'code', 'value' => '123456'],['name' => 'price', 'value' => '1,000,000']]
]);

// Initialize CURL session
$ch = curl_init();

// Set CURL options
curl_setopt($ch, CURLOPT_URL, "{$apiBaseUrl}/messages/send/template");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $messageJson);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer $jwtToken",
    "Cache-Control: no-cache",
    "Accept: application/json",
    "Content-Type: application/json"
]);

// Call
$response = curl_exec($ch);

// Response
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "Response Status Code: " . $httpStatusCode . "\n";
echo "Response Content: " . $response . "\n";
}

// Close the CURL session
curl_close($ch);
?>

Api Key
const axios = require('axios');

const apiBaseUrl = 'https://api.smsafzar.ir';
const apiKey = 'YourApiKey';

const messageJson = {
senderNumber: '10001000',
recipientNumber: '09100000000',
"templateId": "TydSt1skQE",
"parameters": [{ "name": "code", "value": "123456" },{ "name": "price", "value": "1,000,000" }]
};

const headers = {
'X-Api-Key': apiKey,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
};

// Request
axios.post(`${apiBaseUrl}/messages/send/template`, messageJson, { headers })
.then(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.data);
})
.catch(error => {
// Error
console.error('Error:', error.response ? error.response.data : error.message);
});
JWT Token
const axios = require('axios');

const apiBaseUrl = 'https://api.smsafzar.ir';
const jwtToken = 'YourToken';

const messageJson = {
senderNumber: '10001000',
recipientNumber: '09100000000',
"templateId": "TydSt1skQE",
"parameters": [{ "name": "code", "value": "123456" },{ "name": "price", "value": "1,000,000" }]
};

const headers = {
'Authorization': `Bearer ${jwtToken}`,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
};

// Request
axios.post(`${apiBaseUrl}/messages/send/template`, messageJson, { headers })
.then(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.data);
})
.catch(error => {
// Error
console.error('Error:', error.response ? error.response.data : error.message);
});

Api Key
let httpClient= inject(HttpClient);

let apiBaseUrl = 'https://api.smsafzar.ir';
let apiKey = 'YourApiKey';

const messageJson = {
senderNumber: '10001000',
recipientNumber: '09100000000',
"templateId": "TydSt1skQE",
"parameters": [{ "name": "code", "value": "123456" },{ "name": "price", "value": "1,000,000" }]
};

let headers = new HttpHeaders({
'X-Api-Key': apiKey,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
});

// Request
this.http.post(`${apiBaseUrl}/messages/send/template`, messageJson, { headers , observe: 'response' })
.subscribe(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.body);
}, error => {
console.error('Error:', error);
});
JWT Token
let httpClient= inject(HttpClient);

let apiBaseUrl = 'https://api.smsafzar.ir';
let jwtToken = 'YourToken';

const messageJson = {
senderNumber: '10001000',
recipientNumber: '09100000000',
"templateId": "TydSt1skQE",
"parameters": [{ "name": "code", "value": "123456" },{ "name": "price", "value": "1,000,000" }]
};

let headers = new HttpHeaders({
'Authorization': `Bearer ${jwtToken}`,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
});

// Request
this.http.post(`${apiBaseUrl}/messages/send/template`, messageJson, { headers , observe: 'response' })
.subscribe(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.body);
}, error => {
console.error('Error:', error);
});

Api Key
import React, { useState } from 'react';

const [responseStatusCode, setResponseStatusCode] = useState(null);
const [responseContent, setResponseContent] = useState('');

const apiBaseUrl = 'https://api.smsafzar.ir';
const apiKey = 'YourApiKey';

const messageJson = {
senderNumber: '10001000',
recipientNumber: '09100000000',
"templateId": "TydSt1skQE",
"parameters": [{ "name": "code", "value": "123456" },{ "name": "price", "value": "1,000,000" }]
};

try {
// Request
const response = await fetch(`${apiBaseUrl}/messages/send/template`, {
method: 'POST',
headers: {
'X-Api-Key': apiKey,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(messageJson),
});

// Response
const content = await response.json();
setResponseStatusCode(response.status);
setResponseContent(content);

console.log('Response Status Code:', response.status);
console.log('Response Content:', content);
} catch (error) {
console.error('Error:', error);
}
JWT Token
import React, { useState } from 'react';

const [responseStatusCode, setResponseStatusCode] = useState(null);
const [responseContent, setResponseContent] = useState('');

const apiBaseUrl = 'https://api.smsafzar.ir';
const jwtToken = 'YourToken';

const messageJson = {
senderNumber: '10001000',
recipientNumber: '09100000000',
"templateId": "TydSt1skQE",
"parameters": [{ "name": "code", "value": "123456" },{ "name": "price", "value": "1,000,000" }]
};

try {
// Request
const response = await fetch(`${apiBaseUrl}/messages/send/template`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${jwtToken}`,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(messageJson),
});

// Response
const content = await response.json();
setResponseStatusCode(response.status);
setResponseContent(content);

console.log('Response Status Code:', response.status);
console.log('Response Content:', content);
} catch (error) {
console.error('Error:', error);
}