...

آموزش اجرای برنامه‌های خارجی با برنامه System در استریسک

استریسک دsتور system

فهرست مطالب

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

گاهی اوقات نیاز دارید در طول یک تماس، یک اسکریپت یا دستور خارجی در سیستم‌عامل اجرا شود. مثلاً ارسال لاگ تماس به یک سیستم دیگر، اجرای یک دستور لینوکسی یا ارسال پیام به نرم‌افزار مدیریت مشتریان (CRM). برای این کار، برنامه‌ی بسیار کاربردی System() در استریسک مورد استفاده قرار می‌گیرد.

در این مقاله، نحوه استفاده از این برنامه را با مثال‌های واقعی و کاربردی بررسی خواهیم کرد.


معرفی برنامه System در استریسک

برنامه‌ی System() به شما این امکان را می‌دهد که هر دستور لینوکسی را از داخل Dialplan استریسک اجرا کنید. این ابزار بسیار قدرتمند است و اگر به درستی استفاده شود، می‌تواند یک پل ارتباطی عالی بین Asterisk و سایر سرویس‌ها یا اسکریپت‌ها باشد.

ساختار کلی

exten => 1000,1,System(دستور لینوکس)

مثال ساده: ایجاد فایل هنگام تماس

[voipiran
exten => 1000,1,Answer(
exten => 1000,n,System(touch /tmp/incoming_call_${UNIQUEID}
exten => 1000,n,Playback(hello-world
exten => 1000,n,Hangup()

در این مثال، به محض پاسخ تماس، یک فایل متنی با نام منحصربه‌فرد در مسیر /tmp ایجاد می‌شود. این تکنیک در لاگ‌گذاری یا ردگیری تماس‌ها بسیار مفید است.


مثال کاربردی‌تر: ثبت اطلاعات تماس در یک فایل

[voipiran]
exten => 2000,1,Answer()
exten => 2000,n,System(echo "تماس از ${CALLERID(num)} به ${EXTEN} در تاریخ ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}" >> /var/log/asterisk/call_log.txt
exten => 2000,n,Playback(vm-goodbye)
exten => 2000,n,Hangup()

در این مثال، اطلاعات تماس در یک فایل متنی به نام call_log.txt ثبت می‌شود. با این روش، به‌سادگی می‌توانید یک سیستم گزارش‌گیری ساده پیاده‌سازی کنید.


استفاده از System برای اجرای اسکریپت‌های Bash یا PHP

فرض کنید اسکریپتی به نام notify.sh در مسیر /usr/local/bin دارید که به شما پیام می‌دهد.

[voipiran]
exten => 3000,1,Answer()
exten => 3000,n,System(/usr/local/bin/notify.sh ${CALLERID(num)})
exten => 3000,n,Playback(thank-you)
exten => 3000,n,Hangup()

این قابلیت می‌تواند برای اتصال به سرویس‌هایی مانند تلگرام، پیامک، ایمیل، یا CRM بسیار مؤثر باشد.


نکات امنیتی مهم

  • هیچگاه اطلاعات حساس را مستقیم به دستور System ارسال نکنید.

  • فایل‌ها و اسکریپت‌های اجرایی را از قبل بررسی و محافظت کنید.

  • استفاده از AppArmor یا SELinux برای محدود کردن دسترسی توصیه می‌شود.


اتصال به کانتکست‌های ایزابل

در سیستم ایزابل، برای اجرای این دستور باید کانتکست شما در from-internal-additional گنجانده شود:

[from-internal-additional]
include => voipiran

لینک‌های مرتبط و توصیه‌شده

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

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