# اتصال و ارسال پیامک از پنل پیامکی ویکی پیام (wikipayam) از طریق دایال پلن سیموتل

**URL:** <https://forum.mysup.ir/t/topic/542>\
**Category:** ویپ\
**Created:** [سپتامبر 29، 2026، 12:15ب.ظ UTC](https://forum.mysup.ir/t/topic/542 "2026-09-29T12:15:15Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sajjadshabgard](https://forum.mysup.ir/letter_avatar_proxy/v4/letter/s/cc9497/32.png) [@sajjadshabgard](https://forum.mysup.ir/u/sajjadshabgard)\
**Post date:** [سپتامبر 29، 2026، 12:15ب.ظ UTC](https://forum.mysup.ir/t/topic/542/1 "2026-09-29T12:15:15Z")

</div>

برای اتصال از طریق سیموتل به پنل پیامکی، پیش از هر کاری باید افزونه cURL برای PHP نصب گردد که با دستور زیر صورت میگیرد:

> php -v  
> apt update && apt install -y php-curl  
> php -m | grep -i curl

اسکریپت پایین به‌عنوان AGI اجرا می‌شود؛ یعنی سیموتل هنگام رسیدن تماس به داخلی موردنظر، آن را صدا می‌زند و متغیرهای تماس (شماره تماس‌گیرنده، مقصد و غیره) را از طریق ورودی استاندارد (stdin) به آن می‌دهد. منطق تشخیص شماره مشتری:

1. در تماس ورودی، شماره موبایل مشتری در متغیر agi\_callerid قرار دارد.
2. در تماس خروجی (وقتی داخلی به موبایل مشتری زنگ می‌زند)، شماره مشتری در متغیر agi\_extension قرار دارد.  
اسکریپت هر دو منبع را بررسی می‌کند و اولین موردی که فرمت موبایل ایران (09XXXXXXXXX) داشته باشد را انتخاب می‌کند. شماره‌های داخلی و ثابت به‌طور خودکار فیلتر می‌شوند تا پیامک اشتباه ارسال نشود.

```auto

#!/usr/bin/php
<?php
// --- خواندن متغیرهای AGI ---
$agi = [];
while (($line = fgets(STDIN)) !== false) {
    $line = trim($line);
    if ($line === '') break;
    $parts = explode(':', $line, 2);
    if (count($parts) === 2) $agi[trim($parts[0])] = trim($parts[1]);
}

// --- شماره‌ی مشتری از آرگومان اول ---
$raw = $agi['agi_arg_1'] ?? '';

function normalize_mobile($raw) {
    $n = preg_replace('/\D/', '', $raw);
    if ($n === '') return null;
    if (strpos($n, '0098') === 0) $n = '0' . substr($n, 4);
    elseif (strpos($n, '98') === 0) $n = '0' . substr($n, 2);
    elseif (strpos($n, '0') !== 0) $n = '0' . $n;
    return preg_match('/^09\d{9}$/', $n) ? $n : null;
}

$number = normalize_mobile($raw);
if (!$number) {
    file_put_contents('/var/log/sendsms.log', date('c') . " skip raw=$raw\n", FILE_APPEND);
    exit(0);
}

// --- پیام ---
$message = <<<EOT
خط اول
خط دوم
خط سوم
EOT;

// --- ارسال ---
$url = 'https://wikipayam.ir/api/v1/sms/send';
$headers = [
    'Authorization: Bearer $TOKEN',
    'Accept: application/json',
    'Content-Type: application/json',
];

$payload = json_encode([[
    'sender' => '$SMS-NUMBER',
    'receiver' => $number,
    'message' => $message,
    'track_id' => 'CID_' . $number . '_' . time(),
    'mask_digits' => true,
]], JSON_UNESCAPED_UNICODE);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);

$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);

```

> پیام جهت ارسال در قسمت $message = \<\<\<EOT  
> متن پیام  
> EOT;

> برای $TOKEN باید توکن یکتا خود که از ویکی پیام دریافت میکنید را قرار دهید.

> برای $SMS-NUMBER باید سرشماره ای که قرار است با آن پیامک ارسال کنید را قرار دهید.

> اگر فایل را با ویرایشگری در ویندوز (مثل Notepad ساده) نوشته و ذخیره کرده باشید، انتهای هر خط دو کاراکتر نامرئی CR و LF دارد (CRLF)، در حالی‌که لینوکس فقط LF می‌خواهد. این باعث می‌شود خط (#!/usr/bin/php) درست خوانده نشود و فایل اصلاً اجرا نشود — بدون هیچ خطای مشخصی در لاگ.

برای اتصال به پنل پیامکی از طریق دایال پلن و ارسال پیامک از طریق دایال پلن، کامپوننت AGI را اضافه کرده و فایل ایجاد شده را در پنل آپلود میکنیم. سپس SAVE و سپس دایال پلن را SAVE میکنیم و در آخر رفرش میکنیم.  
در ادامه هر مسیری که در دایال پلن به این کامپوننت AGI برسد، به شماره با فرمت 09XXXXXXXXX پیامک ارسال میشود.

 ![image](https://forum.mysup.ir/uploads/default/original/2X/c/c0c9c5a708c7a1e4fa1ee3e56af30c238413b403.png)
