Issabel/Rocky 8 ships Python 3.6 which crashes the connector; install/update now detect or install python39 and point systemd at it. Co-authored-by: Cursor <cursoragent@cursor.com>
7.1 KiB
Hesabix Telephony Connector
عامل سبک برای اتصال Issabel / Asterisk به حسابیکس.
مخزن: extraScripts/HesabixTelephonyConnector
نصب یکخطی (پیشنهادی)
روی سرور Issabel/Asterisk با root:
# اگر sudo دارید (مثلاً Ubuntu):
curl -fsSL https://source.hesabix.ir/hesabix/arc/raw/branch/master/extraScripts/HesabixTelephonyConnector/install.sh | sudo bash
# اگر sudo ندارید (مثلاً Debian یا Issabel با ورود root):
curl -fsSL https://source.hesabix.ir/hesabix/arc/raw/branch/master/extraScripts/HesabixTelephonyConnector/install.sh | bash
آدرس API پیشفرض https://hsxn.hesabix.ir است. برای تغییر از همان لحظهٔ نصب:
curl -fsSL https://source.hesabix.ir/hesabix/arc/raw/branch/master/extraScripts/HesabixTelephonyConnector/install.sh \
| HESABIX_API_URL=https://my-api.example.com bash
اسکریپت:
- توزیع را تشخیص میدهد (Debian/Ubuntu با apt، Issabel/CentOS/RHEL با yum یا dnf)
- پیشنیازها را نصب میکند (
python3,rsync,curl,git) - کانکتور را از مخزن حسابیکس میگیرد
- دستور
hesabix-pbxرا در سیستم نصب میکند - ویزارد پیکربندی (API / توکن / AMI) را اجرا میکند — آدرس API قابل تغییر است
- سرویس systemd را فعال میکند
قبل از نصب، در حسابیکس: افزونه را فعال کنید → مرکز تلفن بسازید → توکن را کپی کنید.
دستورات روزمره
hesabix-pbx status # وضعیت سرویس، سیستمعامل و پیکربندی
hesabix-pbx test # تست AMI + اتصال به حسابیکس
hesabix-pbx update # بهروزرسانی از مخزن (+ تلاش برای نصب Softphone deps)
hesabix-pbx softphone-setup # نصب خودکار Softphone Relay
hesabix-pbx restart # ریاستارت
hesabix-pbx stop
hesabix-pbx start
hesabix-pbx configure # تغییر توکن / AMI / آدرس API
hesabix-pbx logs # آخرین لاگها
hesabix-pbx follow # لاگ زنده
hesabix-pbx uninstall # حذف سرویس
hesabix-pbx help
نیازمندیها
- دسترسی root روی سرور تلفن (با یا بدون
sudo) - خروجی HTTPS از سرور تلفن به API حسابیکس (پورت ورودی لازم نیست)
- کاربر AMI روی Asterisk (اسکریپت در صورت تمایل میسازد)
- Python ≥ 3.8 برای اجرای Connector (کد از
from __future__ import annotationsو typing مدرن استفاده میکند)
پیشنیازهای نرمافزاری در صورت نبود، هنگام install/update خودکار نصب میشوند.
پایتون روی Issabel / Rocky / CentOS 8
روی این توزیعها python3 سیستم اغلب 3.6 است و سرویس با SyntaxError کرش میکند.
از نسخهٔ 1.3.1 اسکریپت hesabix-pbx خودش:
- مفسر ≥3.8 را پیدا میکند (
python3.9/python3.8/ …) - در صورت نبود، بستهٔ
python39(یا معادل) را باdnf/yum/aptنصب میکند - یونیت systemd را به همان مفسر اشاره میدهد (نه
/usr/bin/python3سیستم) - مسیر را در
/opt/HesabixTelephonyConnector/.python-binذخیره میکند
دستی (اگر لازم شد):
dnf install -y python39 python39-pip # Rocky/Issabel 8
hesabix-pbx update
hesabix-pbx softphone-setup
توزیعهای پشتیبانیشده
| خانواده | نمونهها | مدیر بسته |
|---|---|---|
| Debian | Debian، Ubuntu | apt-get |
| RHEL | CentOS، Rocky، Alma، Issabel | yum یا dnf |
پیکربندی (ویزارد)
hesabix-pbx configure
از شما فقط میپرسد:
- آدرس API (پیشفرض
https://hsxn.hesabix.ir) - کلید API از حسابیکس: پروفایل ← کلیدهای API
- انتخاب کسبوکار از لیست
- انتخاب یا ایجاد مرکز تلفن (توکن Connector خودکار گرفته میشود)
- تنظیمات AMI محلی
دیگر نیازی به وارد کردن دستی Business ID / PBX ID نیست.
مقدار پیشفرض HESABIX_API_URL برابر https://hsxn.hesabix.ir است.
Softphone Media Relay
از نسخهٔ دارای Softphone، Connector علاوه بر AMI یک تونل رسانه خروجی (WSS) به حسابیکس و یک AudioSocket محلی (127.0.0.1:9092) دارد.
نصب خودکار (پیشنهادی)
روی سرور PBX با root:
hesabix-pbx update
hesabix-pbx softphone-setup
softphone-setup این کارها را خودش انجام میدهد:
- نصب
websocket-client(pip) - افزودن کلیدهای Softphone به
.env(MEDIA_TUNNEL_ENABLED,AUDIOSOCKET_*) - ریاستارت سرویس
- بررسی آمادگی
از نسخهٔ 1.3.0 به بعد، خودِ hesabix-pbx update هم تلاش میکند websocket-client را نصب کند.
نصب دستی (در صورت نیاز)
pip3 install -r /opt/HesabixTelephonyConnector/requirements-softphone.txt
# یا:
pip3 install websocket-client
متغیرهای .env:
AUDIOSOCKET_HOST=127.0.0.1
AUDIOSOCKET_PORT=9092
MEDIA_TUNNEL_ENABLED=1
نمونه دیالپلن: dialplan/hesabix-softphone-relay.conf.sample
در حسابیکس: نگاشت کاربر↔داخلی را روی endpoint_mode=relay بگذارید، سپس از صفحه Softphone «آنلاین شدن» را بزنید.
امنیت: همچنان هیچ پورت ورودی روی PBX لازم نیست؛ فقط خروجی HTTPS/WSS به API حسابیکس.
عیبیابی: Handshake status 403 Forbidden
اگر AMI و AudioSocket بالا میآیند ولی تونل رسانه با 403 قطع میشود:
- روی خودِ PBX تست کنید (باید
101 Switching Protocolsببینید، نه 403):
python3 - <<'PY'
from websocket import create_connection
url = "wss://hsxn.hesabix.ir/ws/telephony/connector/media"
ws = create_connection(url, timeout=10, suppress_origin=True)
print("OK", ws.connected)
ws.close()
PY
- اگر همین تست روی PBX 403 است ولی از جای دیگر OK است → معمولاً WAF آروان IP عمومی سرور PBX را برای Upgrade وبسوکت مسدود کرده. IP را در پنل آروان whitelist کنید، یا تونل را به origin مستقیم بزنید:
# در /opt/HesabixTelephonyConnector/.env
HESABIX_MEDIA_WS_URL=wss://YOUR_ORIGIN_HOST/ws/telephony/connector/media
systemctl restart hesabix-telephony-connector
- اگر تست OK است ولی سرویس هنوز 403 میدهد →
hesabix-pbx updateو ریاستارت سرویس.