Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

Bitrix24 he hui nui e hoʻohui i ka CRM, ka holo palapala, ka helu helu a me nā mea ʻē aʻe he nui i makemake nui ʻia e nā luna a ʻaʻole makemake nui nā limahana IT. Hoʻohana ʻia ka portal e nā ʻoihana liʻiliʻi a me nā ʻoihana liʻiliʻi, me nā keʻena liʻiliʻi liʻiliʻi, nā mea hana a me nā salon nani. ʻO ka hana nui a nā mana "aloha" ʻo ia ka hoʻohui ʻana o ke kelepona a me CRM, ke hoʻopaʻa koke ʻia kekahi kelepona i CRM, hana ʻia nā kāleka mea kūʻai aku, hōʻike ʻia ka ʻike e pili ana i ka mea kūʻai aku i ka wā e komo mai ai a hiki iā ʻoe ke ʻike koke ʻo wai ʻo ia, he aha ka mea hiki. kuai aku ia ia a me ka nui o kana aie. Akā ʻo ke kelepona mai Bitrix24 a me kona hoʻohui ʻana me CRM e uku kālā, i kekahi manawa he nui. Ma kēiaʻatikala e haʻi wau iā ʻoe e pili ana i ka ʻike o ka hoʻohui ʻana me nā mea hana wehe a me ka IP PBX kaulana freepbx, a e noʻonoʻo pū i ka loiloi o nā ʻāpana like ʻole

Hana wau ma ke ʻano he outsourcer no kahi hui kūʻai, hoʻonohonoho, a hoʻohui i ke kelepona IP. I koʻu nīnau ʻia inā hiki iā mākou ke hāʻawi i kēia a me kēia hui i mea no ka hoʻohui ʻana iā Bitrix24 me nā PBX i loaʻa i nā mea kūʻai aku, a me nā PBX virtual ma nā ʻoihana VDS like ʻole, hele wau i Google. A ʻoiaʻiʻo ua hāʻawi ʻo ia iaʻu i kahi loulou i ʻatikala ma Habr, aia kahi wehewehe a me github, a me he mea lā e hana ana nā mea a pau. Akā i koʻu hoʻāʻo ʻana e hoʻohana i kēia hoʻonā, ua ʻike ʻia ʻaʻole ʻo Bitrix24 ka mea ma mua, a he nui nā mea e pono e hana hou. Eia kekahi, ʻaʻole ʻo FreePBX kahi asterisk; pono ʻoe e noʻonoʻo e pili ana i ka hoʻohui ʻana i ka maʻalahi o ka hoʻohana ʻana a me kahi dialplan hardcore i nā faila config.

Ke aʻo ʻana i ka loiloi o ka hana

No laila ʻo ka mea mua, pehea e hana ai kēia. Ke hiki mai kahi kelepona mai waho i ka PBX (SIP INVITE event from the provider), hoʻomaka ka hana ʻana o ka dialplan (dial plan) - nā lula no ka mea e hana ai me ke kelepona a me ke ʻano o ke kauoha. Mai ka ʻeke mua hiki iā ʻoe ke loaʻa i ka ʻike he nui, a laila hiki ke hoʻohana ʻia i nā lula. ʻO kahi mea hana maikaʻi loa no ka hoʻopaʻa ʻana i nā internals o SIP ʻo ia ka mea loiloi sngrep (loulou) ka mea i hoʻokomo wale ʻia i nā māhele kaulana ma o apt install/yum install a me nā mea like, akā hiki iā ʻoe ke kūkulu iā ia mai ka code kumu. E nānā kāua i ka log call in sngrep

Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

Ma kahi ʻano maʻalahi, pili wale ka dialplan i ka ʻeke mua, i kekahi manawa i ka wā o ke kamaʻilio ʻana e hoʻololi pū i nā kelepona, nā pihi pihi (DTMF), nā mea hoihoi like ʻole FollowMe, RingGroup, IVR a me nā mea ʻē aʻe.

He aha ka mea i loko o ka pūʻolo kono

Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

ʻOiaʻiʻo, ʻo ka hapa nui o nā dialplans maʻalahi e hana me nā māla mua ʻelua a ʻo nā loina āpau e hoʻopuni ana iā DID a me CallerID. DID - kahi a mākou e kāhea nei, CallerID - nāna e kāhea.

Akā, he hui kā mākou a ʻaʻole hoʻokahi kelepona - a ʻo ia hoʻi, ʻo ka PBX ka mea i loaʻa i nā hui kelepona (kahea like/sequential mai nā mea like ʻole) ma nā helu kūlanakauhale (Ring Group), IVR (Aloha, kāhea ʻoe ... E kaomi i hoʻokahi no ...), Nā mīkini pane ( Nā ʻōlelo ), Nā Kūlana Manawa, Ke hoʻouna ʻana i nā helu ʻē aʻe a i ʻole kelepona kelepona (FollowMe, Forward). ʻO ia ke ʻano he paʻakikī loa ka hoʻoholo ʻana i ka mea e loaʻa maoli ke kelepona a me ka mea e kamaʻilio ana i ka wā e hiki mai ai ke kelepona. Eia kahi laʻana o ka hoʻomaka ʻana o kahi kelepona maʻamau i kā mākou mea kūʻai aku PBX

Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

Ma hope o ke komo ʻana o ke kelepona i ka PBX, hele ʻo ia ma ka dialplan ma nā "contexts" like ʻole. ʻO ka ʻatikala mai ka ʻaoʻao Asterisk he pūʻulu helu o nā kauoha, aia kēlā me kēia me kahi kānana e pili ana i ka helu i kāhea ʻia (ua kapa ʻia ʻo exten, no kahi kelepona waho ma ka pae mua exten=DID). Hiki i nā kauoha ma ka laina dialplan ke ʻano - nā hana kūloko (no ka laʻana, e kāhea i kahi mea kākau kūloko - Dial(), waiho i ke kelepona i lalo - Hangup()), nā ʻōlelo kūlana (IF, ELSE, ExecIF a me nā mea like), hoʻololi i nā lula ʻē aʻe o kēia pōʻaiapili (Goto, GotoIF), hoʻololi i nā pōʻaiapili ʻē aʻe ma ke ʻano o nā kelepona hana (Gosub, Macro). Aia kekahi kuhikuhi kaʻawale include имя_контекста, ka mea e hoʻopili i nā kauoha mai kekahi pōʻaiapili a hiki i ka hopena o ka pōʻaiapili o kēia manawa. Hoʻokō mau ʻia nā kauoha i hoʻokomo ʻia ma o ka hoʻokomo mahope nā kauoha pōʻaiapili o kēia manawa.

Kūkulu ʻia ka manaʻo holoʻokoʻa o FreePBX ma ka hoʻokomo ʻana i nā pōʻaiapili like ʻole i kekahi i kekahi ma o ka hoʻopili ʻana a me ke kelepona ʻana ma o Gosub, Macro a me Handler handler. E noʻonoʻo i ka pōʻaiapili o nā kelepona FreePBX e hiki mai ana

Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

Ke hele nei ke kelepona i nā pōʻaiapili a pau mai luna a lalo i ka huli ʻana, i kēlā me kēia pōʻaiapili hiki ke kāhea ʻia i nā pōʻaiapili ʻē aʻe e like me macros (Macro), functions (Gosub) a i ʻole nā ​​hoʻololi wale ʻana (Goto), no laila hiki i ka lāʻau maoli o ka mea i kapa ʻia. e nānā wale ʻia ma nā lāʻau.

Hōʻike ʻia kahi kiʻi hoʻonohonoho maʻamau no kahi keʻena maʻamau PBX ma lalo nei. Ke kelepona ʻana, ʻimi ʻia ka DID ma nā ala e hiki mai ana, nānā ʻia nā kūlana manawa kūʻē iā ia, inā pololei nā mea āpau, hoʻomaka ka papa kuhikuhi leo. Mai laila mai, e hoʻohana i ka pihi 1 a i ʻole ka manawa e komo ai i ka hui kelepona ʻana. Ma hope o ka pau ʻana o ke kelepona, kāhea ʻia ka hangupcall macro, a laila ʻaʻohe mea e hiki ke hoʻokō ʻia i ka dialplan koe wale nō nā mea lima kūikawā (hangup handler).

Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

Ma hea ma kēia kelepona algorithm e hāʻawi ai mākou i ka ʻike e pili ana i ka hoʻomaka ʻana o ke kelepona i ka CRM, ma hea mākou e hoʻomaka ai i ka hoʻopaʻa ʻana, ma hea mākou e hoʻopau ai i ka hoʻopaʻa ʻana a hoʻouna pū me ka ʻike e pili ana i ke kelepona i ka CRM?

Hoʻohui me nā ʻōnaehana waho

