مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
آموزشی

Wazo Platform چیست؟ آموزش ساخت سیستم تلفنی سازمانی با API و WebRTC

Wazo Platform یک پلتفرم متن‌باز برای ساخت سیستم‌های تلفنی و ارتباطی قابل‌برنامه‌ریزی است؛ یعنی به‌جای اینکه فقط یک پنل برای ساخت داخلی و SIP Trunk در اختیار شما قرار دهد، تقریباً تمام اجزای تلفنی…

Wazo Platform چیست؟ آموزش ساخت سیستم تلفنی سازمانی با API و WebRTC
خلاصه سریع این آموزش

Wazo Platform یک پلتفرم متن‌باز برای ساخت سیستم‌های تلفنی و ارتباطی قابل‌برنامه‌ریزی است؛ یعنی به‌جای اینکه فقط یک پنل برای ساخت داخلی و SIP Trunk در اختیار شما قرار دهد،…

۲۰ دقیقه مطالعه ۰ دیدگاه ۲۵ مهر ۱۴۰۵ آخرین به‌روزرسانی
Wazo Platform یک پلتفرم متن‌باز برای ساخت سیستم‌های تلفنی و ارتباطی قابل‌برنامه‌ریزی است؛ یعنی به‌جای اینکه فقط یک پنل برای ساخت داخلی و SIP Trunk در اختیار شما قرار دهد، تقریباً تمام اجزای تلفنی را از طریق API، WebSocket، Webhook و WebRTC در اختیار نرم‌افزار شما می‌گذارد.

اگر بخواهید تماس تلفنی را داخل CRM، نرم‌افزار پشتیبانی، اپ موبایل، پنل مشتریان یا Contact Center اختصاصی خودتان قرار دهید، Wazo دقیقاً برای چنین سناریوهایی جذاب می‌شود.

در این مقاله بررسی می‌کنیم Wazo VoIP در سال ۲۰۲۶ دقیقاً چیست، چه معماری‌ای دارد، از چه نسخه Asterisk استفاده می‌کند، APIهای آن چه کاری انجام می‌دهند، WebRTC چگونه وارد معماری می‌شود، تلفن‌های IP چگونه Provision می‌شوند و در نهایت Wazo را با FreePBX، FusionPBX و VitalPBX مقایسه می‌کنیم.

نسخه بررسی‌شده: آخرین Release فعلی Wazo Platform در زمان نگارش این مقاله 26.10 است که ۱۲ اکتبر ۲۰۲۶ منتشر شده و در این نسخه Asterisk به 22.11.0 ارتقا یافته است.

فهرست مطالب

Wazo Platform دقیقاً چیست؟

Wazo را بهتر است یک Programmable Telecom Platform بدانیم، نه فقط یک سانترال تحت وب.

در یک PBX سنتی معمولاً Administrator وارد پنل می‌شود، داخلی می‌سازد، Trunk تنظیم می‌کند و Route تعریف می‌کند.

Wazo همین قابلیت‌ها را دارد، اما فلسفه اصلی آن این است که نرم‌افزار شما بتواند همین کارها را با API انجام دهد.

برای مثال یک سامانه CRM می‌تواند بدون ورود Administrator به پنل:

🔹 یک User تلفنی بسازد.

🔹 Line و Extension ایجاد کند.

🔹 تماس برقرار کند.

🔹 تماس را Hold یا Transfer کند.

🔹 وضعیت تماس را به‌صورت لحظه‌ای دریافت کند.

🔹 CDR را دریافت کند.

🔹 Recording را نمایش دهد.

🔹 Agentهای Call Center را کنترل کند.

تفاوت اصلی Wazo با یک PBX معمولی چیست؟

در Wazo، API یک قابلیت جانبی نیست.

API بخش اصلی معماری است.

خود مستندات Wazo از عبارت:

API-First

استفاده می‌کنند.

یعنی بسیاری از قابلیت‌های سیستم ابتدا به شکل Service و API طراحی شده‌اند و بعد UI یا Application می‌تواند روی آن‌ها ساخته شود.

مثال ساده: CRM تلفنی اختصاصی

فرض کنید شرکت شما یک CRM دارد.

در PBX معمولی کارمند شماره تلفن مشتری را می‌بیند، شماره را روی تلفن شماره‌گیری می‌کند و بعد شاید CRM بتواند CDR را Import کند.

در معماری Wazo می‌توانید دکمه:

تماس با مشتری

را داخل CRM قرار دهید.

کلیک روی همان دکمه از طریق API تماس را برقرار می‌کند.

WebSocket وضعیت تماس را به CRM برمی‌گرداند:

Ringing
Answered
Held
Transferred
Ended

و بعد از پایان تماس CDR و Recording می‌تواند به همان پرونده مشتری متصل شود.

