...

ارسال SMS از Dialplan با AGI PHP در Asterisk/Issabel

فهرست مطالب

زمان مطالعه: 2 دقیقه

هدف مقاله

در این مقاله، با کمک 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 توضیحات بیشتری ارائه شده


روش اجرا و تست در ایزابل

  1. فایل AGI را در مسیر مشخص با chmod +x مجوز اجرایی دهید:

    <span class="hljs-built_in">chmod</span> +x /var/lib/asterisk/agi-bin/send_sms.php
  2. فایل extensions_custom.conf را ویرایش و ذخیره کنید

  3. در Asterisk CLI دستورهای زیر را اجرا کنید:

    <code class="whitespace-pre!">

    asterisk -rx "dialplan reload"
    asterisk -rvvvvvv
  4. از یک داخلی، شماره‌ای مانند ۷۰۱۲۳ را بگیرید، SMS به همان شماره ارسال می‌شود

  5. نتیجه 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 یا متن آسان و سریع قابل انجام است. این مقاله می‌تواند بخش شروع پروژه‌های بیشتری مانند ارسال ایمیل، تلگرام، واتس‌اپ نیز باشد.

مقالات مرتبط

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از

0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها