Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Bitrix24 mangrupakeun gabungan badag anu ngagabungkeun CRM, workflow, akuntansi jeung loba hal séjén anu manajer bener resep tur staf IT teu bener resep. Portal dianggo ku seueur perusahaan alit sareng sedeng, kalebet klinik alit, pabrik bahkan salon kageulisan. Fungsi utama anu "cinta" manajer nyaéta integrasi teleponi sareng CRM, nalika telepon naon waé langsung dirékam dina CRM, kartu klien didamel, nalika lebet, inpormasi ngeunaan klien ditampilkeun sareng anjeun tiasa langsung ningali saha anjeunna, naon anjeunna. tiasa ngajual sareng sabaraha hutangna. Tapi telephony ti Bitrix24 sarta integrasi na kalawan CRM waragad duit, kadang loba. Dina tulisan kuring bakal nyaritakeun pangalaman ngahijikeun sareng alat kabuka sareng IP PBX populér freepbx, sarta ogé mertimbangkeun logika karya rupa-rupa bagian

Kuring gawe salaku outsourcer dina parusahaan nu sells na configures, integrates IP telephony. Nalika kuring ditaros upami urang tiasa nawiskeun hal ieu sareng perusahaan ieu pikeun ngahijikeun Bitrix24 sareng PBX anu para nasabah, kitu ogé sareng PBX maya dina sababaraha perusahaan VDS, kuring angkat ka Google. Sarta tangtu anjeunna masihan kuring link ka artikel dina habr, dimana aya pedaran, sarta github, sarta sagalana sigana jalan. Tapi nalika nyobian nganggo solusi ieu, tétéla yén Bitrix24 henteu deui sami sareng sateuacanna, sareng seueur anu kedah didamel deui. Sajaba ti éta, FreePBX teu tanda bintang bulistir pikeun anjeun, didieu anjeun kudu mikir ngeunaan kumaha carana ngagabungkeun betah pamakéan sarta dialplan hardcore dina file config.

Urang diajar logika karya

Janten pikeun ngamimitian, kumaha sadayana kedah dianggo. Nalika telepon ditampi ti luar PBX (acara SIP Ujang ti panyadia), pamrosésan dialplan (rencana dial, dialplan) dimimitian - aturan naon jeung naon urutan pikeun nelepon. Tina pakét anu munggaran, anjeun tiasa nampi seueur inpormasi, anu teras tiasa dianggo dina aturan. Alat anu saé pikeun diajar internal SIP nyaéta analisa sngrep (link) nu ngan saukur dipasang dina distribusi populér via apt install / yum install jeung kawas, tapi ogé bisa diwangun ti sumber. Hayu urang tingali log telepon di sngrep

Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Dina bentuk saderhana, dialplan ngan ukur nganggo pakét anu munggaran, sakapeung ogé nalika paguneman, telepon ditransfer, pencét tombol (DTMF), sababaraha hal anu pikaresepeun sapertos FollowMe, RingGroup, IVR sareng anu sanésna.

Naon anu aya di jero Pek Ujang

Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Sabenerna, paling dialplans basajan dianggo kalayan dua widang munggaran, sarta sakabeh logika revolves sabudeureun DID na CallerID. DID - dimana urang nelepon, CallerID - anu nelepon.

Tapi sanggeus kabeh, urang boga parusahaan jeung teu hiji telepon - nu hartina PBX paling dipikaresep boga grup panggero (simultaneous / ringing padeukeut sababaraha alat) dina nomer kota (Ring Grup), IVR (Halo, anjeun disebut ... Pencét hiji keur ...), Mesin ngajawaban ( Frasa ), Kaayaan Waktos, Neraskeun ka nomer séjén atawa ka sél (FollowMe, Forward). Ieu ngandung harti yén éta téh hésé pisan pikeun unambiguously nangtukeun saha nu sabenerna bakal nampa telepon jeung saha nu bakal ngobrol jeung lamun telepon datang. Ieu mangrupikeun conto awal telepon umum dina PBX klien kami

Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Saatos sauran suksés asup kana PBX, éta ngalangkungan rencana dial dina "konteks" anu béda. Kontéks tina sudut pandang Asterisk nyaéta sakumpulan paréntah anu wilanganana, anu masing-masing ngandung saringan ku nomer anu dipencét (disebut exten, pikeun telepon éksternal dina tahap awal exten=DID). Paréntah dina garis dialplan tiasa naon waé - fungsi internal (contona, nelepon palanggan internal - Dial(), nempatkeun telepon - Hangup()), operator kondisional (IF, ELSE, ExecIF jeung sajabana), transisi ka aturan séjén tina konteks ieu (Goto, GotoIF), transisi ka konteks séjén dina bentuk panggero fungsi (Gosub, Macro). A diréktif misah include имя_контекста, nu nambahkeun paréntah ti konteks sejen ka tungtung konteks ayeuna. Paréntah kaasup via kaasup sok dieksekusi после paréntah tina konteks ayeuna.

