سرویس API پیامدهی
نمونه کد REST
REST API — معرفی
REST API هُما از HTTP ساده پشتیبانی میکند:
برای اتصال جدید، از درگاه خودِ هما استفاده کنید — نه این سرویس.
درگاه توکنمحور هما
- احراز هویت با توکن API (پنل Token, API & MCP Server) — بدون نیاز به رمز پرتال
- نک بخش «اتصال سایر نرمافزارها» در همین راهنما
سرویس زیر (api.homais.com) فقط برای سازگاری با اتصالهای قدیمی مستند شده است و
توکن API را نمیپذیرد؛ احراز هویتش با نام کاربری و رمز عبور پرتال است.
GET — پارامترها در QueryString
https://api.homais.com/services/messaging/sms/api/sendMessage/direct/?username=PORTAL_USERNAME&password=PORTAL_PASSWORD&PortalCode=ZZZZ&mobile=09121234567&message=textMessage&reference=YOUR_LINE_REFERENCE
- POST: پارامترها در body (
application/x-www-form-urlencoded) OTP:
پاسخ موفق: عدد بزرگتر از ۱۰۰۰.
REST API — GET (QueryString)
پارامترها در URL — قابل فراخوانی مستقیم از مرورگر. نام کاربری و رمز عبورِ پرتال در username و password؛ این سرویس توکن API را نمیپذیرد (برای اتصالِ توکنمحور: /api/v1/external/messaging/send). reference = مرجعِ خطِ فرستندهٔ خودتان، نه نوعِ سرور (تیکت #394177).
singleSMS — sendMessage/direct
JavaScript// JavaScript (Browser / Node 18+)
const q = new URLSearchParams({
username: 'PORTAL_USERNAME',
password: 'PORTAL_PASSWORD',
PortalCode: '12345',
mobile: '09121234567',
message: 'سلام، پیام تست',
reference: 'YOUR_LINE_REFERENCE',
});
const res = await fetch('https://api.homais.com/services/messaging/sms/api/sendMessage/direct/?' + q);
const id = parseInt(await res.text(), 10);
console.log(id > 1000 ? 'OK:' + id : 'ERR:' + id);
Python# Python
import requests
r = requests.get('https://api.homais.com/services/messaging/sms/api/sendMessage/direct/', params={
'username': 'PORTAL_USERNAME', 'password': 'PORTAL_PASSWORD',
'PortalCode': 12345, 'mobile': '09121234567',
'message': 'سلام', 'reference': 'YOUR_LINE_REFERENCE'}, timeout=30)
print(r.text)
PHP<?php
$url = 'https://api.homais.com/services/messaging/sms/api/sendMessage/direct/?' . http_build_query([
'username' => 'PORTAL_USERNAME', 'password' => 'PORTAL_PASSWORD',
'PortalCode' => 12345, 'mobile' => '09121234567',
'message' => 'سلام', 'reference' => 'YOUR_LINE_REFERENCE',
]);
echo file_get_contents($url);
cURLcurl -G "https://api.homais.com/services/messaging/sms/api/sendMessage/direct/" \
--data-urlencode "username=PORTAL_USERNAME" \
--data-urlencode "password=PORTAL_PASSWORD" \
--data-urlencode "PortalCode=12345" \
--data-urlencode "mobile=09121234567" \
--data-urlencode "message=سلام" \
--data-urlencode "reference=YOUR_LINE_REFERENCE"
Gopackage main
import ("fmt"; "io"; "net/http"; "net/url")
func main() {
p := url.Values{}
p.Set("username", "PORTAL_USERNAME")
p.Set("password", "PORTAL_PASSWORD")
p.Set("PortalCode", "12345")
p.Set("mobile", "09121234567")
p.Set("message", "سلام")
p.Set("reference", "YOUR_LINE_REFERENCE")
u := "https://api.homais.com/services/messaging/sms/api/sendMessage/direct/?" + p.Encode()
resp, _ := http.Get(u)
defer resp.Body.Close()
b, _ := io.ReadAll(resp.Body)
fmt.Println(string(b))
}
OTP — sendMessage/OTP
cURL — OTP GETcurl -G "https://api.homais.com/services/messaging/sms/api/sendMessage/OTP/" \
--data-urlencode "username=PORTAL_USERNAME" \
--data-urlencode "password=PORTAL_PASSWORD" \
--data-urlencode "PortalCode=12345" \
--data-urlencode "mobile=09121234567" \
--data-urlencode "message=کد تایید شما" \
--data-urlencode "reference=YOUR_LINE_REFERENCE"
Rubyrequire 'net/http'
require 'uri'
uri = URI('https://api.homais.com/services/messaging/sms/api/sendMessage/direct/')
uri.query = URI.encode_www_form(
username: 'PORTAL_USERNAME', password: 'PORTAL_PASSWORD',
PortalCode: 12345, mobile: '09121234567',
message: 'سلام', reference: 'YOUR_LINE_REFERENCE')
puts Net::HTTP.get(uri)
REST API — POST (Form Body)
همان endpoint؛ پارامترها در body — مناسب when URL طولانی است یا امنیت بیشتر.
singleSMS — POST form-urlencoded
JavaScript// JavaScript (fetch)
const body = new URLSearchParams({
username: 'PORTAL_USERNAME', password: 'PORTAL_PASSWORD',
PortalCode: '12345', mobile: '09121234567',
message: 'سلام', reference: 'YOUR_LINE_REFERENCE',
});
const res = await fetch('https://api.homais.com/services/messaging/sms/api/sendMessage/direct/', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: body.toString(),
});
console.log(await res.text());
Python# Python
import requests
r = requests.post('https://api.homais.com/services/messaging/sms/api/sendMessage/direct/', data={
'username': 'PORTAL_USERNAME', 'password': 'PORTAL_PASSWORD',
'PortalCode': 12345, 'mobile': '09121234567',
'message': 'سلام', 'reference': 'YOUR_LINE_REFERENCE',
}, timeout=30)
print(r.text)
PHP<?php
$ch = curl_init('https://api.homais.com/services/messaging/sms/api/sendMessage/direct/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'username' => 'PORTAL_USERNAME', 'password' => 'PORTAL_PASSWORD',
'PortalCode' => 12345, 'mobile' => '09121234567',
'message' => 'سلام', 'reference' => 'YOUR_LINE_REFERENCE',
]),
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
curl_close($ch);
cURLcurl -X POST "https://api.homais.com/services/messaging/sms/api/sendMessage/direct/" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "username=PORTAL_USERNAME" \
--data-urlencode "password=PORTAL_PASSWORD" \
--data-urlencode "PortalCode=12345" \
--data-urlencode "mobile=09121234567" \
--data-urlencode "message=سلام" \
--data-urlencode "reference=YOUR_LINE_REFERENCE"
OTP — POST form-urlencoded
cURL — OTP POSTcurl -X POST "https://api.homais.com/services/messaging/sms/api/sendMessage/OTP/" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "username=PORTAL_USERNAME" \
--data-urlencode "password=PORTAL_PASSWORD" \
--data-urlencode "PortalCode=12345" \
--data-urlencode "mobile=09121234567" \
--data-urlencode "message=کد تایید" \
--data-urlencode "reference=YOUR_LINE_REFERENCE"
Node.js — axios// Node.js — axios
const axios = require('axios');
const { data } = await axios.post('https://api.homais.com/services/messaging/sms/api/sendMessage/direct/',
new URLSearchParams({
username: 'PORTAL_USERNAME', password: 'PORTAL_PASSWORD',
PortalCode: '12345', mobile: '09121234567',
message: 'سلام', reference: 'YOUR_LINE_REFERENCE',
}), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } });
console.log(data);
REST API — PowerShell & VB.NET
PowerShell — GET
PowerShell — GET$params = @{
username = 'PORTAL_USERNAME'
password = 'PORTAL_PASSWORD'
PortalCode = 12345
mobile = '09121234567'
message = 'سلام'
reference = 'YOUR_LINE_REFERENCE'
}
$uri = 'https://api.homais.com/services/messaging/sms/api/sendMessage/direct/' + '?' + ($params.GetEnumerator() | ForEach-Object {
"$($_.Key)=$([uri]::EscapeDataString([string]$_.Value))"
}) -join '&'
(Invoke-WebRequest -Uri $uri -UseBasicParsing).Content
PowerShell — POST
PowerShell — POST$body = @{
username='PORTAL_USERNAME'; password='PORTAL_PASSWORD'
PortalCode=12345; mobile='09121234567'
message='سلام'; reference='YOUR_LINE_REFERENCE'
}
Invoke-RestMethod -Method Post -Uri 'https://api.homais.com/services/messaging/sms/api/sendMessage/direct/' -Body $body
VB.NET — WebClient GET
VB.NETImports System.Net
Dim url = "https://api.homais.com/services/messaging/sms/api/sendMessage/direct/?username=PORTAL_USERNAME&password=PORTAL_PASSWORD" &
"&PortalCode=12345&mobile=09121234567&message=سلام&reference=YOUR_LINE_REFERENCE"
Dim wc As New WebClient()
wc.Encoding = System.Text.Encoding.UTF8
Dim result = wc.DownloadString(url)
Console.WriteLine(result)
نکات
- برای اتصال نرمافزارهای حسابداری از بخش «اتصال سایر نرمافزارها» استفاده کنید: نام کاربری = توکن API، کد پرتال = پارامتر PortalCode.
- اتصال مستقیم فقط وقتی ممکن است که نرمافزار اجازه تعریف URL و پارامترهای دلخواه را بدهد؛ در غیر این صورت افزونه/واسط اختصاصی لازم است.
- ServerType=100 برای ارسال عمومی و OTP (لیست سیاه مخابرات) توصیه میشود.
- پاسخ موفق: عدد بزرگتر از ۱۰۰۰؛ هر عدد دیگر کد خطاست.
- برای پیام حاوی لینک یا ارسال از شماره عمومی، پروفایل WhoIS باید تکمیل و تأیید شده باشد.
- برای تست سریع REST API، URL را با پارامترها در مرورگر باز کنید.
- در صورت خطا، کد بازگشتی و ServerType را در تیکت پشتیبانی ذکر کنید.