Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Bitrix24 ni mchanganyiko mkubwa unaochanganya CRM, mtiririko wa kazi, uhasibu na mambo mengine mengi ambayo wasimamizi wanapenda sana na wafanyakazi wa IT hawapendi sana. Tovuti hutumiwa na makampuni mengi madogo na ya kati, ikiwa ni pamoja na kliniki ndogo, wazalishaji na hata saluni za urembo. Kazi kuu ambayo wasimamizi "wanapenda" ni ujumuishaji wa simu na CRM, wakati simu yoyote inarekodiwa mara moja katika CRM, kadi za mteja zinaundwa, inapoingia, habari kuhusu mteja huonyeshwa na unaweza kuona mara moja yeye ni nani, ni nini. anaweza kuuza na anadaiwa kiasi gani. Lakini simu kutoka Bitrix24 na ushirikiano wake na CRM hugharimu pesa, wakati mwingine nyingi. Katika makala nitakuambia uzoefu wa kuunganisha na zana wazi na IP PBX maarufu BurePBX, na pia kuzingatia mantiki ya kazi ya sehemu mbalimbali

Ninafanya kazi kama mtoaji katika kampuni inayouza na kusanidi, inayounganisha simu ya IP. Nilipoulizwa ikiwa tunaweza kutoa kitu kwa hili na kampuni hii kujumuisha Bitrix24 na PBX ambazo wateja wanazo, pamoja na PBX pepe kwenye kampuni mbalimbali za VDS, nilienda kwa Google. Na bila shaka alinipa kiungo makala katika habr, ambapo kuna maelezo, na github, na kila kitu kinaonekana kufanya kazi. Lakini wakati wa kujaribu kutumia suluhisho hili, ikawa kwamba Bitrix24 sio sawa na hapo awali, na mengi yanahitaji kufanywa upya. Kwa kuongeza, FreePBX sio nyota tupu kwako, hapa unahitaji kufikiria jinsi ya kuchanganya urahisi wa matumizi na dialplan ngumu katika faili za usanidi.

Tunasoma mantiki ya kazi

Kwa hivyo kwa wanaoanza, jinsi yote inapaswa kufanya kazi. Wakati simu inapokelewa kutoka nje ya PBX (tukio la SIP INVITE kutoka kwa mtoa huduma), usindikaji wa dialplan (mpango wa kupiga simu, dialplan) huanza - sheria za nini na kwa utaratibu gani wa kufanya na simu. Kutoka kwa pakiti ya kwanza, unaweza kupata habari nyingi, ambazo zinaweza kutumika katika sheria. Chombo bora cha kusoma mambo ya ndani ya SIP ni analyzer sngrep (kiungo) ambayo imewekwa tu katika usambazaji maarufu kupitia apt install/yum install na mengineyo, lakini pia inaweza kujengwa kutoka kwa chanzo. Wacha tuangalie logi ya simu kwenye sngrep

Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Kwa njia iliyorahisishwa, dialplan hushughulika na pakiti ya kwanza pekee, wakati mwingine pia wakati wa mazungumzo, simu huhamishwa, mibonyezo ya vitufe (DTMF), mambo mbalimbali ya kuvutia kama FollowMe, RingGroup, IVR na mengineyo.

Ni nini ndani ya Kifurushi cha Mwaliko

Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Kwa kweli, mipango rahisi zaidi ya kupiga simu hufanya kazi na sehemu mbili za kwanza, na mantiki nzima inazunguka DID na CallerID. ULIFANYA - ambapo tunapiga simu, CallerID - ni nani anayepiga.