Sakabeh logika FreePBX diwangun dina citakan tina konteks béda kana silih ngaliwatan kaasup jeung nelepon ngaliwatan Gosub, Macro jeung Handler pawang. Mertimbangkeun konteks telepon FreePBX asup

Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Telepon ngalangkungan sadaya kontéks ti luhur ka handap, dina unggal kontéks tiasa aya telepon kana kontéks anu sanés sapertos makro (Makro), fungsi (Gosub) atanapi ngan ukur transisi (Goto), janten tangkal nyata naon anu disebut ngan ukur tiasa. dilacak dina log.

Diagram setelan has pikeun PBX has dipidangkeun di handap. Nalika nelepon, DID ditéang dina rute anu asup, kaayaan samentawis dipariksa pikeun éta, upami sadayana beres, ménu sora diluncurkeun. Ti dinya, ku mencét tombol 1 atawa timeout, kaluar ka grup operator nelepon. Saatos panggero réngsé, hangupcall makro disebut, nu satutasna nanaon bisa dipigawé di dialplan nu, iwal pawang husus (hangup Handler).

Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Dimana dina algoritma panggero ieu urang kudu nyadiakeun informasi ngeunaan awal panggero pikeun CRM, dimana ngamimitian ngarekam, dimana mungkas rékaman sarta ngirimkeunana babarengan jeung informasi ngeunaan panggero ka CRM?

Integrasi jeung sistem éksternal

Naon integrasi PBX sareng CRM? Ieu mangrupikeun setélan sareng program anu ngarobih data sareng acara antara dua platform ieu sareng ngirimkeunana. Cara anu paling umum pikeun komunikasi sistem mandiri nyaéta ngalangkungan API, sareng cara anu paling populér pikeun ngaksés API nyaéta HTTP REST. Tapi henteu pikeun tanda bintang.

Di jero Asterisk nyaéta:

  • AGI - panggero sinkron program éksternal / komponén, dipaké utamana dina dialplan nu, aya perpustakaan kawas phpagi, PAGI

  • AMI - soket TCP téks anu dianggo dina prinsip ngalanggan acara sareng ngalebetkeun paréntah téks, nyarupaan SMTP ti jero, tiasa ngalacak acara sareng ngatur telepon, aya perpustakaan. PAMI - anu pang populerna pikeun nyiptakeun sambungan sareng Asterisk

conto kaluaran AMI

Acara: Saluran anyar
Kaistimewaan: nelepon, sadayana
Saluran: PJSIP/VMS_pjsip-0000078b
Kaayaan Saluran: 4
ChannelStateDesc: ngirining
Nomer Telepon: 111222
CallerIDName: 111222
ConnectedLineNum:
ngaran garis disambungkeun:
Basa: en
kode akun:
Konteks: ti-pstn
Ngalegaan: s
Prioritas: 1
Unik: 1599589046.5244
Linkedid: 1599589046.5244

  • ARI mangrupakeun campuran duanana, sadayana via REST, WebSocket, dina format JSON - tapi kalawan perpustakaan seger jeung wrappers, teu pisan alus, offhand kapanggih (phparia, phpari) nu janten dina ngembangkeun maranéhanana ngeunaan 3 taun ka tukang.

Conto kaluaran ARI nalika telepon dimimitian

{ "variabel": "CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id »:»1599644315.5334″, «ngaran»:»PJSIP/VMSpjsip-000007b6″, "state": "Ring", "nélépon":{ "name":"111222″, "nomer":"111222″}, "connected":{ "name":"", "nomer" :"" }, "accountcode":"", "dialplan":{ "context":"ti-pstn", "exten":"s", "prioritas":2, "appname": "Stasis", "appdata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "basa":"en" }, "asteriskid":"48:5b:aa:aa:aa:aa", "aplikasi":"hello-world" }

Kaseueuran atanapi kasulitan, kamungkinan atanapi imposibilitas damel sareng API khusus ditangtukeun ku tugas anu kedah direngsekeun. Tugas pikeun integrasi sareng CRM nyaéta kieu:

  • Lacak awal telepon, dimana éta ditransfer, tarik CallerID, DID, waktos ngamimitian sareng akhir, panginten data tina diréktori (pikeun milarian sambungan antara telepon sareng pangguna CRM)

  • Mimitian sareng mungkas ngarékam sauran, simpen dina format anu dipikahoyong, wartosan dina tungtung rékaman dimana filena aya.

  • Mimitian panggero dina acara éksternal (tina program), nelepon hiji nomer internal, hiji angka éksternal tur sambungkeun aranjeunna

  • Pilihan: ngahijikeun sareng CRM, grup dialer sareng FollowME pikeun nransfer telepon otomatis upami henteu aya tempat (nurutkeun CRM)

Sadaya pancén ieu bisa direngsekeun ngaliwatan AMI atanapi ARI, tapi ARI nyadiakeun loba informasi kirang, aya teu loba acara, loba variabel nu AMI masih mibanda (Contona, panggero makro, netepkeun variabel jero makro, kaasup rekaman panggero) teu dilacak. Ku alatan éta, pikeun tracking bener jeung akurat, hayu urang milih AMI pikeun ayeuna (tapi teu lengkep). Sajaba ti éta (ogé, dimana éta tanpa ieu, urang geus puguh) - dina karya aslina (artikel dina habr) ngagunakeun PAMI. *Teras anjeun kedah nyobian nyerat deui ka ARI, tapi sanés kanyataan yén éta bakal jalan.

Reinventing integrasi

Supados FreePBX urang tiasa ngalaporkeun ka AMI ku cara saderhana ngeunaan awal telepon, waktos tungtung, nomer, nami file anu dirékam, panggampangna pikeun ngitung durasi telepon nganggo trik anu sami sareng pangarang asli. - asupkeun variabel anjeun sarta parse kaluaran pikeun ayana maranéhna. PAMI nyarankeun ngalakukeun ieu ngan ukur nganggo fungsi saringan.

Ieu conto netepkeun variabel anjeun sorangan pikeun waktos ngamimitian telepon (s nyaéta nomer khusus dina rencana telepon anu dilakukeun sateuacan ngamimitian milarian DID)

[ext-did-custom]

exten => s,1,Set(CallStart=${STRFTIME(epoch,,%s)})

Hiji conto acara AMI pikeun garis ieu

Acara: Saluran anyar

Kaistimewaan: nelepon, sadayana

Saluran: PJSIP/VMS_pjsip-0000078b

Kaayaan Saluran: 4

ChannelStateDesc: ngirining

Nomer Telepon: 111222

CallerIDName: 111222

ConnectedLineNum:

ngaran garis disambungkeun:

Basa: en

kode akun:

Konteks: ti-pstn

Ngalegaan: s

Prioritas: 1

Unik: 1599589046.5244

Linkedid: 1599589046.5244

Aplikasi: Set AppData:

CallStart=1599571046

Kusabab FreePBX nimpa file extention.conf sareng extention_additional.conf, urang bakal make file extension_adat.conf

Kode lengkep extention_custom.conf

[globals]	
;; Проверьте пути и права на папки - юзер asterisk должен иметь права на запись
;; Сюда будет писаться разговоры
WAV=/var/www/html/callme/records/wav 
MP3=/var/www/html/callme/records/mp3

;; По этим путям будет воспроизводится и скачиваться запись
URLRECORDS=https://www.host.ru/callmeplus/records/mp3

;; Адрес для калбека при исходящем вызове
URLPHP=https://www.host.ru/callmeplus

;; Да пишем разговоры
RECORDING=1

;; Это макрос для записи разговоров в нашу папку. 
;; Можно использовать и системную запись, но пока пусть будет эта - 
;; она работает
[recording]
exten => ~~s~~,1,Set(LOCAL(calling)=${ARG1})
exten => ~~s~~,2,Set(LOCAL(called)=${ARG2})
exten => ~~s~~,3,GotoIf($["${RECORDING}" = "1"]?4:14)
exten => ~~s~~,4,Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called})
exten => ~~s~~,5,Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)})
exten => ~~s~~,6,System(mkdir -p ${MP3}/${datedir})
exten => ~~s~~,7,System(mkdir -p ${WAV}/${datedir})
exten => ~~s~~,8,Set(monopt=nice -n 19 /usr/bin/lame -b 32  --silent "${WAV}/${datedir}/${fname}.wav"  "${MP3}/${datedir}/${fname}.mp3" && rm -f "${WAV}/${fname}.wav" && chmod o+r "${MP3}/${datedir}/${fname}.mp3")
exten => ~~s~~,9,Set(FullFname=${URLRECORDS}/${datedir}/${fname}.mp3)
exten => ~~s~~,10,Set(CDR(filename)=${fname}.mp3)
exten => ~~s~~,11,Set(CDR(recordingfile)=${fname}.wav)
exten => ~~s~~,12,Set(CDR(realdst)=${called})
exten => ~~s~~,13,MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt})
exten => ~~s~~,14,NoOp(Finish if_recording_1)
exten => ~~s~~,15,Return()


;; Это основной контекст для начала разговора
[ext-did-custom]

;; Это хулиганство, делать это так и здесь, но работает - добавляем к номеру '8'
exten =>  s,1,Set(CALLERID(num)=8${CALLERID(num)})

;; Тут всякие переменные для скрипта
exten =>  s,n,Gosub(recording,~~s~~,1(${CALLERID(number)},${EXTEN}))
exten =>  s,n,ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp())
exten =>  s,n,Set(CallStart=${STRFTIME(epoch,,%s)})
exten =>  s,n,Set(CallMeDISPOSITION=${CDR(disposition)})

;; Самое главное! Обработчик окончания разговора. 
;; Обычные пути обработки конца через (exten=>h,1,чтототут) в FreePBX не работают - Macro(hangupcall,) все портит. 
;; Поэтому вешаем Hangup_Handler на окончание звонка
exten => s,n,Set(CHANNEL(hangup_handler_push)=sub-call-from-cid-ended,s,1(${CALLERID(num)},${EXTEN}))

;; Обработчик окончания входящего вызова
[sub-call-from-cid-ended]

;; Сообщаем о значениях при конце звонка
exten => s,1,Set(CDR_PROP(disable)=true)
exten => s,n,Set(CallStop=${STRFTIME(epoch,,%s)})
exten => s,n,Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)})

;; Статус вызова - Ответ, не ответ...
exten => s,n,Set(CallMeDISPOSITION=${CDR(disposition)})
exten => s,n,Return


;; Обработчик исходящих вызовов - все аналогичено
[outbound-allroutes-custom]

;; Запись
exten => _.,1,Gosub(recording,~~s~~,1(${CALLERID(number)},${EXTEN}))
;; Переменные
exten => _.,n,Set(__CallIntNum=${CALLERID(num)})
exten => _.,n,Set(CallExtNum=${EXTEN})
exten => _.,n,Set(CallStart=${STRFTIME(epoch,,%s)})
exten => _.,n,Set(CallmeCALLID=${SIPCALLID})

;; Вешаем Hangup_Handler на окончание звонка
exten => _.,n,Set(CHANNEL(hangup_handler_push)=sub-call-internal-ended,s,1(${CALLERID(num)},${EXTEN}))

;; Обработчик окончания исходящего вызова
[sub-call-internal-ended]

;; переменные
exten => s,1,Set(CDR_PROP(disable)=true)
exten => s,n,Set(CallStop=${STRFTIME(epoch,,%s)})
exten => s,n,Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)})
exten => s,n,Set(CallMeDISPOSITION=${CDR(disposition)})

;; Вызов скрипта, который сообщит о звонке в CRM - это исходящий, 
;; так что по факту окончания
exten => s,n,System(curl -s ${URLPHP}/CallMeOut.php --data action=sendcall2b24 --data ExtNum=${CallExtNum} --data call_id=${SIPCALLID} --data-urlencode FullFname='${FullFname}' --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition='${CallMeDISPOSITION}')
exten => s,n,Return

Fitur sareng bédana tina rencana telepon asli panulis artikel asli -

  • Dialplan dina format .conf, sakumaha FreePBX hayang eta (enya, eta bisa .ael, tapi teu kabeh versi na teu salawasna merenah)

  • Gantina ngolah tungtung ngaliwatan exten => h, pamrosésan diwanohkeun ngaliwatan hangup_handler, sabab dialplan FreePBX gawéna ngan jeung eta.

  • Maneuh skrip panggero string, ditambahkeun tanda petik jeung nomer telepon éksternal ExtNum

  • Processing dipindahkeun ka _konteks custom sarta ngidinan Anjeun pikeun teu noél atawa ngédit FreePBX configs - asup ngaliwatan [ext-did-custom], kaluar ngaliwatan [outbound-allroutes-custom]

  • Henteu aya hubunganana sareng nomer - filena universal sareng ngan ukur kedah dikonpigurasikeun pikeun jalur sareng tautan ka server

Pikeun ngamimitian, anjeun ogé kedah ngajalankeun skrip dina AMI ku login sareng kecap akses - pikeun ieu, FreePBX ogé gaduh file _custom.

file manager_custom.conf

;;  это логин
[callmeplus]
;; это пароль
secret = trampampamturlala
deny = 0.0.0.0/0.0.0.0

;; я работаю с локальной машиной - но если надо, можно и другие прописать
permit = 127.0.0.1/255.255.255.255
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,log,verbose,user,config,command,reporting,originate

Kadua file ieu kedah disimpen dina /etc/asterisk, teras baca deui konfigurasi (atanapi balikan deui tanda bintang)

# astrisk -rv
  Connected to Asterisk 16.6.2 currently running on freepbx (pid = 31629)
#freepbx*CLI> dialplan reload
     Dialplan reloaded.
#freepbx*CLI> exit

Ayeuna hayu urang ngalih ka PHP

Inisialisasi skrip sareng nyiptakeun jasa

Kusabab skéma pikeun gawé bareng Bitrix 24, layanan pikeun AMI, teu sagemblengna basajan tur transparan, éta kudu dibahas misah. Asterisk, nalika AMI diaktipkeun, kantun muka port sareng éta. Nalika klien ngagabung, éta nyuhunkeun otorisasina, teras klien ngalanggan kana acara anu diperyogikeun. Kajadian datangna dina téks polos, nu PAMI ngarobah kana objék terstruktur sarta nyadiakeun kamampuhan pikeun ngeset fungsi nyaring ngan pikeun acara dipikaresep, widang, angka, jsb.

Pas panggero asup, acara NewExten dipecat mimitian ti indungna [ti-pstn] konteks, lajeng sagala acara balik dina urutan garis dina konteks. Nalika inpormasi ditampi tina variabel CallMeCallerIDName sareng CallStart anu ditangtukeun dina _custom dialplan,

  1. Fungsi requesting UserID pakait jeung nomer extension dimana nelepon datang. Kumaha upami éta grup dial-up? Patarosanna nyaéta politis, naha anjeun kedah ngadamel telepon ka sadayana sakaligus (nalika sadayana nelepon sakaligus) atanapi nyiptakeun nalika aranjeunna nelepon nalika nelepon? Paling klien boga strategi Fisrt Sadia, jadi teu aya masalah jeung ieu, ngan hiji panggero. Tapi masalahna kedah direngsekeun.

  2. Fungsi pendaptaran panggero dina Bitrix24, nu mulih CallID, nu lajeng diperlukeun ngalaporkeun parameter panggero jeung tumbu ka rekaman. Merlukeun nomer extension atawa UserID

Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Saatos tungtung telepon, fungsi undeuran rékaman disebut, anu sakaligus ngalaporkeun status parantosan telepon (Sibuk, Teu aya jawaban, Sukses), sareng ogé ngaunduh tautan kana file mp3 sareng rékaman (upami aya).

Kusabab modul CallMeIn.php kudu ngajalankeun terus, file ngamimitian SystemD geus dijieun pikeun eta callme.service, nu kudu nempatkeun dina /etc/systemd/system/callme.service

[Unit]
Description=CallMe

[Service]
WorkingDirectory=/var/www/html/callmeplus
ExecStart=/usr/bin/php /var/www/html/callmeplus/CallMeIn.php 2>&1 >>/var/log/callmeplus.log
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGKILL

Restart=on-failure
RestartSec=10s

#тут надо смотреть,какие права на папки
#User=www-data  #Ubuntu - debian
#User=nginx #Centos

[Install]
WantedBy=multi-user.target

inisialisasi sareng peluncuran naskah lumangsung ngaliwatan systemctl atanapi service

# systemctl enable callme
# systemctl start callme

Ladenan bakal balikan deui upami diperyogikeun (upami kacilakaan). Ladenan tracking koropak teu merlukeun web server dipasang, ngan php diperlukeun (anu pasti dina server FeePBX). Tapi dina henteuna aksés ka rékaman panggero ngaliwatan server Wéb (ogé kalawan HTTPS), éta moal mungkin ngadangukeun rékaman panggero.

Ayeuna hayu urang ngobrol ngeunaan telepon kaluar. Skrip CallMeOut.php ngagaduhan dua fungsi:

  • Inisiasi telepon nalika pamundut katampi pikeun naskah php (kaasup ngagunakeun tombol "Telepon" dina Bitrix sorangan). Teu dianggo tanpa web server, pamundut ieu ditampi via HTTP POST, pamundut ngandung token a

  • Pesen ngeunaan telepon, parameter sareng rékamanna dina Bitrix. Dipecat ku Asterisk dina dialplan [sub-panggero-internal-réngsé] nalika sauran réngsé

Ngartos FreePBX sareng ngahijikeunana sareng Bitrix24 sareng seueur deui

Pangladén wéb ngan ukur diperyogikeun pikeun dua hal - ngaunduh file catetan Bitrix (via HTTPS) sareng nelepon skrip CallMeOut.php. Anjeun tiasa nganggo server FreePBX anu diwangun, file anu aya /var/www/html, anjeun tiasa masang server anu sanés atanapi netepkeun jalur anu béda.

Pangladén wéb

Hayu urang tinggalkeun setelan pangladén wéb pikeun diajar mandiri (tits, tits, tits). Upami anjeun teu gaduh domain, anjeun tiasa nyobian FreeDomain( https://www.freenom.com/ru/index.html), anu bakal masihan anjeun nami gratis pikeun IP bodas anjeun (ulah hilap neraskeun palabuhan 80, 443 ngalangkungan router upami alamat éksternal ngan ukur aya). Upami anjeun nembé nyiptakeun domain DNS, maka anjeun kedah ngantosan (tina 15 menit dugi ka 48 jam) dugi ka sadaya server dimuat. Numutkeun pangalaman gawé bareng panyadia domestik - ti 1 jam ka sapoé.

automation pamasangan

Pamasang parantos dikembangkeun dina github pikeun ngagampangkeun pamasangan. Tapi éta lancar dina kertas - bari urang masang eta sadayana ku cara manual, saprak sanggeus tinkering kalayan sagala ieu janten kristal jelas naon babaturan sareng saha, saha mana jeung kumaha carana debug eta. Teu acan aya pamasangan

Docker

Upami anjeun hoyong gancang nyobian solusi - aya pilihan sareng Docker - gancang ngadamel wadahna, pasihan palabuhan ka luar, lebetkeun file setélan sareng cobian (ieu mangrupikeun pilihan sareng wadah LetsEncrypt, upami anjeun parantos ngagaduhan sertipikat. , Anjeun ngan perlu alihan proxy sabalikna ka web server FreePBX (urang masihan eta port sejen nyaeta 88), LetsEncrypt di docker dumasar kana Artikel ieu

Anjeun kedah ngajalankeun file dina folder proyék anu diunduh (sanggeus git clone), tapi mimiti asup kana konfigurasi asterisk (folder asterisk) sareng nyerat jalur kana rékaman sareng URL situs anjeun di dinya.

version: '3.3'
services:
  nginx:
    image: nginx:1.15-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/ssl_docker.conf:/etc/nginx/conf.d/ssl_docker.conf
  certbot:
    image: certbot/certbot
  freepbx:
    image: flaviostutz/freepbx
    ports:
      - 88:80 # для настройки
      - 5060:5060/udp
      - 5160:5160/udp
      - 127.0.0.1:5038:5038 # для CallMeOut.php
#      - 3306:3306
      - 18000-18100:18000-18100/udp
    restart: always
    environment:
      - ADMIN_PASSWORD=admin123
    volumes:
      - backup:/backup
      - recordings:/var/spool/asterisk/monitor
      - ./callme:/var/www/html/callme
      - ./systemd/callme.service:/etc/systemd/system/callme.conf
      - ./asterisk/manager_custom.conf:/etc/asterisk/manager_custom.conf
      - ./asterisk/extensions_custom.conf:/etc/asterisk/extensions_custom.conf
#      - ./conf/startup.sh:/startup.sh

volumes:
  backup:
  recordings:

Docker-compose.yaml file ieu dijalankeun via

docker-compose up -d

Upami nginx henteu ngamimitian, maka aya anu lepat sareng konfigurasi dina folder nginx/ssl_docker.conf

integrasi séjén

Sareng naha henteu nempatkeun sababaraha CRM kana naskah dina waktos anu sami, panginten urang. Urang diajar sababaraha API CRM séjén, utamana bebas diwangun-di PBX - ShugarCRM na Vtiger, na enya! enya, prinsipna sarua. Tapi ieu mangrupikeun carita anu sanés, anu engké urang unggah kana github nyalira.

rujukan

Bantahan: Sakur kasaruaan sareng kanyataan mangrupikeun fiktif sareng sanés kuring.

sumber: www.habr.com

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster