Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

Bitrix24 hija taħlita enormi li tgħaqqad is-CRM, il-fluss tax-xogħol, il-kontabilità u ħafna affarijiet oħra li l-maniġers verament iħobbu u l-persunal tal-IT ma tantx jogħġobhom. Il-portal jintuża minn ħafna kumpaniji żgħar u ta 'daqs medju, inklużi kliniċi żgħar, manifatturi u anke salons tas-sbuħija. Il-funzjoni ewlenija li l-maniġers "iħobbu" hija l-integrazzjoni tat-telefonija u CRM, meta kwalunkwe sejħa tiġi rreġistrata immedjatament fis-CRM, jinħolqu karti tal-klijenti, meta jidħlu, tintwera informazzjoni dwar il-klijent u tista 'tara immedjatament min hu, x'inhu. jista’ jbigħ u kemm għandu. Iżda t-telefonija minn Bitrix24 u l-integrazzjoni tagħha mas-CRM tiswa l-flus, kultant ħafna. Fl-artiklu se ngħidlek l-esperjenza ta 'integrazzjoni ma' għodod miftuħa u l-IP PBX popolari freepbx, u tikkunsidra wkoll il-loġika tax-xogħol ta 'diversi partijiet

Jien naħdem bħala outsourcer f'kumpanija li tbigħ u tikkonfigura, tintegra t-telefonija IP. Meta ġejt mistoqsi jekk nistgħux noffru xi ħaġa lil din u lil din il-kumpanija biex jintegraw Bitrix24 ma’ PBXs li għandhom il-klijenti, kif ukoll ma’ PBXs virtwali fuq diversi kumpaniji VDS, mort għand Google. U ovvjament tani link għal artiklu fil-habr, fejn hemm deskrizzjoni, u github, u kollox jidher li jaħdem. Iżda meta ppruvat tuża din is-soluzzjoni, irriżulta li Bitrix24 m'għadux l-istess bħal qabel, u ħafna jeħtieġ li jerġa 'jagħmel. Barra minn hekk, FreePBX mhuwiex asterisk vojt għalik, hawnhekk trid taħseb dwar kif tikkombina l-faċilità ta 'użu u dialplan iebsa fil-fajls tal-konfigurazzjoni.

Nistudjaw il-loġika tax-xogħol

Allura biex nibdew, kif għandu jaħdem kollu. Meta tasal sejħa minn barra fil-PBX (avveniment SIP INVITE mill-fornitur), jibda l-ipproċessar tad-dialplan (dial plan, dialplan) - ir-regoli ta 'x'u f'liema ordni tagħmel mas-sejħa. Mill-ewwel pakkett, tista 'tikseb ħafna informazzjoni, li mbagħad tista' tintuża fir-regoli. Għodda eċċellenti għall-istudju tal-intern tas-SIP hija l-analizzatur sngrep (rabta) li hija sempliċement installata f'distribuzzjonijiet popolari permezz ta' apt install/yum install u affarijiet simili, iżda tista' tinbena wkoll mis-sors. Ejja nħarsu lejn il-log tas-sejħiet fi sngrep

Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

F'forma simplifikata, id-dialplan jittratta biss l-ewwel pakkett, xi drabi wkoll waqt il-konversazzjoni, sejħiet jiġu trasferiti, presses tal-buttuna (DTMF), diversi affarijiet interessanti bħal FollowMe, RingGroup, IVR u oħrajn.

X'hemm ġewwa l-Invite Pack

Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

Fil-fatt, il-biċċa l-kbira tad-dialplans sempliċi jaħdmu mal-ewwel żewġ oqsma, u l-loġika kollha ddur madwar DID u CallerID. DID - fejn qed inċemplu, CallerID - min qed iċempel.

Iżda wara kollox, għandna kumpanija u mhux telefon wieħed - li jfisser li l-PBX x'aktarx ikollu gruppi ta 'sejħiet (ringing simultanju / konsekuttiv ta' diversi apparati) fuq numri tal-belt (Ring Group), IVR (Hello, inti ċempilt ... Agħfas wieħed għal ...), magni li jwieġbu (Frażijiet), Kundizzjonijiet tal-Ħin, Trażmissjoni lil numri oħra jew lil ċellula (FollowMe, Forward). Dan ifisser li huwa diffiċli ħafna li tiddetermina mingħajr ambigwità min fil-fatt jirċievi telefonata u min se jkollu konversazzjoni ma' meta tasal is-sejħa. Hawn eżempju tal-bidu ta’ sejħa tipika fil-PBX tal-klijenti tagħna

Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

Wara li s-sejħa tidħol b'suċċess fil-PBX, tivvjaġġa permezz tad-dialplan f'"kuntesti" differenti. Il-kuntest mil-lat ta 'Asterisk huwa sett numerat ta' kmandi, li kull wieħed minnhom fih filtru bin-numru ikkwalifikat (jissejjaħ exten, għal sejħa esterna fl-istadju inizjali exten=DID). Il-kmandi fil-linja dialplan jistgħu jkunu xi ħaġa - funzjonijiet interni (per eżempju, sejħa abbonat intern - Dial(), poġġi t-telefon isfel - Hangup()), operaturi kundizzjonali (IF, ELSE, ExecIF u simili), tranżizzjonijiet għal regoli oħra ta’ dan il-kuntest (Goto, GotoIF), tranżizzjoni għal kuntesti oħra fil-forma ta 'sejħa ta' funzjoni (Gosub, Macro). Direttiva separata include имя_контекста, li żżid kmandi minn kuntest ieħor sat-tmiem tal-kuntest attwali. Kmandi inklużi permezz include huma dejjem eżegwiti wara kmandi tal-kuntest attwali.

Il-loġika kollha ta 'FreePBX hija mibnija fuq l-inklużjoni ta' kuntesti differenti f'xulxin permezz ta 'include and call permezz ta' Gosub, Macro u Handler handlers. Ikkunsidra l-kuntest tas-sejħiet FreePBX li deħlin

Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

Is-sejħa tgħaddi mill-kuntesti kollha minn fuq għal isfel wara xulxin, f'kull kuntest jista' jkun hemm sejħiet għal kuntesti oħra bħal macros (Macro), funzjonijiet (Gosub) jew biss transizzjonijiet (Goto), għalhekk is-siġra reali ta' dak li jissejjaħ tista' biss jiġu ssorveljati fir-zkuk.

Dijagramma ta' setup tipiku għal PBX tipiku tidher hawn taħt. Meta ċċempel, DID jiġi mfittex f'rotot deħlin, il-kundizzjonijiet temporanji jiġu kkontrollati għaliha, jekk kollox ikun fl-ordni, jitnieda l-menu tal-vuċi. Minnha, billi tagħfas il-buttuna 1 jew timeout, oħroġ għall-grupp ta 'l-operaturi li tisselezzjona. Wara li tispiċċa s-sejħa, tissejjaħ il-makro hangupcall, u wara ma jista' jsir xejn fid-dialplan, ħlief għal handlers speċjali (handler hangup).

Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

Fejn f'dan l-algoritmu tas-sejħa għandna nipprovdu informazzjoni dwar il-bidu tas-sejħa lis-CRM, minn fejn nibdew ir-reġistrazzjoni, fejn intemmu r-reġistrazzjoni u nibagħtuha flimkien ma 'informazzjoni dwar is-sejħa lis-CRM?

Integrazzjoni ma' sistemi esterni

X'inhi l-integrazzjoni PBX u CRM? Dawn huma settings u programmi li jikkonvertu data u avvenimenti bejn dawn iż-żewġ pjattaformi u jibagħtuhom lil xulxin. L-aktar mod komuni għal sistemi indipendenti biex jikkomunikaw huwa permezz tal-APIs, u l-aktar mod popolari biex taċċessa l-APIs huwa HTTP REST. Imma mhux għall-asterisk.

Ġewwa Asterisk hemm:

  • AGI - sejħa sinkronika għal programmi / komponenti esterni, użata prinċipalment fid-dialplan, hemm libreriji bħal phpagi, PAGI

  • AMI - socket TCP tat-test li jaħdem fuq il-prinċipju li jissottoskrivi għal avvenimenti u jdaħħal kmandi tat-test, jixbaħ SMTP minn ġewwa, jista 'jsegwi avvenimenti u jimmaniġġja sejħiet, hemm librerija PAMI - l-aktar popolari għall-ħolqien ta 'konnessjoni ma' Asterisk

Eżempju tal-output AMI

Avveniment: Kanal ġdid
Privileġġ: ċempel, kollha
Kanal: PJSIP/VMS_pjsip-0000078b
Stat tal-Kanal: 4
ChannelStateDesc: Ring
CallerIDNum: 111222
CallerIDName: 111222
ConnectedLineNum:
isem tal-linja konness:
Lingwa: en
kodiċi tal-kont:
Kuntest: minn-pstn
Esten: s
Prijorità: 1
Uniqueid: 1599589046.5244
Linkedid: 1599589046.5244

  • ARI hija taħlita tat-tnejn, kollha permezz ta' REST, WebSocket, f'format JSON - iżda b'libreriji u tgeżwir friski, mhux tajbin ħafna, misjuba offhand (phparia, phpari) li saru fl-iżvilupp tagħhom madwar 3 snin ilu.

Eżempju ta' output ARI meta tinbeda sejħa

{ "variable":"CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id »:»1599644315.5334″, «isem»:»PJSIP/VMSpjsip-000007b6″, "state":"Ring", "sejjieħ":{ "isem":"111222″, "numru":"111222″ }, "konness":{ "isem":"", "numru" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "appname":"Stasi", "appdata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "language":"mt" }, "asteriskid":"48:5b:aa:aa:aa:aa", "application":"hello-world" }

Il-konvenjenza jew l-inkonvenjenza, il-possibbiltà jew l-impossibbiltà li taħdem ma 'API partikolari huma ddeterminati mill-kompiti li jeħtieġ li jiġu solvuti. Il-kompiti għall-integrazzjoni mas-CRM huma kif ġej:

  • Issegwi l-bidu tas-sejħa, fejn ġiet trasferita, iġbed CallerID, DID, ħinijiet tal-bidu u tat-tmiem, forsi dejta mid-direttorju (biex tfittex konnessjoni bejn it-telefon u l-utent tas-CRM)

  • Ibda u tmiem ir-reġistrazzjoni tas-sejħa, issalvaha fil-format mixtieq, informa fl-aħħar tar-reġistrazzjoni fejn jinsab il-fajl

  • Ibda sejħa fuq avveniment estern (mill-programm), ċempel numru intern, numru estern u qabbadhom

  • Mhux obbligatorju: integrazzjoni ma' CRM, gruppi ta' dialer u FollowME għal trasferiment awtomatiku ta' sejħiet fin-nuqqas ta' post (skond CRM)

Dawn il-kompiti kollha jistgħu jiġu solvuti permezz ta 'AMI jew ARI, iżda ARI tipprovdi ħafna inqas informazzjoni, m'hemmx ħafna avvenimenti, ħafna varjabbli li AMI għad għandha (per eżempju, sejħiet makro, varjabbli ta' twaqqif ġewwa macros, inkluż reġistrazzjoni ta 'sejħiet) mhumiex traċċati. Għalhekk, għal traċċar korrett u preċiż, ejja nagħżlu AMI għalissa (iżda mhux kompletament). Barra minn hekk (tajjeb, fejn ikun mingħajr dan, aħna għażżien) - fix-xogħol oriġinali (artiklu fil-habr) uża PAMI. *Imbagħad trid tipprova tikteb mill-ġdid għal ARI, iżda mhux il-fatt li se taħdem.

Nivvintaw mill-ġdid l-integrazzjoni

Sabiex il-FreePBX tagħna jkun jista' jirrapporta lill-AMI b'modi sempliċi dwar il-bidu tas-sejħa, il-ħin tat-tmiem, in-numri, l-ismijiet tal-fajls irreġistrati, huwa eħfef li tikkalkula t-tul tas-sejħa billi tuża l-istess trick bħall-awturi oriġinali. - daħħal il-varjabbli tiegħek u analizza l-output għall-preżenza tagħhom. PAMI jissuġġerixxi li tagħmel dan sempliċement permezz ta 'funzjoni ta' filtru.

Hawnhekk huwa eżempju ta 'l-issettjar tal-varjabbli tiegħek għall-ħin tal-bidu tas-sejħa (i huwa numru speċjali fid-dialplan li jsir QABEL ma tibda t-tfittxija DID)

[ext-did-custom]

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

Eżempju ta' avveniment AMI għal din il-linja

Avveniment: Kanal ġdid

Privileġġ: ċempel, kollha

Kanal: PJSIP/VMS_pjsip-0000078b

Stat tal-Kanal: 4

ChannelStateDesc: Ring

CallerIDNum: 111222

CallerIDName: 111222

ConnectedLineNum:

isem tal-linja konness:

Lingwa: en

kodiċi tal-kont:

Kuntest: minn-pstn

Esten: s

Prijorità: 1

Uniqueid: 1599589046.5244

Linkedid: 1599589046.5244

Applikazzjoni: Issettja AppData:

CallStart=1599571046

Minħabba li FreePBX jissostitwixxi l-fajls extention.conf u extention_addizzjonali.conf, aħna se nużaw il-fajl estensjoni_tad-dwana.konf

Kodiċi sħiħ ta' 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

Karatteristika u differenza mid-dialplan oriġinali tal-awturi tal-artiklu oriġinali -

  • Dialplan f'format .conf, kif irid FreePBX (iva, jista' .ael, iżda mhux il-verżjonijiet kollha u mhux dejjem konvenjenti)

  • Minflok ma pproċessa t-tmiem permezz ta' exten => h, l-ipproċessar ġie introdott permezz ta 'hangup_handler, minħabba li l-dialplan FreePBX ħadem biss miegħu

  • Sekwenza ta' sejħa b'kitba fissa, kwotazzjonijiet miżjuda u numru ta' sejħa estern ExtNum

  • L-ipproċessar huwa mċaqlaq għal kuntesti _custom u jippermettilek li ma tmissx jew teditja l-konfigurazzjonijiet tal-FreePBX - incoming permezz [ext-did-custom], ħierġa minn [outbound-allroutes-custom]

  • L-ebda rabta man-numri - il-fajl huwa universali u jeħtieġ biss li jiġi kkonfigurat għall-mogħdija u l-link mas-server

Biex tibda, trid ukoll tħaddem skripts fl-AMI permezz tal-login u l-password - għal dan, FreePBX għandu wkoll fajl _custom

fajl 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

Dawn iż-żewġ fajls għandhom jitqiegħdu f'/etc/asterisk, imbagħad erġa' aqra l-konfigurazzjonijiet (jew ibda mill-ġdid l-asterisk)

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

Issa ejja nimxu fuq PHP

Inizjalizzazzjoni ta 'skripts u ħolqien ta' servizz

Peress li l-iskema biex taħdem ma 'Bitrix 24, servizz għall-AMI, mhix għal kollox sempliċi u trasparenti, trid tiġi diskussa separatament. Asterisk, meta l-AMI tiġi attivata, sempliċiment tiftaħ il-port u dak hu. Meta klijent jingħaqad, jitlob awtorizzazzjoni, allura l-klijent jissottoskrivi għall-avvenimenti meħtieġa. L-avvenimenti jiġu f'test sempliċi, li PAMI jikkonverti f'oġġetti strutturati u jipprovdi l-abbiltà li tissettja l-funzjoni ta 'filtrazzjoni biss għal avvenimenti ta' interess, oqsma, numri, eċċ.

Hekk kif tidħol is-sejħa, l-avveniment NewExten jiġi sparat li jibda mill-kuntest ġenitur [minn-pstn], allura l-avvenimenti kollha jmorru fl-ordni tal-linji fil-kuntesti. Meta tiġi riċevuta informazzjoni mill-varjabbli CallMeCallerIDName u CallStart speċifikati fil-_custom dialplan, il-

  1. Il-funzjoni li jintalab l-UserID li jikkorrispondi man-numru tal-estensjoni fejn waslet is-sejħa. X'jiġri jekk huwa grupp dial-up? Il-mistoqsija hija politika, trid toħloq sejħa lil kulħadd f'daqqa (meta kulħadd iċempel f'daqqa) jew toħloq kif isejħu meta jċemplu min-naħa tagħhom? Ħafna mill-klijenti għandhom l-istrateġija Fisrt Disponibbli, għalhekk m'hemm l-ebda problema b'dan, wieħed biss isejjaħ. Iżda l-kwistjoni trid tiġi solvuta.

  2. Il-funzjoni tar-reġistrazzjoni tas-sejħa f'Bitrix24, li tirritorna l-CallID, li mbagħad hija meħtieġa biex tirrapporta l-parametri tas-sejħa u link għar-reġistrazzjoni. Jeħtieġ jew in-numru ta' estensjoni jew UserID

Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

Wara t-tmiem tas-sejħa, tissejjaħ il-funzjoni tat-tniżżil tar-rekords, li simultanjament tirrapporta l-istatus tat-tlestija tas-sejħa (Busy, Ebda tweġiba, Suċċess), u wkoll tniżżel link għall-fajl mp3 bir-rekord (jekk hemm).

Minħabba li l-modulu CallMeIn.php jeħtieġ li jaħdem kontinwament, inħoloq fajl tal-istartjar SystemD għalih callme.service, li għandu jitqiegħed f'/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

l-inizjalizzazzjoni u t-tnedija tal-iskript iseħħ permezz ta 'systemctl jew servizz

# systemctl enable callme
# systemctl start callme

Is-servizz jerġa’ jibda minnu nnifsu kif meħtieġ (f’każ ta’ ħabtiet). Is-servizz ta 'traċċar tal-inbox ma jeħtieġx li jiġi installat web server, huwa meħtieġ biss php (li definittivament jinsab fuq is-server FeePBX). Iżda fin-nuqqas ta 'aċċess għar-rekords tas-sejħiet permezz tas-server tal-Web (ukoll b'https), mhux se jkun possibbli li tisma' r-rekords tas-sejħiet.

Issa ejja nitkellmu dwar sejħiet ħerġin. L-iskritt CallMeOut.php għandu żewġ funzjonijiet:

  • Bidu ta' sejħa meta tasal talba għal script PHP (inkluż l-użu tal-buttuna "Sejħa" fil-Bitrix innifsu). Ma taħdimx mingħajr server tal-web, it-talba tasal permezz HTTP POST, it-talba fiha token

  • Messaġġ dwar is-sejħa, il-parametri tagħha u r-rekords f'Bitrix. Sparat minn Asterisk fid-dialplan [sub-call-internal-ended] meta tispiċċa sejħa

Nifhmu FreePBX u jintegrawh ma 'Bitrix24 u aktar

Is-server tal-web huwa meħtieġ biss għal żewġ affarijiet - tniżżil ta 'fajls ta' rekords Bitrix (permezz ta 'HTTPS) u ssejjaħ l-iskrittura CallMeOut.php. Tista 'tuża s-server FreePBX mibni, li l-fajls tagħhom huma /var/www/html, tista' tinstalla server ieħor jew tispeċifika mogħdija differenti.

Web server

Ejja nħallu s-setup tas-server tal-web għal studju indipendenti (tyts, tyts, tyts). Jekk m'għandekx dominju, tista' tipprova FreeDomain( https://www.freenom.com/ru/index.html), li jagħtik isem b'xejn għall-IP abjad tiegħek (tinsiex tgħaddi l-portijiet 80, 443 permezz tar-router jekk l-indirizz estern ikun fuqu biss). Jekk inti għadek kif ħoloq dominju DNS, allura trid tistenna (minn 15-il minuta sa 48 siegħa) sakemm is-servers kollha jitgħabbew. Skond l-esperjenza ta 'ħidma ma' fornituri domestiċi - minn siegħa għal ġurnata.

Awtomazzjoni tal-installazzjoni

Ġie żviluppat installatur fuq github biex l-installazzjoni tkun saħansitra aktar faċli. Iżda kien bla xkiel fuq il-karta - filwaqt li qed ninstallaw dan kollu manwalment, peress li wara t-tbagħbis ma 'dan kollu deher ċar kristall x'inhu ħbieb ma' min, min imur fejn u kif jiddebaggjah. Għad m'hemm l-ebda installatur

Docker

Jekk trid tipprova malajr is-soluzzjoni - hemm għażla ma 'Docker - malajr toħloq kontenitur, agħtih portijiet barra, żelaq il-fajls tas-settings u pprova (din hija l-għażla bil-kontenitur LetsEncrypt, jekk diġà għandek ċertifikat, int jeħtieġ biss li terġa 'tidderieġi l-prokura inversa lejn is-server tal-web FreePBX (aħna tajna port ieħor huwa 88), LetsEncrypt f'docker ibbażat fuq Dan l-artiklu

Għandek bżonn tmexxi l-fajl fil-folder tal-proġett imniżżel (wara git clone), iżda l-ewwel tidħol fil-konfigurazzjonijiet tal-asterisk (folder tal-asterisk) u ikteb il-mogħdijiet għar-rekords u l-URL tas-sit tiegħek hemmhekk

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:

Dan il-fajl docker-compose.yaml jitmexxa permezz

docker-compose up -d

Jekk nginx ma jibdax, allura xi ħaġa ħażina fil-konfigurazzjoni fil-folder nginx/ssl_docker.conf

Integrazzjonijiet oħra

U għaliex ma tpoġġix xi CRM fi skripts fl-istess ħin, ħsibna. Studjajna diversi CRM APIs oħra, speċjalment il-PBX built-in b'xejn - ShugarCRM u Vtiger, u iva! iva, il-prinċipju huwa l-istess. Iżda din hija storja oħra, li aktar tard se ntellgħu fuq il-github separatament.

referenzi

Ċaħda: Kwalunkwe xebh mar-realtà huwa fittizju u ma kontx jien.

Sors: www.habr.com

Żid kumment