Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Bitrix24 jẹ apapọ nla kan ti o ṣajọpọ CRM, ṣiṣan iṣẹ, ṣiṣe iṣiro ati ọpọlọpọ awọn nkan miiran ti awọn alakoso fẹran gaan ati pe oṣiṣẹ IT ko fẹran gaan. Oju-ọna naa jẹ lilo nipasẹ ọpọlọpọ awọn ile-iṣẹ kekere ati alabọde, pẹlu awọn ile-iwosan kekere, awọn aṣelọpọ ati paapaa awọn ile iṣọ ẹwa. Iṣẹ akọkọ ti awọn alakoso "ife" ni isọpọ ti telephony ati CRM, nigbati eyikeyi ipe ti wa ni igbasilẹ lẹsẹkẹsẹ ni CRM, awọn kaadi onibara ti ṣẹda, nigbati o ba nwọle, alaye nipa onibara yoo han ati pe o le wo ẹni ti o jẹ, kini o jẹ. le ta ati iye ti o jẹ. Ṣugbọn telephony lati Bitrix24 ati iṣọpọ rẹ pẹlu CRM jẹ owo, nigbakan pupọ. Ninu nkan naa Emi yoo sọ fun ọ iriri ti iṣọpọ pẹlu awọn irinṣẹ ṣiṣi ati IP PBX olokiki freepbx, ki o si tun ro awọn kannaa ti awọn iṣẹ ti awọn orisirisi awọn ẹya ara

Mo ṣiṣẹ bi olutaja ni ile-iṣẹ ti o ta ati tunto, ṣepọ telephony IP. Nigbati a beere lọwọ mi boya a le funni ni nkan si eyi ati ile-iṣẹ yii lati ṣepọ Bitrix24 pẹlu awọn PBX ti awọn alabara ni, ati pẹlu awọn PBX foju lori ọpọlọpọ awọn ile-iṣẹ VDS, Mo lọ si Google. Ati pe dajudaju o fun mi ni ọna asopọ kan si article ni habr, Nibo ni apejuwe kan wa, ati github, ati pe ohun gbogbo dabi pe o ṣiṣẹ. Ṣugbọn nigbati o n gbiyanju lati lo ojutu yii, o wa ni pe Bitrix24 ko jẹ kanna bi iṣaaju, ati pe pupọ nilo lati tun ṣe. Ni afikun, FreePBX kii ṣe ami akiyesi igboro fun ọ, nibi o nilo lati ronu nipa bii o ṣe le darapọ irọrun lilo ati dialplan hardcore ni awọn faili atunto.

A kọ ẹkọ ọgbọn ti iṣẹ

Nitorina fun awọn ibẹrẹ, bawo ni o ṣe yẹ ki gbogbo ṣiṣẹ. Nigbati ipe ba gba lati ita PBX (iṣẹlẹ SIP INVITE lati ọdọ olupese), sisẹ ti dialplan (eto ipe kiakia, dialplan) bẹrẹ - awọn ofin ti kini ati ni ibere lati ṣe pẹlu ipe naa. Lati apo akọkọ, o le gba alaye pupọ, eyiti o le ṣee lo ninu awọn ofin. Ohun elo ti o dara julọ fun kikọ awọn inu ti SIP jẹ olutupalẹ sngrep (ọna asopọ) eyiti a fi sori ẹrọ ni irọrun ni awọn pinpin olokiki nipasẹ fi sori ẹrọ apt / yum fi sori ẹrọ ati bii, ṣugbọn o tun le kọ lati orisun. Jẹ ká wo ni ipe log ni sngrep

Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Ni fọọmu ti o rọrun, dialplan ṣe adehun pẹlu apo akọkọ nikan, nigbakan tun lakoko ibaraẹnisọrọ, awọn ipe ti gbe, awọn titẹ bọtini (DTMF), ọpọlọpọ awọn nkan ti o nifẹ bi FollowMe, RingGroup, IVR ati awọn miiran.

Ohun ti o wa ninu awọn ifiwepe Pack

Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Lootọ, awọn eto ipe ti o rọrun pupọ julọ ṣiṣẹ pẹlu awọn aaye akọkọ meji, ati pe gbogbo imọ-jinlẹ wa ni ayika DID ati CallerID. ṢE - nibiti a ti n pe, CallerID - tani n pe.