معماری Wazo چگونه ساخته شده است؟

Wazo معماری خود را به چهار لایه تقسیم می‌کند.

لایه Application

جایی است که Application شما قرار دارد.

مثلاً:

🔹 Web Softphone

🔹 اپ موبایل

🔹 CRM

🔹 Contact Center اختصاصی

🔹 پنل SaaS تلفنی

Wazo برای این بخش JavaScript SDK و ابزارهای Mobile ارائه می‌کند.

لایه Business

در این قسمت Serviceهای اصلی Business Logic قرار دارند.

از مهم‌ترین آن‌ها:

wazo-calld برای کنترل تماس

wazo-confd برای Configuration

wazo-agentd برای Agentهای Contact Center

لایه Telecom Engine

در این قسمت موتورهای واقعی ارتباط قرار دارند.

از جمله:

🔹 Asterisk

🔹 Kamailio

🔹 RTPEngine

🔹 wazo-provd

🔹 wazo-amid

لایه Technical

زیرساخت سرویس‌ها در این لایه قرار دارد.

🔹 PostgreSQL

🔹 RabbitMQ

🔹 NGINX

🔹 wazo-auth

🔹 wazo-webhookd

🔹 wazo-websocketd

چرا Wazo از Microservice استفاده می‌کند؟

در یک PBX یکپارچه، بخش زیادی از منطق داخل یک Application یا Database متمرکز می‌شود.

Wazo وظایف را بین Daemonهای مختلف تقسیم کرده است.

مثلاً Authentication یک Service مستقل است و Provisioning سرویس دیگری دارد.

این معماری برای توسعه‌دهنده یک مزیت مهم ایجاد می‌کند:

لازم نیست برای هر Integration مستقیماً سراغ Database یا فایل‌های Asterisk بروید.

با API سرویس مربوطه صحبت می‌کنید.

نسخه فعلی Wazo در ۲۰۲۶

Wazo از شماره نسخه مبتنی بر سال و Release استفاده می‌کند.

آخرین نسخه در زمان بررسی:

Wazo Platform 26.10

است.

این نسخه در ۱۲ اکتبر ۲۰۲۶ منتشر شده است.

Asterisk فعلی Wazo چه نسخه‌ای است؟

در Wazo 26.10 موتور Asterisk به:

Asterisk 22.11.0

ارتقا داده شده است.

یعنی Wazo فعلی از شاخه LTS جدید Asterisk استفاده می‌کند.

Wazo 26.10 چه تغییرهایی داشته است؟

در Release 26.10 چند مورد قابل توجه دیده می‌شود.

🔹 Sessionهای Authentication اکنون User Agent و زمان ایجاد/انقضا را نمایش می‌دهند.

🔹 امکان تعیین Caller ID خروجی پیش‌فرض برای User اضافه شده است.

🔹 پشتیبانی PJSIP Transport از IPv6 بهبود یافته است.

🔹 Header امنیتی HSTS روی API Authentication اضافه شده است.

🔹 Asterisk به 22.11.0 ارتقا یافته است.

🔹 Performance جست‌وجوی Directory در Deploymentهای بزرگ بهتر شده است.

Wazo API از چه بخش‌هایی تشکیل شده است؟

Wazo تقریباً برای هر بخش مهم یک API مستقل دارد.

Service کاربرد
wazo-auth Authentication، Token، Policy و ACL
wazo-calld کنترل Call و Application
wazo-confd User، Line، Extension، Trunk و Configuration
wazo-dird Contact و Directory
wazo-provd Provisioning تلفن
wazo-webhookd ارسال Event به سرویس خارجی
wazo-call-logd CDR و Call Log
wazo-agentd Agentهای Contact Center
wazo-chatd Presence و Chat
wazo-websocketd Eventهای لحظه‌ای

REST API چه کاری برای ما انجام می‌دهد؟

فرض کنید نرم‌افزار شما می‌خواهد لیست کاربران تلفنی را دریافت کند.

بعد از گرفتن Token می‌توان از API Configuration استفاده کرد.

مثال رسمی Wazo برای دریافت کاربران:

curl \
-H "X-Auth-Token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
https://wazo.example.com/api/confd/1.1/users

دامنه و Token را با مقادیر واقعی جایگزین کنید.

Authentication در API چگونه انجام می‌شود؟

سرویس `wazo-auth` مسئول Authentication است.

ابتدا Client یک Token دریافت می‌کند.

سپس Token در Requestهای بعدی از طریق Header زیر ارسال می‌شود:

X-Auth-Token: TOKEN

Policy و ACL چرا مهم‌اند؟

نباید یک Integration ساده CRM به تمام APIهای PBX دسترسی Administrator داشته باشد.

