FreePBX
FreePBX — kompaniyada qo'ng'iroqlarni boshqarishga imkon beruvchi bepul dasturiy telefon tizimi.
Xususiyatlari
- Internet telefon qo'ng'iroqlari: VoIP texnologiyasidan foydalanadi, odatiy telefon tarmog'i o'rniga internet orqali qo'ng'iroqlarni amalga oshiradi.
- Avtomatik qo'ng'iroqlarni taqsimlash: kiruvchi qo'ng'iroqlarni kompaniya ichidagi to'g'ri raqamlar yoki bo'limlarga avtomatik yo'naltirishga yordam beradi.
- Interaktiv ovozli menyular (IVR): qo'ng'iroq qiluvchi tegmalarni bosish orqali kerakli bo'limni tanlashi uchun interaktiv ovoz menyularini sozlashingiz mumkin.
- Ovozli pochta: agar hech kim qo'ng'iroqqa javob bera olmasa, FreePBX ovozli xabarni yozib olishi mumkin, keyinroq tinglanadi.
- Konferens-qo'ng'iroqlar: bir nechta odamlar bir vaqtning o'zida ishtirok etishi mumkin bo'lgan konferens-qo'ng'iroqlar tashkil etish imkoniyati.
- Qo'ng'iroqlarni yozib olish: suhbatlarni keyinchalik tinglash yoki tahlil qilish uchun yozib olish mumkin.
- Boshqa tizimlar bilan integratsiya: FreePBX turli CRM tizimlari, jumladan Planfix bilan integratsiya qilinishi mumkin.
Ulash
FreePBXni Planfixga ikki xil usulda ulash mumkin:
Eslatma: Planfix jamoasi mijoz tomondagi Asteriskni sozlamaydi va bunday masalalarda maslahat bermaydi.
Planfix telefoniyaga mo'ljallangan API
- Ushbu usul orqali faqat Planfixda qo'ng'iroq tadbirlarini qabul qilishingiz mumkin, ya'ni qo'ng'iroq sodir bo'lganda faol Planfix yorlig'ida qo'ng'iroq kartasi paydo bo'ladi.
- Planfixdan qo'ng'iroq qilish mumkin emas.
- Qo'ng'iroq yozuvlarini olish uchun qo'shimcha ravishda apache/nginx ni sozlashingiz kerak (5-qadam).
1-qadam
Serverda /etc/asterisk/extensions_override_freepbx.conf faylini tahrir qiling (misol fayl) va unda quyidagi 3 kontekst bo'lishiga ishonch hosil qiling:
- [macro-dialout-one-predial-hook]
- [macro-dialout-trunk-predial-hook]
- [macro-hangupcall]
[macro-hangupcall] konteksti aniq ko'rinishda bo'lishi shart emas, misoldagidek bo'lishi kerak emas.
extensions_additional.conf faylida [macro-hangupcall] kontekstini toping — uni nusxa ko'chiring — va quyidagi qatorni eng boshida qo'shing:
exten => s,1,Macro(hangupcall-send-post)
2-qadam
Barcha kontekstlarni misol dan extension_custom.conf ga nusxa ko'chiring. Buni FreePBX interfeysi orqali ham amalga oshirish mumkin.
3-qadam
globals_custom.conf ga 3 qator qo'shing va {…} o'rniga mos qiymatlarni qo'ying:
- PBX_URL = {…} — PBXingizning URLi
- PF_URL = {…} — so'rovlarni qabul qiluvchi manzil
- PF_KEY = {…} — Planfix avtorizatsiya tokeni
4-qadam
- Planfixda Account management — Integrations — Virtual PBXs — Planfix API for telephony bo'limiga o'ting.
- PBX manzilini to'ldiring, shunda Planfix shu sayt yoki manzildan kelayotgan tadbirlarni qabul qilishini biladi.
5-qadam
Yozuvlarni olish uchun ularni veb-server orqali tashqi tarzda mavjud qilishingiz kerak. FreePBXga kiritilgan Apache orqali buni amalga oshirish uchun yozuvlar papkasiga havola qo'shing. Papkada to'g'ri egasi, guruhi va ruxsatlar — 775 bo'lishi kerak.
- Havolani yarating:
ln -s /var/spool/asterisk/monitor /var/www/html/monitor
- Ruxsatlar va egani tahrirlang:
chmod -R 775 /var/www/html/monitor/chown -R asterisk:asterisk /var/www/html/monitor/
Agar Apache bo'lmagan build ishlatayotgan bo'lsangiz — o'zingizning veb-serveringiz uchun shunga o'xshash sozlamani amalga oshiring.
FreePBX Integratsiyasi
(FreePBX 16+ / Asterisk 18+)
Boshlashdan oldin extensions_override_freepbx.conf maxsus sozlamalar fayliga quyidagilarni kiriting:
[macro-dialout-trunk-predial-hook]
exten => s,1,Gosub(planfix-mark-outbound,s,1)
same => n,MacroExit()
[planfix-mark-outbound]
exten => s,1,NoOp(Outgoing call from ${CALLERID(all)} to ${EXTEN})
same => n,Set(__CRM_DIRECTION=OUTBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
[macro-dialout-one-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[macro-dial-ringall-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[planfix-mark-inbound]
exten => s,1,NoOp(Incoming call to ${EXTEN} from ${CALLERID(all)})
same => n,Set(__CRM_DIRECTION=INBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
1-qadam
FreePBXni oching va foydalanuvchi qo'shing: Settings — Asterisk REST Interface Users — Add User.
Quyidagi maydonlarni to'ldiring:
- REST Interface User Name: foydalanuvchi nomi
- REST Interface User Password: parol
- Password Type: Plain Text
- Read Only: No
Keyin nusxa ko'chiring (4-qadamda kerak bo‘ladi) va saqlang.
2-qadam
Manager qo'shing: Settings — Asterisk Manager Users — Add Manager:
- Name: nom
- Secret: default qoldiring yoki o'zingizniki bilan almashtiring
- Boshqa sozlamalarni o'zgartirmaslik ma'qul.
Keyin nusxa ko'chiring (4 va 6-qadamlarda kerak bo‘ladi) va saqlang.
3-qadam
O'ng yuqori burchakdagi Apply Config tugmasini bosib sozlamalarni saqlang.
4-qadam
Planfixda Primary Account Admin — Integrations — Virtual PBXs — FreePBX qismiga o'ting.
To'ldiring:
- PBX address: PBXingizning URLi (protokol va ARI mavjud portni o'z ichiga olgan)
- ARI User Name: 1-qadamdagi Name
- ARI User Password: 1-qadamdagi Password
Qabul qiluvchi skript URLini nusxa ko'chiring va integratsiyani saqlang.
5-qadam
Serverda:
- /var/spool/asterisk/ ichida monitor papkaga recording nomli simbolli bog'lanma (symlink) yarating (shu katalog ichida). Buyruq:
ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording
6-qadam
- /etc/asterisk/ ga o'ting
- Agar mavjud bo'lmasa, scripts papkasini yarating
- scripts papkasida ami_listener.py faylini yarating
7-qadam
ami_listener.py ni misol ga asosan to'ldiring, quyidagilarni almashtiring:
- Your_user_name: 2-qadamdagi Name bilan
- Your_user_password: 2-qadamdagi Secret bilan
- Your_planfix_endpoint_url: 4-qadamdagi qabul qiluvchi skript URLi bilan
8-qadam
Faylni ijro etiladigan qiling:
chmod +x /etc/asterisk/scripts/ami_listener.py
9-qadam
- /lib/systemd/system/ ga o'ting
- crm-asterisk-listener.service nomli fayl yarating
- crm-asterisk-listener.service ni misol ga muvofiq to'ldiring
10-qadam
Avto-ishga tushirishga qo'shing va xizmatni boshlang:
sudo systemctl enable crm-asterisk-listener
sudo systemctl start crm-asterisk-listener
Asteriskning eski versiyalari bilan ishlash
Asterisk 13+ uchun konfiguratsiya fayllariga qo'shimcha xususiyatlar kiritish kerak.
/etc/asterisk/cdr.conf uchun
[general] enable = yes batch = no unanswered = yes
/etc/asterisk/cdr_manager.conf uchun
[general] enable = yes unanswered = yes
Eslatma: qo'ng'iroq yozuvlarini olish faqat Asterisk 14+ da ishlaydi.
Qo'shimcha usullar
Siz bu usullarni dialplandan o'zingiz chaqirishingiz mumkin.
Mas'ul shaxslar (supervisors) haqida ma'lumot olish
Integratsiyada ko'rsatilgan URLga quyidagi mazmundagi POST so'rov yuborishingiz mumkin:
Content-type: application/json
Javobda olasiz:
YOKI
Agar kontakt uchun:
- mas'ul shaxslar mavjud bo'lmasa
- qisqa raqamlar tayinlanmagan bo'lsa
- mas'ul shaxs — chaqirilgan raqamga teng bo‘lgan xodim bo‘lsa ("short_PBX_extension")
Unda javob quyidagicha bo‘ladi:
Chalqancha qo'ng'iroq haqida bildirishnoma (Missed call notification)
- Ushbu usuldan foydalanish uchun integratsiya sozlamalarida — “Record missed calls only by a separate special request” ni tanlang:
Integratsiyada ko'rsatilgan URLga quyidagi mazmundagi POST so'rov yuborishingiz mumkin:
Content-type: application/json
{"event": "callMissedNotify", "uniqueId": "unique_call_id", "intNum": "short_PBX_extension_to_receive_missed_call_notification", "extNum": "external_subscriber_number"}
Agar shu qisqa raqamga ega xodim mavjud bo'lsa, unga missed call bildirishnomasi yuboriladi.
POST so'rovga javob bo'sh bo'ladi.
Ishlashga oid eslatmalar
- Skript ishlashi uchun "panoramisk" kutubxonasi o'rnatilganligiga ishonch hosil qiling. Uni 'pip install panoramisk' bilan o'rnatish mumkin.
- Agar skript darhol ishlamasa yoki ami_listener ga o'zgartirishlar kiritgandan keyin muammo bo'lsa, quyilar yordam berishi mumkin:
sudo systemctl daemon-reloadsudo systemctl restart crm-asterisk-listener
- Integratsiyani o‘chirish uchun:
sudo systemctl stop crm-asterisk-listenersudo systemctl disable crm-asterisk-listener
- Barcha ulash usullarida quyilar sozlangan bo'lishi shart:
- ichki qo'ng'iroq raqamlari (Extensions)
- kiruvchi va chiquvchi marshrutlar (Inbound/Outbound Routes)