این مستندات برای چیست؟
این صفحه راهنمای دقیق استفاده از Cloud Call OTP است تا کد OTP را از طریق تماس صوتی و با مسیر پشتیبان استاندارد ارسال کنید.
مسیرهای دقیق داخل پنل
مسیرها را به این ترتیب انجام دهید:
- تنظیم سرویسدهنده تماس:
/app/call-otp/providers - تنظیم صف پشتیبان تماس:
/app/call-otp/routing - دریافت API Key وبسرویس:
/app/webservice - مشاهده مستندات ماژول در پنل:
/app/webservice/call_otp - بررسی گزارش تماسها:
/app/call-otp/logs
پیشنیازهای الزامی
- ماژول
call_otpبرای کسبوکار فعال باشد. - ماژول
webserviceبرای کسبوکار فعال باشد. - حداقل یک سرویسدهنده تماس صوتی تنظیم و فعال شده باشد.
- API Key معتبر از بخش وبسرویس دریافت شده باشد.
Endpoint رسمی ارسال
Method:POSTPath:/v1/call-otp/sendFull URL (مثال):https://api.rasanex.com/v1/call-otp/send
Headerهای لازم
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
بدنه درخواست
فیلدها:
phoneاجباری: شماره مقصد تماسcodeاجباری: کد OTPparamsاختیاری: پارامترهای تکمیلیoptions.idempotency_keyاختیاری: جلوگیری از تماس تکراری در retrytenant_idاختیاری: فقط در سناریوی توکن چندکسبوکاری
{
"phone": "09120000000",
"code": "4821",
"options": {
"idempotency_key": "call-otp-login-20260411-01"
}
}
پاسخ موفق
{
"tracking_id": "f0e9c32b62e24b78a3e0a9c3f2d14e88",
"status": "accepted"
}
خطاهای رایج و اقدام اصلاحی
401 - توکن نامعتبر
{
"message": "Unauthorized. Invalid bearer token."
}
اقدام: API Key را بررسی کنید و هدر Authorization را صحیح بفرستید.
403 - ماژول غیرفعال یا دسترسی ناکافی
{
"error": "Webservice module must be enabled to use call_otp webservice APIs.",
"module_id": "webservice",
"code": "module_disabled"
}
اقدام: فعال بودن ماژولهای call_otp و webservice را بررسی کنید.
422 - بدنه نامعتبر
{
"message": "The code field is required.",
"errors": {
"code": [
"The code field is required."
]
}
}
اقدام: هر دو فیلد phone و code را همیشه ارسال کنید.
نمونه کدهای آماده
cURL
curl --request POST \
--url https://api.rasanex.com/v1/call-otp/send \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"phone": "09120000000",
"code": "4821",
"options": {
"idempotency_key": "call-otp-login-20260411-01"
}
}'
JavaScript
const response = await fetch('https://api.rasanex.com/v1/call-otp/send', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phone: '09120000000',
code: '4821',
options: {
idempotency_key: 'call-otp-login-20260411-01'
}
})
})
const data = await response.json()
console.log(data)
PHP
<?php
$payload = [
'phone' => '09120000000',
'code' => '4821',
'options' => [
'idempotency_key' => 'call-otp-login-20260411-01',
],
];
$ch = curl_init('https://api.rasanex.com/v1/call-otp/send');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
]);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Python
import requests
url = 'https://api.rasanex.com/v1/call-otp/send'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
}
payload = {
'phone': '09120000000',
'code': '4821',
'options': {
'idempotency_key': 'call-otp-login-20260411-01'
}
}
response = requests.post(url, json=payload, headers=headers, timeout=20)
print(response.status_code)
print(response.json())
روال پیشنهادی برای اجرای صحیح
- در
/app/call-otp/providersسرویسدهنده تماس را تنظیم و فعال کنید. - در
/app/call-otp/routingترتیب سرویسدهنده اصلی و پشتیبان را ذخیره کنید. - API Key را از
/app/webserviceدریافت کنید. - برای هر عملیات تماس،
idempotency_keyیکتا بسازید. - وضعیت نهایی ارسال را با
tracking_idدر/app/call-otp/logsردیابی کنید.
با این ترتیب، هم پایداری ارسال بهتر میشود و هم خطاهای تکراری کنترل میشود.