هدف مقاله
در این مقاله، با کمک AGI و کتابخانهی phpagi.php
یاد میگیریم چگونه از داخل Dialplan ایزابل برای ارسال پیامک استفاده کنیم. این سناریو روی IP-PBX واقعی قابل اجراست و طوری طراحی شده که برای هر SMS Provider ایرانی قابل سفارشیسازی باشد. متغیرهای اولیه در بالای اسکریپت قابل تغییر هستند و حتی بدون برنامهنویسی حرفهای، قابل استفادهاند.
پیشنیازها
-
کتابخانه
phpagi.php
نصب شده در مسیر/var/lib/asterisk/agi-bin/
-
سرور ایزابل نسخه ۵ با استریسک ۱۸
-
دسترسی SSH و امکان ویرایش فایلهای زیر:
-
/var/lib/asterisk/agi-bin/send_sms.php
-
/etc/asterisk/extensions_custom.conf
-
ساختار فایل AGI
در مسیر /var/lib/asterisk/agi-bin/send_sms.php
ساخته شود:
<code class="whitespace-pre! language-php"><code class="whitespace-pre! language-php">
#!/usr/bin/php -q
<?php
require_once('phpagi.php');$provider_api_url = 'https://api.smsprovider.ir/send';
$provider_api_key = 'YOUR_API_KEY';
$agi = new AGI();
$agi->answer();
// دریافت پارامترها از Dialplan
$to = $agi->get_variable('SMS_TO')['data'];
$msg = $agi->get_variable('SMS_MSG')['data'];
// ساخت payload و ارسال
$payload = http_build_query([
'api_key' => $provider_api_key,
'to' => $to,
'message' => $msg
]);
$response = file_get_contents("$provider_api_url?$payload");
$agi->verbose("SMS response: $response", 3);
$agi->hangup();
<code class="whitespace-pre! language-php">
توضیح خطبهخط:
-
phpagi.php
: بارگذاری کتابخانه برای کنترل تماس -
پاسخگویی به تماس اولیه با
answer()
-
دریافت متغیرهای
SMS_TO
وSMS_MSG
از Dialplan -
ساخت و ارسال درخواست به API پیامک
-
لاگگیری و قطع تماس
تنظیم Dialplan
در فایل /etc/asterisk/extensions_custom.conf
:
[from-internal-additional]
include => voipiran_sms[voipiran_sms]
exten => _7XXX,1,NoOp(Sending SMS via AGI)
exten => _7XXX,n,Set(SMS_TO=${EXTEN})
exten => _7XXX,n,Set(SMS_MSG=متشکرم از پیام شما ${EXTEN})
exten => _7XXX,n,AGI(send_sms.php)
exten => _7XXX,n,Playback(vm-goodbye)
exten => _7XXX,n,Hangup()
-
include => voipiran_sms
: لازمه برای اجرای Dialplan سفارشی -
هر شماره ۷XXX باعث فراخوانی اسکریپت میشود
-
پیام ثابت با شماره داخلی جهت تست
-
پخش پیام خداحافظی بعد از ارسال
نکات امنیتی
-
احراز هویت API: کلید در فایل مجزا ذخیره شود و دسترسی داده نشود
-
رعایت محدودیت های سرویسدهنده پیامک
-
پایگاه Voipiran.io: نمونههای حرفهای ارسال SMS در دورههای آموزشی
-
در دورههای ویپ ایران یا Voipiran.io توضیحات بیشتری ارائه شده
روش اجرا و تست در ایزابل
-
فایل AGI را در مسیر مشخص با
chmod +x
مجوز اجرایی دهید:<span class="hljs-built_in">chmod</span> +x /var/lib/asterisk/agi-bin/send_sms.php
-
فایل
extensions_custom.conf
را ویرایش و ذخیره کنید -
در Asterisk CLI دستورهای زیر را اجرا کنید:
<code class="whitespace-pre!">
asterisk -rx "dialplan reload" asterisk -rvvvvvv
-
از یک داخلی، شمارهای مانند ۷۰۱۲۳ را بگیرید، SMS به همان شماره ارسال میشود
-
نتیجه Response در کنسول نمایش مییابد
سوالات متداول (FAQ)
چطور متن متغیر ارسال کنم؟
— میتوانید از Read()
یا Background()
برای گرفتن متن DTMF استفاده کنید، سپس آن را به متغیر SMS_MSG
اضافه و ارسال کنید.
آیا میتوان فایلهای صوتی متنی ارسال کرد؟
— بله، کافی است API به شما اجازه دهد؛ کافی است پارامترهای جدید در AGI اضافه شود.
چطور از تب FastAGI استفاده کنم؟
— تنها کافیست URL سرویس FastAGI را در Dialplan بنویسید، به این صورت:
<code class="whitespace-pre! language-ini">
exten => _7XXX,1,AGI(send_sms.php)
نتیجهگیری
با این روش شما یک ارسال پیامک هوشمند و کاربردی از داخل استریسک/ایزابل خواهید داشت. تغییرات Provider یا متن آسان و سریع قابل انجام است. این مقاله میتواند بخش شروع پروژههای بیشتری مانند ارسال ایمیل، تلگرام، واتساپ نیز باشد.