He aha ka PBX a me CRM hoʻohui? ʻO kēia nā hoʻonohonoho a me nā papahana e hoʻololi i ka ʻikepili a me nā hanana ma waena o kēia mau paepae ʻelua a hoʻouna iā lākou i kekahi i kekahi. ʻO ke ala maʻamau no nā ʻōnaehana kūʻokoʻa e kamaʻilio ma o kahi API, a ʻo ke ala kaulana loa e komo ai i kahi API ʻo HTTP REST. Akā ʻaʻole no ka asterisk.

Aia i loko o Asterisk:

  • AGI - ke kelepona hui pū ʻana o nā papahana / ʻāpana o waho, hoʻohana nui ʻia i ka dialplan, aia nā hale waihona puke e like me phpagi, PAGI

  • ʻO AMI kahi kikokikona TCP e hana ana ma ke kumu o ke kau inoa ʻana i nā hanana a me ke komo ʻana i nā kauoha kikokikona, e like me SMTP mai loko mai, hiki ke nānā i nā hanana a mālama i nā kelepona, aia kahi waihona. PAMI - ka mea kaulana loa no ka hana ʻana i kahi pilina me Asterisk

Laʻana AMI hoʻopuka

Hanana: Kanal hou
Pono: kelepona, a pau
Kaila: PJSIP/VMS_pjsip-0000078b
Mokuʻāina Channel: 4
ChannelStateDesc: Ring
Ka helu kelepona: 111222
CallerIDIna: 111222
ConnectedLineNum:
ConnectedLineName:
ʻŌlelo: en
Code moʻokāki:
Hōʻike: mai-pstn
Hoʻonui: s
Mea makakoho: 1
Kūʻokoʻa: 1599589046.5244
Ka loulou: 1599589046.5244

  • ʻO ARI kahi hui ʻana o kēia a me kēlā, ma o REST, WebSocket, ma JSON format - akā me nā hale waihona puke hou loa a me nā mea hoʻopili ʻaʻole maikaʻi loa, ʻike mākou iā ia ma waho (phparia, phpari) i ko lākou ulu ʻana ma kahi o 3 mau makahiki i hala.

Ka laʻana o ka hoʻopuka ARI i ka wā e hoʻomaka ai i kahi kelepona