Lakini baada ya yote, tuna kampuni na sio simu moja - ambayo inamaanisha kuwa PBX ina uwezekano mkubwa wa kuwa na vikundi vya simu (mlio wa wakati mmoja / mfululizo wa vifaa kadhaa) kwenye nambari za jiji (Kikundi cha Pete), IVR (Halo, uliita ... Bonyeza moja kwa ...), Mashine ya kujibu ( Vifungu vya maneno), Masharti ya Wakati, Usambazaji kwa nambari zingine au kwa kisanduku (Nifuate, Mbele). Hii ina maana kwamba ni vigumu sana kuamua bila shaka ni nani atakayepokea simu na nani atakuwa na mazungumzo naye wakati simu inakuja. Huu hapa ni mfano wa mwanzo wa simu ya kawaida katika PBX ya wateja wetu

Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Baada ya simu kuingia kwa mafanikio PBX, inasafiri kupitia dialplan katika "muktadha" tofauti. Muktadha kutoka kwa mtazamo wa Asterisk ni seti ya amri zilizohesabiwa, ambayo kila moja ina kichujio kwa nambari iliyopigwa (inaitwa exten, kwa simu ya nje katika hatua ya awali exten=DID). Amri kwenye mstari wa dialplan inaweza kuwa chochote - kazi za ndani (kwa mfano, piga simu mteja wa ndani - Dial(), weka simu chini - Hangup()), waendeshaji masharti (IF, ELSE, ExecIF na mengineyo), mabadiliko ya sheria zingine za muktadha huu (Goto, GotoIF), mpito kwa miktadha mingine katika mfumo wa simu ya kukokotoa (Gosub, Macro). Agizo tofauti include имя_контекста, ambayo huongeza amri kutoka kwa muktadha mwingine hadi mwisho wa muktadha wa sasa. Amri zilizojumuishwa kupitia pamoja hutekelezwa kila wakati baada ya amri za muktadha wa sasa.

Mantiki nzima ya FreePBX imejengwa juu ya ujumuishaji wa miktadha tofauti kwa kila mmoja kupitia kujumuisha na kupiga simu kupitia Gosub, Macro na vidhibiti vya Handler. Fikiria muktadha wa simu za FreePBX zinazoingia

Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Simu hupitia miktadha yote kutoka juu hadi chini kwa zamu, katika kila muktadha kunaweza kuwa na simu kwa muktadha mwingine kama macros (Macro), kazi (Gosub) au mabadiliko tu (Goto), kwa hivyo mti halisi wa kile kinachoitwa unaweza tu. kufuatiliwa katika kumbukumbu.

Mchoro wa kawaida wa usanidi wa PBX ya kawaida umeonyeshwa hapa chini. Wakati wa kupiga simu, DID hutafutwa katika njia zinazoingia, hali ya muda huangaliwa kwa ajili yake, ikiwa kila kitu kinafaa, orodha ya sauti imezinduliwa. Kutoka kwake, kwa kubonyeza kitufe cha 1 au kuisha, toka kwa kikundi cha waendeshaji wa kupiga. Baada ya kumalizika kwa simu, hangupcall macro inaitwa, baada ya hapo hakuna kitu kinachoweza kufanywa kwenye dialplan, isipokuwa kwa washughulikiaji maalum (mshughulikiaji wa hangup).

Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Ni wapi katika algoriti hii ya simu tunapaswa kutoa maelezo kuhusu mwanzo wa simu kwa CRM, wapi pa kuanzia kurekodi, mahali pa kukatisha rekodi na kuituma pamoja na maelezo kuhusu simu kwa CRM?

Kuunganishwa na mifumo ya nje

PBX na ushirikiano wa CRM ni nini? Hizi ni mipangilio na programu zinazobadilisha data na matukio kati ya majukwaa haya mawili na kuzituma kwa kila mmoja. Njia ya kawaida ya mifumo huru kuwasiliana ni kupitia API, na njia maarufu zaidi ya kufikia API ni HTTP REST. Lakini si kwa nyota.

Ndani ya kinyota ni:

  • AGI - simu ya kusawazisha kwa programu / vifaa vya nje, vinavyotumiwa sana kwenye dialplan, kuna maktaba kama vile phpagi, PAGI

  • AMI - soketi ya maandishi ya TCP ambayo inafanya kazi kwa kanuni ya kujiandikisha kwa matukio na kuingiza amri za maandishi, inafanana na SMTP kutoka ndani, inaweza kufuatilia matukio na kusimamia simu, kuna maktaba. PAMI - maarufu zaidi kwa kuunda uhusiano na Asterisk

Mfano wa pato la AMI

Tukio: Kituo kipya
Upendeleo: piga simu, wote
Kituo: PJSIP/VMS_pjsip-0000078b
Hali ya Kituo: 4
ChannelStateDesc: Gonga
Nambari ya Kitambulisho cha Mpigaji: 111222
Kitambulisho cha Mpigaji: 111222
ConnectedLineNum
jina la mstari lililounganishwa:
Lugha: sw
nambari ya akaunti:
Muktadha: kutoka-pstn
Panua: s
Kipaumbele: 1
Kipekee: 1599589046.5244
Imeunganishwa: 1599589046.5244

  • ARI ni mchanganyiko wa zote mbili, zote kupitia REST, WebSocket, katika umbizo la JSON - lakini ikiwa na maktaba mpya na vifuniko, sio nzuri sana, vilivyopatikana (phparia, phpari) ambayo ilikua katika maendeleo yao yapata miaka 3 iliyopita.

Mfano wa pato la ARI simu inapoanzishwa

{ "variable":"CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id »:»1599644315.5334″, «jina»:»PJSIP/VMSpjsip-000007b6″, "state":"Pete", "mpigaji":{ "jina":"111222″, "number":"111222″ }, "imeunganishwa":{"jina":"", "nambari" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "programujina":"Stasis", "programudata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "lugha":"en" }, "asteriskid":"48:5b:aa:aa:aa:aa", "maombi":"hello-world" }

Urahisi au usumbufu, uwezekano au kutowezekana kwa kufanya kazi na API fulani imedhamiriwa na kazi zinazohitaji kutatuliwa. Kazi za kuunganishwa na CRM ni kama ifuatavyo:

  • Fuatilia mwanzo wa simu, ambapo ilihamishiwa, toa Kitambulisho cha Simu, DID, saa za kuanza na kumaliza, labda data kutoka kwa saraka (kutafuta muunganisho kati ya simu na mtumiaji wa CRM)

  • Anza na umalize kurekodi simu, ihifadhi katika muundo unaotaka, ujulishe mwisho wa kurekodi ambapo faili iko.

  • Anzisha simu kwenye tukio la nje (kutoka kwa programu), piga nambari ya ndani, nambari ya nje na uwaunganishe

  • Hiari: Unganisha na CRM, vikundi vya vipiga simu na FollowME kwa uhamishaji wa simu kiotomatiki bila mahali (kulingana na CRM)

Kazi hizi zote zinaweza kutatuliwa kupitia AMI au ARI, lakini ARI hutoa habari kidogo sana, hakuna matukio mengi, vigezo vingi ambavyo AMI bado ina (kwa mfano, simu za jumla, kuweka vigezo ndani ya macros, ikiwa ni pamoja na kurekodi simu) hazifuatiliwi. Kwa hiyo, kwa ufuatiliaji sahihi na sahihi, hebu tuchague AMI kwa sasa (lakini sio kabisa). Kwa kuongezea (vizuri, ingekuwa wapi bila hii, sisi ni wavivu) - katika kazi ya asili (makala katika habr) tumia PAMI. *Kisha unahitaji kujaribu kuandika tena kwa ARI, lakini sio ukweli kwamba itafanya kazi.

Kuanzisha upya muunganisho

Ili FreePBX yetu iweze kuripoti kwa AMI kwa njia rahisi kuhusu mwanzo wa simu, muda wa mwisho, nambari, majina ya faili zilizorekodiwa, ni rahisi zaidi kuhesabu muda wa simu kwa kutumia hila sawa na waandishi wa awali. - ingiza vigezo vyako na uchanganue matokeo ya uwepo wao. PAMI inapendekeza kufanya hivi kupitia kitendakazi cha kichungi.

Huu hapa ni mfano wa kuweka kigezo chako mwenyewe kwa muda wa kuanza kwa simu (s ni nambari maalum katika mpangilio wa kupiga simu ambayo hufanywa KABLA ya kuanza utafutaji wa DID)

[ext-did-custom]

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

Mfano wa tukio la AMI la mstari huu

Tukio: Kituo kipya

Upendeleo: piga simu, wote

Kituo: PJSIP/VMS_pjsip-0000078b

Hali ya Kituo: 4

ChannelStateDesc: Gonga

Nambari ya Kitambulisho cha Mpigaji: 111222

Kitambulisho cha Mpigaji: 111222

ConnectedLineNum

jina la mstari lililounganishwa:

Lugha: sw

nambari ya akaunti:

Muktadha: kutoka-pstn

Panua: s

Kipaumbele: 1

Kipekee: 1599589046.5244

Imeunganishwa: 1599589046.5244

Maombi: Weka AppData:

CallStart=1599571046

Kwa sababu FreePBX hubatilisha faili za extention.conf na extention_ziada.conf, tutatumia faili kupanua_desturi.conf

Msimbo kamili wa 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

Kipengele na tofauti kutoka kwa mpangilio wa asili wa waandishi wa nakala asili -

  • Dialplan katika umbizo la .conf, kama FreePBX inataka (ndiyo, inaweza .ael, lakini si matoleo yote na si rahisi kila wakati)

  • Badala ya kuchakata mwisho kupitia exten=>h, usindikaji ulianzishwa kupitia hangup_handler, kwa sababu dialplan ya FreePBX ilifanya kazi nayo tu.

  • Mfuatano wa simu wa maandishi uliowekwa, nukuu zilizoongezwa na nambari ya simu ya nje ExtNum

  • Uchakataji umehamishwa hadi _custom miktadha na hukuruhusu usiguse au kuhariri usanidi wa FreePBX - unaoingia kupitia [ext-did-desturi], zinazotoka kupitia [njia-za-zote-desturi]

  • Hakuna kumfunga kwa nambari - faili ni ya ulimwengu wote na inahitaji tu kusanidiwa kwa njia na kiunga cha seva.

Ili kuanza, unahitaji pia kuendesha hati katika AMI kwa kuingia na nenosiri - kwa hili, FreePBX pia ina faili _custom.

manager_custom.conf faili

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

Faili hizi zote mbili lazima ziwekwe /etc/asterisk, kisha usome tena usanidi (au uanze upya nyota)

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

Sasa hebu tuendelee kwenye PHP

Kuanzisha hati na kuunda huduma

Kwa kuwa mpango wa kufanya kazi na Bitrix 24, huduma ya AMI, sio rahisi kabisa na ya uwazi, lazima ijadiliwe tofauti. Nyota, wakati AMI imeamilishwa, inafungua tu bandari na ndivyo. Wakati mteja anajiunga, anaomba idhini, kisha mteja anajiandikisha kwa matukio muhimu. Matukio huja kwa maandishi wazi, ambayo PAMI hubadilisha kuwa vitu vilivyoundwa na hutoa uwezo wa kuweka kitendakazi cha kuchuja tu kwa matukio ya maslahi, sehemu, nambari, nk.

Mara tu simu inapoingia, tukio la NewExten hufutwa kazi kuanzia muktadha wa mzazi [from-pstn], kisha matukio yote huenda kwa mpangilio wa mistari katika miktadha. Taarifa inapopokelewa kutoka kwa Vigezo vya CallMeCallerIDName na CallStart vilivyobainishwa kwenye _custom dialplan,

  1. Kazi ya kuomba Kitambulisho cha Mtumiaji kinacholingana na nambari ya kiendelezi ambapo simu ilikuja. Je, ikiwa ni kikundi cha kupiga simu? Swali ni la kisiasa, je, unahitaji kuunda simu kwa kila mtu mara moja (wakati kila mtu anapiga simu mara moja) au kuunda kama wanavyopiga wakati wa kupiga simu kwa zamu? Wateja wengi wana mkakati wa Fisrt Inapatikana, kwa hivyo hakuna shida na hii, simu moja tu. Lakini suala hilo linahitaji kutatuliwa.

  2. Kazi ya usajili wa simu katika Bitrix24, ambayo hurejesha Kitambulisho cha Simu, ambacho kinahitajika kuripoti vigezo vya simu na kiungo cha kurekodi. Inahitaji nambari ya kiendelezi au UserID

Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Baada ya mwisho wa simu, kazi ya kupakua rekodi inaitwa, ambayo wakati huo huo inaripoti hali ya kukamilika kwa simu (Busy, Hakuna jibu, Mafanikio), na pia kupakua kiungo kwenye faili ya mp3 na rekodi (ikiwa ipo).

Kwa sababu moduli ya CallMeIn.php inahitaji kufanya kazi mfululizo, faili ya kuanzisha SystemD imeundwa kwa ajili yake callme.huduma, ambayo lazima iwekwe /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

uanzishaji na uzinduzi wa hati hufanyika kupitia systemctl au huduma

# systemctl enable callme
# systemctl start callme

