[{"data":1,"prerenderedAt":3236},["ShallowReactive",2],{"blog-article-/blog/cloud-call-otp-guide":3,"blog-posts":1100},{"id":4,"title":5,"author":6,"body":7,"category":1086,"date":1087,"description":1088,"extension":1089,"image":1090,"meta":1091,"navigation":771,"path":1092,"readingTime":670,"seo":1093,"stem":1094,"tags":1095,"updatedAt":6,"__hash__":1099},"blog/blog/cloud-call-otp-guide.md","مستندات Cloud Call OTP رسانکس",null,{"type":8,"value":9,"toc":1065},"minimark",[10,15,19,23,26,61,65,85,89,117,121,145,149,152,183,292,296,348,352,357,389,396,400,470,479,483,561,569,573,577,683,687,785,789,924,928,1020,1024,1058,1061],[11,12,14],"h2",{"id":13},"این-مستندات-برای-چیست","این مستندات برای چیست؟",[16,17,18],"p",{},"این صفحه راهنمای دقیق استفاده از Cloud Call OTP است تا کد OTP را از طریق تماس صوتی و با مسیر پشتیبان استاندارد ارسال کنید.",[11,20,22],{"id":21},"مسیرهای-دقیق-داخل-پنل","مسیرهای دقیق داخل پنل",[16,24,25],{},"مسیرها را به این ترتیب انجام دهید:",[27,28,29,37,43,49,55],"ol",{},[30,31,32,33],"li",{},"تنظیم سرویس‌دهنده تماس: ",[34,35,36],"code",{},"/app/call-otp/providers",[30,38,39,40],{},"تنظیم صف پشتیبان تماس: ",[34,41,42],{},"/app/call-otp/routing",[30,44,45,46],{},"دریافت API Key وب‌سرویس: ",[34,47,48],{},"/app/webservice",[30,50,51,52],{},"مشاهده مستندات ماژول در پنل: ",[34,53,54],{},"/app/webservice/call_otp",[30,56,57,58],{},"بررسی گزارش تماس‌ها: ",[34,59,60],{},"/app/call-otp/logs",[11,62,64],{"id":63},"پیشنیازهای-الزامی","پیش‌نیازهای الزامی",[27,66,67,74,79,82],{},[30,68,69,70,73],{},"ماژول ",[34,71,72],{},"call_otp"," برای کسب‌وکار فعال باشد.",[30,75,69,76,73],{},[34,77,78],{},"webservice",[30,80,81],{},"حداقل یک سرویس‌دهنده تماس صوتی تنظیم و فعال شده باشد.",[30,83,84],{},"API Key معتبر از بخش وب‌سرویس دریافت شده باشد.",[11,86,88],{"id":87},"endpoint-رسمی-ارسال","Endpoint رسمی ارسال",[90,91,92,101,109],"ul",{},[30,93,94,97,98],{},[34,95,96],{},"Method",": ",[34,99,100],{},"POST",[30,102,103,97,106],{},[34,104,105],{},"Path",[34,107,108],{},"/v1/call-otp/send",[30,110,111,97,114],{},[34,112,113],{},"Full URL (مثال)",[34,115,116],{},"https://api.rasanex.com/v1/call-otp/send",[11,118,120],{"id":119},"headerهای-لازم","Headerهای لازم",[122,123,129],"pre",{"className":124,"code":125,"filename":126,"language":127,"meta":128,"style":128},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Authorization: Bearer YOUR_API_KEY\nContent-Type: application/json\n","headers.http","http","",[34,130,131,139],{"__ignoreMap":128},[132,133,136],"span",{"class":134,"line":135},"line",1,[132,137,138],{},"Authorization: Bearer YOUR_API_KEY\n",[132,140,142],{"class":134,"line":141},2,[132,143,144],{},"Content-Type: application/json\n",[11,146,148],{"id":147},"بدنه-درخواست","بدنه درخواست",[16,150,151],{},"فیلدها:",[90,153,154,160,165,171,177],{},[30,155,156,159],{},[34,157,158],{},"phone"," اجباری: شماره مقصد تماس",[30,161,162,164],{},[34,163,34],{}," اجباری: کد OTP",[30,166,167,170],{},[34,168,169],{},"params"," اختیاری: پارامترهای تکمیلی",[30,172,173,176],{},[34,174,175],{},"options.idempotency_key"," اختیاری: جلوگیری از تماس تکراری در retry",[30,178,179,182],{},[34,180,181],{},"tenant_id"," اختیاری: فقط در سناریوی توکن چندکسب‌وکاری",[122,184,189],{"className":185,"code":186,"filename":187,"language":188,"meta":128,"style":128},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"phone\": \"09120000000\",\n  \"code\": \"4821\",\n  \"options\": {\n    \"idempotency_key\": \"call-otp-login-20260411-01\"\n  }\n}\n","request.json","json",[34,190,191,197,223,243,258,280,286],{"__ignoreMap":128},[132,192,193],{"class":134,"line":135},[132,194,196],{"class":195},"sMK4o","{\n",[132,198,199,202,205,208,211,214,218,220],{"class":134,"line":141},[132,200,201],{"class":195},"  \"",[132,203,158],{"class":204},"spNyl",[132,206,207],{"class":195},"\"",[132,209,210],{"class":195},":",[132,212,213],{"class":195}," \"",[132,215,217],{"class":216},"sfazB","09120000000",[132,219,207],{"class":195},[132,221,222],{"class":195},",\n",[132,224,226,228,230,232,234,236,239,241],{"class":134,"line":225},3,[132,227,201],{"class":195},[132,229,34],{"class":204},[132,231,207],{"class":195},[132,233,210],{"class":195},[132,235,213],{"class":195},[132,237,238],{"class":216},"4821",[132,240,207],{"class":195},[132,242,222],{"class":195},[132,244,246,248,251,253,255],{"class":134,"line":245},4,[132,247,201],{"class":195},[132,249,250],{"class":204},"options",[132,252,207],{"class":195},[132,254,210],{"class":195},[132,256,257],{"class":195}," {\n",[132,259,261,264,268,270,272,274,277],{"class":134,"line":260},5,[132,262,263],{"class":195},"    \"",[132,265,267],{"class":266},"sBMFI","idempotency_key",[132,269,207],{"class":195},[132,271,210],{"class":195},[132,273,213],{"class":195},[132,275,276],{"class":216},"call-otp-login-20260411-01",[132,278,279],{"class":195},"\"\n",[132,281,283],{"class":134,"line":282},6,[132,284,285],{"class":195},"  }\n",[132,287,289],{"class":134,"line":288},7,[132,290,291],{"class":195},"}\n",[11,293,295],{"id":294},"پاسخ-موفق","پاسخ موفق",[122,297,300],{"className":185,"code":298,"filename":299,"language":188,"meta":128,"style":128},"{\n  \"tracking_id\": \"f0e9c32b62e24b78a3e0a9c3f2d14e88\",\n  \"status\": \"accepted\"\n}\n","202-accepted.json",[34,301,302,306,326,344],{"__ignoreMap":128},[132,303,304],{"class":134,"line":135},[132,305,196],{"class":195},[132,307,308,310,313,315,317,319,322,324],{"class":134,"line":141},[132,309,201],{"class":195},[132,311,312],{"class":204},"tracking_id",[132,314,207],{"class":195},[132,316,210],{"class":195},[132,318,213],{"class":195},[132,320,321],{"class":216},"f0e9c32b62e24b78a3e0a9c3f2d14e88",[132,323,207],{"class":195},[132,325,222],{"class":195},[132,327,328,330,333,335,337,339,342],{"class":134,"line":225},[132,329,201],{"class":195},[132,331,332],{"class":204},"status",[132,334,207],{"class":195},[132,336,210],{"class":195},[132,338,213],{"class":195},[132,340,341],{"class":216},"accepted",[132,343,279],{"class":195},[132,345,346],{"class":134,"line":245},[132,347,291],{"class":195},[11,349,351],{"id":350},"خطاهای-رایج-و-اقدام-اصلاحی","خطاهای رایج و اقدام اصلاحی",[353,354,356],"h3",{"id":355},"_401-توکن-نامعتبر","401 - توکن نامعتبر",[122,358,361],{"className":185,"code":359,"filename":360,"language":188,"meta":128,"style":128},"{\n  \"message\": \"Unauthorized. Invalid bearer token.\"\n}\n","401.json",[34,362,363,367,385],{"__ignoreMap":128},[132,364,365],{"class":134,"line":135},[132,366,196],{"class":195},[132,368,369,371,374,376,378,380,383],{"class":134,"line":141},[132,370,201],{"class":195},[132,372,373],{"class":204},"message",[132,375,207],{"class":195},[132,377,210],{"class":195},[132,379,213],{"class":195},[132,381,382],{"class":216},"Unauthorized. Invalid bearer token.",[132,384,279],{"class":195},[132,386,387],{"class":134,"line":225},[132,388,291],{"class":195},[16,390,391,392,395],{},"اقدام: API Key را بررسی کنید و هدر ",[34,393,394],{},"Authorization"," را صحیح بفرستید.",[353,397,399],{"id":398},"_403-ماژول-غیرفعال-یا-دسترسی-ناکافی","403 - ماژول غیرفعال یا دسترسی ناکافی",[122,401,404],{"className":185,"code":402,"filename":403,"language":188,"meta":128,"style":128},"{\n  \"error\": \"Webservice module must be enabled to use call_otp webservice APIs.\",\n  \"module_id\": \"webservice\",\n  \"code\": \"module_disabled\"\n}\n","403.json",[34,405,406,410,430,449,466],{"__ignoreMap":128},[132,407,408],{"class":134,"line":135},[132,409,196],{"class":195},[132,411,412,414,417,419,421,423,426,428],{"class":134,"line":141},[132,413,201],{"class":195},[132,415,416],{"class":204},"error",[132,418,207],{"class":195},[132,420,210],{"class":195},[132,422,213],{"class":195},[132,424,425],{"class":216},"Webservice module must be enabled to use call_otp webservice APIs.",[132,427,207],{"class":195},[132,429,222],{"class":195},[132,431,432,434,437,439,441,443,445,447],{"class":134,"line":225},[132,433,201],{"class":195},[132,435,436],{"class":204},"module_id",[132,438,207],{"class":195},[132,440,210],{"class":195},[132,442,213],{"class":195},[132,444,78],{"class":216},[132,446,207],{"class":195},[132,448,222],{"class":195},[132,450,451,453,455,457,459,461,464],{"class":134,"line":245},[132,452,201],{"class":195},[132,454,34],{"class":204},[132,456,207],{"class":195},[132,458,210],{"class":195},[132,460,213],{"class":195},[132,462,463],{"class":216},"module_disabled",[132,465,279],{"class":195},[132,467,468],{"class":134,"line":260},[132,469,291],{"class":195},[16,471,472,473,475,476,478],{},"اقدام: فعال بودن ماژول‌های ",[34,474,72],{}," و ",[34,477,78],{}," را بررسی کنید.",[353,480,482],{"id":481},"_422-بدنه-نامعتبر","422 - بدنه نامعتبر",[122,484,487],{"className":185,"code":485,"filename":486,"language":188,"meta":128,"style":128},"{\n  \"message\": \"The code field is required.\",\n  \"errors\": {\n    \"code\": [\n      \"The code field is required.\"\n    ]\n  }\n}\n","422-validation.json",[34,488,489,493,512,525,538,547,552,556],{"__ignoreMap":128},[132,490,491],{"class":134,"line":135},[132,492,196],{"class":195},[132,494,495,497,499,501,503,505,508,510],{"class":134,"line":141},[132,496,201],{"class":195},[132,498,373],{"class":204},[132,500,207],{"class":195},[132,502,210],{"class":195},[132,504,213],{"class":195},[132,506,507],{"class":216},"The code field is required.",[132,509,207],{"class":195},[132,511,222],{"class":195},[132,513,514,516,519,521,523],{"class":134,"line":225},[132,515,201],{"class":195},[132,517,518],{"class":204},"errors",[132,520,207],{"class":195},[132,522,210],{"class":195},[132,524,257],{"class":195},[132,526,527,529,531,533,535],{"class":134,"line":245},[132,528,263],{"class":195},[132,530,34],{"class":266},[132,532,207],{"class":195},[132,534,210],{"class":195},[132,536,537],{"class":195}," [\n",[132,539,540,543,545],{"class":134,"line":260},[132,541,542],{"class":195},"      \"",[132,544,507],{"class":216},[132,546,279],{"class":195},[132,548,549],{"class":134,"line":282},[132,550,551],{"class":195},"    ]\n",[132,553,554],{"class":134,"line":288},[132,555,285],{"class":195},[132,557,559],{"class":134,"line":558},8,[132,560,291],{"class":195},[16,562,563,564,475,566,568],{},"اقدام: هر دو فیلد ",[34,565,158],{},[34,567,34],{}," را همیشه ارسال کنید.",[11,570,572],{"id":571},"نمونه-کدهای-آماده","نمونه کدهای آماده",[353,574,576],{"id":575},"curl","cURL",[122,578,583],{"className":579,"code":580,"filename":581,"language":582,"meta":128,"style":128},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl --request POST \\\n  --url https://api.rasanex.com/v1/call-otp/send \\\n  --header 'Authorization: Bearer YOUR_API_KEY' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"phone\": \"09120000000\",\n    \"code\": \"4821\",\n    \"options\": {\n      \"idempotency_key\": \"call-otp-login-20260411-01\"\n    }\n  }'\n","send-call-otp.sh","bash",[34,584,585,599,609,625,638,647,652,657,662,668,674],{"__ignoreMap":128},[132,586,587,589,592,595],{"class":134,"line":135},[132,588,575],{"class":266},[132,590,591],{"class":216}," --request",[132,593,594],{"class":216}," POST",[132,596,598],{"class":597},"sTEyZ"," \\\n",[132,600,601,604,607],{"class":134,"line":141},[132,602,603],{"class":216},"  --url",[132,605,606],{"class":216}," https://api.rasanex.com/v1/call-otp/send",[132,608,598],{"class":597},[132,610,611,614,617,620,623],{"class":134,"line":225},[132,612,613],{"class":216},"  --header",[132,615,616],{"class":195}," '",[132,618,619],{"class":216},"Authorization: Bearer YOUR_API_KEY",[132,621,622],{"class":195},"'",[132,624,598],{"class":597},[132,626,627,629,631,634,636],{"class":134,"line":245},[132,628,613],{"class":216},[132,630,616],{"class":195},[132,632,633],{"class":216},"Content-Type: application/json",[132,635,622],{"class":195},[132,637,598],{"class":597},[132,639,640,643,645],{"class":134,"line":260},[132,641,642],{"class":216},"  --data",[132,644,616],{"class":195},[132,646,196],{"class":216},[132,648,649],{"class":134,"line":282},[132,650,651],{"class":216},"    \"phone\": \"09120000000\",\n",[132,653,654],{"class":134,"line":288},[132,655,656],{"class":216},"    \"code\": \"4821\",\n",[132,658,659],{"class":134,"line":558},[132,660,661],{"class":216},"    \"options\": {\n",[132,663,665],{"class":134,"line":664},9,[132,666,667],{"class":216},"      \"idempotency_key\": \"call-otp-login-20260411-01\"\n",[132,669,671],{"class":134,"line":670},10,[132,672,673],{"class":216},"    }\n",[132,675,677,680],{"class":134,"line":676},11,[132,678,679],{"class":216},"  }",[132,681,682],{"class":195},"'\n",[353,684,686],{"id":685},"javascript","JavaScript",[122,688,692],{"className":689,"code":690,"filename":691,"language":685,"meta":128,"style":128},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const response = await fetch('https://api.rasanex.com/v1/call-otp/send', {\n  method: 'POST',\n  headers: {\n    Authorization: 'Bearer YOUR_API_KEY',\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    phone: '09120000000',\n    code: '4821',\n    options: {\n      idempotency_key: 'call-otp-login-20260411-01'\n    }\n  })\n})\n\nconst data = await response.json()\nconsole.log(data)\n","sendCallOtp.js",[34,693,694,699,704,709,714,719,724,729,734,739,744,749,754,760,766,773,779],{"__ignoreMap":128},[132,695,696],{"class":134,"line":135},[132,697,698],{},"const response = await fetch('https://api.rasanex.com/v1/call-otp/send', {\n",[132,700,701],{"class":134,"line":141},[132,702,703],{},"  method: 'POST',\n",[132,705,706],{"class":134,"line":225},[132,707,708],{},"  headers: {\n",[132,710,711],{"class":134,"line":245},[132,712,713],{},"    Authorization: 'Bearer YOUR_API_KEY',\n",[132,715,716],{"class":134,"line":260},[132,717,718],{},"    'Content-Type': 'application/json'\n",[132,720,721],{"class":134,"line":282},[132,722,723],{},"  },\n",[132,725,726],{"class":134,"line":288},[132,727,728],{},"  body: JSON.stringify({\n",[132,730,731],{"class":134,"line":558},[132,732,733],{},"    phone: '09120000000',\n",[132,735,736],{"class":134,"line":664},[132,737,738],{},"    code: '4821',\n",[132,740,741],{"class":134,"line":670},[132,742,743],{},"    options: {\n",[132,745,746],{"class":134,"line":676},[132,747,748],{},"      idempotency_key: 'call-otp-login-20260411-01'\n",[132,750,752],{"class":134,"line":751},12,[132,753,673],{},[132,755,757],{"class":134,"line":756},13,[132,758,759],{},"  })\n",[132,761,763],{"class":134,"line":762},14,[132,764,765],{},"})\n",[132,767,769],{"class":134,"line":768},15,[132,770,772],{"emptyLinePlaceholder":771},true,"\n",[132,774,776],{"class":134,"line":775},16,[132,777,778],{},"const data = await response.json()\n",[132,780,782],{"class":134,"line":781},17,[132,783,784],{},"console.log(data)\n",[353,786,788],{"id":787},"php","PHP",[122,790,794],{"className":791,"code":792,"filename":793,"language":787,"meta":128,"style":128},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\n$payload = [\n    'phone' => '09120000000',\n    'code' => '4821',\n    'options' => [\n        'idempotency_key' => 'call-otp-login-20260411-01',\n    ],\n];\n\n$ch = curl_init('https://api.rasanex.com/v1/call-otp/send');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_POST => true,\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer YOUR_API_KEY',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),\n]);\n\n$result = curl_exec($ch);\ncurl_close($ch);\n\necho $result;\n","send_call_otp.php",[34,795,796,801,805,810,815,820,825,830,835,840,844,849,854,859,864,869,874,879,884,890,896,901,907,913,918],{"__ignoreMap":128},[132,797,798],{"class":134,"line":135},[132,799,800],{},"\u003C?php\n",[132,802,803],{"class":134,"line":141},[132,804,772],{"emptyLinePlaceholder":771},[132,806,807],{"class":134,"line":225},[132,808,809],{},"$payload = [\n",[132,811,812],{"class":134,"line":245},[132,813,814],{},"    'phone' => '09120000000',\n",[132,816,817],{"class":134,"line":260},[132,818,819],{},"    'code' => '4821',\n",[132,821,822],{"class":134,"line":282},[132,823,824],{},"    'options' => [\n",[132,826,827],{"class":134,"line":288},[132,828,829],{},"        'idempotency_key' => 'call-otp-login-20260411-01',\n",[132,831,832],{"class":134,"line":558},[132,833,834],{},"    ],\n",[132,836,837],{"class":134,"line":664},[132,838,839],{},"];\n",[132,841,842],{"class":134,"line":670},[132,843,772],{"emptyLinePlaceholder":771},[132,845,846],{"class":134,"line":676},[132,847,848],{},"$ch = curl_init('https://api.rasanex.com/v1/call-otp/send');\n",[132,850,851],{"class":134,"line":751},[132,852,853],{},"curl_setopt_array($ch, [\n",[132,855,856],{"class":134,"line":756},[132,857,858],{},"    CURLOPT_RETURNTRANSFER => true,\n",[132,860,861],{"class":134,"line":762},[132,862,863],{},"    CURLOPT_POST => true,\n",[132,865,866],{"class":134,"line":768},[132,867,868],{},"    CURLOPT_HTTPHEADER => [\n",[132,870,871],{"class":134,"line":775},[132,872,873],{},"        'Authorization: Bearer YOUR_API_KEY',\n",[132,875,876],{"class":134,"line":781},[132,877,878],{},"        'Content-Type: application/json',\n",[132,880,882],{"class":134,"line":881},18,[132,883,834],{},[132,885,887],{"class":134,"line":886},19,[132,888,889],{},"    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),\n",[132,891,893],{"class":134,"line":892},20,[132,894,895],{},"]);\n",[132,897,899],{"class":134,"line":898},21,[132,900,772],{"emptyLinePlaceholder":771},[132,902,904],{"class":134,"line":903},22,[132,905,906],{},"$result = curl_exec($ch);\n",[132,908,910],{"class":134,"line":909},23,[132,911,912],{},"curl_close($ch);\n",[132,914,916],{"class":134,"line":915},24,[132,917,772],{"emptyLinePlaceholder":771},[132,919,921],{"class":134,"line":920},25,[132,922,923],{},"echo $result;\n",[353,925,927],{"id":926},"python","Python",[122,929,933],{"className":930,"code":931,"filename":932,"language":926,"meta":128,"style":128},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import requests\n\nurl = 'https://api.rasanex.com/v1/call-otp/send'\nheaders = {\n    'Authorization': 'Bearer YOUR_API_KEY',\n    'Content-Type': 'application/json',\n}\npayload = {\n    'phone': '09120000000',\n    'code': '4821',\n    'options': {\n        'idempotency_key': 'call-otp-login-20260411-01'\n    }\n}\n\nresponse = requests.post(url, json=payload, headers=headers, timeout=20)\nprint(response.status_code)\nprint(response.json())\n","send_call_otp.py",[34,934,935,940,944,949,954,959,964,968,973,978,983,988,993,997,1001,1005,1010,1015],{"__ignoreMap":128},[132,936,937],{"class":134,"line":135},[132,938,939],{},"import requests\n",[132,941,942],{"class":134,"line":141},[132,943,772],{"emptyLinePlaceholder":771},[132,945,946],{"class":134,"line":225},[132,947,948],{},"url = 'https://api.rasanex.com/v1/call-otp/send'\n",[132,950,951],{"class":134,"line":245},[132,952,953],{},"headers = {\n",[132,955,956],{"class":134,"line":260},[132,957,958],{},"    'Authorization': 'Bearer YOUR_API_KEY',\n",[132,960,961],{"class":134,"line":282},[132,962,963],{},"    'Content-Type': 'application/json',\n",[132,965,966],{"class":134,"line":288},[132,967,291],{},[132,969,970],{"class":134,"line":558},[132,971,972],{},"payload = {\n",[132,974,975],{"class":134,"line":664},[132,976,977],{},"    'phone': '09120000000',\n",[132,979,980],{"class":134,"line":670},[132,981,982],{},"    'code': '4821',\n",[132,984,985],{"class":134,"line":676},[132,986,987],{},"    'options': {\n",[132,989,990],{"class":134,"line":751},[132,991,992],{},"        'idempotency_key': 'call-otp-login-20260411-01'\n",[132,994,995],{"class":134,"line":756},[132,996,673],{},[132,998,999],{"class":134,"line":762},[132,1000,291],{},[132,1002,1003],{"class":134,"line":768},[132,1004,772],{"emptyLinePlaceholder":771},[132,1006,1007],{"class":134,"line":775},[132,1008,1009],{},"response = requests.post(url, json=payload, headers=headers, timeout=20)\n",[132,1011,1012],{"class":134,"line":781},[132,1013,1014],{},"print(response.status_code)\n",[132,1016,1017],{"class":134,"line":881},[132,1018,1019],{},"print(response.json())\n",[11,1021,1023],{"id":1022},"روال-پیشنهادی-برای-اجرای-صحیح","روال پیشنهادی برای اجرای صحیح",[27,1025,1026,1032,1037,1043,1049],{},[30,1027,1028,1029,1031],{},"در ",[34,1030,36],{}," سرویس‌دهنده تماس را تنظیم و فعال کنید.",[30,1033,1028,1034,1036],{},[34,1035,42],{}," ترتیب سرویس‌دهنده اصلی و پشتیبان را ذخیره کنید.",[30,1038,1039,1040,1042],{},"API Key را از ",[34,1041,48],{}," دریافت کنید.",[30,1044,1045,1046,1048],{},"برای هر عملیات تماس، ",[34,1047,267],{}," یکتا بسازید.",[30,1050,1051,1052,1054,1055,1057],{},"وضعیت نهایی ارسال را با ",[34,1053,312],{}," در ",[34,1056,60],{}," ردیابی کنید.",[16,1059,1060],{},"با این ترتیب، هم پایداری ارسال بهتر می‌شود و هم خطاهای تکراری کنترل می‌شود.",[1062,1063,1064],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":128,"searchDepth":141,"depth":141,"links":1066},[1067,1068,1069,1070,1071,1072,1073,1074,1079,1085],{"id":13,"depth":141,"text":14},{"id":21,"depth":141,"text":22},{"id":63,"depth":141,"text":64},{"id":87,"depth":141,"text":88},{"id":119,"depth":141,"text":120},{"id":147,"depth":141,"text":148},{"id":294,"depth":141,"text":295},{"id":350,"depth":141,"text":351,"children":1075},[1076,1077,1078],{"id":355,"depth":225,"text":356},{"id":398,"depth":225,"text":399},{"id":481,"depth":225,"text":482},{"id":571,"depth":141,"text":572,"children":1080},[1081,1082,1083,1084],{"id":575,"depth":225,"text":576},{"id":685,"depth":225,"text":686},{"id":787,"depth":225,"text":788},{"id":926,"depth":225,"text":927},{"id":1022,"depth":141,"text":1023},"مستندات فنی","2026-04-10","راهنمای رسمی راه‌اندازی و استفاده از Cloud Call OTP در رسانکس با مسیرهای دقیق پنل، Endpoint واقعی، نمونه درخواست و مدیریت خطا.","md","/images/blog/cloud-call-otp-guide.svg",{},"/blog/cloud-call-otp-guide",{"title":5,"description":1088},"blog/cloud-call-otp-guide",[1096,1097,1098],"Cloud Call OTP","مستندات API","رسانکس","J3kiFbRPYs9flwg4pSXKXM6mRZvwPMhQODXzVsFrsuE",[1101,1922,3001],{"id":4,"title":5,"author":6,"body":1102,"category":1086,"date":1087,"description":1088,"extension":1089,"image":1090,"meta":1919,"navigation":771,"path":1092,"readingTime":670,"seo":1920,"stem":1094,"tags":1921,"updatedAt":6,"__hash__":1099},{"type":8,"value":1103,"toc":1898},[1104,1106,1108,1110,1112,1134,1136,1150,1152,1172,1174,1186,1188,1190,1212,1292,1294,1340,1342,1344,1372,1376,1378,1442,1448,1450,1520,1526,1528,1530,1610,1612,1684,1686,1790,1792,1868,1870,1894,1896],[11,1105,14],{"id":13},[16,1107,18],{},[11,1109,22],{"id":21},[16,1111,25],{},[27,1113,1114,1118,1122,1126,1130],{},[30,1115,32,1116],{},[34,1117,36],{},[30,1119,39,1120],{},[34,1121,42],{},[30,1123,45,1124],{},[34,1125,48],{},[30,1127,51,1128],{},[34,1129,54],{},[30,1131,57,1132],{},[34,1133,60],{},[11,1135,64],{"id":63},[27,1137,1138,1142,1146,1148],{},[30,1139,69,1140,73],{},[34,1141,72],{},[30,1143,69,1144,73],{},[34,1145,78],{},[30,1147,81],{},[30,1149,84],{},[11,1151,88],{"id":87},[90,1153,1154,1160,1166],{},[30,1155,1156,97,1158],{},[34,1157,96],{},[34,1159,100],{},[30,1161,1162,97,1164],{},[34,1163,105],{},[34,1165,108],{},[30,1167,1168,97,1170],{},[34,1169,113],{},[34,1171,116],{},[11,1173,120],{"id":119},[122,1175,1176],{"className":124,"code":125,"filename":126,"language":127,"meta":128,"style":128},[34,1177,1178,1182],{"__ignoreMap":128},[132,1179,1180],{"class":134,"line":135},[132,1181,138],{},[132,1183,1184],{"class":134,"line":141},[132,1185,144],{},[11,1187,148],{"id":147},[16,1189,151],{},[90,1191,1192,1196,1200,1204,1208],{},[30,1193,1194,159],{},[34,1195,158],{},[30,1197,1198,164],{},[34,1199,34],{},[30,1201,1202,170],{},[34,1203,169],{},[30,1205,1206,176],{},[34,1207,175],{},[30,1209,1210,182],{},[34,1211,181],{},[122,1213,1214],{"className":185,"code":186,"filename":187,"language":188,"meta":128,"style":128},[34,1215,1216,1220,1238,1256,1268,1284,1288],{"__ignoreMap":128},[132,1217,1218],{"class":134,"line":135},[132,1219,196],{"class":195},[132,1221,1222,1224,1226,1228,1230,1232,1234,1236],{"class":134,"line":141},[132,1223,201],{"class":195},[132,1225,158],{"class":204},[132,1227,207],{"class":195},[132,1229,210],{"class":195},[132,1231,213],{"class":195},[132,1233,217],{"class":216},[132,1235,207],{"class":195},[132,1237,222],{"class":195},[132,1239,1240,1242,1244,1246,1248,1250,1252,1254],{"class":134,"line":225},[132,1241,201],{"class":195},[132,1243,34],{"class":204},[132,1245,207],{"class":195},[132,1247,210],{"class":195},[132,1249,213],{"class":195},[132,1251,238],{"class":216},[132,1253,207],{"class":195},[132,1255,222],{"class":195},[132,1257,1258,1260,1262,1264,1266],{"class":134,"line":245},[132,1259,201],{"class":195},[132,1261,250],{"class":204},[132,1263,207],{"class":195},[132,1265,210],{"class":195},[132,1267,257],{"class":195},[132,1269,1270,1272,1274,1276,1278,1280,1282],{"class":134,"line":260},[132,1271,263],{"class":195},[132,1273,267],{"class":266},[132,1275,207],{"class":195},[132,1277,210],{"class":195},[132,1279,213],{"class":195},[132,1281,276],{"class":216},[132,1283,279],{"class":195},[132,1285,1286],{"class":134,"line":282},[132,1287,285],{"class":195},[132,1289,1290],{"class":134,"line":288},[132,1291,291],{"class":195},[11,1293,295],{"id":294},[122,1295,1296],{"className":185,"code":298,"filename":299,"language":188,"meta":128,"style":128},[34,1297,1298,1302,1320,1336],{"__ignoreMap":128},[132,1299,1300],{"class":134,"line":135},[132,1301,196],{"class":195},[132,1303,1304,1306,1308,1310,1312,1314,1316,1318],{"class":134,"line":141},[132,1305,201],{"class":195},[132,1307,312],{"class":204},[132,1309,207],{"class":195},[132,1311,210],{"class":195},[132,1313,213],{"class":195},[132,1315,321],{"class":216},[132,1317,207],{"class":195},[132,1319,222],{"class":195},[132,1321,1322,1324,1326,1328,1330,1332,1334],{"class":134,"line":225},[132,1323,201],{"class":195},[132,1325,332],{"class":204},[132,1327,207],{"class":195},[132,1329,210],{"class":195},[132,1331,213],{"class":195},[132,1333,341],{"class":216},[132,1335,279],{"class":195},[132,1337,1338],{"class":134,"line":245},[132,1339,291],{"class":195},[11,1341,351],{"id":350},[353,1343,356],{"id":355},[122,1345,1346],{"className":185,"code":359,"filename":360,"language":188,"meta":128,"style":128},[34,1347,1348,1352,1368],{"__ignoreMap":128},[132,1349,1350],{"class":134,"line":135},[132,1351,196],{"class":195},[132,1353,1354,1356,1358,1360,1362,1364,1366],{"class":134,"line":141},[132,1355,201],{"class":195},[132,1357,373],{"class":204},[132,1359,207],{"class":195},[132,1361,210],{"class":195},[132,1363,213],{"class":195},[132,1365,382],{"class":216},[132,1367,279],{"class":195},[132,1369,1370],{"class":134,"line":225},[132,1371,291],{"class":195},[16,1373,391,1374,395],{},[34,1375,394],{},[353,1377,399],{"id":398},[122,1379,1380],{"className":185,"code":402,"filename":403,"language":188,"meta":128,"style":128},[34,1381,1382,1386,1404,1422,1438],{"__ignoreMap":128},[132,1383,1384],{"class":134,"line":135},[132,1385,196],{"class":195},[132,1387,1388,1390,1392,1394,1396,1398,1400,1402],{"class":134,"line":141},[132,1389,201],{"class":195},[132,1391,416],{"class":204},[132,1393,207],{"class":195},[132,1395,210],{"class":195},[132,1397,213],{"class":195},[132,1399,425],{"class":216},[132,1401,207],{"class":195},[132,1403,222],{"class":195},[132,1405,1406,1408,1410,1412,1414,1416,1418,1420],{"class":134,"line":225},[132,1407,201],{"class":195},[132,1409,436],{"class":204},[132,1411,207],{"class":195},[132,1413,210],{"class":195},[132,1415,213],{"class":195},[132,1417,78],{"class":216},[132,1419,207],{"class":195},[132,1421,222],{"class":195},[132,1423,1424,1426,1428,1430,1432,1434,1436],{"class":134,"line":245},[132,1425,201],{"class":195},[132,1427,34],{"class":204},[132,1429,207],{"class":195},[132,1431,210],{"class":195},[132,1433,213],{"class":195},[132,1435,463],{"class":216},[132,1437,279],{"class":195},[132,1439,1440],{"class":134,"line":260},[132,1441,291],{"class":195},[16,1443,472,1444,475,1446,478],{},[34,1445,72],{},[34,1447,78],{},[353,1449,482],{"id":481},[122,1451,1452],{"className":185,"code":485,"filename":486,"language":188,"meta":128,"style":128},[34,1453,1454,1458,1476,1488,1500,1508,1512,1516],{"__ignoreMap":128},[132,1455,1456],{"class":134,"line":135},[132,1457,196],{"class":195},[132,1459,1460,1462,1464,1466,1468,1470,1472,1474],{"class":134,"line":141},[132,1461,201],{"class":195},[132,1463,373],{"class":204},[132,1465,207],{"class":195},[132,1467,210],{"class":195},[132,1469,213],{"class":195},[132,1471,507],{"class":216},[132,1473,207],{"class":195},[132,1475,222],{"class":195},[132,1477,1478,1480,1482,1484,1486],{"class":134,"line":225},[132,1479,201],{"class":195},[132,1481,518],{"class":204},[132,1483,207],{"class":195},[132,1485,210],{"class":195},[132,1487,257],{"class":195},[132,1489,1490,1492,1494,1496,1498],{"class":134,"line":245},[132,1491,263],{"class":195},[132,1493,34],{"class":266},[132,1495,207],{"class":195},[132,1497,210],{"class":195},[132,1499,537],{"class":195},[132,1501,1502,1504,1506],{"class":134,"line":260},[132,1503,542],{"class":195},[132,1505,507],{"class":216},[132,1507,279],{"class":195},[132,1509,1510],{"class":134,"line":282},[132,1511,551],{"class":195},[132,1513,1514],{"class":134,"line":288},[132,1515,285],{"class":195},[132,1517,1518],{"class":134,"line":558},[132,1519,291],{"class":195},[16,1521,563,1522,475,1524,568],{},[34,1523,158],{},[34,1525,34],{},[11,1527,572],{"id":571},[353,1529,576],{"id":575},[122,1531,1532],{"className":579,"code":580,"filename":581,"language":582,"meta":128,"style":128},[34,1533,1534,1544,1552,1564,1576,1584,1588,1592,1596,1600,1604],{"__ignoreMap":128},[132,1535,1536,1538,1540,1542],{"class":134,"line":135},[132,1537,575],{"class":266},[132,1539,591],{"class":216},[132,1541,594],{"class":216},[132,1543,598],{"class":597},[132,1545,1546,1548,1550],{"class":134,"line":141},[132,1547,603],{"class":216},[132,1549,606],{"class":216},[132,1551,598],{"class":597},[132,1553,1554,1556,1558,1560,1562],{"class":134,"line":225},[132,1555,613],{"class":216},[132,1557,616],{"class":195},[132,1559,619],{"class":216},[132,1561,622],{"class":195},[132,1563,598],{"class":597},[132,1565,1566,1568,1570,1572,1574],{"class":134,"line":245},[132,1567,613],{"class":216},[132,1569,616],{"class":195},[132,1571,633],{"class":216},[132,1573,622],{"class":195},[132,1575,598],{"class":597},[132,1577,1578,1580,1582],{"class":134,"line":260},[132,1579,642],{"class":216},[132,1581,616],{"class":195},[132,1583,196],{"class":216},[132,1585,1586],{"class":134,"line":282},[132,1587,651],{"class":216},[132,1589,1590],{"class":134,"line":288},[132,1591,656],{"class":216},[132,1593,1594],{"class":134,"line":558},[132,1595,661],{"class":216},[132,1597,1598],{"class":134,"line":664},[132,1599,667],{"class":216},[132,1601,1602],{"class":134,"line":670},[132,1603,673],{"class":216},[132,1605,1606,1608],{"class":134,"line":676},[132,1607,679],{"class":216},[132,1609,682],{"class":195},[353,1611,686],{"id":685},[122,1613,1614],{"className":689,"code":690,"filename":691,"language":685,"meta":128,"style":128},[34,1615,1616,1620,1624,1628,1632,1636,1640,1644,1648,1652,1656,1660,1664,1668,1672,1676,1680],{"__ignoreMap":128},[132,1617,1618],{"class":134,"line":135},[132,1619,698],{},[132,1621,1622],{"class":134,"line":141},[132,1623,703],{},[132,1625,1626],{"class":134,"line":225},[132,1627,708],{},[132,1629,1630],{"class":134,"line":245},[132,1631,713],{},[132,1633,1634],{"class":134,"line":260},[132,1635,718],{},[132,1637,1638],{"class":134,"line":282},[132,1639,723],{},[132,1641,1642],{"class":134,"line":288},[132,1643,728],{},[132,1645,1646],{"class":134,"line":558},[132,1647,733],{},[132,1649,1650],{"class":134,"line":664},[132,1651,738],{},[132,1653,1654],{"class":134,"line":670},[132,1655,743],{},[132,1657,1658],{"class":134,"line":676},[132,1659,748],{},[132,1661,1662],{"class":134,"line":751},[132,1663,673],{},[132,1665,1666],{"class":134,"line":756},[132,1667,759],{},[132,1669,1670],{"class":134,"line":762},[132,1671,765],{},[132,1673,1674],{"class":134,"line":768},[132,1675,772],{"emptyLinePlaceholder":771},[132,1677,1678],{"class":134,"line":775},[132,1679,778],{},[132,1681,1682],{"class":134,"line":781},[132,1683,784],{},[353,1685,788],{"id":787},[122,1687,1688],{"className":791,"code":792,"filename":793,"language":787,"meta":128,"style":128},[34,1689,1690,1694,1698,1702,1706,1710,1714,1718,1722,1726,1730,1734,1738,1742,1746,1750,1754,1758,1762,1766,1770,1774,1778,1782,1786],{"__ignoreMap":128},[132,1691,1692],{"class":134,"line":135},[132,1693,800],{},[132,1695,1696],{"class":134,"line":141},[132,1697,772],{"emptyLinePlaceholder":771},[132,1699,1700],{"class":134,"line":225},[132,1701,809],{},[132,1703,1704],{"class":134,"line":245},[132,1705,814],{},[132,1707,1708],{"class":134,"line":260},[132,1709,819],{},[132,1711,1712],{"class":134,"line":282},[132,1713,824],{},[132,1715,1716],{"class":134,"line":288},[132,1717,829],{},[132,1719,1720],{"class":134,"line":558},[132,1721,834],{},[132,1723,1724],{"class":134,"line":664},[132,1725,839],{},[132,1727,1728],{"class":134,"line":670},[132,1729,772],{"emptyLinePlaceholder":771},[132,1731,1732],{"class":134,"line":676},[132,1733,848],{},[132,1735,1736],{"class":134,"line":751},[132,1737,853],{},[132,1739,1740],{"class":134,"line":756},[132,1741,858],{},[132,1743,1744],{"class":134,"line":762},[132,1745,863],{},[132,1747,1748],{"class":134,"line":768},[132,1749,868],{},[132,1751,1752],{"class":134,"line":775},[132,1753,873],{},[132,1755,1756],{"class":134,"line":781},[132,1757,878],{},[132,1759,1760],{"class":134,"line":881},[132,1761,834],{},[132,1763,1764],{"class":134,"line":886},[132,1765,889],{},[132,1767,1768],{"class":134,"line":892},[132,1769,895],{},[132,1771,1772],{"class":134,"line":898},[132,1773,772],{"emptyLinePlaceholder":771},[132,1775,1776],{"class":134,"line":903},[132,1777,906],{},[132,1779,1780],{"class":134,"line":909},[132,1781,912],{},[132,1783,1784],{"class":134,"line":915},[132,1785,772],{"emptyLinePlaceholder":771},[132,1787,1788],{"class":134,"line":920},[132,1789,923],{},[353,1791,927],{"id":926},[122,1793,1794],{"className":930,"code":931,"filename":932,"language":926,"meta":128,"style":128},[34,1795,1796,1800,1804,1808,1812,1816,1820,1824,1828,1832,1836,1840,1844,1848,1852,1856,1860,1864],{"__ignoreMap":128},[132,1797,1798],{"class":134,"line":135},[132,1799,939],{},[132,1801,1802],{"class":134,"line":141},[132,1803,772],{"emptyLinePlaceholder":771},[132,1805,1806],{"class":134,"line":225},[132,1807,948],{},[132,1809,1810],{"class":134,"line":245},[132,1811,953],{},[132,1813,1814],{"class":134,"line":260},[132,1815,958],{},[132,1817,1818],{"class":134,"line":282},[132,1819,963],{},[132,1821,1822],{"class":134,"line":288},[132,1823,291],{},[132,1825,1826],{"class":134,"line":558},[132,1827,972],{},[132,1829,1830],{"class":134,"line":664},[132,1831,977],{},[132,1833,1834],{"class":134,"line":670},[132,1835,982],{},[132,1837,1838],{"class":134,"line":676},[132,1839,987],{},[132,1841,1842],{"class":134,"line":751},[132,1843,992],{},[132,1845,1846],{"class":134,"line":756},[132,1847,673],{},[132,1849,1850],{"class":134,"line":762},[132,1851,291],{},[132,1853,1854],{"class":134,"line":768},[132,1855,772],{"emptyLinePlaceholder":771},[132,1857,1858],{"class":134,"line":775},[132,1859,1009],{},[132,1861,1862],{"class":134,"line":781},[132,1863,1014],{},[132,1865,1866],{"class":134,"line":881},[132,1867,1019],{},[11,1869,1023],{"id":1022},[27,1871,1872,1876,1880,1884,1888],{},[30,1873,1028,1874,1031],{},[34,1875,36],{},[30,1877,1028,1878,1036],{},[34,1879,42],{},[30,1881,1039,1882,1042],{},[34,1883,48],{},[30,1885,1045,1886,1048],{},[34,1887,267],{},[30,1889,1051,1890,1054,1892,1057],{},[34,1891,312],{},[34,1893,60],{},[16,1895,1060],{},[1062,1897,1064],{},{"title":128,"searchDepth":141,"depth":141,"links":1899},[1900,1901,1902,1903,1904,1905,1906,1907,1912,1918],{"id":13,"depth":141,"text":14},{"id":21,"depth":141,"text":22},{"id":63,"depth":141,"text":64},{"id":87,"depth":141,"text":88},{"id":119,"depth":141,"text":120},{"id":147,"depth":141,"text":148},{"id":294,"depth":141,"text":295},{"id":350,"depth":141,"text":351,"children":1908},[1909,1910,1911],{"id":355,"depth":225,"text":356},{"id":398,"depth":225,"text":399},{"id":481,"depth":225,"text":482},{"id":571,"depth":141,"text":572,"children":1913},[1914,1915,1916,1917],{"id":575,"depth":225,"text":576},{"id":685,"depth":225,"text":686},{"id":787,"depth":225,"text":788},{"id":926,"depth":225,"text":927},{"id":1022,"depth":141,"text":1023},{},{"title":5,"description":1088},[1096,1097,1098],{"id":1923,"title":1924,"author":6,"body":1925,"category":1086,"date":2991,"description":2992,"extension":1089,"image":2993,"meta":2994,"navigation":771,"path":2995,"readingTime":670,"seo":2996,"stem":2997,"tags":2998,"updatedAt":6,"__hash__":3000},"blog/blog/cloud-sms-otp-guide.md","مستندات Cloud SMS OTP رسانکس",{"type":8,"value":1926,"toc":2965},[1927,1929,1932,1934,1937,1966,1968,1987,1989,2011,2013,2025,2027,2029,2055,2068,2072,2154,2160,2276,2278,2324,2326,2328,2356,2366,2368,2434,2441,2445,2517,2521,2552,2563,2565,2567,2651,2653,2729,2731,2839,2841,2921,2925,2960,2963],[11,1928,14],{"id":13},[16,1930,1931],{},"این صفحه دقیقا نشان می‌دهد Cloud SMS OTP را چگونه در رسانکس تنظیم کنید و از سیستم خودتان به Endpoint رسمی درخواست بزنید.",[11,1933,22],{"id":21},[16,1935,1936],{},"مسیرها را به همین ترتیب انجام دهید:",[27,1938,1939,1945,1951,1955,1960],{},[30,1940,1941,1942],{},"تنظیم سرویس‌دهنده پیامکی: ",[34,1943,1944],{},"/app/sms-otp/providers",[30,1946,1947,1948],{},"تنظیم صف پشتیبان: ",[34,1949,1950],{},"/app/sms-otp/routing",[30,1952,45,1953],{},[34,1954,48],{},[30,1956,51,1957],{},[34,1958,1959],{},"/app/webservice/sms_otp",[30,1961,1962,1963],{},"بررسی گزارش ارسال: ",[34,1964,1965],{},"/app/sms-otp/logs",[11,1967,64],{"id":63},[27,1969,1970,1975,1979,1982,1985],{},[30,1971,69,1972,73],{},[34,1973,1974],{},"sms_otp",[30,1976,69,1977,73],{},[34,1978,78],{},[30,1980,1981],{},"حداقل یک سرویس‌دهنده پیامکی تنظیم و فعال شده باشد.",[30,1983,1984],{},"برای سرویس‌دهنده فعال، نام الگوی OTP ثبت شده باشد.",[30,1986,84],{},[11,1988,88],{"id":87},[90,1990,1991,1997,2004],{},[30,1992,1993,97,1995],{},[34,1994,96],{},[34,1996,100],{},[30,1998,1999,97,2001],{},[34,2000,105],{},[34,2002,2003],{},"/v1/sms-otp/send",[30,2005,2006,97,2008],{},[34,2007,113],{},[34,2009,2010],{},"https://api.rasanex.com/v1/sms-otp/send",[11,2012,120],{"id":119},[122,2014,2015],{"className":124,"code":125,"filename":126,"language":127,"meta":128,"style":128},[34,2016,2017,2021],{"__ignoreMap":128},[132,2018,2019],{"class":134,"line":135},[132,2020,138],{},[132,2022,2023],{"class":134,"line":141},[132,2024,144],{},[11,2026,148],{"id":147},[16,2028,151],{},[90,2030,2031,2036,2041,2046,2051],{},[30,2032,2033,2035],{},[34,2034,158],{}," اجباری: شماره مقصد",[30,2037,2038,2040],{},[34,2039,34],{}," اختیاری: کد OTP",[30,2042,2043,2045],{},[34,2044,169],{}," اختیاری: پارامترهای پویا",[30,2047,2048,2050],{},[34,2049,175],{}," اختیاری: جلوگیری از ارسال تکراری",[30,2052,2053,182],{},[34,2054,181],{},[16,2056,2057,2058,2060,2061,2063,2064,2067],{},"نکته مهم: در این API باید حداقل یکی از ",[34,2059,34],{}," یا ",[34,2062,169],{}," را بفرستید. اگر هیچ‌کدام ارسال نشود، خطای ",[34,2065,2066],{},"422"," می‌گیرید.",[353,2069,2071],{"id":2070},"نمونه-استاندارد-پیشنهادی","نمونه استاندارد (پیشنهادی)",[122,2073,2075],{"className":185,"code":2074,"filename":187,"language":188,"meta":128,"style":128},"{\n  \"phone\": \"09120000000\",\n  \"code\": \"4821\",\n  \"options\": {\n    \"idempotency_key\": \"sms-otp-login-20260411-01\"\n  }\n}\n",[34,2076,2077,2081,2099,2117,2129,2146,2150],{"__ignoreMap":128},[132,2078,2079],{"class":134,"line":135},[132,2080,196],{"class":195},[132,2082,2083,2085,2087,2089,2091,2093,2095,2097],{"class":134,"line":141},[132,2084,201],{"class":195},[132,2086,158],{"class":204},[132,2088,207],{"class":195},[132,2090,210],{"class":195},[132,2092,213],{"class":195},[132,2094,217],{"class":216},[132,2096,207],{"class":195},[132,2098,222],{"class":195},[132,2100,2101,2103,2105,2107,2109,2111,2113,2115],{"class":134,"line":225},[132,2102,201],{"class":195},[132,2104,34],{"class":204},[132,2106,207],{"class":195},[132,2108,210],{"class":195},[132,2110,213],{"class":195},[132,2112,238],{"class":216},[132,2114,207],{"class":195},[132,2116,222],{"class":195},[132,2118,2119,2121,2123,2125,2127],{"class":134,"line":245},[132,2120,201],{"class":195},[132,2122,250],{"class":204},[132,2124,207],{"class":195},[132,2126,210],{"class":195},[132,2128,257],{"class":195},[132,2130,2131,2133,2135,2137,2139,2141,2144],{"class":134,"line":260},[132,2132,263],{"class":195},[132,2134,267],{"class":266},[132,2136,207],{"class":195},[132,2138,210],{"class":195},[132,2140,213],{"class":195},[132,2142,2143],{"class":216},"sms-otp-login-20260411-01",[132,2145,279],{"class":195},[132,2147,2148],{"class":134,"line":282},[132,2149,285],{"class":195},[132,2151,2152],{"class":134,"line":288},[132,2153,291],{"class":195},[353,2155,2157,2158],{"id":2156},"نمونه-با-params","نمونه با ",[34,2159,169],{},[122,2161,2164],{"className":185,"code":2162,"filename":2163,"language":188,"meta":128,"style":128},"{\n  \"phone\": \"09120000000\",\n  \"params\": {\n    \"token\": \"4821\",\n    \"code\": \"4821\"\n  },\n  \"options\": {\n    \"idempotency_key\": \"sms-otp-login-20260411-02\"\n  }\n}\n","request-with-params.json",[34,2165,2166,2170,2188,2200,2219,2235,2239,2251,2268,2272],{"__ignoreMap":128},[132,2167,2168],{"class":134,"line":135},[132,2169,196],{"class":195},[132,2171,2172,2174,2176,2178,2180,2182,2184,2186],{"class":134,"line":141},[132,2173,201],{"class":195},[132,2175,158],{"class":204},[132,2177,207],{"class":195},[132,2179,210],{"class":195},[132,2181,213],{"class":195},[132,2183,217],{"class":216},[132,2185,207],{"class":195},[132,2187,222],{"class":195},[132,2189,2190,2192,2194,2196,2198],{"class":134,"line":225},[132,2191,201],{"class":195},[132,2193,169],{"class":204},[132,2195,207],{"class":195},[132,2197,210],{"class":195},[132,2199,257],{"class":195},[132,2201,2202,2204,2207,2209,2211,2213,2215,2217],{"class":134,"line":245},[132,2203,263],{"class":195},[132,2205,2206],{"class":266},"token",[132,2208,207],{"class":195},[132,2210,210],{"class":195},[132,2212,213],{"class":195},[132,2214,238],{"class":216},[132,2216,207],{"class":195},[132,2218,222],{"class":195},[132,2220,2221,2223,2225,2227,2229,2231,2233],{"class":134,"line":260},[132,2222,263],{"class":195},[132,2224,34],{"class":266},[132,2226,207],{"class":195},[132,2228,210],{"class":195},[132,2230,213],{"class":195},[132,2232,238],{"class":216},[132,2234,279],{"class":195},[132,2236,2237],{"class":134,"line":282},[132,2238,723],{"class":195},[132,2240,2241,2243,2245,2247,2249],{"class":134,"line":288},[132,2242,201],{"class":195},[132,2244,250],{"class":204},[132,2246,207],{"class":195},[132,2248,210],{"class":195},[132,2250,257],{"class":195},[132,2252,2253,2255,2257,2259,2261,2263,2266],{"class":134,"line":558},[132,2254,263],{"class":195},[132,2256,267],{"class":266},[132,2258,207],{"class":195},[132,2260,210],{"class":195},[132,2262,213],{"class":195},[132,2264,2265],{"class":216},"sms-otp-login-20260411-02",[132,2267,279],{"class":195},[132,2269,2270],{"class":134,"line":664},[132,2271,285],{"class":195},[132,2273,2274],{"class":134,"line":670},[132,2275,291],{"class":195},[11,2277,295],{"id":294},[122,2279,2280],{"className":185,"code":298,"filename":299,"language":188,"meta":128,"style":128},[34,2281,2282,2286,2304,2320],{"__ignoreMap":128},[132,2283,2284],{"class":134,"line":135},[132,2285,196],{"class":195},[132,2287,2288,2290,2292,2294,2296,2298,2300,2302],{"class":134,"line":141},[132,2289,201],{"class":195},[132,2291,312],{"class":204},[132,2293,207],{"class":195},[132,2295,210],{"class":195},[132,2297,213],{"class":195},[132,2299,321],{"class":216},[132,2301,207],{"class":195},[132,2303,222],{"class":195},[132,2305,2306,2308,2310,2312,2314,2316,2318],{"class":134,"line":225},[132,2307,201],{"class":195},[132,2309,332],{"class":204},[132,2311,207],{"class":195},[132,2313,210],{"class":195},[132,2315,213],{"class":195},[132,2317,341],{"class":216},[132,2319,279],{"class":195},[132,2321,2322],{"class":134,"line":245},[132,2323,291],{"class":195},[11,2325,351],{"id":350},[353,2327,356],{"id":355},[122,2329,2330],{"className":185,"code":359,"filename":360,"language":188,"meta":128,"style":128},[34,2331,2332,2336,2352],{"__ignoreMap":128},[132,2333,2334],{"class":134,"line":135},[132,2335,196],{"class":195},[132,2337,2338,2340,2342,2344,2346,2348,2350],{"class":134,"line":141},[132,2339,201],{"class":195},[132,2341,373],{"class":204},[132,2343,207],{"class":195},[132,2345,210],{"class":195},[132,2347,213],{"class":195},[132,2349,382],{"class":216},[132,2351,279],{"class":195},[132,2353,2354],{"class":134,"line":225},[132,2355,291],{"class":195},[16,2357,2358,2359,2361,2362,2365],{},"اقدام: ",[34,2360,394],{}," را با ",[34,2363,2364],{},"Bearer"," و API Key معتبر دوباره ارسال کنید.",[353,2367,399],{"id":398},[122,2369,2371],{"className":185,"code":2370,"filename":403,"language":188,"meta":128,"style":128},"{\n  \"error\": \"Webservice module must be enabled to use sms_otp webservice APIs.\",\n  \"module_id\": \"webservice\",\n  \"code\": \"module_disabled\"\n}\n",[34,2372,2373,2377,2396,2414,2430],{"__ignoreMap":128},[132,2374,2375],{"class":134,"line":135},[132,2376,196],{"class":195},[132,2378,2379,2381,2383,2385,2387,2389,2392,2394],{"class":134,"line":141},[132,2380,201],{"class":195},[132,2382,416],{"class":204},[132,2384,207],{"class":195},[132,2386,210],{"class":195},[132,2388,213],{"class":195},[132,2390,2391],{"class":216},"Webservice module must be enabled to use sms_otp webservice APIs.",[132,2393,207],{"class":195},[132,2395,222],{"class":195},[132,2397,2398,2400,2402,2404,2406,2408,2410,2412],{"class":134,"line":225},[132,2399,201],{"class":195},[132,2401,436],{"class":204},[132,2403,207],{"class":195},[132,2405,210],{"class":195},[132,2407,213],{"class":195},[132,2409,78],{"class":216},[132,2411,207],{"class":195},[132,2413,222],{"class":195},[132,2415,2416,2418,2420,2422,2424,2426,2428],{"class":134,"line":245},[132,2417,201],{"class":195},[132,2419,34],{"class":204},[132,2421,207],{"class":195},[132,2423,210],{"class":195},[132,2425,213],{"class":195},[132,2427,463],{"class":216},[132,2429,279],{"class":195},[132,2431,2432],{"class":134,"line":260},[132,2433,291],{"class":195},[16,2435,2436,2437,475,2439,478],{},"اقدام: در پنل، فعال بودن ",[34,2438,1974],{},[34,2440,78],{},[353,2442,2444],{"id":2443},"_422-بدنه-نامعتبر-نمونه-۱-خطای-ولیدیشن","422 - بدنه نامعتبر (نمونه ۱: خطای ولیدیشن)",[122,2446,2448],{"className":185,"code":2447,"filename":486,"language":188,"meta":128,"style":128},"{\n  \"message\": \"The phone field is required.\",\n  \"errors\": {\n    \"phone\": [\n      \"The phone field is required.\"\n    ]\n  }\n}\n",[34,2449,2450,2454,2473,2485,2497,2505,2509,2513],{"__ignoreMap":128},[132,2451,2452],{"class":134,"line":135},[132,2453,196],{"class":195},[132,2455,2456,2458,2460,2462,2464,2466,2469,2471],{"class":134,"line":141},[132,2457,201],{"class":195},[132,2459,373],{"class":204},[132,2461,207],{"class":195},[132,2463,210],{"class":195},[132,2465,213],{"class":195},[132,2467,2468],{"class":216},"The phone field is required.",[132,2470,207],{"class":195},[132,2472,222],{"class":195},[132,2474,2475,2477,2479,2481,2483],{"class":134,"line":225},[132,2476,201],{"class":195},[132,2478,518],{"class":204},[132,2480,207],{"class":195},[132,2482,210],{"class":195},[132,2484,257],{"class":195},[132,2486,2487,2489,2491,2493,2495],{"class":134,"line":245},[132,2488,263],{"class":195},[132,2490,158],{"class":266},[132,2492,207],{"class":195},[132,2494,210],{"class":195},[132,2496,537],{"class":195},[132,2498,2499,2501,2503],{"class":134,"line":260},[132,2500,542],{"class":195},[132,2502,2468],{"class":216},[132,2504,279],{"class":195},[132,2506,2507],{"class":134,"line":282},[132,2508,551],{"class":195},[132,2510,2511],{"class":134,"line":288},[132,2512,285],{"class":195},[132,2514,2515],{"class":134,"line":558},[132,2516,291],{"class":195},[353,2518,2520],{"id":2519},"_422-بدنه-نامعتبر-نمونه-۲-خطای-قواعد-ماژول","422 - بدنه نامعتبر (نمونه ۲: خطای قواعد ماژول)",[122,2522,2525],{"className":185,"code":2523,"filename":2524,"language":188,"meta":128,"style":128},"{\n  \"message\": \"Either code or params is required.\"\n}\n","422-business-rule.json",[34,2526,2527,2531,2548],{"__ignoreMap":128},[132,2528,2529],{"class":134,"line":135},[132,2530,196],{"class":195},[132,2532,2533,2535,2537,2539,2541,2543,2546],{"class":134,"line":141},[132,2534,201],{"class":195},[132,2536,373],{"class":204},[132,2538,207],{"class":195},[132,2540,210],{"class":195},[132,2542,213],{"class":195},[132,2544,2545],{"class":216},"Either code or params is required.",[132,2547,279],{"class":195},[132,2549,2550],{"class":134,"line":225},[132,2551,291],{"class":195},[16,2553,2554,2555,2557,2558,2060,2560,2562],{},"اقدام: فیلد ",[34,2556,158],{}," را همیشه بفرستید و علاوه بر آن حداقل یکی از ",[34,2559,34],{},[34,2561,169],{}," را ارسال کنید.",[11,2564,572],{"id":571},[353,2566,576],{"id":575},[122,2568,2571],{"className":579,"code":2569,"filename":2570,"language":582,"meta":128,"style":128},"curl --request POST \\\n  --url https://api.rasanex.com/v1/sms-otp/send \\\n  --header 'Authorization: Bearer YOUR_API_KEY' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"phone\": \"09120000000\",\n    \"code\": \"4821\",\n    \"options\": {\n      \"idempotency_key\": \"sms-otp-login-20260411-01\"\n    }\n  }'\n","send-sms-otp.sh",[34,2572,2573,2583,2592,2604,2616,2624,2628,2632,2636,2641,2645],{"__ignoreMap":128},[132,2574,2575,2577,2579,2581],{"class":134,"line":135},[132,2576,575],{"class":266},[132,2578,591],{"class":216},[132,2580,594],{"class":216},[132,2582,598],{"class":597},[132,2584,2585,2587,2590],{"class":134,"line":141},[132,2586,603],{"class":216},[132,2588,2589],{"class":216}," https://api.rasanex.com/v1/sms-otp/send",[132,2591,598],{"class":597},[132,2593,2594,2596,2598,2600,2602],{"class":134,"line":225},[132,2595,613],{"class":216},[132,2597,616],{"class":195},[132,2599,619],{"class":216},[132,2601,622],{"class":195},[132,2603,598],{"class":597},[132,2605,2606,2608,2610,2612,2614],{"class":134,"line":245},[132,2607,613],{"class":216},[132,2609,616],{"class":195},[132,2611,633],{"class":216},[132,2613,622],{"class":195},[132,2615,598],{"class":597},[132,2617,2618,2620,2622],{"class":134,"line":260},[132,2619,642],{"class":216},[132,2621,616],{"class":195},[132,2623,196],{"class":216},[132,2625,2626],{"class":134,"line":282},[132,2627,651],{"class":216},[132,2629,2630],{"class":134,"line":288},[132,2631,656],{"class":216},[132,2633,2634],{"class":134,"line":558},[132,2635,661],{"class":216},[132,2637,2638],{"class":134,"line":664},[132,2639,2640],{"class":216},"      \"idempotency_key\": \"sms-otp-login-20260411-01\"\n",[132,2642,2643],{"class":134,"line":670},[132,2644,673],{"class":216},[132,2646,2647,2649],{"class":134,"line":676},[132,2648,679],{"class":216},[132,2650,682],{"class":195},[353,2652,686],{"id":685},[122,2654,2657],{"className":689,"code":2655,"filename":2656,"language":685,"meta":128,"style":128},"const response = await fetch('https://api.rasanex.com/v1/sms-otp/send', {\n  method: 'POST',\n  headers: {\n    Authorization: 'Bearer YOUR_API_KEY',\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    phone: '09120000000',\n    code: '4821',\n    options: {\n      idempotency_key: 'sms-otp-login-20260411-01'\n    }\n  })\n})\n\nconst data = await response.json()\nconsole.log(data)\n","sendSmsOtp.js",[34,2658,2659,2664,2668,2672,2676,2680,2684,2688,2692,2696,2700,2705,2709,2713,2717,2721,2725],{"__ignoreMap":128},[132,2660,2661],{"class":134,"line":135},[132,2662,2663],{},"const response = await fetch('https://api.rasanex.com/v1/sms-otp/send', {\n",[132,2665,2666],{"class":134,"line":141},[132,2667,703],{},[132,2669,2670],{"class":134,"line":225},[132,2671,708],{},[132,2673,2674],{"class":134,"line":245},[132,2675,713],{},[132,2677,2678],{"class":134,"line":260},[132,2679,718],{},[132,2681,2682],{"class":134,"line":282},[132,2683,723],{},[132,2685,2686],{"class":134,"line":288},[132,2687,728],{},[132,2689,2690],{"class":134,"line":558},[132,2691,733],{},[132,2693,2694],{"class":134,"line":664},[132,2695,738],{},[132,2697,2698],{"class":134,"line":670},[132,2699,743],{},[132,2701,2702],{"class":134,"line":676},[132,2703,2704],{},"      idempotency_key: 'sms-otp-login-20260411-01'\n",[132,2706,2707],{"class":134,"line":751},[132,2708,673],{},[132,2710,2711],{"class":134,"line":756},[132,2712,759],{},[132,2714,2715],{"class":134,"line":762},[132,2716,765],{},[132,2718,2719],{"class":134,"line":768},[132,2720,772],{"emptyLinePlaceholder":771},[132,2722,2723],{"class":134,"line":775},[132,2724,778],{},[132,2726,2727],{"class":134,"line":781},[132,2728,784],{},[353,2730,788],{"id":787},[122,2732,2735],{"className":791,"code":2733,"filename":2734,"language":787,"meta":128,"style":128},"\u003C?php\n\n$payload = [\n    'phone' => '09120000000',\n    'code' => '4821',\n    'options' => [\n        'idempotency_key' => 'sms-otp-login-20260411-01',\n    ],\n];\n\n$ch = curl_init('https://api.rasanex.com/v1/sms-otp/send');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_POST => true,\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer YOUR_API_KEY',\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),\n]);\n\n$result = curl_exec($ch);\ncurl_close($ch);\n\necho $result;\n","send_sms_otp.php",[34,2736,2737,2741,2745,2749,2753,2757,2761,2766,2770,2774,2778,2783,2787,2791,2795,2799,2803,2807,2811,2815,2819,2823,2827,2831,2835],{"__ignoreMap":128},[132,2738,2739],{"class":134,"line":135},[132,2740,800],{},[132,2742,2743],{"class":134,"line":141},[132,2744,772],{"emptyLinePlaceholder":771},[132,2746,2747],{"class":134,"line":225},[132,2748,809],{},[132,2750,2751],{"class":134,"line":245},[132,2752,814],{},[132,2754,2755],{"class":134,"line":260},[132,2756,819],{},[132,2758,2759],{"class":134,"line":282},[132,2760,824],{},[132,2762,2763],{"class":134,"line":288},[132,2764,2765],{},"        'idempotency_key' => 'sms-otp-login-20260411-01',\n",[132,2767,2768],{"class":134,"line":558},[132,2769,834],{},[132,2771,2772],{"class":134,"line":664},[132,2773,839],{},[132,2775,2776],{"class":134,"line":670},[132,2777,772],{"emptyLinePlaceholder":771},[132,2779,2780],{"class":134,"line":676},[132,2781,2782],{},"$ch = curl_init('https://api.rasanex.com/v1/sms-otp/send');\n",[132,2784,2785],{"class":134,"line":751},[132,2786,853],{},[132,2788,2789],{"class":134,"line":756},[132,2790,858],{},[132,2792,2793],{"class":134,"line":762},[132,2794,863],{},[132,2796,2797],{"class":134,"line":768},[132,2798,868],{},[132,2800,2801],{"class":134,"line":775},[132,2802,873],{},[132,2804,2805],{"class":134,"line":781},[132,2806,878],{},[132,2808,2809],{"class":134,"line":881},[132,2810,834],{},[132,2812,2813],{"class":134,"line":886},[132,2814,889],{},[132,2816,2817],{"class":134,"line":892},[132,2818,895],{},[132,2820,2821],{"class":134,"line":898},[132,2822,772],{"emptyLinePlaceholder":771},[132,2824,2825],{"class":134,"line":903},[132,2826,906],{},[132,2828,2829],{"class":134,"line":909},[132,2830,912],{},[132,2832,2833],{"class":134,"line":915},[132,2834,772],{"emptyLinePlaceholder":771},[132,2836,2837],{"class":134,"line":920},[132,2838,923],{},[353,2840,927],{"id":926},[122,2842,2845],{"className":930,"code":2843,"filename":2844,"language":926,"meta":128,"style":128},"import requests\n\nurl = 'https://api.rasanex.com/v1/sms-otp/send'\nheaders = {\n    'Authorization': 'Bearer YOUR_API_KEY',\n    'Content-Type': 'application/json',\n}\npayload = {\n    'phone': '09120000000',\n    'code': '4821',\n    'options': {\n        'idempotency_key': 'sms-otp-login-20260411-01'\n    }\n}\n\nresponse = requests.post(url, json=payload, headers=headers, timeout=20)\nprint(response.status_code)\nprint(response.json())\n","send_sms_otp.py",[34,2846,2847,2851,2855,2860,2864,2868,2872,2876,2880,2884,2888,2892,2897,2901,2905,2909,2913,2917],{"__ignoreMap":128},[132,2848,2849],{"class":134,"line":135},[132,2850,939],{},[132,2852,2853],{"class":134,"line":141},[132,2854,772],{"emptyLinePlaceholder":771},[132,2856,2857],{"class":134,"line":225},[132,2858,2859],{},"url = 'https://api.rasanex.com/v1/sms-otp/send'\n",[132,2861,2862],{"class":134,"line":245},[132,2863,953],{},[132,2865,2866],{"class":134,"line":260},[132,2867,958],{},[132,2869,2870],{"class":134,"line":282},[132,2871,963],{},[132,2873,2874],{"class":134,"line":288},[132,2875,291],{},[132,2877,2878],{"class":134,"line":558},[132,2879,972],{},[132,2881,2882],{"class":134,"line":664},[132,2883,977],{},[132,2885,2886],{"class":134,"line":670},[132,2887,982],{},[132,2889,2890],{"class":134,"line":676},[132,2891,987],{},[132,2893,2894],{"class":134,"line":751},[132,2895,2896],{},"        'idempotency_key': 'sms-otp-login-20260411-01'\n",[132,2898,2899],{"class":134,"line":756},[132,2900,673],{},[132,2902,2903],{"class":134,"line":762},[132,2904,291],{},[132,2906,2907],{"class":134,"line":768},[132,2908,772],{"emptyLinePlaceholder":771},[132,2910,2911],{"class":134,"line":775},[132,2912,1009],{},[132,2914,2915],{"class":134,"line":781},[132,2916,1014],{},[132,2918,2919],{"class":134,"line":881},[132,2920,1019],{},[11,2922,2924],{"id":2923},"روال-پیشنهادی-برای-جلوگیری-از-خطا","روال پیشنهادی برای جلوگیری از خطا",[27,2926,2927,2930,2936,2942,2952],{},[30,2928,2929],{},"ابتدا در پنل، سرویس‌دهنده و نام الگو را کامل تنظیم کنید.",[30,2931,2932,2933,2935],{},"سپس در ",[34,2934,1950],{}," صف پشتیبان را ذخیره کنید.",[30,2937,2938,2939,2941],{},"بعد API Key را از ",[34,2940,48],{}," بگیرید.",[30,2943,2944,2945,2948,2949,2951],{},"در سیستم خودتان هنگام ",[34,2946,2947],{},"retry"," همان ",[34,2950,267],{}," را تکرار کنید.",[30,2953,2954,2955,1054,2957,2959],{},"نتیجه ارسال را با ",[34,2956,312],{},[34,2958,1965],{}," بررسی کنید.",[16,2961,2962],{},"اگر این ترتیب رعایت شود، خطاهای عملیاتی به‌صورت محسوسی کمتر می‌شود.",[1062,2964,1064],{},{"title":128,"searchDepth":141,"depth":141,"links":2966},[2967,2968,2969,2970,2971,2972,2977,2978,2984,2990],{"id":13,"depth":141,"text":14},{"id":21,"depth":141,"text":22},{"id":63,"depth":141,"text":64},{"id":87,"depth":141,"text":88},{"id":119,"depth":141,"text":120},{"id":147,"depth":141,"text":148,"children":2973},[2974,2975],{"id":2070,"depth":225,"text":2071},{"id":2156,"depth":225,"text":2976},"نمونه با params",{"id":294,"depth":141,"text":295},{"id":350,"depth":141,"text":351,"children":2979},[2980,2981,2982,2983],{"id":355,"depth":225,"text":356},{"id":398,"depth":225,"text":399},{"id":2443,"depth":225,"text":2444},{"id":2519,"depth":225,"text":2520},{"id":571,"depth":141,"text":572,"children":2985},[2986,2987,2988,2989],{"id":575,"depth":225,"text":576},{"id":685,"depth":225,"text":686},{"id":787,"depth":225,"text":788},{"id":926,"depth":225,"text":927},{"id":2923,"depth":141,"text":2924},"2026-04-11","راهنمای رسمی راه‌اندازی و استفاده از Cloud SMS OTP در رسانکس با مسیرهای دقیق پنل، Endpoint واقعی، نمونه درخواست و مدیریت خطا.","/images/blog/cloud-sms-otp-guide.svg",{},"/blog/cloud-sms-otp-guide",{"title":1924,"description":2992},"blog/cloud-sms-otp-guide",[2999,1097,1098],"Cloud SMS OTP","BVXkxGjNcbQA-7a9Kh6KvaZlsvGodbZf_3ukRner6Pc",{"id":3002,"title":3003,"author":6,"body":3004,"category":3225,"date":3226,"description":3227,"extension":1089,"image":3228,"meta":3229,"navigation":771,"path":3230,"readingTime":676,"seo":3231,"stem":3232,"tags":3233,"updatedAt":6,"__hash__":3235},"blog/blog/smart-cloud-otp-architecture.md","معماری هوشمند OTP: چطور SMS و Call را یکپارچه استفاده کنیم",{"type":8,"value":3005,"toc":3206},[3006,3010,3013,3017,3050,3054,3071,3074,3078,3082,3085,3089,3092,3096,3099,3110,3114,3117,3121,3141,3145,3149,3152,3156,3159,3163,3166,3170,3194,3198],[11,3007,3009],{"id":3008},"هدف-معماری-هوشمند-otp-چیست","هدف معماری هوشمند OTP چیست؟",[16,3011,3012],{},"هدف این است که کاربر در کمترین زمان کد ورود را بگیرد، حتی اگر یک کانال ارسال دچار اختلال شود. برای این کار باید منطق تصمیم‌گیری، صف پشتیبان و گزارش‌گیری درست طراحی شود.",[11,3014,3016],{"id":3015},"معماری-پیشنهادی-۵-لایه","معماری پیشنهادی ۵ لایه",[27,3018,3019,3026,3032,3038,3044],{},[30,3020,3021,3025],{},[3022,3023,3024],"strong",{},"لایه درخواست",": اپلیکیشن شما درخواست OTP را ثبت می‌کند.",[30,3027,3028,3031],{},[3022,3029,3030],{},"لایه تصمیم‌گیری",": مشخص می‌کند ابتدا SMS برود یا Call.",[30,3033,3034,3037],{},[3022,3035,3036],{},"لایه ارسال",": درخواست به سرویس‌دهنده فعال ارسال می‌شود.",[30,3039,3040,3043],{},[3022,3041,3042],{},"لایه پشتیبان",": در خطا، مسیر بعدی فعال می‌شود.",[30,3045,3046,3049],{},[3022,3047,3048],{},"لایه گزارش",": تمام رخدادها برای تحلیل ثبت می‌شوند.",[11,3051,3053],{"id":3052},"منطق-تصمیمگیری-پیشنهادی","منطق تصمیم‌گیری پیشنهادی",[90,3055,3056,3062,3068],{},[30,3057,3058,3059],{},"حالت عادی: ",[34,3060,3061],{},"SMS OTP",[30,3063,3064,3065],{},"اگر ارسال ناموفق بود یا تاخیر داشت: ",[34,3066,3067],{},"Call OTP",[30,3069,3070],{},"اگر تماس هم خطا خورد: تلاش از سرویس‌دهنده پشتیبان همان کانال",[16,3072,3073],{},"این منطق باید شفاف و قابل تنظیم باشد تا بعداً بتوانید بدون تغییر کد، رفتار سیستم را اصلاح کنید.",[11,3075,3077],{"id":3076},"چطور-در-رسانکس-پیاده-کنیم","چطور در رسانکس پیاده کنیم؟",[353,3079,3081],{"id":3080},"گام-۱-تنظیم-سرویسدهندهها","گام ۱: تنظیم سرویس‌دهنده‌ها",[16,3083,3084],{},"برای هر کانال (SMS و Call) حداقل یک سرویس‌دهنده اصلی و یک پشتیبان تنظیم کنید.",[353,3086,3088],{"id":3087},"گام-۲-تعریف-مسیر-پشتیبان","گام ۲: تعریف مسیر پشتیبان",[16,3090,3091],{},"برای هر کانال صف پشتیبان بسازید و ترتیب را بر اساس کیفیت واقعی سرویس‌دهنده‌ها بچینید.",[353,3093,3095],{"id":3094},"گام-۳-استانداردسازی-درخواست","گام ۳: استانداردسازی درخواست",[16,3097,3098],{},"در سمت سرویس شما فقط این داده‌ها ارسال شود:",[90,3100,3101,3104,3107],{},[30,3102,3103],{},"شماره مقصد",[30,3105,3106],{},"کد OTP",[30,3108,3109],{},"(اختیاری) شناسه یکتا برای کنترل ارسال تکراری",[353,3111,3113],{"id":3112},"گام-۴-پایش-مداوم","گام ۴: پایش مداوم",[16,3115,3116],{},"گزارش‌ها را روزانه بررسی کنید و اگر نرخ خطا بالا رفت، ترتیب صف را اصلاح کنید.",[11,3118,3120],{"id":3119},"مثال-جریان-واقعی","مثال جریان واقعی",[27,3122,3123,3126,3129,3132,3135,3138],{},[30,3124,3125],{},"کاربر شماره را وارد می‌کند.",[30,3127,3128],{},"سیستم OTP می‌سازد.",[30,3130,3131],{},"ارسال پیامکی انجام می‌شود.",[30,3133,3134],{},"اگر وضعیت ناموفق شد، تماس صوتی فعال می‌شود.",[30,3136,3137],{},"نتیجه نهایی با شناسه رهگیری ذخیره می‌شود.",[30,3139,3140],{},"در داشبورد، گزارش کامل برای تیم پشتیبانی قابل مشاهده است.",[11,3142,3144],{"id":3143},"خطاهای-رایج-و-راهحل","خطاهای رایج و راه‌حل",[353,3146,3148],{"id":3147},"خطا-ارسال-تکراری","خطا: ارسال تکراری",[16,3150,3151],{},"راه‌حل: شناسه یکتا در درخواست ثبت کنید و در بازه زمانی کوتاه، درخواست تکراری را رد کنید.",[353,3153,3155],{"id":3154},"خطا-دیر-رسیدن-کد","خطا: دیر رسیدن کد",[16,3157,3158],{},"راه‌حل: زمان انتظار پیامک را کوتاه‌تر کنید و زودتر مسیر تماس را فعال کنید.",[353,3160,3162],{"id":3161},"خطا-افت-کیفیت-یک-سرویسدهنده","خطا: افت کیفیت یک سرویس‌دهنده",[16,3164,3165],{},"راه‌حل: ترتیب صف پشتیبان را بر اساس داده واقعی بازچینید.",[11,3167,3169],{"id":3168},"نکات-امنیتی-ضروری","نکات امنیتی ضروری",[27,3171,3172,3178,3181,3188,3191],{},[30,3173,3174,3177],{},[34,3175,3176],{},"API Key"," را فقط در بک‌اند نگه دارید.",[30,3179,3180],{},"برای هر کلاینت، دسترسی محدود تعریف کنید.",[30,3182,3183,3184,3187],{},"نرخ درخواست را کنترل کنید (",[34,3185,3186],{},"rate limit",").",[30,3189,3190],{},"زمان انقضای OTP کوتاه باشد.",[30,3192,3193],{},"گزارش‌های حساس را با سطح دسترسی نمایش دهید.",[11,3195,3197],{"id":3196},"جمعبندی","جمع‌بندی",[16,3199,3200,3201,475,3203,3205],{},"اگر ",[34,3202,2999],{},[34,3204,1096],{}," را با منطق هوشمند و صف پشتیبان ترکیب کنید، هم پایداری ارسال بهتر می‌شود و هم تجربه کاربری. این معماری برای رشد کسب‌وکارهای SaaS کاملاً مناسب است چون مقیاس‌پذیر، قابل کنترل و قابل گزارش است.",{"title":128,"searchDepth":141,"depth":141,"links":3207},[3208,3209,3210,3211,3217,3218,3223,3224],{"id":3008,"depth":141,"text":3009},{"id":3015,"depth":141,"text":3016},{"id":3052,"depth":141,"text":3053},{"id":3076,"depth":141,"text":3077,"children":3212},[3213,3214,3215,3216],{"id":3080,"depth":225,"text":3081},{"id":3087,"depth":225,"text":3088},{"id":3094,"depth":225,"text":3095},{"id":3112,"depth":225,"text":3113},{"id":3119,"depth":141,"text":3120},{"id":3143,"depth":141,"text":3144,"children":3219},[3220,3221,3222],{"id":3147,"depth":225,"text":3148},{"id":3154,"depth":225,"text":3155},{"id":3161,"depth":225,"text":3162},{"id":3168,"depth":141,"text":3169},{"id":3196,"depth":141,"text":3197},"معماری و پیاده‌سازی","2026-04-09","در این راهنمای عملی یاد می‌گیرید چطور یک معماری هوشمند برای OTP بسازید که بین پیامک و تماس صوتی جابه‌جا شود، خطا را کم کند و تجربه کاربر را بهتر کند.","/images/blog/smart-cloud-otp-architecture.svg",{},"/blog/smart-cloud-otp-architecture",{"title":3003,"description":3227},"blog/smart-cloud-otp-architecture",[3234,2999,1096],"OTP هوشمند","5liXUNmzvwx74NPw1UIfhh36knzrGAzaWQxEHNlaOy0",1793454558046]