آخرین ویرایش مهر ۲۲, ۱۴۰۴ حامد کوه فلاح
مقدمه
سیستمهای تلفنی مبتنی بر نرمافزار، مانند Asterisk و Issabel، ابزارهای قدرتمندی برای مدیریت ارتباطات در سازمانها هستند. یکی از نقاط قوت این سیستمها، امکان برنامهنویسی و سفارشیسازی آنها برای پاسخگویی به نیازهای خاص مشتریان است. در این مقاله، انواع برنامهنویسی بر روی سیستمهای تلفنی را بررسی کرده و به معرفی ابزارها، تکنیکها و مزایای آن میپردازیم. امروزه برای افراد متخصص دانش ماژول نویسی و برنامه نویسی بر روی استریسک الزامی است، درآمد راه اندازی سیستم تلفنی را پند برابر می کند و البته پروژه های بسیاری را که امروز بر اساس ساخت سیستم های هوشمند مطرح میگردد را فراهم می کند.
💡 چرا برنامهنویسی بر روی Asterisk و Issabel اهمیت دارد؟
برنامهنویسی روی سیستمهای تلفنی Asterisk و Issabel به شما اجازه میدهد تا تماسها را به شکلی کاملاً سفارشی و هوشمند مدیریت کنید.
برای متخصصان VoIP، این مهارت یکی از اصلیترین ابزارها برای ایجاد راهکارهای خاص و منحصربهفرد برای مشتریان است.
🎯 مزایا و نمونههای واقعی:
🔹 افزایش انعطافپذیری
میتوانید امکاناتی بسازید که در نسخهی پیشفرض Issabel وجود ندارد.
مثالها:
-
ساخت صف تماس با اولویتبندی مشتریان VIP (مثلاً تماسهای شمارههای خاص زودتر پاسخ داده شوند).
-
انتقال تماسها بر اساس ساعت کاری: اگر خارج از ساعت اداری باشد، تماس به موبایل مدیر منتقل شود.
-
ضبط تماسها فقط برای داخلیهای خاص یا پروژههای خاص.
🔹 بهبود تجربه مشتری (Customer Experience)
افزودن قابلیتهایی مثل پاسخ صوتی تعاملی (IVR)، اطلاعرسانی خودکار یا تماسهای زمانبندیشده، باعث افزایش رضایت کاربران میشود.
مثالها:
-
ساخت IVR چندزبانه که زبان تماسگیرنده را بر اساس شماره یا منطقه تشخیص دهد.
-
سیستم اطلاعرسانی خودکار اقساط برای مشتریان بانک یا بیمه با متن شخصیسازیشده.
-
تماس خودکار (Auto Dialer) برای اطلاعرسانی تخفیف یا یادآوری جلسات.
🔹 کاهش هزینهها
با هوشمندسازی تماسها، میتوانید نیاز به نرمافزارهای گرانقیمت CRM یا مرکز تماس را کاهش دهید.
مثالها:
-
ثبت اطلاعات تماسها در پایگاه داده داخلی و حذف وابستگی به نرمافزارهای خارجی.
-
تحلیل دادههای تماس و ارائه گزارش مدیریتی از صفها با استفاده از یک اسکریپت ساده Python.
🧩 Dialplan چیست و چرا مهم است؟
Dialplan مغز متفکر Asterisk است؛ جایی که تصمیم گرفته میشود هر تماس دقیقاً چه مسیری را طی کند.
درواقع Dialplan همان برنامهنویسی داخلی Asterisk است که با دستورات ساده، مسیر تماسها را مشخص میکند.
🧱 مثال پایه:
<code class="whitespace-pre! language-asterisk">
[voipiran-test]
exten => 100,1,Answer()
exten => 100,n,Playback(hello-world)
exten => 100,n,Hangup()
این کد ساده در کانتکست voipiran-test
هر تماسی به داخلی ۱۰۰ را پاسخ میدهد، پیام hello-world
را پخش میکند و تماس را قطع میکند.
کاربردهای عملی Dialplan
۱. IVR یا منوی صوتی هوشمند
تماسگیرنده عددی وارد میکند و تماس بر اساس آن هدایت میشود:
<code class="whitespace-pre! language-asterisk">
exten => s,1,Answer()
exten => s,n,Playback(welcome)
exten => s,n,Background(press-1-for-sales)
exten => 1,1,Goto(sales,100,1)
exten => 2,1,Goto(support,200,1)
کاربرد: ساخت منوی “برای فروش عدد ۱، برای پشتیبانی عدد ۲ را فشار دهید”.
۲. مسیریابی تماس بر اساس زمان (Time-based Routing
<code class="whitespace-pre! language-asterisk">
same => n,GotoIfTime(09:00-17:00,mon-fri,*,*?work-hours,1)
same => n,Goto(after-hours,1)
کاربرد: تماسها در ساعات اداری به اپراتور، و در ساعات غیراداری به پیام ضبطشده هدایت میشوند.
۳. مدیریت صف تماسها (Queue)
<code class="whitespace-pre! language-asterisk">
exten => 500,1,Queue(support)
🎧 کاربرد: تماسگیرندگان منتظر آزاد شدن اپراتور پشتیبانی میمانند.
AGI چیست و چه کاربردی دارد؟
AGI (Asterisk Gateway Interface) زمانی استفاده میشود که بخواهید تماسها را با منطقهای پیچیدهتر کنترل کنید — مثلاً ارتباط با دیتابیس، سیستمهای CRM، یا APIهای خارجی.
برخلاف Dialplan، در AGI میتوانید از زبانهای برنامهنویسی مثل Python, PHP, یا Node.js استفاده کنید.
مزایا:
-
اتصال مستقیم به پایگاهداده MySQL یا MariaDB
-
دریافت داده از وبسرویسها (مثلاً وضعیت سفارش مشتری)
-
تصمیمگیری هوشمند در تماسها
مثال عملی (Python):
<code class="whitespace-pre! language-python">
#!/usr/bin/env python3
from asterisk.agi import AGI
agi = AGI()
caller_id = agi.env['agi_callerid']
agi.say_number(caller_id)
کاربرد: تماسگیرنده شمارهاش را میشنود.
در پروژههای واقعی، میتوان از همین روش برای:
-
تشخیص شماره مشتری و خواندن وضعیت سفارش از دیتابیس
-
اجرای پیام متفاوت برای کاربران VIP
-
ارسال داده تماس به سیستم CRM استفاده کرد.
AMI چیست و چرا برای برنامهنویسان VoIP مهم است؟
AMI (Asterisk Manager Interface) یک رابط TCP/IP برای کنترل Asterisk از بیرون است.
با آن میتوانید تماسها را در لحظه مانیتور کنید، تماس جدید بسازید یا حتی تماسها را قطع کنید.
ویژگیها:
-
Events: رویدادهایی مثل شروع یا پایان تماس، ورود کاربر به صف، ضبط تماس و …
-
Actions: فرمانهایی برای اجرا — مثل Originate، Hangup، QueuePause و غیره.
مثال واقعی:
<code class="whitespace-pre!">
Action: Originate
Channel: SIP/100
Context: default
Exten: 200 Priority: 1
CallerID: 1234567890
📞 کاربرد: ایجاد تماس بین داخلی ۱۰۰ و داخلی ۲۰۰ بهصورت خودکار.
مثالهای دیگر:
-
ساخت پنل مانیتورینگ تماسها با PHP و AMI
-
ارسال نوتیفیکیشن تماس جدید به تلگرام یا سیستم CRM
-
کنترل وضعیت صفها و اپراتورها بهصورت زنده
ARI چیست و چه تفاوتی با AGI و AMI دارد؟
ARI (Asterisk RESTful Interface) یک رابط مدرن برای ارتباط با Asterisk از طریق HTTP است. برخلاف AGI و AMI که بیشتر برای ارتباطات سنتی مناسب هستند، ARI کنترل کامل بر جریان تماسها را فراهم میکند.
تفاوتها:
زبان برنامهنویسی | کتابخانه | توضیحات | لینک |
---|---|---|---|
Python | ari-py | کتابخانه Python برای ARI. | مشاهده در GitHub |
JavaScript | node-ari-client | کتابخانه JavaScript برای ارتباط با ARI. | مشاهده در GitHub |
Java | ari4java | کتابخانه جاوا برای مدیریت ARI. | مشاهده در GitHub |
مثال کاربردی:
ایجاد یک برنامه ARI برای کنترل تماسها با استفاده از Node.js:
const ari = require('ari-client');
ari.connect('http://localhost:8088', 'user', 'password', (err, client) => {
client.on('StasisStart', (event, channel) => {
channel.answer((err) => {
;پخش یک پیام صوتی
channel.play({media: 'sound:hello-world'});
});
});
client.start('my-app');
});
برنامه های رایچ قابل پیاده سازی در استریسک و ایزابل
تمامی برنامه هایی که در زیر نام برده می شود مورد در خواست اکثر مشتریان سیستم های تلفنی است و البته تمامی این موارد در دوره آموزشی استریسک پیشرفته نیز تدریس می گردد.این برنامه های با Dialplan یا AGI و یا AMI پیاده سازی می شوند.
– تماس خودکار تبلیغاتی
– وب سرویبس درخواست تماس: در این محصول یک API بر روی سیستم تلفنی نوشته می شود که برنامه های بیرونی همانند CRM می توانند در خواست تماس به سیستم تلفنی استریسک بدهند.
– شنود هوشمند، شش حالت شنود بین مکالمات در استریسک
– مدیر منشی و یا هر قوانینی که بین کابران تلفنی لازم باشد اجرا شود.
– مسیر یابی هوشمند: انتقال مشتری به آخرین کارشناسی با او صحبت کرده بوده است.
– نظرسنجی بر روی صف پس از پایان مکالمات مشتریان در صف با کارشناس ها
– نظرسنجی روی تماس های خروجی سیستم پس از پایان مکالمه بین کارشناس و مشتری
– اصلاح کالرآی دی مشتری ها در ورودی سیستم تلفنی
– کال بک بین داخلی های در صورت مشغول بودن
– اعلام یک پیام برای تماس های پشت خطی
برنامههای قابل توسعه و ارتباط با CRM
یکی از مزایای برنامهنویسی بر روی Asterisk و Issabel، امکان اتصال این سیستمها به نرمافزارهای دیگر مانند CRM است. به عنوان مثال، با استفاده از AGI یا AMI میتوان اطلاعات تماسگیرنده را از CRM استخراج و نمایش داد.
مثال:
– ثبت تماس ها در CRM
– ارسال اطلاعات لحظه ای برای نوشتن Popop در CRM
– ارسال در خواست تماس از CRM برای داشتن ClicktoDial
– دسترسی CRM به مکالمات ضبط شده در Issabel
– ارتباط بین استریسک و CRM برای به روز رسانی اطلاعات کسی که تماس گرفته همانند اسم مشتری
– چخش پیام های لازم در ورودی استریسک بر اساس اطلاعات CRM همانند اطلاع رسانی تولد یک فرد، بدهی یا آماده بودن نتیجه آزمایش یا قطعه تعمیری ….
کتابخانهها و ابزارهای رایج
ابزار/کتابخانه | توضیحات | لینک |
---|---|---|
Asterisk-Java | کتابخانه جاوا برای کار با AMI. | مشاهده در GitHub |
PyAsterisk | ماژول Python برای تعامل با Asterisk. | مشاهده در GitHub |
Node-Asterisk | ابزار Node.js برای مدیریت Asterisk. | مشاهده در GitHub |
ari-py | کتابخانه Python برای ARI. | مشاهده در GitHub |
node-ari-client | کتابخانه JavaScript برای ARI. | مشاهده در GitHub |
ari4java | کتابخانه جاوا برای ARI. | مشاهده در GitHub |
Asterisk Test Suite | ابزاری رسمی برای تست و آزمایش Asterisk. | مشاهده در GitHub |
نتیجهگیری
برنامهنویسی بر روی Asterisk و Issabel امکانات گستردهای برای توسعه سیستمهای تلفنی ارائه میدهد. از ایجاد منوهای ساده با Dialplan گرفته تا پیادهسازی برنامههای پیچیده با AGI، AMI و ARI، این ابزارها امکان ایجاد سیستمهای سفارشی برای هر نیازی را فراهم میکنند.
آموزش استریسک
ویپ ایران | VOIPIRAN تنها برگزارکننده دوره های تخصصی استریسک در ایران است، با شرکت در دروه استریسک پیشرفته به طور کامل نحوه برنامه نویسی بر روی استریسک و ساخت ماژول های تلفنی را بیاموزید.