Wazo برای این کار ACL و Policy دارد.

مثلاً Token یک User می‌تواند فقط اجازه خواندن Resourceهای مربوط به خودش را داشته باشد.

در Production اصل:

Least Privilege

را رعایت کنید.

Wildcardهایی مثل:

confd.#
auth.#

برای آزمایش سریع مفیدند، اما برای Integration نهایی بهتر است ACL دقیق‌تر ساخته شود.

WebSocket چه تفاوتی با REST API دارد؟

REST API برای Request/Response مناسب است.

مثلاً:

«این User را بساز.»

اما Application تلفنی به Event لحظه‌ای هم نیاز دارد.

مثلاً:

«همین الآن تلفن کاربر زنگ خورد.»

برای چنین سناریویی Wazo از WebSocket استفاده می‌کند.

نمونه کاربرد WebSocket

CRM می‌تواند به Event Stream متصل باشد.

وقتی تماس ورودی می‌آید:

Wazo → WebSocket Event → CRM

CRM می‌تواند شماره تماس‌گیرنده را جست‌وجو کند و پرونده مشتری را قبل از Answer شدن تماس روی صفحه Agent باز کند.

کنترل دسترسی WebSocket چگونه است؟

اتصال WebSocket نیز با Token احراز هویت می‌شود.

Eventها بر اساس ACL فیلتر می‌شوند.

یعنی یک User عادی نباید Event تماس همه کاربران سازمان را دریافت کند مگر Policy چنین اجازه‌ای بدهد.

Webhook چه زمانی بهتر است؟

اگر Application شما نمی‌خواهد یک WebSocket دائم باز نگه دارد، Webhook گزینه مناسبی است.

مثلاً بعد از پایان هر تماس:

Wazo → HTTP Webhook → سیستم CRM

سپس CRM می‌تواند:

🔹 زمان تماس را ذخیره کند.

🔹 CDR را دریافت کند.

🔹 Ticket ایجاد کند.

🔹 Workflow بعد از تماس اجرا کند.

WebRTC در Wazo چه کاربردی دارد؟

یکی از جذاب‌ترین بخش‌های Wazo امکان ساخت تلفن داخل Browser است.

یعنی کاربر لزوماً به تلفن فیزیکی یا Softphone جدا نیاز ندارد.

می‌توانید داخل:

🔹 CRM

🔹 Helpdesk

🔹 پنل فروش

🔹 سامانه Call Center

یک Web Phone قرار دهید.

Wazo JavaScript SDK

Wazo JavaScript SDK لایه‌ای برای کار با:

🔹 APIها

🔹 WebSocket

🔹 WebRTC

فراهم می‌کند.

در نتیجه Front-End Developer لازم نیست تمام Signaling و APIهای Wazo را از ابتدا پیاده‌سازی کند.

WebRTC فقط تماس صوتی نیست

Wazo از WebRTC برای سناریوهای:

🔹 Voice Call

🔹 Video Call

🔹 Transfer

🔹 Browser Softphone

🔹 Web Meeting

استفاده کرده است.

آیا WebRTC پشت NAT همیشه بدون مشکل کار می‌کند؟

خیر.

خود WebRTC قابلیت‌های NAT Traversal دارد، اما در شبکه‌های پیچیده ممکن است سرویس خارجی لازم باشد.

دو مفهوم مهم:

STUN برای پیدا کردن آدرس بیرونی Client

TURN برای Relay کردن Media وقتی ارتباط مستقیم ممکن نیست

است.

TURN را چه زمانی لازم داریم؟

اگر Agentها از:

🔹 اینترنت شرکتی محدود

🔹 Double NAT

🔹 Carrier NAT

🔹 Firewall سخت‌گیرانه

استفاده می‌کنند، Media WebRTC ممکن است نتواند مسیر مستقیم بسازد.

در چنین شرایطی TURN می‌تواند Media را Relay کند.

Wazo برای اپ موبایل هم مناسب است؟

بله.

مستندات Wazo علاوه بر JavaScript SDK، نمونه‌های Mobile و کتابخانه Callkeep را معرفی می‌کنند.

Callkeep برای ادغام با:

iOS CallKit

و:

Android ConnectionService

استفاده می‌شود.

یک Use Case واقعی: اپ تماس سازمانی اختصاصی

فرض کنید شرکتی نمی‌خواهد کاربران از Softphone عمومی استفاده کنند.

می‌توانید اپ برند خودتان را بسازید که:

🔹 Login سازمانی دارد.

🔹 Contactهای شرکت را نشان می‌دهد.

🔹 تماس داخلی برقرار می‌کند.

🔹 تماس PSTN می‌گیرد.

🔹 Call History دارد.

