Wazo Platform یک سانترال آماده شبیه FreePBX نیست؛ یک پلتفرم متنباز و APIمحور برای ساخت سرویسهای تلفنی سازمانی است. یعنی بهجای اینکه فقط داخلی، Trunk و IVR را از یک پنل تنظیم کنید، میتوانید تماس، حضور کاربران، مخاطبان، Provisioning تلفن، WebRTC، WebSocket، Webhook، CDR و حتی منطق یک نرمافزار تلفنی اختصاصی را از طریق API کنترل کنید.
در اکتبر ۲۰۲۶، نسخه پایدار فعلی Wazo Platform 26.10 است که در ۱۲ اکتبر ۲۰۲۶ منتشر شده و هسته تلفنی آن به Asterisk 22.11.0 ارتقا یافته است. نصب Unified Communication فعلی نیز بر پایه Debian 12 Bookworm انجام میشود.
Wazo را اینطور ببینید: Asterisk موتور تماس است؛ Wazo روی آن مجموعهای از Microserviceها، REST API، WebSocket، Webhook، Provisioning و SDK میسازد تا شما بتوانید «نرمافزار تلفنی خودتان» را توسعه دهید.
Wazo Platform دقیقاً چیست؟
Wazo یک پروژه متنباز برای ساخت زیرساخت ارتباطات IP قابلبرنامهریزی است. خود پروژه آن را یک API-first telecom platform معرفی میکند؛ یعنی قابلیتهای اصلی ابتدا از طریق API در دسترس هستند و رابط وب یا اپلیکیشن فقط یکی از مصرفکنندههای همان APIهاست.
در این معماری، بخشهای مختلف سیستم به سرویسهای مستقل تقسیم شدهاند. برای مثال:
🔹 wazo-auth: احراز هویت، Token، Policy و ACL.
🔹 wazo-confd: پیکربندی User، Extension، Line و اجزای تلفنی.
🔹 wazo-calld: کنترل تماس، Transfer، Fax، Voicemail و Application.
🔹 wazo-provd: Provisioning تلفنهای SIP و Gatewayها.
🔹 wazo-websocketd: ارسال Eventهای زنده به Web/Mobile App.
🔹 wazo-webhookd: فرستادن Eventها به سرویسهای خارجی.
🔹 wazo-call-logd: CDR و Call Log.
🔹 wazo-agentd: Agentهای مرکز تماس.
🔹 wazo-chatd: Presence و Chat.
معماری Wazo از چه لایههایی تشکیل شده است؟
مستند رسمی Wazo معماری را در چهار لایه توضیح میدهد: Application، Business، Engine و Technical. این ساختار باعث میشود Frontend یا نرمافزار سازمانی مستقیماً به APIهای Wazo متصل شود و لازم نباشد برای هر قابلیت مستقیماً سراغ Asterisk بروید.
Web / Mobile App / CRM
|
v
REST API / WebSocket / WebRTC / Webhooks
|
v
wazo-auth / wazo-calld / wazo-confd / wazo-dird
|
v
Asterisk / Kamailio / RTPEngine / wazo-provd
|
v
RabbitMQ / NGINX / PostgreSQL / Debian
در هسته Telecom، Wazo از Asterisk استفاده میکند و در بخشهای بزرگتر و Carrier-grade اجزایی مثل Kamailio و RTPEngine نیز وارد معماری میشوند. در لایه فنی نیز RabbitMQ برای Event Bus، NGINX برای HTTP/API و PostgreSQL برای دادهها استفاده میشود.
وضعیت Wazo در ۲۰۲۶؛ نسخه 26.10 چه چیزی دارد؟
Release فعلی Wazo Platform در زمان نگارش مقاله 26.10 است. این نسخه علاوه بر تغییرات Authentication و Caller ID، Asterisk را به 22.11.0 ارتقا داده است.
Releaseهای سال ۲۰۲۶ نشان میدهند تمرکز پروژه روی Call Control، CDR، WebRTC، Performance، Multi-process Scaling، Contact Directory، Mobile و API ادامه دارد. برای نمونه در نسخه 26.02 یک مشکل WebRTC Video با ارتقای Asterisk به 22.8.1 رفع شد و در نسخه 26.08 Workerهای REST API قابلیت Scale شدن پویا پیدا کردند.
| بخش | وضعیت در اکتبر ۲۰۲۶ |
|---|---|
| Wazo Platform | 26.10 |
| Asterisk | 22.11.0 |
| سیستمعامل نصب UC | Debian 12 Bookworm |
| API | REST + OpenAPI |
| Event | WebSocket + Webhook + RabbitMQ |
| Web/Mobile | WebRTC + JavaScript SDK |
| Provisioning | wazo-provd + Device Plugins |
مرحله ۱: Wazo را روی Debian 12 نصب کنید
راهنمای رسمی Unified Communication برای نصب All-in-One از Debian 12 با Locale مبتنی بر UTF-8 شروع میشود.
برای Lab، مستند Wazo حداقل 1 CPU، حدود 2GB RAM و 8GB Storage را قابلاستفاده میداند. برای یک Production کوچک حدود 50 کاربر، حداقل پیشنهادی مستند رسمی 2 CPU، 4GB RAM و 50GB Storage است. اگر Recording، Firmwareهای زیاد یا Call Center دارید، فضای بیشتر لازم است.
ابتدا ابزارهای نصب:
apt update
apt install -yq sudo git ansible curl
Installer را دریافت کنید:
git clone https://github.com/wazo-platform/wazo-ansible.git
cd wazo-ansible
نکته بسیار مهم: Clone ساده Repository بهطور پیشفرض مسیر Development را نصب میکند. برای Production باید Stable Release را انتخاب کنید و Distribution را روی pelican-bookworm قرار دهید.
برای Checkout کردن آخرین Stable Tag:
ansible_tag=wazo-$(curl https://mirror.wazo.community/version/stable)
git checkout $ansible_tag
Dependency نصب:
ansible-galaxy install -r requirements-postgresql.yml
در فایل inventories/uc-engine برای Stable Branch این متغیرها را تنظیم کنید:
[uc_engine:vars]
wazo_distribution = pelican-bookworm
wazo_distribution_upgrade = pelican-bookworm
اگر رابط وب را هم میخواهید:
[uc_ui:children]
uc_engine_host
سپس نصب:
ansible-playbook -i inventories/uc-engine uc-engine.yml
و در پایان:
wazo-service status
مرحله ۲: API User بسازید و Token بگیرید
Wazo از Token و ACL برای دسترسی API استفاده میکند. این یکی از تفاوتهای مهم آن با PBXهای GUIمحور است. هر Client یا Service باید فقط Permissionهایی را بگیرد که واقعاً لازم دارد.
نمونه گرفتن Token یکساعته:
curl -k -X POST \
-u API_USERNAME:API_PASSWORD \
-H 'Content-Type: application/json' \
-d '{"expiration": 3600}' \
https://wazo.example.com/api/auth/0.1/token
Token بعدی در Header زیر ارسال میشود:
X-Auth-Token: YOUR_TOKEN
مثلاً برای دیدن اطلاعات نسخه:
curl -k \
-H 'X-Auth-Token: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
https://wazo.example.com/api/confd/1.1/infos
و برای لیست Userها:
curl -k \
-H 'X-Auth-Token: YOUR_TOKEN' \
https://wazo.example.com/api/confd/1.1/users
برای Production از confd.# یا auth.# بیدلیل استفاده نکنید. Wildcard ACL یعنی آن حساب به همه Endpointهای آن Service دسترسی دارد. Policy را تا حد امکان محدود به Resource و Action موردنیاز بسازید.
مرحله ۳: تماس را با wazo-calld کنترل کنید
wazo-calld سرویس Call Control است. Application، Call، Transfer، Fax، Switchboard و Voicemail از همین لایه قابلکنترل هستند.
این یعنی اگر یک CRM دارید، لازم نیست کاربر برای تماس به پنل PBX برود. دکمه «تماس» داخل CRM میتواند درخواست Call را به Wazo بدهد و Eventهای تماس را هم دریافت کند.
معماری Click-to-Call میتواند چنین باشد:
CRM Button
|
v
Your Backend
|
+--> wazo-auth (token)
|
+--> wazo-calld (create/control call)
|
+<-- WebSocket (ringing / answered / hangup)
|
v
Update CRM UI
WebSocket چه چیزی اضافه میکند؟
REST API برای Command مناسب است، اما یک برنامه تلفنی فقط با Request/Response کامل نمیشود. Frontend باید لحظهای بفهمد تماس زنگ میخورد، Answer شده، Hold شده یا قطع شده است.
Wazo برای این کار wazo-websocketd دارد. اتصال روی HTTPS Port 443 و مسیر زیر انجام میشود:
wss://wazo.example.com/api/websocketd/?token=YOUR_TOKEN&version=2
Token باید ACL مربوط به WebSocket را داشته باشد.
در Production حتماً Certificate معتبر روی Host قرار دهید. مستند Wazo توضیح میدهد Certificate پیشفرض Self-signed است و مرورگرها اتصال WebSocket امن را بدون Trust مناسب Block میکنند.
WebRTC؛ وقتی تلفن را داخل مرورگر میخواهید
یکی از مهمترین کاربردهای Wazo این است که Phone یا Dialer را داخل Web App یا Mobile App خودتان قرار دهید. پروژه Wazo برای JavaScript یک SDK ارائه میکند که API، WebSocket و WebRTC را سادهتر مصرف میکند.
این یعنی میتوانید در CRM یک Widget بسازید که کاربر از همان Browser تماس بگیرد و جواب دهد، بدون اینکه حتماً یک IP Phone فیزیکی جلوی او باشد.
یک WebRTC Client معمولاً به این اجزا نیاز دارد:
🔹 Login و Token از wazo-auth.
🔹 WebSocket برای Eventهای لحظهای.
🔹 WebRTC برای Audio/Video Media.
🔹 Call Control از wazo-calld.
🔹 HTTPS/WSS با Certificate مورداعتماد مرورگر.
🔹 NAT/ICE/TURN Design متناسب با شبکه کاربران.
در پروژه بزرگ، تفاوت اصلی Wazo با یک Web Softphone ساده این است که Auth، Call Control، Directory، Presence و Eventها همگی بخشی از همان Platform هستند.
Provisioning تلفنهای فیزیکی با wazo-provd
APIمحور بودن Wazo به معنی کنارگذاشتن IP Phoneهای سختافزاری نیست. wazo-provd برای Provisioning تلفن و Gateway طراحی شده است.
Flow استاندارد Auto-Provisioning:
IP Phone Boot
|
v
DHCP Request
|
v
DHCP Option → Provisioning HTTP URL
|
v
wazo-provd
|
+--> Common config
+--> MAC config
+--> Firmware
+--> Language files
|
v
Phone Reboot → Ready
برای هر مدل Device باید Plugin مربوط به همان Phone نصب باشد. مزیت مهم این است که Pluginهای Provisioning مستقل از OS قابل نصب و Upgrade هستند.
Wazo همچنین REST API مستقل برای wazo-provd دارد؛ بنابراین میتوانید Provisioning را از سیستم مدیریت Device خودتان کنترل کنید.
محدودیت مهم: مستند Wazo میگوید Device Synchronisation برای چند Device که پشت یک NAPT مشترک هستند ممکن است کار نکند و در این حالت Resync دستی لازم شود. این مورد در شبکههای شعب با چند IP Phone پشت یک NAT مهم است.
Webhook؛ اتصال Wazo به CRM، حسابداری و اتوماسیون
اگر نمیخواهید Backend شما دائماً WebSocket را نگه دارد، wazo-webhookd میتواند Eventهای Wazo را به HTTP Endpoint خودتان Push کند.
مثلاً:
Incoming call
|
v
Wazo Event Bus
|
v
wazo-webhookd
|
v
https://crm.example.com/webhooks/wazo
|
+--> Open customer profile
+--> Create call activity
+--> Notify sales agent
این مدل برای اتصال به CRM، Helpdesk، ERP، Automation Server یا سرویس AI کاربردی است.
Use Caseهای واقعی Wazo Platform
| کاربرد | اجزای اصلی Wazo | مزیت APIمحور |
|---|---|---|
| CRM Click-to-Call | auth + calld + websocket | تماس داخل CRM و وضعیت زنده |
| Web Softphone | JS SDK + WebRTC + WebSocket | تلفن داخل Browser |
| Mobile VoIP App | SDK + Push + Call Control | اپ اختصاصی برند شما |
| Contact Center سفارشی | agentd + calld + CDR | UI و Workflow اختصاصی |
| AI Voice Agent | calld + webhook + event stream | اتصال منطق تماس به STT/AI/TTS |
| Provisioning Fleet | provd REST API | مدیریت مرکزی Phoneها |
| Call Analytics | call-logd + Webhooks | ارسال CDR به BI/Data Warehouse |
| SaaS تلفن سازمانی | tenant-aware APIs + auth policies | ساخت Product روی Platform |
مطلب مرتبط: اگر هدف شما ساخت سرویس پاسخگوی تلفنی مبتنی بر هوش مصنوعی است، Wazo میتواند لایه Call Control و Event را فراهم کند و AI در سرویس جدا اجرا شود.
Wazo با FreePBX، FusionPBX و VitalPBX چه فرقی دارد؟
این چهار پروژه همگی در دنیای VoIP قرار میگیرند، اما سؤال اصلی این است که میخواهید PBX را مدیریت کنید یا روی Telecom Platform محصول بسازید.
| راهکار | هسته اصلی | فلسفه | مناسبتر برای |
|---|---|---|---|
| Wazo Platform | Asterisk + Microservices | API-first / Programmable | App، SaaS، CRM Integration، WebRTC |
| FreePBX | Asterisk | GUI-first PBX Management | سانترال سنتی و مدیریت ساده Asterisk |
| FusionPBX | FreeSWITCH | Multi-tenant PBX / Switch | Hosted PBX، Multi-tenant و FreeSWITCH |
| VitalPBX | Asterisk | GUI PBX + Commercial Add-ons | PBX سازمانی و Multi-Tenant تجاری |
چه زمانی Wazo انتخاب بهتری است؟
اگر تیم شما Developer دارد و قرار است ارتباطات جزئی از محصول باشد، Wazo مزیت زیادی دارد. مثلاً اپلیکیشن شما User میسازد، تماس را شروع میکند، Eventها را میگیرد، CDR را ذخیره میکند و Phone را Provision میکند؛ همه این مراحل API دارند.
چه زمانی Wazo انتخاب اضافه است؟
اگر فقط میخواهید «۲۰ داخلی + دو Trunk + IVR» بسازید و تیم برنامهنویسی ندارید، FreePBX یا VitalPBX معمولاً سریعتر به نتیجه میرسند. اگر Hosted PBX چنددامنه با FreeSWITCH میخواهید، FusionPBX انتخاب مستقیمتری است.
امنیت API در Wazo؛ مهمتر از بازکردن SIP است
در Wazo، API عملاً بخشی از Control Plane تلفنی شماست. اگر یک Token با ACL گسترده لو برود، مهاجم فقط یک Extension را در اختیار ندارد؛ ممکن است بتواند User، Configuration یا Call Control را دستکاری کند.
حداقل این اصول را رعایت کنید:
🔹 برای هر Integration یک API User مستقل بسازید.
🔹 ACL را فقط به Service و Resource لازم محدود کنید.
🔹 Token Expiration کوتاه و Rotation تعریف کنید.
🔹 HTTPS و WSS را با Certificate معتبر استفاده کنید.
🔹 API را پشت Reverse Proxy/Firewall و در صورت امکان VPN محدود کنید.
🔹 Credential اپلیکیشن را داخل JavaScript عمومی قرار ندهید.
🔹 Webhook Endpointها Authentication و Validation داشته باشند.
چکلیست اولین پروژه APIمحور با Wazo
| مرحله | نتیجهای که باید ببینید |
|---|---|
| نصب Stable روی Debian 12 | wazo-service status سالم |
| DNS و HTTPS | Certificate معتبر |
| API User | Token با ACL محدود |
| REST API | دریافت infos/users بدون 401/403 |
| WebSocket | دریافت Eventهای زنده |
| Call Control | Start/Answer/Hangup از Application |
| WebRTC | تماس Browser با Media دوطرفه |
| Provisioning | Phone با Config درست Boot شود |
| Webhook | Event به Backend خارجی برسد |
| Security | هیچ API User با ACL بیدلیل گسترده نباشد |
اشتباههای رایج در شروع Wazo
🔹 نصب مستقیم Development Branch روی Production.
🔹 دادن # یا ACLهای بسیار گسترده به هر API User.
🔹 استفاده از Certificate Self-signed برای WebRTC Browser Production.
🔹 تصور اینکه Wazo فقط یک GUI جایگزین FreePBX است.
🔹 ساخت Frontend با Password اصلی API داخل Browser.
🔹 نادیدهگرفتن WebSocket و Poll کردن REST API هر چند ثانیه.
🔹 Provisioning Device بدون بررسی Plugin و Firmware مناسب.
🔹 استفاده از Wazo برای پروژه سادهای که اصلاً API Integration ندارد.
میخواهید Wazo Platform را روی VPS آزمایش کنید؟
برای یک Proof of Concept میتوانید Wazo را روی VPS جدا نصب کنید، یک API User محدود بسازید و قبل از اتصال CRM یا اپلیکیشن اصلی، Token، Call Control، WebSocket، WebRTC و Provisioning را مستقل تست کنید.
ایرانیکاسرور میتواند برای تأمین VPS و راهاندازی زیرساخت اولیه Wazo، Debian 12، DNS، HTTPS و تنظیمات شبکه کمک کند.
تماس با پشتیبانی ایرانیکاسرور: 021-91302467
پرسشهای رایج
Wazo Platform چیست؟
Wazo یک پلتفرم متنباز API-first برای ساخت زیرساخت تلفنی و نرمافزارهای ارتباطی است. تماس، تنظیمات، Provisioning، WebRTC، WebSocket، Webhook و CDR از طریق سرویسها و APIهای جدا قابلکنترل هستند.
نسخه فعلی Wazo در اکتبر ۲۰۲۶ چیست؟
نسخه پایدار فعلی Wazo Platform 26.10 است که ۱۲ اکتبر ۲۰۲۶ منتشر شده و Asterisk 22.11.0 را در هسته تلفنی خود دارد.
Wazo روی چه سیستمعاملی نصب میشود؟
راهنمای فعلی Unified Communication نصب All-in-One را روی Debian 12 Bookworm توضیح میدهد.
آیا Wazo REST API دارد؟
بله. REST API روش اصلی تعامل برنامهنویسی با Wazo است و سرویسهایی مثل wazo-auth، wazo-confd، wazo-calld و wazo-provd API مستقل دارند.
آیا Wazo از WebRTC پشتیبانی میکند؟
بله. Wazo JavaScript SDK برای ساخت Web/Mobile Application با API، WebSocket و WebRTC ارائه شده و میتوان Softphone را داخل برنامه خودتان ساخت.
آیا تلفنهای فیزیکی را هم میتوان Provision کرد؟
بله. wazo-provd برای Provisioning Phone و Gateway استفاده میشود و برای مدلهای مختلف Device Pluginهای مستقل دارد.
Wazo بهتر است یا FreePBX؟
برای PBX ساده و GUIمحور معمولاً FreePBX راحتتر است. Wazo زمانی ارزش بیشتری دارد که API، WebRTC، اپ اختصاصی، CRM Integration یا محصول SaaS تلفنی میسازید.
آیا نصب پیشفرض Wazo برای Production مناسب است؟
باید دقت کنید Clone ساده wazo-ansible بهطور پیشفرض Development Version را نصب میکند. برای Production باید Stable Tag و pelican-bookworm را طبق مستند رسمی انتخاب کنید.
جمعبندی
Wazo Platform زمانی انتخاب درستی است که قرار نیست فقط یک PBX نصب کنید، بلکه میخواهید Voice و Communication را به بخشی از نرمافزار خودتان تبدیل کنید. معماری Microservice، REST API، WebSocket، Webhook، WebRTC و Provisioning این امکان را فراهم میکند که CRM، Helpdesk، Mobile App یا SaaS تلفنی مستقیماً با هسته Telecom کار کند.
در اکتبر ۲۰۲۶ نسخه پایدار 26.10 با Asterisk 22.11.0 در دسترس است و مسیر نصب فعلی بر Debian 12 قرار دارد. برای Production مهم است Stable Branch را بهصورت صریح انتخاب کنید، چون Installer Repository بهطور پیشفرض Development Version را هدف میگیرد.
اگر نیاز شما فقط Extension و Trunk و IVR است، یک PBX GUIمحور سادهتر خواهد بود. اما اگر API و WebRTC قلب پروژه هستند، Wazo از ابتدا برای همین سبک توسعه طراحی شده است.
برای نصب Wazo Platform روی VPS کمک میخواهید؟
بهتر است ابتدا Stable Release را روی Debian 12 نصب کنید و فقط یک Integration کوچک مثل REST API + WebSocket + Click-to-Call را بسازید. بعد از اثبات معماری سراغ WebRTC، Provisioning و اتصال به CRM اصلی بروید.
تماس با پشتیبانی ایرانیکاسرور: 021-91302467






دیدگاهها (۰)