Kumvetsetsa FreePBX ndikuphatikiza ndi Bitrix24 ndi zina zambiri
Bitrix 24 ndi kuphatikiza kwakukulu komwe kumaphatikiza CRM, kayendedwe ka ntchito, kuwerengera ndalama ndi zinthu zina zambiri zomwe oyang'anira amakonda komanso ogwira ntchito ku IT sakonda. Khomoli limagwiritsidwa ntchito ndi makampani ang'onoang'ono ndi apakatikati, kuphatikiza zipatala zazing'ono, opanga komanso ma salons okongola. Ntchito yayikulu yomwe oyang'anira "amakonda" ndikuphatikizana kwa telephony ndi CRM, pomwe kuyimba kulikonse kumalembedwa mu CRM, makadi amakasitomala amapangidwa, akabwera, zidziwitso za kasitomala zimawonetsedwa ndipo mutha kuwona nthawi yomweyo yemwe ali, zomwe ali. akhoza kugulitsa ndi kuchuluka kwa ngongole yomwe ali nayo. Koma telefoni yochokera ku Bitrix24 ndi kuphatikiza kwake ndi CRM kumawononga ndalama, nthawi zina zambiri. M'nkhaniyi ndikuwuzani zomwe zachitika pakuphatikiza ndi zida zotseguka komanso IP PBX yotchuka ufulupbx, komanso lingalirani zomveka za ntchito ya magawo osiyanasiyana
Ndimagwira ntchito ngati wogulitsa kunja ku kampani yomwe imagulitsa ndikukonza, imagwirizanitsa IP telephony. Nditafunsidwa ngati tingapereke chinachake kwa izi ndi kampani iyi kuti iphatikize Bitrix24 ndi PBXs omwe makasitomala ali nawo, komanso ma PBX enieni pamakampani osiyanasiyana a VDS, ndinapita ku Google. Ndipo ndithudi adandipatsa ulalo nkhani mu habr, komwe kuli kufotokozera, ndi github, ndipo chirichonse chikuwoneka chikugwira ntchito. Koma poyesa kugwiritsa ntchito yankho ili, zidapezeka kuti Bitrix24 salinso chimodzimodzi ndi kale, ndipo zambiri ziyenera kukonzedwanso. Kuonjezera apo, FreePBX si nyenyezi yopanda kanthu kwa inu, apa muyenera kuganizira za momwe mungagwirizanitse mosavuta kugwiritsa ntchito ndi hardcore dialplan mumafayilo osintha.
Timaphunzira malingaliro a ntchito
Chifukwa chake, poyambira, zonse ziyenera kugwira ntchito. Kuitana kulandiridwa kuchokera kunja kwa PBX (SIP INVITE chochitika kuchokera kwa wothandizira), kukonza kwa dialplan (dial plan, dialplan) kumayamba - malamulo a zomwe ndi momwe angachitire ndi kuyitana. Kuchokera pa paketi yoyamba, mukhoza kupeza zambiri, zomwe zingagwiritsidwe ntchito m'malamulo. Chida chabwino kwambiri chophunzirira zamkati mwa SIP ndi analyzer sngrep (ссылка) yomwe imangoyikidwa pamagawidwe otchuka kudzera pa apt install/yum install ndi zina zotero, koma imathanso kumangidwa kuchokera kugwero. Tiyeni tiwone chipika choyimba mu sngrep
Mu mawonekedwe osavuta, dialplan imagwira ntchito ndi paketi yoyamba, nthawi zinanso panthawi yokambirana, mafoni amasamutsidwa, makina osindikizira (DTMF), zinthu zosiyanasiyana zosangalatsa monga FollowMe, RingGroup, IVR ndi ena.
Zomwe zili mkati mwa Invite Pack
Kwenikweni, ma dialplans osavuta amagwira ntchito ndi magawo awiri oyamba, ndipo malingaliro onse amazungulira DID ndi CallerID. KODI - komwe tikuyitana, CallerID - yemwe akuyimba.
Koma pambuyo pa zonse, tili ndi kampani osati foni imodzi - zomwe zikutanthauza kuti PBX nthawi zambiri imakhala ndi magulu oyitanitsa (kuyimba nthawi imodzi / motsatizana kwa zida zingapo) pamanambala amizinda (Ring Group), IVR (Moni, mudayitana ... Press imodzi ya ...), Kuyankha makina (Mawu), Nthawi Zochita, Kutumiza ku manambala ena kapena ku selo (FollowMe, Forward). Izi zikutanthauza kuti ndizovuta kwambiri kudziwa mosabisa yemwe angalandire foni komanso yemwe angakambirane naye foni ikafika. Nachi chitsanzo cha chiyambi cha kuyimba wamba mu PBX makasitomala athu
Kuyitana kukalowa bwino mu PBX, kumadutsa mu dialplan mu "context" zosiyanasiyana. Nkhani kuchokera pakuwona kwa Asterisk ndi malamulo owerengeka, aliwonse omwe ali ndi fyuluta ndi nambala yomwe idayimbidwa (imatchedwa exten, kwa kuyimba kwakunja pagawo loyambirira exten=DID). Malamulo omwe ali pamzere wa dialplan akhoza kukhala chilichonse - ntchito zamkati (mwachitsanzo, itanani wolembetsa wamkati - Dial(), ikani foni pansi - Hangup()), ogwira ntchito zovomerezeka (IF, ELSE, ExecIF ndi zina zotero), kusintha kwa malamulo ena a nkhaniyi (Goto, GotoIF), kusinthira kuzinthu zina monga kuyimba foni (Gosub, Macro). Lamulo losiyana include имя_контекста, zomwe zimawonjezera malamulo kuchokera kuzinthu zina mpaka kumapeto kwa nkhani yamakono. Malamulo ophatikizidwa ndi kuphatikiza amachitidwa nthawi zonse после malamulo a zochitika zamakono.
Lingaliro lonse la FreePBX limamangidwa pakuphatikizika kwa zochitika zosiyanasiyana wina ndi mnzake kudzera pakuphatikiza ndi kuyimba kudzera pa Gosub, Macro ndi Handler handlers. Ganizirani nkhani ya mafoni a FreePBX omwe akubwera
Chojambula chokhazikika cha PBX chikuwonetsedwa pansipa. Poyimba, DID imafufuzidwa m'njira zomwe zikubwera, zochitika zosakhalitsa zimafufuzidwa, ngati zonse zili bwino, menyu ya mawu imayambitsidwa. Kuchokera pamenepo, pokanikiza batani 1 kapena kutha kwa nthawi, tulukani kupita ku gulu la oyimba. Kuyitana kutatha, hangupcall macro imatchedwa, pambuyo pake palibe chomwe chingachitike mu dialplan, kupatula othandizira apadera (othandizira).
Kodi ndi pati mu aligorivimu yoyimbayi pomwe tikuyenera kupereka zambiri za kuyambika kwa kuyimba kwa CRM, komwe mungayambire kujambula, komwe tingatsilize kujambula ndikutumiza limodzi ndi zambiri zakuyimbira ku CRM?
Kuphatikizana ndi machitidwe akunja
Kodi kuphatikiza kwa PBX ndi CRM ndi chiyani? Izi ndizo zoikamo ndi mapulogalamu omwe amasintha deta ndi zochitika pakati pa nsanja ziwirizi ndikuzitumiza kwa wina ndi mzake. Njira yodziwika bwino yolumikizirana ndi machitidwe odziyimira pawokha ndi kudzera mu ma API, ndipo njira yotchuka kwambiri yopezera ma API ndi HTTP REST. Koma osati kwa asterisk.
Mkati mwa Asterisk ndi:
AGI - kuyimba kolumikizana kwa mapulogalamu / zigawo zakunja, zomwe zimagwiritsidwa ntchito makamaka mu dialplan, pali malaibulale ngati phpagi, PAGI
AMI - socket ya TCP yomwe imagwira ntchito pa mfundo yolembetsa ku zochitika ndikulowetsa malamulo a malemba, amafanana ndi SMTP kuchokera mkati, amatha kufufuza zochitika ndikuyendetsa mafoni, pali laibulale. PAMI - otchuka kwambiri popanga kulumikizana ndi Asterisk
Chitsanzo cha AMI
Chochitika: Njira yatsopano
Mwayi: kuitana, nonse
Njira: PJSIP/VMS_pjsip-0000078b
Chigawo cha Channel: 4
ChannelStateDesc: mphete
Nambala ya Caller: 111222
Dzina Loyimba: 111222
ConnectedLineNum:
dzina lolumikizidwa:
Chiyankhulo: en
akaunti kodi:
Zolemba: kuchokera-pstn
Kuwonjezera: s
Choyambirira: 1
Zosiyana: 1599589046.5244
Zogwirizana: 1599589046.5244
ARI ndi chisakanizo cha onse awiri, kudzera pa REST, WebSocket, mu mtundu wa JSON - koma ndi malaibulale atsopano ndi zokutira, osati zabwino kwambiri, zomwe zapezeka (phparia, phpari) zomwe zidakhala mukukula kwawo pafupifupi zaka 3 zapitazo.
Chitsanzo cha kutulutsa kwa ARI pamene kuyimba kwayambika
Kusavuta kapena kusokoneza, kuthekera kapena kosatheka kugwira ntchito ndi API inayake kumatsimikiziridwa ndi ntchito zomwe ziyenera kuthetsedwa. Ntchito zophatikizana ndi CRM ndi izi:
Tsatani chiyambi cha kuyimba, komwe idasamutsidwa, tulutsani CallerID, DID, nthawi zoyambira ndi zomaliza, mwina deta kuchokera m'ndandanda (kufufuza kugwirizana pakati pa foni ndi wogwiritsa ntchito CRM)
Yambitsani kuyimba pa chochitika chakunja (kuchokera ku pulogalamu), imbani nambala yamkati, nambala yakunja ndikulumikiza
Unsankhula: kuphatikiza ndi CRM, magulu oyimba foni ndi FollowME kuti musamutsire mafoni pakalibe malo (malinga ndi CRM)
Ntchito zonsezi zitha kuthetsedwa kudzera mu AMI kapena ARI, koma ARI imapereka chidziwitso chochepa kwambiri, palibe zochitika zambiri, zosintha zambiri zomwe AMI ikadali nazo (mwachitsanzo, ma macro, kukhazikitsa zosintha mkati mwa macros, kuphatikiza kujambula kuyimba) sizitsatiridwa. Chifukwa chake, pakutsata kolondola komanso kolondola, tiyeni tisankhe AMI pakadali pano (koma osati kwathunthu). Kuphatikiza apo (chabwino, zikanakhala kuti popanda izi, ndife anthu aulesi) - mu ntchito yoyambirira (nkhani mu habr) gwiritsani ntchito PAMI. *Ndiye muyenera kuyesa kulemberanso ku ARI, koma osati kuti igwira ntchito.
Kuyambitsanso kuphatikiza
Kuti FreePBX yathu izitha kupereka lipoti kwa AMI m'njira zosavuta za chiyambi cha kuyimba, nthawi yomaliza, manambala, mayina a mafayilo ojambulidwa, ndizosavuta kuwerengera nthawi yakuyimbira pogwiritsa ntchito chinyengo chofanana ndi olemba oyambirira. - lowetsani zosintha zanu ndikuwunika zomwe zatuluka. PAMI ikuwonetsa kuchita izi kudzera muzosefera.
Nachi chitsanzo chokhazikitsa kusintha kwanu pa nthawi yoyambira kuyimba (s ndi nambala yapadera mu dialplan yomwe imachitidwa MUSANAYAMBA kusaka kwa DID)
Chifukwa FreePBX imachotsa mafayilo a extention.conf ndi extention_zowonjezera.conf, tidzagwiritsa ntchito fayilo kukula_mwambo.conf
Nambala yathunthu ya 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
Chiwonetsero ndi kusiyana kuchokera ku dialplan yoyambirira ya olemba nkhani yoyambirira -
Dialplan mu mtundu wa .conf, monga FreePBX ikufunira (inde, ikhoza .ael, koma osati matembenuzidwe onse ndipo sikophweka nthawi zonse)
Chingwe choyimba chokhazikika, mawu owonjezera ndi nambala yoyimba kunja ExtNum
Kukonza kumasunthidwa ku _custom contexts ndikukulolani kuti musakhudze kapena kusintha masinthidwe a FreePBX - obwera kudzera [ext-did-custom], kutuluka [zotuluka-zonse-mwambo]
Palibe kumangiriza manambala - fayiloyo ndi yapadziko lonse lapansi ndipo imangofunika kukonzedwa kuti igwirizane ndi njirayo ndikulumikizana ndi seva.
Kuti muyambe, muyeneranso kuyendetsa zolemba mu AMI polowera ndi mawu achinsinsi - chifukwa cha izi, FreePBX ilinso ndi _custom file.
manager_custom.conf file
;; это логин
[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
Ntchitoyi iyambiranso yokha ngati ikufunika (ngati zitawonongeka). Ntchito yolondolera ma inbox sikutanthauza kuti seva yapaintaneti iyikidwe, php yokha ndiyofunikira (yomwe ilidi pa seva ya FeePBX). Koma ngati palibe mwayi woyimba ma rekodi kudzera pa seva yapaintaneti (komanso ndi https), sikutheka kumvera ma rekodi.
Tsopano tiyeni tikambirane za mafoni otuluka. Zolemba za CallMeOut.php zili ndi ntchito ziwiri:
Kuyambitsa kuyimba pamene pempho lalandiridwa la php script (kuphatikiza kugwiritsa ntchito batani la "Imbani" mu Bitrix yokha). Sichigwira ntchito popanda seva yapaintaneti, pempho limalandiridwa kudzera pa HTTP POST, pempholi lili ndi chizindikiro
Uthenga wokhudza kuyimba, magawo ake ndi zolemba mu Bitrix. Kuthamangitsidwa ndi Asterisk mu [sub-call-internal-ended] kuyimba foni ikatha
Seva yapaintaneti ikufunika pazinthu ziwiri zokha - kutsitsa mafayilo a Bitrix (kudzera pa HTTPS) ndikuyitanitsa script CallMeOut.php. Mutha kugwiritsa ntchito seva ya FreePBX yomangidwa, mafayilo omwe ali /var/www/html, mutha kukhazikitsa seva ina kapena tchulani njira ina.
Seva yapaintaneti
Tiyeni tisiye kukhazikitsidwa kwa seva yapaintaneti kuti tiphunzire paokha (tyts, tyts, tyts). Ngati mulibe domain, mutha kuyesa FreeDomain( https://www.freenom.com/ru/index.html), yomwe idzakupatsani dzina laulere la IP yanu yoyera (musaiwale kutumiza madoko 80, 443 kudzera pa rauta ngati adilesi yakunja ili pamenepo). Ngati mwangopanga gawo la DNS, ndiye kuti muyenera kudikirira (kuyambira mphindi 15 mpaka maola 48) mpaka ma seva onse atsitsidwa. Malinga ndi zomwe zachitika pogwira ntchito ndi othandizira apakhomo - kuyambira ola limodzi mpaka tsiku.
Kukhazikitsa zokha
Woyikirapo wapangidwa pa github kuti kukhazikitsa kosavuta. Koma zinali zosalala pamapepala - pamene tikuyiyika zonse pamanja, popeza titatha kukambirana ndi zonsezi zinamveka bwino kuti ndi abwenzi omwe ali nawo, omwe amapita kuti athetse bwanji. Palibe choyikira pano
Docker
Ngati mukufuna kuyesa yankho mwachangu - pali njira ndi Docker - pangani chidebe mwachangu, perekani madoko kunja, tsitsani mafayilo ndikuyesa (iyi ndiye njira yokhala ndi chidebe cha LetsEncrypt, ngati muli ndi satifiketi. , mukungofunika kuwongolera mayendedwe obwerera ku seva ya FreePBX (tinapatsa doko lina ndi 88), LetsEncrypt mu docker kutengera Nkhani iyi
Muyenera kuyendetsa fayilo mufoda yotsitsa polojekiti (pambuyo pa git clone), koma choyamba lowani mu asterisk configs (foda ya nyenyezi) ndikulemba njira zopita ku zolemba ndi ulalo wa tsamba lanu pamenepo.
Fayilo iyi ya docker-compose.yaml imayendetsedwa kudzera
docker-compose up -d
Ngati nginx siinayambe, ndiye kuti pali cholakwika ndi kasinthidwe mufoda ya nginx/ssl_docker.conf
Zophatikiza zina
Ndipo bwanji osayika CRM ina muzolemba nthawi yomweyo, tidaganiza. Tidaphunzira ma API ena angapo a CRM, makamaka PBX yaulere yomangidwa - ShugarCRM ndi Vtiger, ndipo inde! inde, mfundo ndi yofanana. Koma iyi ndi nkhani ina, yomwe tidzayika pambuyo pake ku github mosiyana.