🔹 Presence نمایش می‌دهد.

و Back-end Telecom آن Wazo باشد.

Provisioning تلفن‌های IP در Wazo چگونه کار می‌کند؟

سرویس مستقل:

wazo-provd

مسئول Provisioning دستگاه‌ها است.

این Service Config Fileهای تلفن و Gateway را تولید می‌کند.

Provisioning مبتنی بر Plugin است

هر خانواده Device باید Plugin مناسب `wazo-provd` داشته باشد.

Plugin مشخص می‌کند:

🔹 فایل Configuration چگونه ساخته شود.

🔹 Firmware چگونه مدیریت شود.

🔹 Keyها و Featureها چگونه تنظیم شوند.

مزیت این معماری این است که Pluginها می‌توانند مستقل از کل سیستم‌عامل Upgrade شوند.

Auto Provisioning چگونه انجام می‌شود؟

Flow معمول یک تلفن SIP چنین است:

مرحله ۱: Phone روشن می‌شود.

مرحله ۲: DHCP Request می‌فرستد.

مرحله ۳: DHCP اطلاعات شبکه و Provisioning URL را می‌دهد.

مرحله ۴: Phone فایل عمومی و MAC-specific را دریافت می‌کند.

مرحله ۵: Firmware و Language File نیز در صورت نیاز دریافت می‌شوند.

مرحله ۶: Phone با Configuration جدید Restart و Register می‌شود.

برای چند تلفن Provisioning دستی یا DHCP؟

اگر فقط دو Phone برای Lab دارید، Provisioning URL را می‌توانید دستی وارد کنید.

اگر ده‌ها یا صدها تلفن دارید، DHCP-based Provisioning منطقی‌تر است.

Wazo DHCP Server به‌طور پیش‌فرض فعال نیست

Wazo DHCP Server را برای Auto Provisioning فراهم می‌کند، اما این سرویس به‌صورت پیش‌فرض فعال نیست.

همچنین برای Deviceهای پشتیبانی‌شده و VoIP Subnet طراحی شده است؛ قرار نیست DHCP عمومی تمام Clientهای شبکه را جایگزین کند.

Remote Provisioning را بدون Authentication روی اینترنت باز نکنید

یکی از نکات مهم مستندات Wazo این است که Authentication Provisioning در حالت پیش‌فرض می‌تواند Disabled باشد تا Auto Provisioning داخل LAN ساده باشد.

اما این حالت برای اینترنت عمومی امن نیست.

اگر Provisioning Server از اینترنت قابل دسترسی است، Provisioning Key یا روش Authentication مناسب را فعال کنید.

Provisioning Key by Tenant

Wazo می‌تواند برای هر Tenant یک Provisioning Key ایجاد کند.

Key داخل URL Provisioning قرار می‌گیرد و دسترسی به Config Deviceها را محدود می‌کند.

این روش از قرارگرفتن ساده فایل Configuration تلفن‌ها در یک URL قابل حدس جلوگیری می‌کند.

Multi-Tenant در Wazo چگونه است؟

Wazo از معماری Multi-Tenant پشتیبانی می‌کند.

Resourceهای مختلف مثل User، Device و Phone Number می‌توانند به Tenant مرتبط باشند.

این قابلیت برای ساخت:

🔹 UCaaS

🔹 Hosted PBX

🔹 Telecom SaaS

🔹 سرویس چندشرکتی

کاربرد دارد.

Tenant در Provisioning هم اهمیت دارد

وقتی Device به Line مرتبط می‌شود، `wazo-provd` آن Device را به Tenant همان Line منتقل می‌کند.

نکته مهم این است که تغییر Tenant یک Device بعد از Provision شدن مستقیم نیست؛ طبق مستندات فعلی باید Device حذف و دوباره وارد فرآیند Provisioning شود.

یک محدودیت Provisioning در شبکه‌های NAPT

مستندات Wazo یک محدودیت مشخص را ذکر می‌کنند:

اگر چند Device پشت یک NAPT قرار داشته باشند، Device Synchronization ممکن است درست کار نکند و Sync دستی لازم شود.

برای Deployment شعبه‌ای بزرگ این نکته باید قبل از Rollout واقعی آزمایش شود.

آیا Wazo برای Call Center مناسب است؟

بله، اما مزیت اصلی آن زمانی مشخص می‌شود که Contact Center شما منطق اختصاصی داشته باشد.

Wazo Serviceهایی برای:

🔹 Agent

🔹 Queue

🔹 CDR

🔹 Call Control

🔹 Event

دارد.

در نتیجه می‌توانید Dashboard Agent و Supervisor خودتان را بسازید.

مثال: Routing تماس بر اساس CRM

فرض کنید مشتری VIP تماس می‌گیرد.

Application شما شماره Caller ID را دریافت می‌کند.

از CRM سطح مشتری را بررسی می‌کند.

سپس تماس را به Queue مخصوص VIP هدایت می‌کند.

این همان جایی است که API-first بودن از یک PBX معمولی ارزش بیشتری پیدا می‌کند.

Wazo و هوش مصنوعی

Wazo خودش مدل Speech-to-Text یا مدل زبانی ارائه نمی‌کند.

اما API و Event Layer آن می‌تواند اتصال سیستم تلفنی به AI را ساده کند.

مثلاً می‌توانید:

🔹 تماس را Transcribe کنید.

🔹 خلاصه تماس تولید کنید.

🔹 Sentiment Analysis اجرا کنید.

🔹 Voice Agent بسازید.

🔹 تماس را بر اساس Intent Route کنید.

معماری نمونه Voice AI

یک سناریوی ساده:

تماس → Wazo/Asterisk → Event/API → سرویس AI → CRM

Wazo در Use Case رسمی خود نیز AI-assisted Voice Application را به‌عنوان سناریوی قابل ساخت معرفی می‌کند.

نصب Wazo روی VPS در ۲۰۲۶

راهنمای رسمی Unified Communication فعلی نصب روی:

Debian 12 Bookworm

را پیشنهاد می‌کند.

حداقل منابع برای تست

برای Lab طبق مستند رسمی:

🔹 1 CPU

🔹 حدود 2GB RAM

🔹 حدود 8GB Storage

کف آزمایشی محسوب می‌شود.

برای Production کوچک

برای حدود ۵۰ User مستند Wazo حداقل:

🔹 2 CPU

🔹 4GB RAM

🔹 50GB Storage

را پیشنهاد می‌کند.

Recording، Firmware، Call Center، Video و تعداد تماس هم‌زمان می‌توانند نیاز Storage و CPU را بسیار بیشتر کنند.

مرحله ۱: Debian 12 را آماده کنید

apt update
apt install -yq sudo git ansible curl

مرحله ۲: Installer رسمی را دریافت کنید

git clone https://github.com/wazo-platform/wazo-ansible.git
cd wazo-ansible

نکته مهم: Installer به‌صورت پیش‌فرض می‌تواند Development Version نصب کند

مستند رسمی صریحاً می‌گوید برای نصب Stable باید Tag پایدار را Checkout کنید.

ansible_tag=wazo-$(curl https://mirror.wazo.community/version/stable)
git checkout "$ansible_tag"

برای Production این مرحله را نادیده نگیرید.

مرحله ۳: Dependencyهای Ansible

ansible-galaxy install -r requirements-postgresql.yml

مرحله ۴: Inventory را تنظیم کنید

فایل:

inventories/uc-engine

را متناسب با سرور خود تنظیم کنید.

برای Stable Distribution فعلی Debian 12:

[uc_engine:vars]
wazo_distribution = pelican-bookworm
wazo_distribution_upgrade = pelican-bookworm

اگر Web UI می‌خواهید

بخش زیر را فعال کنید:

[uc_ui:children]
uc_engine_host

مرحله ۵: Installation

ansible-playbook -i inventories/uc-engine uc-engine.yml

بعد از نصب وضعیت سرویس‌ها را بررسی کنید

wazo-service status

سرویس‌هایی مثل:

wazo-auth، wazo-confd، wazo-calld و wazo-provd باید وضعیت سالم داشته باشند.

نسخه واقعی Wazo را با API بررسی کنید

پس از دریافت Token:

curl \
-H "X-Auth-Token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
https://wazo.example.com/api/confd/1.1/infos

در Production از Certificate معتبر استفاده کنید و Validation TLS را بی‌دلیل غیرفعال نکنید.

امنیت API در Wazo

وقتی PBX شما API محور باشد، API خودش بخشی از سطح حمله می‌شود.

بنابراین:

🔹 API Credential را داخل Front-End عمومی Hardcode نکنید.

🔹 Tokenها Expiration داشته باشند.

🔹 ACL را محدود کنید.

🔹 HTTPS معتبر استفاده کنید.

🔹 APIهای مدیریتی را در صورت امکان با Firewall یا VPN محدود کنید.

🔹 Credential آزمایشی با دسترسی گسترده را بعد از Test حذف کنید.

در Wazo 26.10 Session Visibility بهتر شده است

در نسخه 26.10 Sessionها اکنون اطلاعاتی مثل User Agent، Creation Time و Expiration Time را ارائه می‌کنند.

این قابلیت برای شناسایی Sessionهای ناشناس یا Applicationهایی که Token ساخته‌اند مفید است.

Wazo برای چه پروژه‌هایی انتخاب خوبی است؟

CRM با Click-to-Call

کاربر از داخل CRM تماس را آغاز می‌کند و تماس و CDR به پرونده مشتری متصل می‌شود.

Contact Center سفارشی

Routing، Agent State، Queue و Dashboard توسط نرم‌افزار خودتان کنترل می‌شود.

Web Softphone

کاربر بدون نصب نرم‌افزار و از داخل Browser تماس می‌گیرد.

اپ موبایل سازمانی

VoIP داخل اپ Android/iOS خود شرکت قرار می‌گیرد.

Hosted PBX یا UCaaS

با Tenantها و API می‌توانید Provisioning مشتری و ساخت Resource را به پنل فروش خود متصل کنید.

Voice AI

Eventهای تماس، CDR یا Media Workflow به سرویس AI متصل می‌شوند.

سیستم تلفنی Embedded

کاربر حتی لازم نیست بداند پشت نرم‌افزار شما PBX وجود دارد؛ قابلیت تماس بخشی از Application اصلی است.

چه زمانی Wazo انتخاب مناسبی نیست؟

اگر فقط می‌خواهید:

۱۰ داخلی بسازید، یک Trunk اضافه کنید، IVR تنظیم کنید و Administrator همیشه از GUI استفاده کند، Wazo ممکن است پیچیده‌تر از نیاز شما باشد.

در چنین سناریویی FreePBX یا VitalPBX احتمالاً سریع‌تر قابل راه‌اندازی‌اند.

قدرت Wazo زمانی ارزشمند می‌شود که:

Telephony بخشی از Software Product شما باشد.

مقایسه Wazo با FreePBX، FusionPBX و VitalPBX

ویژگی Wazo FreePBX FusionPBX VitalPBX
فلسفه اصلی API-first Telecom Platform PBX مدیریتی FreeSWITCH PBX Asterisk PBX
موتور اصلی فعلی Asterisk 22.11 Asterisk 22 FreeSWITCH Asterisk 20
REST API جزء اصلی معماری محدودتر نسبت به Wazo وجود دارد وجود دارد
WebSocket/Event قوی و طراحی‌شده برای Application تمرکز اصلی نیست قابل توسعه تمرکز اصلی نیست
WebRTC SDK و معماری مستقیم قابل پیاده‌سازی قابل پیاده‌سازی قابل پیاده‌سازی
Provisioning wazo-provd + Plugin ماژول‌های Provisioning Plugin-based Provisioning داخلی/Add-on
Multi-Tenant بومی در معماری تمرکز اصلی نیست Domain-based Commercial Add-on
مناسب توسعه محصول بسیار مناسب متوسط مناسب متوسط
سادگی برای Admin غیرتوسعه‌دهنده کمتر بیشتر بیشتر بیشتر

Wazo یا FreePBX؟

اگر Administrator قرار است همه‌چیز را دستی از GUI مدیریت کند، FreePBX انتخاب ساده‌تری است.

اگر سیستم CRM یا SaaS شما باید PBX را Programmatically کنترل کند، Wazo معماری مناسب‌تری ارائه می‌دهد.

Wazo یا FusionPBX؟

FusionPBX برای Multi-Tenant مبتنی بر FreeSWITCH بسیار مناسب است.

Wazo در سمت دیگر بیشتر بر Programmability و Integration تمرکز دارد و Asterisk را به‌عنوان Telecom Engine اصلی استفاده می‌کند.

اگر تیم شما FreeSWITCH محور است، FusionPBX جذاب‌تر است.

اگر API، SDK و Application Development اولویت اصلی است، Wazo را جدی‌تر بررسی کنید.

Wazo یا VitalPBX؟

VitalPBX برای ساخت PBX و Hosted PBX با GUI کامل‌تر و تجربه مدیریتی سنتی ساده‌تر است.

Multi-Tenant آن یک Add-on تجاری است.

Wazo Multi-Tenancy را در خود معماری Platform و APIها در نظر گرفته است.

آیا Wazo جای SBC را می‌گیرد؟

نه لزوماً.

Wazo پروژه‌های:

🔹 C4 Router

🔹 C4 SBC

🔹 RTPEngine

را نیز دارد، اما مستندات فعلی Router و SBC را همچنان با وضعیت Beta نشان می‌دهند.

برای Carrier-grade Production باید وضعیت نسخه و محدودیت این اجزا را قبل از استفاده بررسی کنید.

برای یک PBX کوچک باید همه Microserviceها را جدا نصب کنیم؟

خیر.

راهنمای Unified Communication نصب All-in-One دارد و برای Deployment کوچک می‌توانید همه اجزا را روی یک Server قرار دهید.

وقتی Scale افزایش پیدا کرد، معماری Microservice امکان جداسازی و Scale بخش‌ها را بهتر فراهم می‌کند.

IP ثابت برای Wazo روی VPS چه فایده‌ای دارد؟

برای یک Platform تلفنی اینترنتی، Public IP ثابت مدیریت این موارد را ساده‌تر می‌کند:

🔹 SIP Trunk

🔹 DNS

🔹 TLS Certificate

🔹 Firewall Allowlist

🔹 WebRTC Endpoint

🔹 API Domain

FQDN را از ابتدا درست طراحی کنید

بهتر است Server از FQDN مشخص استفاده کند.

مثلاً:

wazo.example.com

API، WebSocket، WebRTC و Certificateها بهتر است روی Domain معتبر طراحی شوند.

برای امنیت VPS چه کارهایی انجام دهیم؟

علاوه بر امنیت خود Wazo:

🔹 SSH Key استفاده کنید.

🔹 دسترسی مدیریتی را محدود کنید.

🔹 Firewall را فعال نگه دارید.

🔹 سرویس‌های بدون استفاده را Exposure ندهید.

🔹 Update امنیتی Debian را انجام دهید.

🔹 Backup خارج از VPS داشته باشید.

برای امن‌سازی SSH می‌توانید مقاله آموزش کامل امن‌سازی SSH در لینوکس را نیز ببینید.

Wazo برای چه تیمی بهترین انتخاب است؟

اگر تیم شما ترکیبی از:

VoIP Engineer + Backend Developer + Front-End/Mobile Developer

دارد، Wazo بسیار جذاب می‌شود.

VoIP Engineer Telecom Core را مدیریت می‌کند و Developerها بدون دستکاری مستقیم Asterisk از API و SDK استفاده می‌کنند.

چک‌لیست راه‌اندازی یک پروژه واقعی Wazo

مرحله ۱: Debian 12 و VPS با IP ثابت آماده کنید.

مرحله ۲: FQDN و Certificate طراحی کنید.

مرحله ۳: Stable Release Wazo را نصب کنید، نه Development Branch.

مرحله ۴: `wazo-service status` را بررسی کنید.

مرحله ۵: یک User، Line و Extension ساده بسازید.

مرحله ۶: تماس SIP معمولی را تست کنید.

مرحله ۷: API User با ACL محدود بسازید.

مرحله ۸: Token Authentication را تست کنید.

مرحله ۹: WebSocket Event را دریافت کنید.

مرحله ۱۰: WebRTC Client آزمایشی بسازید.

مرحله ۱۱: STUN/TURN را در شبکه واقعی تست کنید.

مرحله ۱۲: Provisioning یک Phone واقعی را تست کنید.

مرحله ۱۳: API را به CRM یا Application متصل کنید.

مرحله ۱۴: Tenant و Permissionها را تست کنید.

مرحله ۱۵: Backup، Monitoring و Rollback طراحی کنید.

پرسش‌های رایج

Wazo Platform چیست؟

Wazo یک پلتفرم متن‌باز و API-first برای ساخت زیرساخت تلفنی و ارتباطی قابل‌برنامه‌ریزی است که از REST API، WebSocket، Webhook، WebRTC و Asterisk استفاده می‌کند.

آخرین نسخه Wazo در اکتبر ۲۰۲۶ چیست؟

آخرین Release فعلی Wazo Platform نسخه 26.10 است که ۱۲ اکتبر ۲۰۲۶ منتشر شده است.

Wazo از چه نسخه Asterisk استفاده می‌کند؟

در Wazo Platform 26.10، Asterisk به نسخه 22.11.0 ارتقا یافته است.

Wazo روی چه سیستم‌عاملی نصب می‌شود؟

راهنمای فعلی Unified Communication نصب Stable را روی Debian 12 Bookworm مستند کرده است.

آیا Wazo رابط گرافیکی دارد؟

بله، Web UI را می‌توان در Installation فعال کرد؛ اما طراحی اصلی Wazo API-first است و بسیاری از قابلیت‌ها مستقیماً از REST API مدیریت می‌شوند.

آیا می‌توان با Wazo تلفن تحت وب ساخت؟

بله. JavaScript SDK، WebRTC و WebSocket برای ساخت Web Softphone و Communication Application استفاده می‌شوند.

آیا WebRTC بدون TURN همیشه کار می‌کند؟

خیر. WebRTC بسیاری از NATها را مدیریت می‌کند اما در شبکه‌های سخت‌گیرانه ممکن است STUN یا TURN لازم شود.

Provisioning تلفن در Wazo چگونه انجام می‌شود؟

سرویس wazo-provd با Pluginهای مخصوص مدل تلفن فایل Configuration و Firmware موردنیاز را مدیریت می‌کند و می‌تواند از DHCP-based Auto Provisioning استفاده کند.

آیا Wazo Multi-Tenant است؟

بله. Tenant در بخش‌های مختلف Platform از جمله Resourceها و Provisioning استفاده می‌شود و Wazo برای ساخت سرویس‌های چندمشتری طراحی شده است.

Wazo برای PBX کوچک بهتر است یا FreePBX؟

اگر فقط مدیریت GUI و چند داخلی نیاز دارید، FreePBX ساده‌تر است. اگر قرار است Telephony را داخل نرم‌افزار خودتان برنامه‌ریزی کنید، Wazo مزیت معماری بیشتری دارد.

آیا Wazo برای CRM اختصاصی مناسب است؟

بله. Call Control، REST API، WebSocket Event، Webhook، CDR و WebRTC دقیقاً برای چنین Integrationهایی کاربرد دارند.

جمع‌بندی

Wazo Platform را نباید فقط یک جایگزین دیگر برای FreePBX یا VitalPBX دانست. تفاوت اصلی آن در معماری API-first است.

در Wazo، Asterisk موتور تماس است اما User، Line، Call Control، Agent، CDR، Contact، Provisioning، Authentication و Event Stream از طریق Serviceهای مستقل قابل مدیریت هستند.

این معماری باعث می‌شود Wazo برای ساخت CRM تلفنی، Web Softphone، اپ موبایل، Contact Center اختصاصی، Hosted PBX و Voice AI بسیار مناسب باشد.

در نسخه فعلی 26.10 نیز Asterisk 22.11.0 استفاده می‌شود و پروژه همچنان توسعه فعال دارد.

اگر فقط چند داخلی و SIP Trunk می‌خواهید، یک PBX پنل‌محور احتمالاً ساده‌تر است؛ اما اگر هدف شما ساخت یک محصول نرم‌افزاری است که تماس و ارتباط بخشی از آن باشد، Wazo یکی از پروژه‌های متن‌باز جدی برای بررسی است.

منابع و مستندات
نسخه روز، معماری API-first، WebRTC، Provisioning، Installation، Authentication و Multi-Tenant این مقاله با مستندات رسمی Wazo Platform تا ۱۷ اکتبر ۲۰۲۶ بررسی شده‌اند.
نسخه روز
مرجع انتشار Wazo 26.10 در ۱۲ اکتبر ۲۰۲۶، ارتقای Asterisk به 22.11.0 و تغییرهای Authentication، PJSIP و Directory
Architecture
مرجع چهار لایه Application، Business، Engine و Technical و اجزایی مانند Asterisk، Kamailio، RTPEngine، PostgreSQL و RabbitMQ
API / SDK
مرجع REST APIها، WebSocket، Webhooks، wazo-auth، wazo-calld، wazo-confd، SDK جاوااسکریپت و WebRTC
Installation
مرجع Debian 12، حداقل منابع، Ansible Installer، Stable Tag، wazo-service و API Token اولیه
Provisioning
مرجع wazo-provd، Pluginهای Device، Auto Provisioning، DHCP، Tenant Assignment و محدودیت Device Synchronization پشت NAPT
Remote Provisioning
مرجع خطر Provisioning بدون Authentication روی اینترنت و استفاده از Provisioning Key به تفکیک Tenant
WebRTC / NAT
مرجع NAT در SIP و WebRTC، rtp_symmetric، rewrite_contact و نیاز احتمالی WebRTC به STUN و TURN
Authentication
مرجع Token، Policy، ACL، User/Group Management و کنترل دسترسی سرویس‌ها به API
پیشنهاد ایرانیکاسرور برای Wazo و پروژه‌های تلفنی API محور

می‌خواهید تماس را داخل CRM، پنل سازمانی یا اپ خودتان قرار دهید؟ Wazo را ابتدا روی یک VPS آزمایشی مستقل بسازید

Wazo زمانی بیشترین ارزش را دارد که API، WebSocket، WebRTC و SIP هم‌زمان بخشی از نرم‌افزار شما باشند. برای چنین پروژه‌ای بهتر است Development و Production را از PBX فعلی جدا کنید تا تغییر یک API، WebRTC Client یا Provisioning Plugin باعث اختلال در تلفن‌های اصلی شرکت نشود.

می‌توانید روی سرور مجازی ایرانیکاسرور یک Wazo مستقل با IP ثابت راه‌اندازی کنید، FQDN و TLS را تنظیم کنید و ابتدا User، Extension، REST API، WebSocket، WebRTC و Provisioning تلفن‌های آزمایشی را بررسی کنید. بعد از عبور Test Plan، SIP Trunk و کاربران Production به سیستم اضافه شوند.

مشاوره زیرساخت VoIP و راه‌اندازی Wazo: 021-91302467

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *