Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Bitrix24 er risastór sameining sem sameinar CRM, verkflæði, bókhald og margt annað sem stjórnendum líkar mjög við og upplýsingatæknistarfsmenn líkar ekki við. Gáttin er notuð af mörgum litlum og meðalstórum fyrirtækjum, þar á meðal litlum heilsugæslustöðvum, framleiðendum og jafnvel snyrtistofum. Aðalaðgerðin sem stjórnendur „elska“ er samþætting símtækni og CRM, þegar símtöl eru strax skráð í CRM verða til viðskiptavinakort, þegar þeir koma á staðinn birtast upplýsingar um viðskiptavininn og þú getur strax séð hver hann er, hvað hann er. getur selt og hversu mikið hann skuldar. En símtækni frá Bitrix24 og samþætting þess við CRM kostar peninga, stundum mikið. Í greininni mun ég segja þér reynsluna af samþættingu með opnum verkfærum og hinni vinsælu IP PBX ÓkeypisPBX, og íhuga einnig rökfræði vinnu ýmissa hluta

Ég vinn sem útvistunaraðili í fyrirtæki sem selur og stillir, samþættir IP símtækni. Þegar ég var spurður hvort við gætum boðið þessu og þessu fyrirtæki eitthvað til að samþætta Bitrix24 við PBX sem viðskiptavinir hafa, sem og sýndar PBX á ýmsum VDS fyrirtækjum, fór ég á Google. Og auðvitað gaf hann mér hlekk á grein í habr, þar sem er lýsing, og github, og allt virðist virka. En þegar reynt var að nota þessa lausn kom í ljós að Bitrix24 er ekki lengur það sama og áður og margt þarf að endurgera. Að auki er FreePBX ekki stjörnumerki fyrir þig, hér þarftu að hugsa um hvernig á að sameina auðveldi í notkun og harðkjarna valmynd í stillingarskrám.

Við lærum rökfræði vinnu

Svo til að byrja með, hvernig það ætti allt að virka. Þegar símtal er móttekið utan PBX (SIP INVITE atburður frá þjónustuveitanda) hefst vinnsla hringingaráætlunarinnar (valáætlun, valáætlun) - reglurnar um hvað og í hvaða röð á að gera við símtalið. Frá fyrsta pakkanum er hægt að fá mikið af upplýsingum sem síðan er hægt að nota í reglunum. Frábært tæki til að rannsaka innra hluta SIP er greiningartækið sngrep (tengill) sem er einfaldlega sett upp í vinsælum dreifingum í gegnum apt install/yum install og þess háttar, en það er líka hægt að byggja það frá uppruna. Við skulum skoða símtalaskrána í sngrep

Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Í einfaldaðri mynd fjallar hringjaplanið aðeins um fyrsta pakkann, stundum líka meðan á samtali stendur, símtöl eru flutt, hnappapressað (DTMF), ýmislegt áhugavert eins og FollowMe, RingGroup, IVR og fleira.

Hvað er inni í boðspakkanum

Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Reyndar virka flestar einfaldar valmyndir með fyrstu tveimur reitunum og öll rökfræðin snýst um DID og CallerID. DID - þar sem við erum að hringja, CallerID - hver er að hringja.

En þegar öllu er á botninn hvolft erum við með fyrirtæki en ekki einn síma - sem þýðir að PBX er líklegast með símtalahópa (samtímis / samfellt hringing nokkurra tækja) á borgarnúmerum (Ring Group), IVR (Halló, þú hringdir ... Ýttu á einn fyrir ...), Símsvari ( Setningar), Tímaskilyrði, Áframsending í önnur númer eða í reit (Fylgðu mér, Áfram). Þetta þýðir að það er mjög erfitt að ákveða með ótvíræðum hætti hver mun raunverulega fá símtal og hver mun eiga samtal við þegar símtal berst. Hér er dæmi um upphaf dæmigerðs símtals í PBX viðskiptavina okkar

Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Eftir að símtalið hefur náð góðum árangri í PBX, fer það í gegnum símanúmerið í mismunandi "samhengi". Samhengið frá sjónarhóli Stjörnu er númerað sett af skipunum, sem hver um sig inniheldur síu eftir númerinu sem hringt er í (það er kallað exten, fyrir utanaðkomandi símtal á upphafsstigi exten=DID). Skipanirnar í dialplan línunni geta verið hvað sem er - innri aðgerðir (td hringja í innri áskrifanda - Dial(), leggðu símann frá þér - Hangup()), skilyrt rekstraraðilar (IF, ELSE, ExecIF og þess háttar), umskipti yfir í aðrar reglur í þessu samhengi (Goto, GotoIF), umskipti yfir í annað samhengi í formi aðgerðarkalls (Gosub, Macro). Sértilskipun include имя_контекста, sem bætir skipunum úr öðru samhengi við lok núverandi samhengis. Skipanir sem fylgja með með include eru alltaf keyrðar eftir skipanir núverandi samhengis.

Öll rökfræði FreePBX er byggð á því að taka mismunandi samhengi inn í hvert annað í gegnum innihalda og kalla í gegnum Gosub, Macro og Handler meðhöndlara. Íhugaðu samhengið við ókeypis símtöl sem berast

Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Símtalið fer í gegnum öll samhengi frá toppi til botns á víxl, í hverju samhengi geta verið símtöl í önnur samhengi eins og fjölvi (Macro), aðgerðir (Gosub) eða bara umbreytingar (Goto), þannig að raunverulegt tré þess sem kallað er getur aðeins vera rakin í logs.

Dæmigerð uppsetningarmynd fyrir dæmigerða PBX er sýnd hér að neðan. Þegar hringt er er DID leitað í innleiðum, tímabundnar aðstæður kannaðar fyrir því, ef allt er í lagi fer raddvalmyndin í gang. Frá honum, með því að ýta á hnapp 1 eða tímamörk, farðu í hóp símanúmera. Eftir að símtalinu lýkur er hringt í uppkallsmakróið, eftir það er ekkert hægt að gera í valmyndinni, nema sérstakir meðhöndlarar (hangup manager).

Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Hvar í þessu símtalalgrími ættum við að gefa upplýsingar um upphaf símtalsins til CRM, hvar á að hefja upptöku, hvar á að enda upptökuna og senda þær ásamt upplýsingum um símtalið til CRM?

Samþætting við ytri kerfi

Hvað er PBX og CRM samþætting? Þetta eru stillingar og forrit sem umbreyta gögnum og atburðum á milli þessara tveggja kerfa og senda þau hvert á annað. Algengasta leiðin fyrir sjálfstæð kerfi til að hafa samskipti er í gegnum API og vinsælasta leiðin til að fá aðgang að API er HTTP REST. En ekki fyrir stjörnu.

Inni í stjörnu er:

  • AGI - samstillt símtal utanaðkomandi forrita/íhluta, notað aðallega í valmyndinni, það eru bókasöfn eins og phpagi, PAGI

  • AMI - texta TCP fals sem virkar á meginreglunni um að gerast áskrifandi að atburðum og slá inn textaskipanir, líkist SMTP innan frá, getur fylgst með atburðum og stjórnað símtölum, það er bókasafn PAMI - vinsælasta til að búa til tengingu við stjörnu

AMI framleiðsla dæmi

Viðburður: Ný rás
Forréttindi: hringja, allir
Rás: PJSIP/VMS_pjsip-0000078b
Rásarstaða: 4
ChannelStateDesc: Hringur
Símanúmer: 111222
Nafn símanúmers: 111222
ConnectedLineNum:
heiti tengds línu:
Tungumál: en
reikningskóði:
Samhengi: frá-pstn
Framlenging: s
Forgangsréttur: 1
Einstakt: 1599589046.5244
Tengt: 1599589046.5244

  • ARI er blanda af hvoru tveggja, allt í gegnum REST, WebSocket, á JSON sniði - en með ferskum bókasöfnum og umbúðum, ekki mjög góð, fannst beint (phparia, phpari) sem varð í þróun þeirra fyrir um 3 árum síðan.

Dæmi um ARI úttak þegar símtal er hafið

{ "variable":"CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id" »:»1599644315.5334″, «nafn»:»PJSIP/VMSpjsip-000007b6″, "state":"Hringir", "hringir":{ "nafn":"111222", "númer":"111222" }, "tengdur":{ "nafn":"", "númer" :"" }, "accountcode":"", "dialplan":{ "context":"frá-pstn", "exten":"s", "priority":2, "appname":"Stasis", "appdata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "language":"is" }, "asteriskid":"48:5b:aa:aa:aa:aa", "application":"halló-heimur" }

Þægindi eða óþægindi, möguleiki eða ómöguleiki á að vinna með tiltekið API ráðast af þeim verkefnum sem þarf að leysa. Verkefnin fyrir samþættingu við CRM eru eftirfarandi:

  • Fylgstu með upphafi símtals, hvert það var flutt, dragðu út CallerID, DID, upphafs- og lokatíma, kannski gögn úr skránni (til að leita að tengingu milli símans og CRM notandans)

  • Byrjaðu og ljúktu upptöku á símtalinu, vistaðu það á æskilegu sniði, láttu vita í lok upptöku hvar skráin er staðsett

  • Hringdu í utanaðkomandi atburði (úr forritinu), hringdu í innra númer, ytra númer og tengdu þau

  • Valfrjálst: samþætta við CRM, hringihópa og FollowME fyrir sjálfvirkan flutning símtala í fjarveru á stað (samkvæmt CRM)

Öll þessi verkefni er hægt að leysa í gegnum AMI eða ARI, en ARI veitir mun minni upplýsingar, það eru ekki margir atburðir, margar breytur sem AMI hefur enn (t.d. makró-símtöl, stillingarbreytur inni í makrósum, þar með talið upptöku símtala) eru ekki raktar. Þess vegna, fyrir rétta og nákvæma mælingu, skulum við velja AMI í bili (en ekki alveg). Að auki (jæja, hvar væri það án þessa, við erum latir fólk) - í upprunalega verkinu (grein í habr) nota PAMI. *Þá þarftu að reyna að endurskrifa í ARI, en ekki þá staðreynd að það muni virka.

Að finna upp samþættingu að nýju

Til þess að FreePBX okkar geti tilkynnt til AMI á einfaldan hátt um upphaf símtals, lokatíma, númer, nöfn skráðra skráa, er auðveldast að reikna út lengd símtalsins með því að nota sama bragð og upprunalegu höfundarnir - sláðu inn breyturnar þínar og greindu úttakið fyrir tilvist þeirra. PAMI leggur til að þú gerir þetta einfaldlega með síuaðgerð.

Hér er dæmi um að stilla eigin breytu fyrir upphafstíma símtalsins (s er sérstakt númer í valmyndinni sem er framkvæmt ÁÐUR en leitin er hafin)

[ext-did-custom]

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

Dæmi um AMI atburð fyrir þessa línu

Viðburður: Ný rás

Forréttindi: hringja, allir

Rás: PJSIP/VMS_pjsip-0000078b

Rásarstaða: 4

ChannelStateDesc: Hringur

Símanúmer: 111222

Nafn símanúmers: 111222

ConnectedLineNum:

heiti tengds línu:

Tungumál: en

reikningskóði:

Samhengi: frá-pstn

Framlenging: s

Forgangsréttur: 1

Einstakt: 1599589046.5244

Tengt: 1599589046.5244

Forrit: Stilltu AppData:

CallStart=1599571046

Vegna þess að FreePBX skrifar yfir extension.conf og extension_ skrárnaradditional.conf, munum við nota skrána útbreiðsla_sérsniðin.conf

Fullur kóði extension_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

Eiginleiki og munur frá upprunalegu valmynd höfunda upprunalegu greinarinnar -

  • Dialplan á .conf sniði, eins og FreePBX vill hafa það (já, það getur .ael, en ekki allar útgáfur og það er ekki alltaf þægilegt)

  • Í stað þess að vinna endann í gegnum exten=>h, var vinnsla kynnt í gegnum hangup_handler, vegna þess að FreePBX valmyndin virkaði aðeins með því

  • Fastur símtalastrengur, bætt við tilboðum og ytra símtalsnúmer ExtNum

  • Vinnsla er færð í _sérsniðið samhengi og gerir þér kleift að snerta ekki eða breyta FreePBX stillingum - móttekin í gegnum [ext-gerði-sérsniðið], á útleið í gegnum [útleið-allroutes-sérsniðin]

  • Engin binding við tölur - skráin er alhliða og þarf aðeins að stilla fyrir slóðina og tengilinn á netþjóninn

Til að byrja þarftu líka að keyra forskriftir í AMI með notandanafni og lykilorði - til þess hefur FreePBX einnig _custom skrá

manager_custom.conf skrá

;;  это логин
[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

Báðar þessar skrár verða að vera settar í /etc/asterisk, lestu síðan stillingarnar aftur (eða endurræstu stjörnuna)

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

Nú skulum við halda áfram í PHP

Frumstilla forskriftir og búa til þjónustu

Þar sem kerfið til að vinna með Bitrix 24, þjónustu fyrir AMI, er ekki alveg einfalt og gagnsætt, verður að ræða það sérstaklega. Stjörnumerki, þegar AMI er virkjað, opnar einfaldlega portið og það er það. Þegar viðskiptavinur gengur til liðs, biður hann um heimild, þá gerist viðskiptavinurinn áskrifandi að nauðsynlegum viðburðum. Atburðir koma í látlausum texta, sem PAMI breytir í skipulagða hluti og veitir möguleika á að stilla síunaraðgerðina aðeins fyrir áhugaverða atburði, reiti, tölur o.s.frv.

Um leið og símtalið kemur inn er NewExten atburðurinn ræstur frá foreldri [from-pstn] samhengi, þá fara allir atburðir í röð línanna í samhenginu. Þegar upplýsingar berast frá CallMeCallerIDName og CallStart breytunum sem tilgreindar eru í _sérsniðnu valmyndinni,

  1. Aðgerðin til að biðja um notandaauðkenni sem samsvarar viðbyggingarnúmerinu þar sem símtalið kom. Hvað ef það er upphringihópur? Spurningin er pólitísk, þarf að búa til kall til allra í einu (þegar allir hringja í einu) eða búa til eins og þeir kalla þegar hringt er til skiptis? Flestir viðskiptavinir eru með Fisrt Available stefnuna, svo það er ekkert vandamál með þetta, aðeins einn hringir. En málið þarf að leysa.

  2. Símtalsskráningaraðgerðin í Bitrix24, sem skilar CallID, sem síðan þarf að tilkynna um færibreytur símtals og tengil á upptökuna. Krefst annað hvort eftirnafnnúmer eða UserID

Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Eftir að símtalinu lýkur er hringt í niðurhalsaðgerðina sem tilkynnir samtímis stöðu símtals lokið (Upptekið, Ekkert svar, árangur) og hleður einnig niður hlekk á mp3 skrána með skránni (ef einhver er).

Þar sem CallMeIn.php einingin þarf að keyra stöðugt hefur SystemD ræsingarskrá verið búin til fyrir hana callme.þjónusta, sem verður að setja í /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

frumstilling og ræsing handritsins á sér stað í gegnum systemctl eða þjónustu

# systemctl enable callme
# systemctl start callme

Þjónustan mun endurræsa sig eftir þörfum (ef hrun verður). Innhólfsmælingarþjónustan krefst þess að vefþjónn sé ekki settur upp, aðeins php þarf (sem er örugglega á FeePBX þjóninum). En ef aðgangur er ekki að símtalaskrám í gegnum vefþjóninn (einnig með https) verður ekki hægt að hlusta á símtalaskrár.

Nú skulum við tala um úthringingar. CallMeOut.php handritið hefur tvær aðgerðir:

  • Upphaf símtals þegar beiðni berst um php skriftu (þar á meðal með því að nota „Hringja“ hnappinn í Bitrix sjálfu). Það virkar ekki án vefþjóns, beiðnin er móttekin í gegnum HTTP POST, beiðnin inniheldur tákn

  • Skilaboð um símtalið, færibreytur þess og skrár í Bitrix. Kveikt af stjörnu í [undirsímtal-innri-lokað] símanúmeraáætluninni þegar símtali lýkur

Að skilja FreePBX og samþætta það við Bitrix24 og fleira

Vefþjónninn þarf aðeins fyrir tvennt - að hlaða niður Bitrix skrám (í gegnum HTTPS) og kalla á CallMeOut.php forskriftina. Þú getur notað innbyggða FreePBX netþjóninn, þar sem skrárnar eru /var/www/html, þú getur sett upp annan netþjón eða tilgreint aðra slóð.

Vefþjónn

Við skulum yfirgefa uppsetningu vefþjónsins fyrir sjálfstæða rannsókn (tyts, tyts, tyts). Ef þú ert ekki með lén geturðu prófað FreeDomain( https://www.freenom.com/ru/index.html), sem gefur þér ókeypis nafn fyrir hvíta IP-töluna þína (ekki gleyma að framsenda port 80, 443 í gegnum beininn ef ytra vistfangið er aðeins á því). Ef þú bjóst bara til DNS lén, þá þarftu að bíða (frá 15 mínútum til 48 klukkustunda) þar til allir netþjónar eru hlaðnir. Samkvæmt reynslu af því að vinna með innlendum veitendum - frá 1 klukkustund upp á dag.

Sjálfvirkni í uppsetningu

Uppsetningarforrit hefur verið þróað á github til að gera uppsetninguna enn auðveldari. En það var slétt á pappírnum - á meðan við erum að setja þetta allt upp handvirkt, þar sem eftir að hafa fiktað við þetta allt varð það kristaltært hvað er vinir með hverjum, hver fer hvert og hvernig á að kemba það. Það er ekkert uppsetningarforrit ennþá

Docker

Ef þú vilt fljótt prófa lausnina - það er möguleiki með Docker - búðu til fljótt ílát, gefðu honum höfn að utan, renndu stillingaskránum og reyndu (þetta er valmöguleikinn með LetsEncrypt ílátinu, ef þú ert nú þegar með skírteini , þú þarft bara að beina öfugri umboðinu á FreePBX vefþjóninn (við gáfum honum annað tengi er 88), LetsEncrypt í docker byggt á af þessari grein

Þú þarft að keyra skrána í niðurhalaða verkefnamöppunni (eftir git clone), en farðu fyrst inn í stjörnustillingar (stjörnumöppu) og skrifaðu slóðina að færslunum og slóð síðunnar þinnar þar

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:

Þessi docker-compose.yaml skrá er keyrð í gegnum

docker-compose up -d

Ef nginx byrjar ekki, þá er eitthvað rangt við uppsetninguna í nginx/ssl_docker.conf möppunni

Aðrar samþættingar

Og hvers vegna ekki að setja smá CRM inn í forskriftir á sama tíma, hugsuðum við. Við rannsökuðum nokkur önnur CRM API, sérstaklega ókeypis innbyggða PBX - ShugarCRM og Vtiger, og já! já, meginreglan er sú sama. En þetta er önnur saga, sem við munum síðar hlaða upp á github sérstaklega.

tilvísanir

Fyrirvari: Öll líkindi við raunveruleikann eru uppspuni og það var ekki ég.

Heimild: www.habr.com

Bæta við athugasemd