Huduma itajianzisha yenyewe kama inavyohitajika (ikiwa kuna ajali). Huduma ya ufuatiliaji wa kisanduku pokezi haihitaji seva ya wavuti kusakinishwa, php pekee inahitajika (ambayo kwa hakika iko kwenye seva ya FeePBX). Lakini kwa kukosekana kwa ufikiaji wa rekodi za simu kupitia seva ya Wavuti (pia na https), haitawezekana kusikiliza rekodi za simu.

Sasa hebu tuzungumze kuhusu simu zinazotoka. Hati ya CallMeOut.php ina vipengele viwili:

  • Kuanzishwa kwa simu wakati ombi linapokelewa kwa hati ya php (ikiwa ni pamoja na kutumia kitufe cha "Piga" kwenye Bitrix yenyewe). Haifanyi kazi bila seva ya wavuti, ombi linapokelewa kupitia HTTP POST, ombi lina ishara

  • Ujumbe kuhusu simu, vigezo na rekodi zake katika Bitrix. Imechomwa na Nyota katika [wito-ndogo-uliokamilika] simu simu inapokatwa

Kuelewa FreePBX na kuiunganisha na Bitrix24 na zaidi

Seva ya wavuti inahitajika kwa vitu viwili pekee - kupakua faili za rekodi za Bitrix (kupitia HTTPS) na kupiga hati ya CallMeOut.php. Unaweza kutumia seva ya FreePBX iliyojengwa ndani, faili ambazo ni /var/www/html, unaweza kusakinisha seva nyingine au kutaja njia tofauti.

Seva ya wavuti

Wacha tuache usanidi wa seva ya wavuti kwa masomo ya kujitegemea (tyts, tyts, tyts) Ikiwa huna kikoa, unaweza kujaribu FreeDomain( https://www.freenom.com/ru/index.html), ambayo itakupa jina la bure kwa IP yako nyeupe (usisahau kusambaza bandari 80, 443 kupitia router ikiwa anwani ya nje iko juu yake tu). Ikiwa umeunda tu kikoa cha DNS, basi unapaswa kusubiri (kutoka dakika 15 hadi saa 48) hadi seva zote zipakia. Kulingana na uzoefu wa kufanya kazi na watoa huduma wa ndani - kutoka saa 1 hadi siku.

Ufungaji otomatiki

Kisakinishi kimetengenezwa kwenye github ili kurahisisha usakinishaji. Lakini ilikuwa laini kwenye karatasi - wakati tunaisanikisha yote kwa mikono, kwani baada ya kuchezea haya yote ikawa wazi kabisa marafiki ni nani, nani huenda wapi na jinsi ya kuisuluhisha. Bado hakuna kisakinishi

Docker

Ikiwa unataka kujaribu haraka suluhisho - kuna chaguo na Docker - unda chombo haraka, upe bandari kwa nje, telezesha faili za mipangilio na ujaribu (hii ndio chaguo na chombo cha LetsEncrypt, ikiwa tayari unayo cheti. , unahitaji tu kuelekeza reverse proksi kwa seva ya wavuti ya FreePBX (tuliipa bandari nyingine ni 88), LetsEncrypt in docker kulingana na Makala hii

Unahitaji kuendesha faili kwenye folda ya mradi iliyopakuliwa (baada ya git clone), lakini kwanza ingia kwenye usanidi wa nyota (folda ya nyota) na uandike njia za rekodi na URL ya tovuti yako hapo.

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:

Faili hii ya docker-compose.yaml inaendeshwa kupitia

docker-compose up -d

Ikiwa nginx haitaanza, basi kuna kitu kibaya na usanidi kwenye folda ya nginx/ssl_docker.conf.

Miunganisho mingine

Na kwa nini usiweke CRM kwenye hati wakati huo huo, tulifikiria. Tulisoma API zingine kadhaa za CRM, haswa PBX iliyojengwa bila malipo - ShugarCRM na Vtiger, na ndio! ndio, kanuni ni sawa. Lakini hii ni hadithi nyingine, ambayo baadaye tutapakia kwenye github tofauti.

marejeo

Kanusho: Ulinganifu wowote na ukweli ni uwongo na haikuwa mimi.

Chanzo: mapenzi.com

Kuongeza maoni