{ "variable":"CallMeCallerIDName", "value":"111222″, "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000″, "channel":{ "id ":"1599644315.5334″, "inoa":"PJSIP/VMSpjsip-000007b6″, "state":"Ring", "caller":{ "name":"111222″, "helu":"111222″ }, "connected":{ "name":"", "helu" :"" }, "accountcode":"", "dialplan":{ "context":"mai-pstn", "exten":"s", "priority":2, "appinoa": "Stasis", "appdata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000″, "ʻōlelo":"ru" }, "asteriskid":"48:5b:aa:aa:aa:aa", "application":"hello-world" }

ʻO ka maʻalahi a iʻole ka pilikia, ka hiki a iʻole ka hikiʻole ke hana me kahi API kūikawā e hoʻoholoʻia e nā hana e pono e hoʻoholo. ʻO nā hana no ka hoʻohui ʻana me CRM penei:

  • E hahai i ka hoʻomaka ʻana o ke kelepona, kahi i hoʻoili ʻia ai, huki iā CallerID, DID, hoʻomaka a hoʻopau i nā manawa, malia paha ka ʻikepili mai ka papa kuhikuhi (e ʻike i ka pilina ma waena o ke kelepona a me ka mea hoʻohana CRM)

  • E hoʻomaka a hoʻōki i ka hoʻopaʻa ʻana i kahi kelepona, mālama iā ia ma ke ʻano i koi ʻia, a hōʻike i kahi o ka faila ke pau ka hoʻopaʻa ʻana

  • E hoʻomaka i kahi kelepona e pili ana i kahi hanana waho (mai ka papahana), e kāhea i kahi helu kūloko, kahi helu waho a hoʻohui iā lākou

  • Ponoʻole: hoʻohui pū me CRM, kelepona pūʻulu a me FollowME no ka hoʻololi maʻalahi o nā kelepona i waho o ke keʻena (e like me ka ʻike CRM)

Hiki ke hoʻopau ʻia kēia mau hana a pau ma o AMI a i ʻole ARI, akā hāʻawi ʻo ARI i ka ʻike liʻiliʻi, nui nā hanana i nalo, a ʻaʻole ʻike ʻia nā ʻano hoʻololi he nui i loaʻa iā AMI (no ka laʻana, nā kelepona macro, ka hoʻonohonoho ʻana i nā loli i loko o nā macros, me ka hoʻopaʻa ʻana i nā kelepona). No laila, no ka huli pololei a pololei, e koho mākou iā AMI i kēia manawa (akā ʻaʻole holoʻokoʻa). Eia kekahi (maikaʻi, ma hea mākou me ka ʻole o kēia, he poʻe palaualelo mākou) - i ka hana kumu (ʻatikala ma Habr) hoʻohana i ka PAMI. *A laila pono ʻoe e hoʻāʻo e kākau hou iā ia ma ARI, akā ʻaʻole maopopo ia e hana.

Hoʻopili hou i ka hoʻohui

I mea e hiki ai i kā mākou FreePBX ke hōʻike i ka AMI ma nā ala maʻalahi e pili ana i ka hoʻomaka ʻana o ke kelepona, ka manawa hope, nā helu, nā inoa o nā faila i hoʻopaʻa ʻia, a me ke ala maʻalahi e helu ai i ka lōʻihi o ke kāhea ʻana, ʻo ia ka hoʻohana ʻana i ka hoʻopunipuni like. nā mea kākau kumu - e hoʻokomo i kāu mau mea hoʻololi a hoʻokaʻawale i ka hopena no ko lākou hele ʻana. Manaʻo ʻo PAMI e hana i kēia ma o ka hana kānana.

Eia kahi laʻana o ka hoʻonohonoho ʻana i kāu hoʻololi ponoʻī no ka manawa hoʻomaka o ke kelepona (s he helu kūikawā ma ka dialplan i hoʻokō ʻia ma mua o ka hoʻomaka ʻana o ka hulina DID)

[ext-did-custom]

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

He laʻana hanana AMI no kēia laina

Hanana: Kanal hou

Pono: kelepona, a pau

Kaila: PJSIP/VMS_pjsip-0000078b

Mokuʻāina Channel: 4

ChannelStateDesc: Ring

Ka helu kelepona: 111222

CallerIDIna: 111222

ConnectedLineNum:

ConnectedLineName:

ʻŌlelo: en

Code moʻokāki:

Hōʻike: mai-pstn

Hoʻonui: s

Mea makakoho: 1

Kūʻokoʻa: 1599589046.5244

Ka loulou: 1599589046.5244

Noi: E hoʻonoho iā AppData:

CallStart=1599571046

No ka mea, ua kākau ʻo FreePBX i nā faila extension.conf a me extention_additional.conf, e hoʻohana mākou i ka faila extension_Ua maa no.conf

Hoʻopau code 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

ʻO ka hiʻohiʻona a me ka ʻokoʻa mai ka dialplan mua o nā mea kākau o ka ʻatikala kumu -

  • Dialplan ma ka .conf format, e like me ka FreePBX makemake ia (ʻae, hiki iā ia ke hana .ael, akā ʻaʻole nā ​​mana āpau a ʻaʻole kūpono i nā manawa a pau)

  • Ma kahi o ka hoʻoponopono ʻana i ka hopena ma o exten => h, ua hoʻokomo ʻia ka hoʻoili ʻana ma o hangup_handler, no ka mea, ua hana wale ka dialplan FreePBX me ia.

  • ʻO ka laina kelepona paʻa paʻa, nā huaʻōlelo i hoʻohui ʻia a me ka helu kelepona waho ExtNum

  • Hana ʻia ke kaʻina hana ma _poʻomanaʻo maʻamau a hiki iā ʻoe ke hoʻopā a hoʻoponopono i nā config FreePBX - i hoʻokomo ʻia ma o [ext-did-custom], e puka ana ma o [outbound-allroutes-maʻamau]

  • ʻAʻohe paʻa i nā helu - ʻo ka faila ke ao holoʻokoʻa a pono e hoʻonohonoho ʻia me nā ala a me kahi loulou i ke kikowaena.

No ka hoʻomaka ʻana, pono ʻoe e holo i nā palapala i ka AMI me ka hoʻohana ʻana i kāu login a me ka ʻōlelo huna - no kēia FreePBX he faila _custom.

waihona 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

Pono e waiho ʻia kēia mau faila ʻelua i /etc/asterisk, a laila heluhelu hou i nā configs (a i ʻole e hoʻomaka hou i ka asterisk)

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

I kēia manawa e neʻe kākou i ka PHP

Hoʻomaka i nā palapala a me ka hana ʻana i kahi lawelawe

No ka mea ʻaʻole maʻalahi a maʻalahi ka hoʻolālā o ka hana ʻana me Bitrix 24, ka lawelawe no AMI, pono e kūkākūkā kaʻawale. ʻO Asterisk, i ka wā e hoʻoulu ai i ka AMI, wehe wale i ke awa a ʻo ia nō. Ke hui ka mea kūʻai aku, noi ʻo ia i ka ʻae, a laila kau inoa ka mea kūʻai aku i nā hanana kūpono. Hiki mai nā hanana i loko o ka kikokikona maʻalahi, ka PAMI i hoʻololi i nā mea i kūkulu ʻia a hāʻawi i ka hiki ke hoʻonohonoho i kahi hana kānana wale nō e nā hanana, nā kahua, nā helu, a me nā mea hoihoi.

I ka hiki ʻana mai o kahi kelepona, hoʻomaka ka hanana NewExten mai ka pōʻaiapili makua [mai-pstn], a laila hahai nā hanana a pau ma ke ʻano o nā laina i loko o nā pōʻaiapili. I ka loaʻa ʻana o ka ʻike mai nā _custom variables i hōʻike ʻia ma ka dialplan, kāhea ʻia ʻo CallMeCallerIDName a me CallStart.

  1. ʻO ka hana noi UserID e pili ana i ka helu hoʻonui kahi i hele mai ai ke kelepona. Pehea inā he hui kelepona kēia? ʻO ka nīnau pili politika, pono anei iaʻu e hana i kahi kelepona no nā mea a pau i ka manawa hoʻokahi (ke kāhea ʻia nā mea a pau i ka manawa hoʻokahi) a i ʻole e hana e like me kā lākou kāhea ʻana, i ke kāhea ʻana i kēlā me kēia? Loaʻa ka hapa nui o nā mea kūʻai aku i ka hoʻolālā Fisrt Available, no laila ʻaʻohe pilikia me kēia, hoʻokahi wale nō kelepona. Akā, pono e hoʻoponopono ʻia ka pilikia

  2. ʻO kahi hana no ka hoʻopaʻa inoa ʻana i kahi kelepona ma Bitrix24, e hoʻihoʻi i CallID, a laila pono e hōʻike i nā ʻāpana kelepona a me kahi loulou i ka hoʻopaʻa ʻana. Pono ka helu hoʻonui a i ʻole UserID

Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

Ma hope o ka pau ʻana o ke kelepona, kāhea ʻia ka hana hoʻoiho hoʻopaʻa ʻana, e hōʻike ana i ke kūlana hoʻopau kelepona (Busy, ʻAʻohe pane, Success), a hoʻoiho pū i kahi loulou i ka faila mp3 me ka hoʻopaʻa ʻana (inā loaʻa).

No ka holo mau ʻana o ka module CallMeIn.php, ua hana ʻia kahi faila hoʻomaka SystemD no ia callme.service, pono e kau ʻia ma /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

ka hoʻomaka ʻana a me ka hoʻomaka ʻana o ka palapala ma o systemctl a i ʻole lawelawe

# systemctl enable callme
# systemctl start callme

E hoʻomaka hou ka lawelawe iā ia iho e like me ka mea e pono ai (inā he ulia). ʻAʻole pono ka lawelawe ʻana i ka hoʻokomo ʻana i kahi kikowaena pūnaewele, pono wale ʻoe i php (ʻo ia ka mea i loaʻa ma ka kikowaena FeePBX). Akā inā ʻaʻole hiki ke hoʻopaʻa inoa ma o ka pūnaewele pūnaewele (me https), ʻaʻole hiki ke hoʻolohe i nā kelepona kelepona.

E kamaʻilio kākou e pili ana i nā kelepona puka. ʻElua mau hana o ka palapala CallMeOut.php:

  • Ke hoʻomaka nei i kahi kelepona ke loaʻa kahi noi no kahi palapala php (me ka hoʻohana ʻana i ke pihi "Call" ma Bitrix ponoʻī). ʻAʻole hana me ka ʻole o kahi kikowaena pūnaewele, hele mai ka noi ma HTTP POST, aia ka noi i kahi hōʻailona

  • Nā memo e pili ana i ke kelepona, kona mau palena a me nā moʻolelo ma Bitrix. Hana ʻia ma ka hoʻomaka ʻana o Asterisk i ka dialplan [sub-call-internal-ended] ke pau ke kelepona.

Hoʻomaopopo i ka FreePBX a hoʻohui pū me Bitrix24 a ʻoi aku

Pono ka pūnaewele pūnaewele no nā mea ʻelua wale nō - ka hoʻoiho ʻana i nā faila me Bitrix (ma HTTPS) a me ke kāhea ʻana i ka palapala CallMeOut.php. Hiki iā ʻoe ke hoʻohana i ka kikowaena FreePBX i kūkulu ʻia, nā faila nona /var/www/html, hiki iā ʻoe ke hoʻokomo i kahi kikowaena ʻē aʻe a i ʻole ke kuhikuhi ʻana i kahi ala ʻē aʻe.

Pūnaewele pūnaewele

E haʻalele kāua i ka hoʻonohonoho ʻana i kahi kikowaena pūnaewele no ke aʻo kūʻokoʻa (nā ʻōlelo, nā ʻōlelo, nā ʻōlelo). Inā ʻaʻohe āu kikowaena, hiki iā ʻoe ke hoʻāʻo iā FreeDomain( https://www.freenom.com/ru/index.html), ka mea e hāʻawi iā ʻoe i inoa no kāu IP keʻokeʻo no ka manuahi (mai poina e hoʻouna i nā awa 80, 443 ma o ke alalai inā aia ka helu waho ma luna wale nō). Inā ʻoe i hana i kahi kikowaena DNS, a laila pono ʻoe e kali (mai 15 mau minuke a 48 mau hola) a hiki i ka hoʻouka ʻana o nā kikowaena āpau. Ma muli o ka ʻike e hana pū ana me nā mea hoʻolako uku home - mai 1 hola a XNUMX mau hola.

ʻO ka hoʻokomo ʻana

Ua hoʻomaka ka hoʻomohala ʻana i kahi installer ma github e maʻalahi ka hoʻonohonoho ʻana. Akā ua maʻalahi ma ka pepa - ʻoiai mākou e kau nei i kēia mau mea me ka lima, ʻoi aku ka maikaʻi, ma hope o ka tinkering me kēia mau mea a pau, ua ʻike maopopo ʻia ʻo wai nā hoaaloha me wai, ʻo wai ka mea e hele ai a pehea e debug. ʻAʻohe mea hoʻokomo i kēia manawa (

Docker

Inā makemake ʻoe e hoʻāʻo wikiwiki i kahi hopena, aia kahi koho me Docker - hana wikiwiki i kahi ipu, hāʻawi iā ia i nā awa waho, hoʻokomo i nā faila hoʻonohonoho a hoʻāʻo (he koho kēia me kahi pahu LetsEncrypt, inā loaʻa iā ʻoe kahi palapala hōʻoia, ʻo ʻoe wale nō. Pono e hoʻihoʻi hou i ka mea koho hope i ka pūnaewele pūnaewele FreePBX (hāʻawi mākou iā ia i kahi awa ʻē aʻe ʻo 88), LetsEncrypt ma Docker ma muli o keia 'atikala

Pono ʻoe e holo i ka faila ma ka waihona papahana i hoʻoiho ʻia (ma hope o git clone), akā e hele mua i ka asterisk configs (asterisk folder) a komo i nā ala i nā mea komo a me ka URL o kāu pūnaewele ma laila.

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:

Ke holo nei kēia faila docker-compose.yaml ma o

docker-compose up -d

Inā ʻaʻole hoʻomaka ka nginx, ʻo ia hoʻi, ua hewa kekahi mea i ka hoʻonohonoho ʻana i ka folder nginx/ssl_docker.conf.

Nā hoʻohui ʻē aʻe

A no ke aha e hoʻokomo ʻole ai i kekahi mau CRM i nā palapala i ka manawa like, manaʻo mākou. Ua aʻo mākou i kekahi mau API o nā CRM ʻē aʻe, ʻoi aku nā mea manuahi i kūkulu ʻia i loko o kekahi mau PBX - ShugarCRM a me Vtiger, a ʻae! ʻAe, ua like ke kumukānāwai. Akā he moʻolelo ʻē aʻe kēia, a mākou e hoʻouka hou aku ai iā GitHub.

kūmole

Hoʻokaʻawale: ʻo nā mea like me ka ʻoiaʻiʻo he mea fictitious a ʻaʻole wau ʻo wau,

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka