Skip to content

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

{"event": "callInfoRespNum", "uniqueId": "unique_call_id", "intNum": "short_PBX_extension", "extNum": "external_subscriber_number"}

Javobda olasiz:

{"responsibleNumbers":["short_number_of_responsible","short_number_of_second_responsible(if_any)"]}

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:

{"error":"no persons responsible"}


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:

7TWeHF.png


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-reload
sudo systemctl restart crm-asterisk-listener


  • Integratsiyani o‘chirish uchun:
sudo systemctl stop crm-asterisk-listener
sudo 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)


O‘tish