| 1 | ارسال پیام با متن یکسان با شماره فرستنده یکسان به شماره گیرندگان متفاوت |
| 2 | ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت |
| 3 | ارسال پیام با متن یکسان با شماره فرستنده های متفاوت به یک شماره گیرنده |
| 4 | ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به شماره گیرندگان متفاوت |
| 5 | ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به شماره گیرندگان متفاوت |
| 6 | ارسال پیام با متن های متفاوت با شماره فرستنده های متفاوت به یک شماره گیرنده |
| 6 | ارسال پیام با متن های متفاوت با شماره فرستنده یکسان به یک شماره گیرنده |
| senderNumbers | آرایه ای از شماره های فرستنده |
| recipientNumbers | آرایه ای از شماره های گیرنده |
| contents | آرایه ای از متن پیام ها |
| sendTimestamp | این پارامتر اختیاری می باشد و جهت تعیین تاریخ و زمان ارسال پیام مورد استفاده قرار می گیرد. مقدار این پارامتر می بایست بر اساس Unix Time (تعداد ثانیه از 00:00:00 01-01-1970 UTC) ارائه گردد و مقدار تاریخ و زمان ارسالی می بایست بزرگتر از تاریخ و زمان جاری سیستم باشد. جهت استعلام وضعیت ارسال پیام زمان بندی شده از متد messages/status (گزارش وضعیت پیام های ارسالی بر اساس شناسه یکتای مجموعه پیام های ارسالی (batchId)) اسنفاده نمایید. |
1000xxxx
00981000xxxx
+981000xxxx
981000xxxx
09xxxxxxxxx
9xxxxxxxxx
00989xxxxxxxxx
+989xxxxxxxxx
989xxxxxxxxx
{
"senderNumbers": [
"10001000",
"20002000"
],
"recipientNumbers": [
"09100000000",
"09300000000"
],
"contents": [
"",
" "
]
}
{
"senderNumbers": [
"10001000",
"20002000"
],
"recipientNumbers": [
"09100000000",
"09300000000"
],
"contents": [
"Your message content 1",
"Your message content 2"
]
}
{
"senderNumbers": [
"10001000",
"20002000"
],
"recipientNumbers": [
"09100000000",
"09300000000"
],
"contents": [
"Your message content 1",
"Your message content 2"
],
"sendTimestamp": 1770176103
}
| 400 |
درخواست ارسالی صحیح نمی باشد. در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند و یا فراخوانی متد با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه شود کد وضعیت پاسخ Http برابر با ۴۰۰ خواهد بود.
مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.
در صورتی که مقادیر پارامترهای ارسالی معتبر نباشند، پارامتر validationErrors، آرایه ای شامل نام پارامتر (field) و شرح خطای مربوط به نامعتبر بودن مقدار پارامتر (errorMessage) می باشد.
(
لیست کدهای خطا
)
نمونه های مختلف خروجی :
{
"errorCode": 1001,
"errorMessage": ".مقادیر پارامترهای ارسالی معتبر نمی باشند",
"validationErrors": [
{
"field": "senderNumbers",
"errorMessage": ".فیلد [ شماره های فرستنده ] را وارد نمایید"
},
{
"field": "recipientNumbers",
"errorMessage": ".فیلد [ شماره های گیرنده ] را وارد نمایید"
},
{
"field": "contents",
"errorMessage": ".فیلد [ متن پیام ها ] را وارد نمایید"
}
]
}
{
"errorCode": 1053,
"errorMessage": ".شماره خط فرستنده در حساب کاربر تعریف نشده است"
}
در صورتی که ارسال پیام ها با خطای منطقی متناسب با سیستم و یا تنظیمات سیستم مواجه
شود
به طوری که هیچگونه پیام قابل ارسالی موجود نباشد، خروجی حاوی آرایه ای از اطلاعات پیام ها به همراه
جزئیات خطای رخ داده برای هر پیام و صورت ذیل می باشد :
{
"errorCode": 1003,
"errorMessage": ".اطلاعات صحیحی جهت ارسال یافت نشد",
"messages": [
{
"senderNumber": "10001000",
"recipientNumber": "09100000000",
"content": "Your message content 1",
"errorCode": 1053,
"errorMessage": ".شماره خط فرستنده در حساب کاربر تعریف نشده است"
},
{
"senderNumber": "20002000",
"recipientNumber": "09300000000",
"content": "Your message content 2",
"errorCode": 1048,
"errorMessage": ".اپراتور: 2000 توسط مدیریت غیر فعال شده است"
}
]
}
پارامترهای خروجی عبارتند از :
پارامترهای هر عنصر از آرایهی messages (پیام ها) عبارتند از :
|
||||||||||||||||||||||||||||||||
| 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) و یک آرایه از اطلاعات پیام های ارسالی به نام messages می باشد.
: batchId
شناسه یکتای مجموعه پیامهای ارسالی، تمامی پیامهای موجود در این مجموعه دارای یک شناسه مشترک هستند. این شناسه امکان دریافت وضعیت تمامی پیام های مرتبط با این مجموعه را از طریق متد messages/status فراهم می نماید.
: messages
آرایه ای شامل اطلاعات مربوط به هر یک از پیام های ارسالی می باشد. پارامترهای هر عنصر از این آرایه عبارتند از :
نمونه خروجی :
{
"batchId": "ce6c8c5c-c13c-45f7-b013-0c0d8072c6e8",
"messages": [
{
"sentMessageId": "b0302a94-73b3-4d4a-b3ef-460a79d087cb",
"senderNumber": "10001000",
"recipientNumber": "09100000000",
"content": "Your message content",
"language": "English",
"operator": "Mci",
"parts": "1",
"cost": "1,800",
"messageStatus": 1
},
{
"senderNumber": "20002000",
"recipientNumber": "09300000000",
"content": "Your message content 2",
"errorCode": 1048,
"errorMessage": ".اپراتور: 2000 توسط مدیریت غیر فعال شده است"
}
]
}
|
curl -X POST "https://api.smsafzar.ir/messages/send/bulk" \
-H "X-Api-Key: YourApiKey" \
-H "Cache-Control: no-cache" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"senderNumbers": ["10001000", "20002000"],
"recipientNumbers": ["09100000000", "09300000000"],
"contents": ["Your message content 1", "Your message content 2"]
}'
curl -X POST "https://api.smsafzar.ir/messages/send/bulk" \
-H "Authorization: Bearer YourToken" \
-H "Cache-Control: no-cache" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"senderNumbers": ["10001000", "20002000"],
"recipientNumbers": ["09100000000", "09300000000"],
"contents": ["Your message content 1", "Your message content 2"]
}'
using RestSharp;
using System;
using System.Threading.Tasks;
var apiBaseUrl = "https://api.smsafzar.ir";
var apiKey = "YourApiKey";
// Options
var options = new RestClientOptions(apiBaseUrl);
// Client
var client = new RestClient(options);
// Request
var messagesJson = new
{
senderNumbers = new string[] { "10001000", "20002000" },
recipientNumbers = new string[] { "09100000000", "09300000000" },
contents = new string[] { "Your message content 1", "Your message content 2" }
};
var request = new RestRequest("messages/send/bulk");
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(messagesJson);
// Call
var response = await client.PostAsync(request);
// Response
Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
Console.WriteLine($"Response Content: {response.Content}");
using RestSharp;
using System;
using System.Threading.Tasks;
var apiBaseUrl = "https://api.smsafzar.ir";
var jwtToken = "YourToken";
// Options
var options = new RestClientOptions(apiBaseUrl);
// Client
var client = new RestClient(options);
// Request
var messagesJson = new
{
senderNumbers = new string[] { "10001000", "20002000" },
recipientNumbers = new string[] { "09100000000", "09300000000" },
contents = new string[] { "Your message content 1", "Your message content 2" }
};
var request = new RestRequest("messages/send/bulk");
request.AddHeader("Authorization", $"Bearer {jwtToken}");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddJsonBody(messagesJson);
// Call
var response = await client.PostAsync(request);
// Response
Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
Console.WriteLine($"Response Content: {response.Content}");
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
try {
String apiBaseUrl = "https://api.smsafzar.ir";
String apiKey = "YourApiKey";
Map<String, Object> messages = new HashMap<>();
messages.put("senderNumbers", new String[]{"10001000", "20002000"});
messages.put("recipientNumbers", new String[]{"09100000000", "09300000000"});
messages.put("contents", new String[]{"Your message content 1", "Your message content 2"});
ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(messages);
HttpClient client = HttpClient.newHttpClient();
// Request
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiBaseUrl + "/messages/send/bulk"))
.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 Message: " + responseContent);
} catch (Exception e) {
e.printStackTrace();
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
try {
String apiBaseUrl = "https://api.smsafzar.ir";
String jwtToken = "YourToken";
Map<String, Object> messages = new HashMap<>();
messages.put("senderNumbers", new String[]{"10001000", "20002000"});
messages.put("recipientNumbers", new String[]{"09100000000", "09300000000"});
messages.put("contents", new String[]{"Your message content 1", "Your message content 2"});
ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(messages);
HttpClient client = HttpClient.newHttpClient();
// Request
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiBaseUrl + "/messages/send/bulk"))
.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 Message: " + responseContent);
} catch (Exception e) {
e.printStackTrace();
}
import requests
api_base_url = "https://api.smsafzar.ir"
api_key = "YourApiKey"
messages_json = {
"senderNumbers": ["10001000", "20002000"],
"recipientNumbers": ["09100000000", "09300000000"],
"contents": ["Your message content 1", "Your message content 2"]
}
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/bulk", json=messages_json, headers=headers)
# Response
print("Response Status Code:", response.status_code)
print("Response Content:", response.json())
import requests
api_base_url = "https://api.smsafzar.ir"
jwt_token = "YourToken"
messages_json = {
"senderNumbers": ["10001000", "20002000"],
"recipientNumbers": ["09100000000", "09300000000"],
"contents": ["Your message content 1", "Your message content 2"]
}
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/bulk", json=messages_json, headers=headers)
# Response
print("Response Status Code:", response.status_code)
print("Response Content:", response.json())
<?php
$apiBaseUrl = "https://api.smsafzar.ir";
$apiKey= "YourApiKey";
$messagesJson = json_encode([
'senderNumbers' => ['10001000', '20002000'],
'recipientNumbers' => ['09100000000', '09300000000'],
'contents' => ['Your message content 1', 'Your message content 2']
]);
// Initialize CURL session
$ch = curl_init();
// Set CURL options
curl_setopt($ch, CURLOPT_URL, "{$apiBaseUrl}/messages/send/bulk");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $messagesJson);
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);
?>
<?php
$apiBaseUrl = "https://api.smsafzar.ir";
$jwtToken = "YourToken";
$messagesJson = json_encode([
'senderNumbers' => ['10001000', '20002000'],
'recipientNumbers' => ['09100000000', '09300000000'],
'contents' => ['Your message content 1', 'Your message content 2']
]);
// Initialize CURL session
$ch = curl_init();
// Set CURL options
curl_setopt($ch, CURLOPT_URL, "{$apiBaseUrl}/messages/send/bulk");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $messagesJson);
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);
?>
const axios = require('axios');
let apiBaseUrl = 'https://api.smsafzar.ir';
let apiKey = 'YourApiKey';
const messagesJson = {
senderNumbers: ['10001000', '20002000'],
recipientNumbers: ['09100000000', '09300000000'],
contents: ['Your message content 1', 'Your message content 2']
};
let headers = {
'X-Api-Key': apiKey,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
};
// Request
axios.post(`${apiBaseUrl}/messages/send/bulk`, messagesJson, { headers })
.then(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.data);
})
.catch(error => {
console.error('Error:', error.response ? error.response.data : error.message);
});
const axios = require('axios');
let apiBaseUrl = 'https://api.smsafzar.ir';
let jwtToken = 'YourToken';
const messagesJson = {
senderNumbers: ['10001000', '20002000'],
recipientNumbers: ['09100000000', '09300000000'],
contents: ['Your message content 1', 'Your message content 2']
};
let headers = {
'Authorization': `Bearer ${jwtToken}`,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
};
// Request
axios.post(`${apiBaseUrl}/messages/send/bulk`, messagesJson, { headers })
.then(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.data);
})
.catch(error => {
console.error('Error:', error.response ? error.response.data : error.message);
});
let httpClient= inject(HttpClient);
let apiBaseUrl = 'https://api.smsafzar.ir';
let apiKey = 'YourApiKey';
const messagesJson = {
senderNumbers: ['10001000', '20002000'],
recipientNumbers: ['09100000000', '09300000000'],
contents: ['Your message content 1', 'Your message content 2']
};
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/bulk`, messagesJson, { headers , observe: 'response' })
.subscribe(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.body);
}, error => {
console.error('Error:', error);
});
let httpClient= inject(HttpClient);
let apiBaseUrl = 'https://api.smsafzar.ir';
let jwtToken = 'YourToken';
const messagesJson = {
senderNumbers: ['10001000', '20002000'],
recipientNumbers: ['09100000000', '09300000000'],
contents: ['Your message content 1', 'Your message content 2']
};
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/bulk`, messagesJson, { headers , observe: 'response' })
.subscribe(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.body);
}, error => {
console.error('Error:', error);
});
import React, { useState } from 'react';
const [responseStatusCode, setResponseStatusCode] = useState(null);
const [responseContent, setResponseContent] = useState('');
const apiBaseUrl = 'https://api.smsafzar.ir';
const apiKey = 'YourApiKey';
const messagesJson = {
senderNumbers: ['10001000', '20002000'],
recipientNumbers: ['09100000000', '09300000000'],
contents: ['Your message content 1', 'Your message content 2']
};
try {
// Request
const response = await fetch(`${apiBaseUrl}/messages/send/bulk`, {
method: 'POST',
headers: {
'X-Api-Key': apiKey,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(messagesJson),
});
// 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);
}
import React, { useState } from 'react';
const [responseStatusCode, setResponseStatusCode] = useState(null);
const [responseContent, setResponseContent] = useState('');
const apiBaseUrl = 'https://api.smsafzar.ir';
const jwtToken = 'YourToken';
const messagesJson = {
senderNumbers: ['10001000', '20002000'],
recipientNumbers: ['09100000000', '09300000000'],
contents: ['Your message content 1', 'Your message content 2']
};
try {
// Request
const response = await fetch(`${apiBaseUrl}/messages/send/bulk`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${jwtToken}`,
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(messagesJson),
});
// 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);
}