Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Bitrix24 se yon gwo konbine ki konbine CRM, workflow, kontablite ak anpil lòt bagay ke administratè yo reyèlman renmen ak anplwaye IT pa reyèlman renmen. Pòtal la itilize pa anpil konpayi ti ak mwayen gwosè, ki gen ladan ti klinik, manifaktirè yo e menm salon bote. Fonksyon prensipal ke manadjè yo "renmen" se entegrasyon nan telefòn ak CRM, lè nenpòt apèl imedyatman anrejistre nan CRM, kat kliyan yo kreye, lè fèk ap rantre, enfòmasyon sou kliyan an parèt epi ou ka imedyatman wè ki moun li ye, kisa li ye. ka vann ak konbyen li dwe. Men, telefòn nan Bitrix24 ak entegrasyon li yo ak CRM koute lajan, pafwa anpil. Nan atik la mwen pral di w eksperyans nan entegre ak zouti louvri ak popilè IP PBX la freepbx, epi tou konsidere lojik nan travay la nan divès pati

Mwen travay kòm yon externalisation nan yon konpayi ki vann Et configure, entegre IP téléphonie. Lè m 'te mande si nou ta ka ofri yon bagay sa a ak konpayi sa a entegre Bitrix24 ak PBX ke kliyan yo genyen, osi byen ke ak PBX vityèl sou divès konpayi VDS, mwen te ale nan Google. Ak nan kou li te ban m 'yon lyen nan atik nan habr, kote gen yon deskripsyon, ak github, ak tout bagay sanble travay. Men, lè w ap eseye sèvi ak solisyon sa a, li te tounen soti ke Bitrix24 se pa menm jan ak anvan, ak anpil bezwen yo dwe refè. Anplis de sa, FreePBX se pa yon asterisk fè pou ou, isit la ou bezwen reflechi sou ki jan yo konbine fasilite nan itilize ak yon dialplan hardcore nan dosye konfigirasyon.

Nou etidye lojik travay

Se konsa, pou kòmanse, ki jan li ta dwe tout travay. Lè yo resevwa yon apèl ki soti deyò nan PBX la (evènman SIP INVITE nan men founisè a), pwosesis la nan dialplan (dial plan, dialplan) kòmanse - règ yo nan ki sa ak nan ki lòd fè ak apèl la. Soti nan premye pake a, ou ka jwenn yon anpil nan enfòmasyon, ki ka Lè sa a, dwe itilize nan règ yo. Yon zouti ekselan pou etidye entèn yo nan SIP se analizeur la sngrep (lyen) ki tou senpleman enstale nan distribisyon popilè atravè apt install/yum install ak renmen an, men li kapab tou bati nan sous. Ann gade nan boutèy la apèl nan sngrep

Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Nan yon fòm senplifye, dialplan a fè fas sèlman ak premye pake a, pafwa tou pandan konvèsasyon an, apèl yo transfere, peze bouton (DTMF), divès bagay enteresan tankou FollowMe, RingGroup, IVR ak lòt moun.

Ki sa ki andedan Pake Envitasyon an

Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Aktyèlman, pi senp dialplan travay ak de premye jaden yo, ak tout lojik la vire toutotou DID ak CallerID. DID - kote nou ap rele, CallerID - ki moun ki rele.

Men, apre yo tout, nou gen yon konpayi epi yo pa yon sèl telefòn - ki vle di ke PBX a gen plis chans gen gwoup apèl (similtane / konsekitif sonnen nan plizyè aparèy) sou nimewo vil (Gwoup Ring), IVR (Bonjou, ou te rele ... Press youn pou...), Repondeur (fraz), Kondisyon tan, Transmèt nan lòt nimewo oswa nan yon selil (FollowMe, Forward). Sa vle di ke li trè difisil pou detèmine san anbigwite ki moun ki pral aktyèlman resevwa yon apèl ak ki moun ki pral gen yon konvèsasyon ak lè yon apèl rive. Men yon egzanp nan kòmansman yon apèl tipik nan PBX kliyan nou yo

Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Apre apèl la avèk siksè antre nan PBX la, li vwayaje nan dialplan nan diferan "kontèks". Kontèks la soti nan pwen de vi asteris la se yon seri nimewote nan kòmandman, chak nan yo ki gen yon filtè pa nimewo konpoze an (yo rele li exten, pou yon apèl ekstèn nan etap inisyal la exten = DID). Kòmandman yo nan liy dialplan yo ka nenpòt bagay - fonksyon entèn (pa egzanp, rele yon abònen entèn - Dial(), mete telefòn nan desann - Hangup()), operatè kondisyonèl (IF, ELSE, ExecIF ak tankou a), tranzisyon nan lòt règ nan kontèks sa a (Goto, GotoIF), tranzisyon nan lòt kontèks nan fòm yon apèl fonksyon (Gosub, Macro). Yon direktiv separe include имя_контекста, ki ajoute kòmandman ki soti nan yon lòt kontèks nan fen kontèks aktyèl la. Kòmandman enkli atravè enkli yo toujou egzekite apre kòmandman nan kontèks aktyèl la.

Tout lojik FreePBX bati sou enklizyon diferan kontèks youn ak lòt atravè enkli ak rele nan Gosub, Macro ak Handler. Konsidere kontèks apèl FreePBX kap vini yo

Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Apèl la ale nan tout kontèks depi anwo jouk anba nan vire, nan chak kontèks ka gen apèl nan lòt kontèks tankou makro (Macro), fonksyon (Gosub) oswa jis tranzisyon (Goto), kidonk pye bwa a reyèl nan sa yo rele kapab sèlman. dwe swiv nan mòso bwa yo.

Yon dyagram konfigirasyon tipik pou yon PBX tipik yo montre anba a. Lè w ap rele, yo chèche DID nan wout fèk ap rantre yo, kondisyon tanporè yo tcheke pou li, si tout bagay anfòm, meni vwa a lanse. Soti nan li, lè w peze bouton 1 oswa timeout, sòti nan gwoup la nan operatè konpoze. Apre apèl la fini, yo rele makro a hangupcall, apre sa pa ka fè anyen nan dialplan a, eksepte pou moun kap okipe espesyal (handler hangup).

Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Ki kote nan algorithm apèl sa a nou ta dwe bay enfòmasyon sou kòmansman apèl la nan CRM, ki kote yo kòmanse anrejistreman, ki kote yo fini anrejistreman an epi voye li ansanm ak enfòmasyon sou apèl la nan CRM?

Entegrasyon ak sistèm ekstèn

Ki sa ki se entegrasyon PBX ak CRM? Sa yo se anviwònman ak pwogram ki konvèti done ak evènman ant de platfòm sa yo epi voye yo youn bay lòt. Fason ki pi komen pou sistèm endepandan yo kominike se atravè API, epi fason ki pi popilè pou jwenn aksè nan API se HTTP REST. Men, pa pou asterisk.

Anndan asteris se:

  • AGI - apèl synchrone nan pwogram ekstèn / konpozan, yo itilize sitou nan dialplan la, gen bibliyotèk tankou phpagi, PAGI

  • AMI - yon priz TCP tèks ki travay sou prensip abònman nan evènman ak k ap antre nan kòmandman tèks, sanble ak SMTP soti nan andedan an, ka swiv evènman ak jere apèl, gen yon bibliyotèk. PAMI - ki pi popilè pou kreye yon koneksyon ak asterisk

Egzanp pwodiksyon AMI

Evènman: Nouvo chanèl
Privilèj: rele, tout
Chèn: PJSIP/VMS_pjsip-0000078b
Eta chanèl: 4
ChannelStateDesc: Ring
Nimewo ID moun kap rele: 111222
CallerIDName: 111222
ConnectedLineNum:
non liy konekte:
Lang: en
kòd kont:
Kontèks: soti nan-pstn
Exten: s
Priyorite: 1
Inik: 1599589046.5244
Linkedid: 1599589046.5244

  • ARI se yon melanj de tou de, tout atravè REST, WebSocket, nan fòma JSON - men ak bibliyotèk fre ak anbalaj, pa trè bon, yo te jwenn (phparia, phpari) ki te vin nan devlopman yo anviwon 3 zan de sa.

Egzanp pwodiksyon ARI lè yo inisye yon apèl

{ "variable":"CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id »:»1599644315.5334″, «non»:»PJSIP/VMSpjsip-000007b6″, "state":"Sonnen", "apèl":{ "non":"111222″, "nimewo":"111222″ }, "konekte":{ "non":"", "nimewo" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priyorite":2, "appname":"Stasis", "appdata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "language":"en" }, "asteriskid":"48:5b:aa:aa:aa:aa", "aplikasyon":"hello-world"}

Konvenyans oswa deranjman, posibilite oswa enposib pou travay ak yon API patikilye yo detèmine pa travay yo ki bezwen rezoud. Travay yo pou entegrasyon ak CRM yo jan sa a:

  • Swiv kòmansman apèl la, kote li te transfere, retire CallerID, DID, kòmanse ak fen fwa, petèt done ki soti nan anyè a (pou chèche yon koneksyon ant telefòn lan ak itilizatè CRM)

  • Kòmanse epi fini anrejistreman apèl la, sove li nan fòma ou vle a, enfòme nan fen anrejistreman an ki kote dosye a ye.

  • Inisye yon apèl sou yon evènman ekstèn (ki soti nan pwogram nan), rele yon nimewo entèn, yon nimewo ekstèn epi konekte yo

  • Si ou vle: entegre ak CRM, gwoup dialer ak FollowME pou transfè otomatik apèl nan absans yon kote (dapre CRM)

Tout travay sa yo ka rezoud atravè AMI oswa ARI, men ARI bay anpil mwens enfòmasyon, pa gen anpil evènman, anpil varyab ke AMI toujou genyen (pa egzanp, apèl makro, anviwònman varyab andedan makro, enkli anrejistreman apèl) yo pa swiv. Se poutèt sa, pou swiv kòrèk ak egzat, ann chwazi AMI pou kounye a (men pa konplètman). Anplis de sa (byen, ki kote li ta ye san sa a, nou se moun ki parese) - nan travay orijinal la (atik nan habr) sèvi ak PAMI. *Lè sa a, ou bezwen eseye reekri nan ARI, men se pa lefèt ke li pral travay.

Re-envante entegrasyon

Pou FreePBX nou an kapab rapòte bay AMI nan fason senp sou kòmansman apèl la, lè fen, nimewo, non dosye anrejistre yo, li pi fasil pou kalkile dire apèl la lè l sèvi avèk menm trik ak otè orijinal yo. - Antre varyab ou yo epi analize pwodiksyon an pou prezans yo. PAMI sijere fè sa tou senpleman atravè yon fonksyon filtre.

Men yon egzanp pou w tabli pwòp varyab ou a pou lè apèl la kòmanse (s se yon nimewo espesyal nan dialplan an ki fèt ANVAN kòmanse rechèch DID la)

[ext-did-custom]

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

Yon egzanp evènman AMI pou liy sa a

Evènman: Nouvo chanèl

Privilèj: rele, tout

Chèn: PJSIP/VMS_pjsip-0000078b

Eta chanèl: 4

ChannelStateDesc: Ring

Nimewo ID moun kap rele: 111222

CallerIDName: 111222

ConnectedLineNum:

non liy konekte:

Lang: en

kòd kont:

Kontèks: soti nan-pstn

Exten: s

Priyorite: 1

Inik: 1599589046.5244

Linkedid: 1599589046.5244

Aplikasyon: Mete AppData:

CallStart=1599571046

Paske FreePBX ranplase fichye extention.conf ak extention_ yoadditional.conf, nou pral sèvi ak fichye a ekstansyon_koutim.konf

Kòd konplè nan 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

Karakteristik ak diferans ak dialplan orijinal otè yo nan atik orijinal la -

  • Dialplan nan fòma .conf, jan FreePBX vle li (wi, li kapab .ael, men se pa tout vèsyon epi li pa toujou pratik)

  • Olye pou yo trete fen a nan exten => h, pwosesis yo te prezante atravè hangup_handler, paske FreePBX dialplan la te travay sèlman avèk li.

  • Fiks fisèl apèl script, ajoute quotes ak nimewo apèl ekstèn ExtNum

  • Pwosesis la deplase nan kontèks _custom epi li pèmèt ou pa manyen oswa modifye konfigirasyon FreePBX - entrant atravè [ext-did-custom], sòtan nan [outbound-allroutes-custom]

  • Pa gen obligasyon nan nimewo - fichye a se inivèsèl epi sèlman bezwen yo dwe configuré pou chemen an ak lyen nan sèvè a

Pou kòmanse, ou bezwen tou kouri scripts nan AMI pa login ak modpas - pou sa, FreePBX tou gen yon dosye _custom.

dosye 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

Tou de nan dosye sa yo dwe mete nan /etc/asterisk, Lè sa a, re-li konfigirasyon yo (oswa rekòmanse asterisk la)

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

Koulye a, kite a deplase sou PHP

Inisyalize scripts ak kreye yon sèvis

Depi konplo a pou travay ak Bitrix 24, yon sèvis pou AMI, se pa totalman senp ak transparan, li dwe diskite separeman. Asterisk, lè AMI aktive, tou senpleman louvri pò a epi li se li. Lè yon kliyan rantre nan, li mande otorizasyon, Lè sa a, kliyan an abònman nan evènman ki nesesè yo. Evènman yo vini nan tèks klè, ki PAMI konvèti nan objè estriktire epi li bay kapasite pou mete fonksyon filtè sèlman pou evènman ki enterese, jaden, nimewo, elatriye.

Le pli vit ke apèl la vini nan, evènman an NewExten te tire kòmanse nan paran an [soti nan-pstn] kontèks, Lè sa a, tout evènman yo ale nan lòd la nan liy ki nan kontèks yo. Lè yo resevwa enfòmasyon ki soti nan varyab CallMeCallerIDName ak CallStart ki espesifye nan _custom dialplan, la

  1. Fonksyon pou mande UserID ki koresponn ak nimewo ekstansyon kote apèl la te vini. E si se yon gwoup dial-up? Kesyon an se politik, èske li nesesè pou kreye yon apèl pou tout moun alafwa (lè tout moun rele an menm tan) oswa kreye jan yo rele lè yo rele nan vire? Pifò kliyan gen estrateji Fisrt Disponib la, kidonk pa gen okenn pwoblèm ak sa a, se sèlman yon sèl apèl. Men, pwoblèm nan bezwen yo dwe adrese

  2. Fonksyon an anrejistreman apèl nan Bitrix24, ki retounen CallID la, ki se Lè sa a, oblije rapòte paramèt apèl yo ak yon lyen nan anrejistreman an. Egzije swa nimewo ekstansyon oswa UserID

Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Apre fen apèl la, yo rele fonksyon telechaje dosye a, ki an menm tan rapòte estati fini apèl la (Okipe, Pa gen repons, Siksè), epi tou telechaje yon lyen nan dosye a mp3 ak dosye a (si genyen).

Paske modil CallMeIn.php la bezwen kouri kontinyèlman, yo te kreye yon fichye demaraj SystemD pou li callme.service, ki dwe mete nan /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

inisyalizasyon ak lansman script la fèt atravè systemctl oswa sèvis

# systemctl enable callme
# systemctl start callme

Sèvis la pral rekòmanse tèt li jan sa nesesè (nan ka aksidan). Sèvis Suivi bwat resepsyon an pa mande pou enstale yon sèvè entènèt, se sèlman php ki nesesè (ki se definitivman sou sèvè FeePBX la). Men, nan absans aksè nan dosye apèl atravè sèvè Web la (tou ak https), li pa pral posib pou koute dosye apèl.

Koulye a, ann pale sou apèl sortan yo. Script CallMeOut.php la gen de fonksyon:

  • Inisyasyon nan yon apèl lè yo resevwa yon demann pou yon script php (ki gen ladan lè l sèvi avèk bouton "Rele" nan Bitrix nan tèt li). Li pa travay san yon sèvè entènèt, demann lan resevwa atravè HTTP POST, demann lan gen yon siy

  • Mesaj sou apèl la, paramèt li yo ak dosye nan Bitrix. Asterisk te tire nan dialplan [sub-call-internal-ended] lè yon apèl fini

Konprann FreePBX ak entegre li ak Bitrix24 ak plis ankò

Sèvè entènèt la nesesè sèlman pou de bagay - telechaje dosye Bitrix (via HTTPS) epi rele script CallMeOut.php. Ou ka sèvi ak sèvè FreePBX entegre, dosye yo se /var/www/html, ou ka enstale yon lòt sèvè oswa presize yon lòt chemen.

Sèvè entènèt

Ann kite konfigirasyon sèvè entènèt la pou etid endepandan (tyts, tyts, tyts). Si ou pa gen yon domèn, ou ka eseye FreeDomain( https://www.freenom.com/ru/index.html), ki pral ba ou yon non gratis pou IP blan ou a (pa bliye voye pò 80, 443 atravè routeur la si adrès ekstèn lan se sèlman sou li). Si ou jis kreye yon domèn DNS, Lè sa a, ou dwe rete tann (soti nan 15 minit jiska 48 èdtan) jiskaske tout sèvè yo chaje. Dapre eksperyans nan travay ak founisè domestik - soti nan 1 èdtan nan yon jou.

Enstalasyon automatisation

Yo te devlope yon enstalatè sou github pou fè enstalasyon menm pi fasil. Men, li te lis sou papye - pandan ke nou ap enstale li tout manyèlman, depi apre brikolaj ak tout bagay sa yo li te vin klè kristal sa ki zanmi ak ki moun, ki moun ki ale ki kote ak ki jan yo debogaj li. Pa gen okenn enstalatè ankò

Koupre

Si ou vle byen vit eseye solisyon an - gen yon opsyon ak Docker - byen vit kreye yon veso, bay li pò deyò, glise dosye yo anviwònman epi eseye (sa a se opsyon a ak veso LetsEncrypt la, si ou deja gen yon sètifika, ou jis bezwen redireksyon proxy ranvèse nan sèvè entènèt FreePBX (nou te ba li yon lòt pò se 88), LetsEncrypt nan docker ki baze sou Atik sa

Ou bezwen kouri fichye a nan katab pwojè telechaje a (apre git klonaj), men premye antre nan konfigirasyon asterisk (katab asterisk) epi ekri chemen yo nan dosye yo ak URL sit ou a la.

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:

Fichye sa a docker-compose.yaml kouri atravè

docker-compose up -d

Si nginx pa kòmanse, Lè sa a, gen yon bagay ki mal ak konfigirasyon an nan katab la nginx/ssl_docker.conf.

Lòt entegrasyon

Epi poukisa nou pa mete kèk CRM nan scripts an menm tan an, nou te panse. Nou etidye plizyè lòt API CRM, espesyalman PBX gratis entegre - ShugarCRM ak Vtiger, e wi! wi, prensip la se menm bagay la. Men, sa a se yon lòt istwa, ke nou pral pita telechaje nan github la separeman.

Referans

Limit responsabilite nou: Nenpòt resanblans ak reyalite a se fiktif e li pa t 'mwen.

Sous: www.habr.com

Add nouvo kòmantè