Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/extraScripts/HesabixTelephonyConnector/README.md
Babak Alizadeh 5ea784e6ff fix: require Python ≥3.8 for Issabel telephony connector
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>
2026-09-23 08:44:46 +00:00

171 lines
7.1 KiB
Markdown

# Hesabix Telephony Connector
عامل سبک برای اتصال **Issabel / Asterisk** به حسابیکس.
مخزن: [extraScripts/HesabixTelephonyConnector](https://source.hesabix.ir/hesabix/arc/src/branch/master/extraScripts/HesabixTelephonyConnector)
## نصب یک‌خطی (پیشنهادی)
روی سرور Issabel/Asterisk با root:
```bash
# اگر 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` است. برای تغییر از همان لحظهٔ نصب:
```bash
curl -fsSL https://source.hesabix.ir/hesabix/arc/raw/branch/master/extraScripts/HesabixTelephonyConnector/install.sh \
| HESABIX_API_URL=https://my-api.example.com bash
```
اسکریپت:
1. توزیع را تشخیص می‌دهد (Debian/Ubuntu با apt، Issabel/CentOS/RHEL با yum یا dnf)
2. پیش‌نیازها را نصب می‌کند (`python3`, `rsync`, `curl`, `git`)
3. کانکتور را از مخزن حسابیکس می‌گیرد
4. دستور `hesabix-pbx` را در سیستم نصب می‌کند
5. ویزارد پیکربندی (API / توکن / AMI) را اجرا می‌کند — آدرس API قابل تغییر است
6. سرویس systemd را فعال می‌کند
قبل از نصب، در حسابیکس: افزونه را فعال کنید → مرکز تلفن بسازید → توکن را کپی کنید.
## دستورات روزمره
```bash
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` خودش:
1. مفسر ≥3.8 را پیدا می‌کند (`python3.9` / `python3.8` / …)
2. در صورت نبود، بستهٔ `python39` (یا معادل) را با `dnf`/`yum`/`apt` نصب می‌کند
3. یونیت systemd را به همان مفسر اشاره می‌دهد (نه `/usr/bin/python3` سیستم)
4. مسیر را در `/opt/HesabixTelephonyConnector/.python-bin` ذخیره می‌کند
دستی (اگر لازم شد):
```bash
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` |
## پیکربندی (ویزارد)
```bash
hesabix-pbx configure
```
از شما فقط می‌پرسد:
1. آدرس API (پیش‌فرض `https://hsxn.hesabix.ir`)
2. **کلید API** از حسابیکس: پروفایل ← کلیدهای API
3. انتخاب کسب‌وکار از لیست
4. انتخاب یا ایجاد مرکز تلفن (توکن Connector خودکار گرفته می‌شود)
5. تنظیمات 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:
```bash
hesabix-pbx update
hesabix-pbx softphone-setup
```
`softphone-setup` این کارها را خودش انجام می‌دهد:
1. نصب `websocket-client` (pip)
2. افزودن کلیدهای Softphone به `.env` (`MEDIA_TUNNEL_ENABLED`, `AUDIOSOCKET_*`)
3. ری‌استارت سرویس
4. بررسی آمادگی
از نسخهٔ `1.3.0` به بعد، خودِ `hesabix-pbx update` هم تلاش می‌کند `websocket-client` را نصب کند.
### نصب دستی (در صورت نیاز)
```bash
pip3 install -r /opt/HesabixTelephonyConnector/requirements-softphone.txt
# یا:
pip3 install websocket-client
```
متغیرهای `.env`:
```bash
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** قطع می‌شود:
1. روی خودِ PBX تست کنید (باید `101 Switching Protocols` ببینید، نه 403):
```bash
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
```
2. اگر همین تست روی PBX **403** است ولی از جای دیگر OK است → معمولاً **WAF آروان** IP عمومی سرور PBX را برای Upgrade وب‌سوکت مسدود کرده. IP را در پنل آروان whitelist کنید، یا تونل را به origin مستقیم بزنید:
```bash
# در /opt/HesabixTelephonyConnector/.env
HESABIX_MEDIA_WS_URL=wss://YOUR_ORIGIN_HOST/ws/telephony/connector/media
systemctl restart hesabix-telephony-connector
```
3. اگر تست OK است ولی سرویس هنوز 403 می‌دهد → `hesabix-pbx update` و ری‌استارت سرویس.