Ṣugbọn lẹhin gbogbo, a ni ile-iṣẹ kan kii ṣe foonu kan - eyiti o tumọ si pe PBX ṣeese ni awọn ẹgbẹ ipe (igbakanna / ohun orin itẹlera ti awọn ẹrọ pupọ) lori awọn nọmba ilu (Ẹgbẹ Iwọn), IVR (Kaabo, o pe ... Tẹ. Ọkan fun ...), Awọn ẹrọ idahun (Awọn gbolohun ọrọ), Awọn ipo akoko, Firanṣẹ si awọn nọmba miiran tabi si sẹẹli (FollowMe, Siwaju). Eyi tumọ si pe o nira pupọ lati pinnu ẹni ti yoo gba ipe nitootọ ati tani yoo ni ibaraẹnisọrọ pẹlu nigbati ipe ba de. Eyi jẹ apẹẹrẹ ti ibẹrẹ ti ipe aṣoju ni PBX ti awọn alabara wa

Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Lẹhin ipe naa ni aṣeyọri ti wọ PBX, o rin irin-ajo nipasẹ dialplan ni oriṣiriṣi “awọn ọrọ”. Ọrọ ti o wa ni oju-ọna ti Aami akiyesi jẹ eto awọn aṣẹ ti o ni nọmba, ọkọọkan eyiti o ni àlẹmọ nipasẹ nọmba ti a tẹ (o pe ni exten, fun ipe ita ni ipele ibẹrẹ exten=DID). Awọn aṣẹ ti o wa ninu laini dialplan le jẹ ohunkohun - awọn iṣẹ inu (fun apẹẹrẹ, pe alabapin inu - Dial(), fi foonu si isalẹ - Hangup()), awọn oniṣẹ ipo (IF, ELSE, ExecIF ati bii), awọn iyipada si awọn ofin miiran ti ọrọ-ọrọ yii (Goto, GotoIF), iyipada si awọn ipo miiran ni irisi ipe iṣẹ (Gosub, Makiro). Ilana lọtọ include имя_контекста, eyi ti o ṣe afikun awọn aṣẹ lati inu ọrọ miiran si opin ọrọ-ọrọ lọwọlọwọ. Awọn aṣẹ ti o wa nipasẹ pẹlu jẹ ṣiṣe nigbagbogbo после awọn aṣẹ ti o tọ lọwọlọwọ.

Gbogbo ọgbọn ti FreePBX ti wa ni itumọ ti lori ifisi ti o yatọ si àrà sinu kọọkan miiran nipasẹ pẹlu ati ipe nipasẹ Gosub, Makiro ati Handler handlers. Ṣe akiyesi agbegbe ti awọn ipe FreePBX ti nwọle

Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Ipe naa n lọ nipasẹ gbogbo awọn ipo lati oke si isalẹ ni titan, ni aaye kọọkan awọn ipe le wa si awọn ipo miiran bi macros (Macro), awọn iṣẹ (Gosub) tabi awọn iyipada nikan (Goto), nitorina igi gidi ti ohun ti a npe ni le nikan. wa ni tọpinpin ninu awọn àkọọlẹ.

Aworan iṣeto aṣoju fun PBX aṣoju jẹ afihan ni isalẹ. Nigbati o ba n pe, DID ti wa ni awọn ipa-ọna ti nwọle, awọn ipo igba diẹ ni a ṣayẹwo fun rẹ, ti ohun gbogbo ba wa ni ibere, a ṣe ifilọlẹ akojọ ohun. Lati inu rẹ, nipa titẹ bọtini 1 tabi akoko ipari, jade lọ si ẹgbẹ ti awọn oniṣẹ titẹ. Lẹhin ti ipe ba pari, a pe macro hangupcal, lẹhin eyi ko si ohunkan ti a le ṣe ni dialplan, ayafi fun awọn olutọju pataki (olutọju hangup).

Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Nibo ni algorithm ipe yii o yẹ ki a pese alaye nipa ibẹrẹ ipe si CRM, nibo ni lati bẹrẹ gbigbasilẹ, nibo ni lati pari gbigbasilẹ ati firanṣẹ pẹlu alaye nipa ipe si CRM?

Integration pẹlu ita awọn ọna šiše

Kini PBX ati isọpọ CRM? Iwọnyi jẹ awọn eto ati awọn eto ti o ṣe iyipada data ati awọn iṣẹlẹ laarin awọn iru ẹrọ meji wọnyi ati firanṣẹ si ara wọn. Ọna ti o wọpọ julọ fun awọn eto ominira lati baraẹnisọrọ jẹ nipasẹ awọn API, ati pe ọna olokiki julọ lati wọle si API ni HTTP REST. Sugbon ko fun aami akiyesi.

Inu Aami akiyesi ni:

  • AGI - ipe amuṣiṣẹpọ si awọn eto / awọn paati ita, ti a lo ni pataki ninu ero-ọrọ, awọn ile-ikawe wa bii phpagi, PAGI

  • AMI - iho TCP ọrọ ti o ṣiṣẹ lori ipilẹ ṣiṣe alabapin si awọn iṣẹlẹ ati titẹ awọn aṣẹ ọrọ, dabi SMTP lati inu, le tọpa awọn iṣẹlẹ ati ṣakoso awọn ipe, ile-ikawe kan wa. PAMI - olokiki julọ fun ṣiṣẹda asopọ pẹlu Aami akiyesi

AMI o wu apẹẹrẹ

Iṣẹlẹ: New ikanni
Anfaani: ipe, gbogbo
ikanni: PJSIP/VMS_pjsip-0000078b
Ipinle ikanni: 4
ChannelStateDesc: Oruka
Olupe IDNum: 111222
Orukọ olupe: 111222
Nọm ti a ti sopọ:
orukọ ila ti o ni asopọ:
Ede: en
koodu akọọlẹ:
Ọrọ: lati-pstn
Itẹsiwaju: s
Ni ayo: 1
Alailẹgbẹ: 1599589046.5244
Linkedid: 1599589046.5244

  • ARI jẹ idapọ ti awọn mejeeji, gbogbo nipasẹ REST, WebSocket, ni ọna kika JSON - ṣugbọn pẹlu awọn ile-ikawe tuntun ati awọn murasilẹ, ko dara pupọ, aibikita ti a rii (pharia, phpari) eyiti o di ni idagbasoke wọn nipa 3 ọdun sẹyin.

Apeere abajade ARI nigbati ipe ba bẹrẹ

{"ayipada":"CallMeCallerIDName", "iye":"111222", "iru":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "ikanni":{"id »:»1599644315.5334″, «orukọ»:»PJSIP/VMSpjsip-000007b6″, "ipinle":"Oruka", "olupe":{"orukọ":"111222″, "nọmba":"111222″ }, "ti sopọ":{"orukọ":"", "nọmba" :"" }, "accountcode":"", "dialplan":{"context":"from-pstn", "exten":"s", "priorior":2, "appname":"Stasis", "appdata":"hello-aye"}, "akoko ẹda":"2020-09-09T09:38:35.926+0000", "ede":"en"}, "aami akiyesiid":"48:5b:aa:aa:aa:aa", "ohun elo":"hello-aye"}

Irọrun tabi airọrun, o ṣeeṣe tabi ailagbara lati ṣiṣẹ pẹlu API kan ni ipinnu nipasẹ awọn iṣẹ ṣiṣe ti o nilo lati yanju. Awọn iṣẹ-ṣiṣe fun iṣọpọ pẹlu CRM jẹ bi atẹle:

  • Tọpinpin ibẹrẹ ipe naa, nibiti o ti gbe lọ, fa jade CallerID, DID, bẹrẹ ati awọn akoko ipari, boya data lati inu itọsọna naa (lati wa asopọ laarin foonu ati olumulo CRM)

  • Bẹrẹ ati pari gbigbasilẹ ipe naa, fipamọ ni ọna kika ti o fẹ, sọfun ni ipari gbigbasilẹ nibiti faili naa wa.

  • Bẹrẹ ipe lori iṣẹlẹ ita (lati inu eto), pe nọmba inu, nọmba ita ki o so wọn pọ

  • Iyan: ṣepọ pẹlu CRM, awọn ẹgbẹ dialer ati FollowME fun gbigbe awọn ipe laifọwọyi ni laisi aaye kan (ni ibamu si CRM)

Gbogbo awọn iṣẹ-ṣiṣe wọnyi ni a le yanju nipasẹ AMI tabi ARI, ṣugbọn ARI pese alaye ti o kere pupọ, ko si ọpọlọpọ awọn iṣẹlẹ, ọpọlọpọ awọn oniyipada ti AMI tun ni (fun apẹẹrẹ, awọn ipe Makiro, ṣeto awọn oniyipada inu macros, pẹlu gbigbasilẹ ipe) ko tọpinpin. Nitorinaa, fun titọpa deede ati deede, jẹ ki a yan AMI fun bayi (ṣugbọn kii ṣe patapata). Ni afikun (daradara, nibiti laisi rẹ, a jẹ eniyan ọlẹ) - ninu iṣẹ atilẹba (article ni habr) lo PAMI. *Lẹhinna o nilo lati gbiyanju lati tun kọwe si ARI, ṣugbọn kii ṣe otitọ pe yoo ṣiṣẹ.

Reinventing Integration

Ni ibere fun FreePBX wa lati ni anfani lati jabo si AMI ni awọn ọna ti o rọrun nipa ibẹrẹ ipe, akoko ipari, awọn nọmba, awọn orukọ ti awọn faili ti o gbasilẹ, o rọrun julọ lati ṣe iṣiro iye akoko ipe naa ni lilo ẹtan kanna gẹgẹbi awọn onkọwe atilẹba. - tẹ awọn oniyipada rẹ sii ki o ṣe itupalẹ abajade fun wiwa wọn. PAMI ni imọran ṣiṣe eyi ni irọrun nipasẹ iṣẹ àlẹmọ kan.

Eyi ni apẹẹrẹ ti iṣeto oniyipada tirẹ fun akoko ibẹrẹ ti ipe (s jẹ nọmba pataki kan ninu eto dialplan ti o ṣe ṣaaju ki o to bẹrẹ wiwa DID)

[ext-did-custom]

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

Apeere AMI iṣẹlẹ fun yi ila

Iṣẹlẹ: New ikanni

Anfaani: ipe, gbogbo

ikanni: PJSIP/VMS_pjsip-0000078b

Ipinle ikanni: 4

ChannelStateDesc: Oruka

Olupe IDNum: 111222

Orukọ olupe: 111222

Nọm ti a ti sopọ:

orukọ ila ti o ni asopọ:

Ede: en

koodu akọọlẹ:

Ọrọ: lati-pstn

Itẹsiwaju: s

Ni ayo: 1

Alailẹgbẹ: 1599589046.5244

Linkedid: 1599589046.5244

Ohun elo: Ṣeto AppData:

CallStart=1599571046

Nitori FreePBX ṣe atunkọ awọn faili iwọn.conf ati iwọnafikun.conf, a yoo lo faili naa iwọn_aṣa.okun

Kikun koodu ti iwọn limition_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

Ẹya ati iyatọ lati ipilẹṣẹ dialplan atilẹba ti awọn onkọwe ti nkan atilẹba -

  • Dialplan ni ọna kika .conf, bi FreePBX ṣe fẹ (bẹẹni, o le .ael, ṣugbọn kii ṣe gbogbo awọn ẹya ati pe ko rọrun nigbagbogbo)

  • Dipo ṣiṣatunṣe ipari nipasẹ exten = h, iṣelọpọ ti ṣe ifilọlẹ nipasẹ hangup_handler, nitori dialplan FreePBX ṣiṣẹ pẹlu rẹ nikan

  • Okun ipe iwe afọwọkọ ti o wa titi, awọn agbasọ ọrọ ti a fikun ati nọmba ipe ita ExtNum

  • Ilana ti gbe lọ si awọn ipo aṣa aṣa ati gba ọ laaye lati ma fi ọwọ kan tabi ṣatunkọ awọn atunto FreePBX - ti nwọle nipasẹ [ext-ṣe-aṣati njade nipasẹ [outbound-allroutes-aṣa]

  • Ko si abuda si awọn nọmba - faili naa jẹ gbogbo agbaye ati pe o nilo lati tunto nikan fun ọna ati ọna asopọ si olupin naa

Lati bẹrẹ, o tun nilo lati ṣiṣe awọn iwe afọwọkọ ni AMI nipasẹ iwọle ati ọrọ igbaniwọle - fun eyi, FreePBX tun ni faili _custom kan

faili 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

Mejeji ti awọn faili wọnyi gbọdọ wa ni gbe sinu /etc/asterisk, lẹhinna tun-ka awọn atunto (tabi tun ami akiyesi naa bẹrẹ)

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

Bayi jẹ ki a lọ si PHP

Bibẹrẹ awọn iwe afọwọkọ ati ṣiṣẹda iṣẹ kan

Niwọn igba ti ero fun ṣiṣẹ pẹlu Bitrix 24, iṣẹ kan fun AMI, ko rọrun patapata ati sihin, o gbọdọ jiroro ni lọtọ. Aami akiyesi, nigbati AMI ti mu ṣiṣẹ, nìkan ṣii ibudo ati pe o jẹ. Nigbati alabara kan ba darapọ mọ, o beere aṣẹ, lẹhinna alabara ṣe alabapin si awọn iṣẹlẹ pataki. Awọn iṣẹlẹ wa ni ọrọ itele, eyiti PAMI ṣe iyipada si awọn nkan ti a ṣeto ati pese agbara lati ṣeto iṣẹ sisẹ nikan fun awọn iṣẹlẹ ti iwulo, awọn aaye, awọn nọmba, ati bẹbẹ lọ.

Ni kete ti ipe ba wọle, iṣẹlẹ NewExten ti wa ni ina ti o bẹrẹ lati inu ipo obi [lati-pstn], lẹhinna gbogbo awọn iṣẹlẹ lọ ni aṣẹ ti awọn ila ni awọn aaye. Nigbati alaye ba gba lati ọdọ CallMeCallerIDName ati awọn oniyipada CallStart ti a pato ninu _custom dialplan, awọn

  1. Iṣẹ ti nbere ID olumulo ti o baamu si nọmba itẹsiwaju nibiti ipe ti de. Ti o ba jẹ ẹgbẹ ipe kan nko? Ibeere naa jẹ iṣelu, ṣe o nilo lati ṣẹda ipe si gbogbo eniyan ni ẹẹkan (nigbati gbogbo eniyan pe ni ẹẹkan) tabi ṣẹda bi wọn ṣe pe nigbati o n pe ni titan? Pupọ awọn alabara ni ilana Fisrt Wa, nitorinaa ko si iṣoro pẹlu eyi, awọn ipe kan nikan. Ṣugbọn ọrọ naa nilo lati yanju.

  2. Iṣẹ iforukọsilẹ ipe ni Bitrix24, eyiti o da CallID pada, eyiti o nilo lẹhinna lati jabo awọn aye ipe ati ọna asopọ si gbigbasilẹ. Nilo boya nọmba itẹsiwaju tabi UserID

Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Lẹhin ipari ipe, iṣẹ igbasilẹ igbasilẹ ni a pe, eyiti o ṣe ijabọ ni akoko kanna ipo ipari ipe (Nṣiṣẹ, Ko si idahun, Aṣeyọri), ati tun ṣe igbasilẹ ọna asopọ si faili mp3 pẹlu igbasilẹ (ti o ba jẹ eyikeyi).

Nitoripe module CallMeIn.php nilo lati ṣiṣẹ nigbagbogbo, faili ibẹrẹ SystemD ti ṣẹda fun rẹ callme.iṣẹ, eyi ti o gbọdọ fi sii /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

ipilẹṣẹ ati ifilọlẹ iwe afọwọkọ waye nipasẹ systemctl tabi iṣẹ

# systemctl enable callme
# systemctl start callme

Iṣẹ naa yoo tun bẹrẹ funrararẹ bi o ṣe nilo (ni ọran awọn ipadanu). Iṣẹ ipasẹ apo-iwọle ko nilo olupin wẹẹbu kan lati fi sii, php nikan ni o nilo (eyiti o daju lori olupin FeePBX). Ṣugbọn laisi iraye si awọn igbasilẹ ipe nipasẹ olupin wẹẹbu (tun pẹlu https), kii yoo ṣee ṣe lati tẹtisi awọn igbasilẹ ipe.

Bayi jẹ ki a sọrọ nipa awọn ipe ti njade. Iwe afọwọkọ CallMeOut.php ni awọn iṣẹ meji:

  • Bibẹrẹ ipe nigbati o ba gba ibeere kan fun iwe afọwọkọ php (pẹlu lilo bọtini “Ipe” ninu Bitrix funrararẹ). Ko ṣiṣẹ laisi olupin wẹẹbu kan, a gba ibeere naa nipasẹ HTTP POST, ibeere naa ni ami-ami kan

  • Ifiranṣẹ nipa ipe naa, awọn aye rẹ ati awọn igbasilẹ ni Bitrix. Ti ṣiṣẹ nipasẹ Aami akiyesi ni eto ipe-ipe-ipe-ipin nigbati ipe ba pari

Loye FreePBX ati ṣepọ pẹlu Bitrix24 ati diẹ sii

Olupin wẹẹbu naa nilo fun awọn nkan meji nikan - gbigba awọn faili igbasilẹ Bitrix (nipasẹ HTTPS) ati pipe iwe afọwọkọ CallMeOut.php. O le lo olupin FreePBX ti a ṣe sinu, awọn faili ti o jẹ /var/www/html, o le fi olupin miiran sii tabi pato ọna ti o yatọ.

Olupin wẹẹbu

Jẹ ki a lọ kuro ni iṣeto olupin wẹẹbu fun ikẹkọ ominira (tyts, tyts, tyts). Ti o ko ba ni aaye kan, o le gbiyanju FreeDomain( https://www.freenom.com/ru/index.html), eyi ti yoo fun ọ ni orukọ ọfẹ fun IP funfun rẹ (maṣe gbagbe lati firanṣẹ awọn ibudo 80, 443 nipasẹ olulana ti adirẹsi ita ba wa lori rẹ nikan). Ti o ba ṣẹda agbegbe DNS kan, lẹhinna o ni lati duro (lati awọn iṣẹju 15 si awọn wakati 48) titi gbogbo awọn olupin yoo fi kojọpọ. Gẹgẹbi iriri ti ṣiṣẹ pẹlu awọn olupese ile - lati wakati 1 si ọjọ kan.

Adaṣiṣẹ fifi sori ẹrọ

Insitola ti ni idagbasoke lori github lati jẹ ki fifi sori ẹrọ rọrun paapaa. Sugbon o je dan lori iwe - nigba ti a ba ti wa ni fifi gbogbo awọn ti o pẹlu ọwọ, niwon lẹhin tinkering pẹlu gbogbo eyi ti o di gara ko o ohun ti o jẹ ọrẹ pẹlu ẹniti, ti o lọ ibi ti ati bi lati yokokoro o. Ko si olupilẹṣẹ sibẹsibẹ

Docker

Ti o ba fẹ gbiyanju ojutu ni kiakia - aṣayan kan wa pẹlu Docker - yarayara ṣẹda eiyan kan, fun ni awọn ebute oko oju omi si ita, isokuso awọn faili eto ki o gbiyanju (eyi ni aṣayan pẹlu eiyan LetsEncrypt, ti o ba ti ni ijẹrisi tẹlẹ. , o kan nilo lati ṣe atunṣe aṣoju iyipada si olupin wẹẹbu FreePBX (a fun ni ibudo miiran jẹ 88), LetsEncrypt ni docker da lori Arokọ yi

O nilo lati ṣiṣe faili naa ni folda ise agbese ti o gbasilẹ (lẹhin git clone), ṣugbọn kọkọ wọle sinu awọn atunto ami akiyesi (folda aami akiyesi) ki o kọ awọn ọna si awọn igbasilẹ ati URL ti aaye rẹ nibẹ

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 faili ti wa ni ṣiṣe nipasẹ

docker-compose up -d

Ti nginx ko ba bẹrẹ, lẹhinna nkan kan jẹ aṣiṣe pẹlu iṣeto ni folda nginx/ssl_docker.conf

Awọn akojọpọ miiran

Ati idi ti ko fi diẹ ninu awọn CRM sinu awọn iwe afọwọkọ ni akoko kanna, a ro. A ṣe iwadi ọpọlọpọ awọn API CRM miiran, paapaa PBX ti a ṣe sinu ọfẹ - ShugarCRM ati Vtiger, ati bẹẹni! bẹẹni, opo jẹ kanna. Ṣugbọn eyi jẹ itan miiran, eyiti a yoo gbejade nigbamii si github lọtọ.

jo

AlAIgBA: Eyikeyi ibajọra si otito jẹ arosọ ati pe kii ṣe emi.

orisun: www.habr.com

Fi ọrọìwòye kun