αααα»αααααΎααΆαααΆα’αααααααααααααααΆααααα
αα
αααα»ααααα»αα αα»ααααααα αα·αααααααα
ααΆαααααααα αα½ααααα
αΌα IP telephony α αα
ααααααα»αααααΌαααΆααααα½αααΆααΎααΎαα’αΆα
αααααα’αααΈαα½ααααααΏαααα αα·ααααα»αα αα»ααααααΎααααΈαα½ααααα
αΌα Bitrix24 ααΆαα½α PBXs αααα’αα·αα·ααααΆα ααααΌα
ααΆααΆαα½α PBXs αα·αααα·ααα
ααΎαααα»αα αα»α VDS αααααα αααα»αααΆααα
Google α α αΎαααΆααΆααα·αααΆααααΆααααΆααααααα±αααααα»αααΌααααααααΆαααα
ααΎααα·ααααΆαααααα·ααααΆααααΆαααΆα
ααΌα
ααααβαααααΆααβααΆαβα
αΆααβααααΎβαβ, ααααβαααβααΆβαα½αβααβααααΎβααΆαβααΆααβα’ααβα αα
ααααααααΆαα α
ααΌααααααααααΌαααΆαααα½αααΈααΆααααα
PBX (ααααΉαααα·ααΆααα SIP INVITE ααΈα’ααααααααααααΆ) ααααΎαααΆααα dialplan (αααααΆαα α
ααΌαααααα, dialplan) α
αΆααααααΎα - α
αααΆααααα’αααΈ αα·αα’αααΈαααααααΌαααααΎααΆαα½αααΆαα α
ααΌαααααα α
αΆααααΈαααα
ααααΈαα½α α’αααα’αΆα
ααα½αααΆαααααααΆαααΆα
αααΎα ααααααααΆααααα’αΆα
ααααΎαααα»αα
αααΆααα α§αααααααααα’αααααΆαααα·ααααΆαααααααα»ααααα SIP ααΊααΆα’ααααα·ααΆα sngrep (
αα αααα»αααααααααΆαααα αααααΌαααααααΆααααααααΆαα½ααααα ααααααααΆαααααΌαααα»ααααα αα½αααΆααααα»αα’αα‘α»ααααααααααΆ ααΆαα α ααΌαααααααααΌαααΆαααααα ααΆαα α»α αααΌαα»α (DTMF) ααααααααα½αα±ααα αΆααα’αΆααααααααΆα αααΎαααΌα ααΆ FollowMe, RingGroup, IVR αα·ααααααααααα
α’αααΈααααα ααΆααααα»ααααα ααα’ααααΎα
ααΆααα·α ααααααα α ααΌαααααααΆααααααΆαα αααΎαααααΎαααΆαααΆαα½αααΆαααΈαααααΌα α αΎααααααα·ααααΆααΆααααΌααα·ααα»ααα·α DID αα·α CallerID α DID - αααααααααααΎααααα»αα α CallerID - α’αααααΆαααα»αα α α
ααα»αααααααααΆααααΈααΆααα’αα ααΎαααΆααααα»αα αα»ααα½α α αΎααα·ααααααΌαααααααα½ααα - αααααΆααααααΆ PBX ααααααΆααΆααααα»αα α ααΌααααα (ααααααΆαααααααααΆαα / ααΆαααααααααΆααααα§αααααααΆα αααΎα) αα ααΎαααααΈαααα»α (Ring Group), IVR (ααααΆααα½α α’αααααΆαα α ... α α»α αα½ααααααΆαα ... ), αααΆαααΈαααααΎααααα½α (ααααΆ) αααααααααααααααΆ αααααΌααααααα ααααααααααα α¬αα αααα‘αΆαα½α (FollowMe, αααααΌααααα)α αααααΆααααααΆ ααΆααΆααΆαααααΆαααααΆααααΆαααααα»αααΆααααααααααα·αα αααΆααααΆααααΆα’αααααΆααΉαααα½αααΆαααΆαα α ααΌααααααα·αααααΆαα α αΎαα’αααααΆααΉαααααααΆααΆαα½ααα αααααΆαα α αααααα αααααΊααΆα§ααΆα αααααααΆαα αΆααααααΎαααααΆαα α ααΌαααααααααααΆαα αααα»α PBX ααααα’αα·αα·ααααααααΎαα
αααααΆααααΈααΆαα α
α
αΌααααααααααα
αΌααα
αααα»α PBX ααΆααααΎααααΎαααΆαααα dialplan αααα»α "ααα·αα" ααααααααααΆα ααα·ααααΈα
ααα»α
αααα·αααααΆααααααααΆααααΆαααΊααΆαααα»αααααΆααααααααΆαααααΆααααααα αααααΈαα½ααααΆαααααααααααααααααΆαα α
(ααΆααααΌαααΆαααα α
ααΆ exten αααααΆααααΆαα α
ααΆααααα
αα
ααααΆααααΆαααααΌα exten=DID) α ααΆααααααααΆαα
αααα»ααααααΆαα dialplan α’αΆα
ααΆα’αααΈααΆααα’αα - αα»αααΆαααΆααααα»α (α§ααΆα ααα α α
ααΌαααααααα
α’αααααΆαααΆααααα»α - Dial()
ααΆααααΌααααααα
α»α - Hangup()
), ααααα·ααααα·ααααΆααααααααα (IF, ELSE, ExecIF
αα·ααααααααα) ααΆαααααΆααααααΌααα
α
αααΆααααααααααααααα·ααααα (Goto, GotoIF
) ααΆαααααΆααααααΌααα
ααα·αααααααααααααα»αααααααααααΆαα α
αα»αααΆα (Gosub, Macro)α ααΆαααααΆαααΆα
ααααα‘αα include ΠΈΠΌΡ_ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
, αααααααααααΆααααααααΆααΈααα·αααααααααααα
α
α»ααααα
ααααααα·αααα
αα
α»ααααααα ααΆαααβαααααΆβαααβαα½αβαααα
αΌαβααΆαβαααβααΆαβαα½αβαααα
αΌαβααααΌαβααΆαβααααα·ααααα·βααΆαα·α
αα
ΠΏΠΎΡΠ»Π΅ ααΆααααααααΆααααα·αααα
αα
α»ααααααα
αααααα·ααααΆααΆααααΌααα FreePBX ααααΌαααΆααααααΎαα‘αΎααα ααΎααΆαααΆαααααα αΌαααα·ααααααααααααΆαα αααα»αααααΆαα αα·ααα ααααΆααααααΆααα½ααααα αΌα αα·αααΆαα α ααΆαααα Gosub, Macro αα·α Handler handlers α αα·α αΆαααΆααα·ααααααΆαα α α αΌα FreePBX
ααΆαα α α αΌαααααααΆααααα·ααααΆααα’ααααΈααααΌααα ααΆαααΆααα αααα»αααα·ααααΈαα½ααα’αΆα ααΆαααΆαα α αα ααΆααααα·ααααααααααααΌα ααΆ αααΆααααΌ (αααΆααααΌ) αα»αααΆα (Gosub) α¬ααααΆααααααΆααΆαααααΆααααααΌα (α αααααΌ) ααΌα ααααααΎαααΎαα·αααα’αααΈαααα α ααΆα’αΆα ααααΆαααα ααααΌαααΆαααΆαααΆααα αααα»ααααααα ααα»α
ααααΆααααΆαααα‘αΎαααααααΆαααααΆαα PBX ααααααΆααααΌαααΆααααα αΆαααΆααααααα αα αααα α αα DID ααααΌαααΆαααααααααααα»αααααΌαα αΌα ααααααααααααααα’αΆααααααααΌαααΆααα·αα·ααααααααΆααααΆ ααααα·αααΎα’αααΈαααααααααΆααααα·ααααα»αααααΆαα αααΊαα»αααα‘ααααααΌαααΆαααΎαααααΎαααΆαα ααΈααΆ αααα α»α αααΌαα»α 1 α¬α’ααααα α αααα ααΆαααααα»αααααααα·ααααα·ααα α ααΌαααααα αααααΆααααΈαααα ααααΆαα α ααΌααααα αααΆααααΌ hangupcall ααααΌαααΆαα α αααααΆααααΈαααααααΆαα’αααΈα’αΆα ααααΎααΆααα αααα»α dialplan αα ααΎααααααα§ααααααααααααΆααα·ααα (α§ααααααααααααΆαααΆααααα½α)α
ααΎααΎααα½ααααααααααααΆαα’αααΈααΆαα αΆααααααΎαααααΆαα α ααΌααααααα CRM αα α―ααΆ αααααααααααααΌαα αΆααααααΎααα αααααααααααααΌααααα ααααΆααα α αΎαααααΎααΆααΆαα½αααΉαααααααΆαα’αααΈααΆαα α αα ααΆαα CRM?
ααΆααα½ααααα αΌαααΆαα½αααααααααααΆααααα
ααΎααΆααα½ααααα αΌα PBX αα·α CRM ααΊααΆα’αααΈ? ααΆαααααααΊααΆααΆαααααα αα·ααααααα·ααΈαααααααααααα·αααααα αα·αααααΉαααα·ααΆααααααΆααααα·ααΆααΆααααΈααααα αΎααααααΌααα½αααΆαα ααααΆαα αα·ααα ααα αααααααΆαααΆαααααααα»ααααααΆααααααααααα―αααΆααααααα»αααΆαααααΆαααααααΆααααααΊααΆαααα APIs α αΎααααααααΆαααααααα·αααααα»ααααα»αααΆαα αΌαααααΎ APIs ααΊ HTTP RESTα ααα»αααααα·αααααααααΆαααααααΆααααΆαααα
αααααΆααααΆααα ααΆααααα»αααΊα
-
AGI - ααΆαα α ααΆαααααΆααααααααααααα·ααΈ/αααΆαααΆαα»ααΆααααα αααααααΎααΆα αααααα αααα»α dialplan ααΆααααααΆαααααΌα ααΆ
phpagi ,αααΆααΈ -
AMI - αααα TCP α’ααααααααααααΎαααΆαααΎαααααΆαααααααΆαααΆαααααΉαααα·ααΆααααα·ααααα αΌαααΆααααααααΆα’αααααααααααααΉα SMTP ααΈααΆααααα»αα’αΆα ααΆαααΆαααααΉαααα·ααΆααααα·ααααααααααααΆαα α ααΌααααααααΆααααααΆαααα
αααΆααΈ - ααααα·αααααα»ααααααΆαααααααΎαααΆααααααΆααααΆαα½ααααααΆααααΆα
α§ααΆα ααααααααααα AMI
ααααΉαααα·ααΆαααα ααΆαααααααΈα
α―ααα·αααα·α α α
ααΌααααααααΆααα’ααα
ααΆαααα PJSIP/VMS_pjsip-0000078b
ααααΆαααΆαααΆαααα α€
ChannelStateDescα αααα
CallerIDNum: 111222
CallerIDName: 111222
αααβααααβαααβααΆαβαααααΆααα
ααααααααααΆαααααααααΆααα
ααΆααΆα α
αααααΌαααααΈα
ααα·ααα ααΈ-pstn
αααααΈαα α
α’αΆαα·ααΆαα α‘
Uniqueid: 1599589046.5244
Linkedid: 1599589046.5244
-
ARI ααΊααΆααααΆαααααΆααααΈα ααΆααα’ααααΆαααα REST, WebSocket αααα»ααααααα JSON - ααα»ααααααΆαα½αααΉααααααΆααα αα·ααααααΆααα»ααααααα αα·αααΌαααα’αα ααΆαααααΎα (
phparia ,phpari ) αααααΆαααααΆαααΆααΆαα’αα·αααααααααα½ααααααα αα 3 ααααΆααα»αα
α§ααΆα ααααααααααα ARI αα αααααΆαα α ααΌαααααααααΌαααΆααααα½α ααααΎα
{ "variable":"CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id Β»:Β»1599644315.5334", "ααααα":"PJSIP/VMSpjsip-000007b6β³, "state":"Ring", "caller":{ "name":"111222", "number":"111222β³ }, "connected":{ "name":"", "number" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "appname":"Stasis", "αααααα·ααΈdata":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "language":"en" }, "αααααΆααααΆαid":"48:5b:aa:aa:aa:aa", "application":"hello-world" }
ααΆαααΆααααα½α α¬ααΆααα’αΆαααα’α½α ααααααΆα α¬ααΆααα·αα’αΆα αα αα½α ααααΆαααααΎααΆαααΆαα½α API ααΆααααΆαααα½αααααΌαααΆαααααααααααΆααα·α αα αααααααΌααααααααΆαα ααΆααα·α αα αααααΆααααΆααα½ααααα αΌαααΆαα½α CRM ααΆαααΌα ααΆαααααα:
-
ααΆαααΆαααΆαα αΆααααααΎαααααΆαα α ααΌααααα αααααααααααΆααααΌαααΆαααααα ααΆα CallerID, DID, ααΆαα αΆααααααΎα αα·ααααααααΆαααα αα αααα ααααΆαα·ααααααααΈαα (ααΎααααΈαααααααααΆααααααΆαααααΆαααΌαααααα αα·αα’αααααααΎααααΆαα CRM)
-
α αΆααααααΎα αα·ααααα ααααΆαααααΆαα α ααΌααααα αααααΆαα»αααΆααΆαααααααααα ααααΆα ααΌαααααΉααα α α»ααααα ααααααΆααααααα―αααΆααααα·ααα
-
α αΆααααααΎαααΆαα α ααΌααααααα ααΎααααΉαααα·ααΆαααααΆααααα (ααΈαααααα·ααΈ) α α αα αααααΆααααα»α αααααΆααααα α αΎαααααΆαααα½αααΆ
-
ααααα α α·αααα αα½ααααα αΌαααΆαα½α CRM αααα»αα’αααα α ααΌααααα αα·α FollowME αααααΆααααΆααααααααΆαα α ααΌααααααααααααααααααααα·αααα»αααααΈαααααααΆααααααα (ααααα ααΆα CRM)
αα·α
αα
ααΆαααΆααα’αααααα’αΆα
ααααΌαααΆααααααααΆαααΆαααα AMI α¬ ARI ααα»αααα ARI αααααααααααΆααα·α
ααΆααα»α αα·αααΆαααααΉαααα·ααΆαααα
αααΎααα α’αααααΆα
αααΎαααα AMI αα
ααααΆα (α§ααΆα ααα ααΆαα α
αααΆααααΌ ααΆααααααα’ααααα
ααΆααααα»ααααΆααααΌ αα½αααΆααααΆαααααΆαα α
) αα·αααααΌαααΆαααΆαααΆαααα ααΌα
αααααααααΆααααΆαααΆαααΆαααααΉαααααΌα αα·αααααΉαααααΌα α
αΌαααΎαααααΎαααΎα AMI αααααΆαααααααα (ααα»αααααα·αααΆαααααα»ααα)α ααΎαααΈαααααα (ααα’ααΎααΆααΉααα
ααΆαααααααΆααααααΎαααΆααα»ααααααα·α) - αα
αααα»αααΆαααΆαααΎα (
ααΆααααααΎααααΆα ααααααα‘αΎααα·α
ααΎααααΈα±αα FreePBX ααααααΎαα’αΆα ααΆαααΆααααα AMI ααΆαααααααΆααααα’αααΈααΆαα αΆααααααΎαααΆαα α ααΌααααα αααααααΆαααα αα ααα αααααα―αααΆααααααΆααααααααΆ ααΆααΆααααα½ααααα»ααααα»αααΆαααααΆααααααααααΆαα α ααΌααααααααααααΎαααα·α ααΌα ααααΆααΉαα’ααααα·ααααααΎαα - αααα αΌαα’αααααααα’ααα α αΎαααααααααααααααΆααααααααΆααααααα½αααα PAMI ααααΎα±ααααααΎααΆαααααΆααααααΆαααααα»αααΆααααααα
αααααΊααΆα§ααΆα αααααααΆααααααα’αααααααΆαααααα½αααααα’ααααααααΆαααααααααΆα αΆααααααΎαααααΆαα α ααΌαααααα (s ααΊααΆααααα·ααααα αααα»α dialplan αααααααΌαααΆαα’αα»αααααα»ααααα αΆααααααΎαααΆαααααααα DID)
[ext-did-custom]
exten => s,1,Set(CallStart=${STRFTIME(epoch,,%s)})
α§ααΆα αααααααΉαααα·ααΆααα AMI αααααΆαααααααΆαααααα
ααααΉαααα·ααΆαααα ααΆαααααααΈα
α―ααα·αααα·α α α ααΌααααααααΆααα’ααα
ααΆαααα PJSIP/VMS_pjsip-0000078b
ααααΆαααΆαααΆαααα α€
ChannelStateDescα αααα
CallerIDNum: 111222
CallerIDName: 111222
αααβααααβαααβααΆαβαααααΆααα
ααααααααααΆαααααααααΆααα
ααΆααΆα α
αααααΌαααααΈα
ααα·ααα ααΈ-pstn
αααααΈαα α
α’αΆαα·ααΆαα α‘
Uniqueid: 1599589046.5244
Linkedid: 1599589046.5244
αααααα·ααΈα ααααα AppDataα
CallStart=1599571046
αααααΆααα FreePBX αααααααΆααααΎα―αααΆα extention.conf αα·α extention_αααααα.conf ααΎαααΉαααααΎα―αααΆα ααααααααααα_ααααΆαααααα½α.conf
ααΌααααααααα 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
ααααααβαα·αααβαα·αβααΆαβαα»αβααααΆβααΈβααΆαβα α βααΌααααααβααΎαβααααβα’αααβαα·ααααβααβα’αααααβααΎα -
-
Dialplan ααΆαααααα .conf ααΌα ααα FreePBX α ααααΆα (ααΆα ααΆα’αΆα .ael ααα»αααααα·αααααααααααααααΆααα’αα α αΎαααΆαα·ααααααααΆααααα½ααα)
-
αααα½αα±ααααααΎαααΆαα α»ααααα ααααΆαααα exten=>h ααααΎαααΆαααααΌαααΆαααααΆαααΆαααα hangup_handler ααΈααααα FreePBX dialplan ααααΎαααΆαααααΆαα½αααΆααα»αααααα
-
ααααα’ααααα α ααααααΈαααα αααααααααααα αα·ααααα α ααΆααααα ExtNum
-
ααααΎαααΆαααααΌαααΆαααααΆααααΈαα ααα·αα _custom α αΎαα’αα»ααααΆαα±ααα’ααααα·αααα α¬ααααααα½αααΆαααααα FreePBX - α αΌαααΆαααα [ext-did-ααααΆαααααα½α], α ααααΆαααα [outbound-allroutes-ααααΆαααααα½α]
-
ααααΆαααΆαα αααααΆααααΆαα½αααααα - α―αααΆαααΆαααααααααΆααα α αΎαααααΆααααααααΌαααΆαααααααα ααΆαααααααααααααΆααααααΌα αα·ααααααααΆαααα αααΆαααΈαααααα»αααααα
ααΎααααΈα αΆααααααΎα α’αααααααααΌαααααΎαααΆαααααααΈααα αααα»α AMI αααααΆαα αΌα αα·αααΆααααααααΆααααααα - αααααΆααααΏαααα FreePBX ααααΆαα―αααΆα _custom αααααα
α―αααΆα 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
α―αααΆαααΆααααΈααααααααΌαααααΆαααααα»α /etc/asterisk αααααΆααααα’αΆαααΆααααααα‘αΎααα·α (α¬α αΆααααααΎααααααΆααααΆαα‘αΎααα·α)
# astrisk -rv
Connected to Asterisk 16.6.2 currently running on freepbx (pid = 31629)
#freepbx*CLI> dialplan reload
Dialplan reloaded.
#freepbx*CLI> exit
α₯α‘αΌααααααΌααααααα PHP
ααΆαα αΆααααααΎαααααααΈα αα·ααααααΎαααααΆαααα
αααααΆααααααααΆααααααααΆααααααΎααΆαααΆαα½α Bitrix 24 αααααΆααααΆαααααααααΆαα AMI αα·αααΆαααααααααΆαααα αα·ααααααΆααΆαααΆαααααα»αααααα ααΆααααΌααααα·ααΆααααΆαααα‘ααααΈααααΆα αααααΆααααΆα αα αααααα AMI ααααΌαααΆαααααΎα±ααααααα ααααΆααααααΎαα ααα α αΎααααααΆααΆα αα αααα’αα·αα·ααα αΌααα½α ααΆααααΎαα»αααΆαα’αα»ααααΆα αααααΆααααα’αα·αα·ααα α»ααααααα αΌααα½αααααΉαααα·ααΆαααα αΆαααΆα αα ααααΉαααα·ααΆαααααααΆα’αααααααααααΆ ααα PAMI ααααααααα ααΆααααα»αααααΆααα ααΆαααααααα αα·ααααααααΌααααααααΆααααα»αααΆαααααααα»αααΆααααααααααΆααααααααΉαααα·ααΆααααααα αΆααα’αΆαααααα ααΆα αααααα
αααΆαααΆααΆαα α α αΌα ααααΉαααα·ααΆααα NewExten ααααΌαααΆαααααααα αααααα αΆααααααΎαααΈααα·αααα [from-pstn] αααααΆααααααααΉαααα·ααΆαααααΆααα’ααααααΎαααΆαααΆαααααΆαααααααααΆαααααα»αααα·ααα αα ααααααααααααΆαααααΌαααΆαααα½αααΈα’ααα CallMeCallerIDName αα·α CallStart αααααΆααααααΆαααα αααα»α _custom dialplan ααα
-
αα»αααΆαααααΆαααααΎαα»α UserID αααααααΌαααΉαααααααααααααααΆαα α ααα α α»αβααΎβααΆβααΆβαααα»αβα α βααΌααααα? αααα½αααΊαααααΆα ααΎα’αααααααΌααααααΎαααΆαα α αα ααΆααα’ααααααααααααΆαα ααααααα½α (αα ααααααααα»ααααααααααααΆα α αα ααααααα½α) α¬αααααΎαααΌα ααααα½αααα α αα αααα α ααΆααα? α’αα·αα·ααααΆαα αααΎαααΆααα»αααααΆααααα Fisrt Available ααΌα ααααααΆαα·αααΆααααα αΆα’αααΈααααΆαα½αααΆαα α ααΌαααααααααα½αααα»αααααα ααα»αααααααα αΆα αΆαααΆα αααααΌααααααααΆαα
-
αα»αααΆαα α»ααααααααΆαα α ααΌααααααα αααα»α Bitrix24 ααααααα‘αα CallID ααααααααΆααααααααΌαααΆαααΆαααΆαααΎααααΈααΆαααΆαααα’αααΈαααΆαααΆααααααα α ααΌααααα αα·αααααα ααΆαααααα‘ααα ααΆαααΆαααΆααααααααααα α¬ UserID
αααααΆααααΈαααα ααααΆαα α ααΌααααα αα»αααΆαααΆααααααααααααΆααααΌαααΆαα α ααααααα»ααααααααΆαααααΆααΆαααΆαααααΈααααΆαααΆαααααΆααααα ααααΆαα α (αααα ααααΆαα ααααΎα αααααα) α αΎαααααΆααααααααααΆαααα α―αααΆα mp3 ααΆαα½αααΉααααααααααΆ (ααααα·αααΎααΆα)α
αααααΆααααααΌαα»α CallMeIn.php ααααΌαααΆαααααΎαααΆαααΆαααααααααΆαα α―αααΆαα αΆααααααΎα SystemD ααααΌαααΆααααααΎαα‘αΎααααααΆααααΆα callme.serviceαααααααΌαααααΆαααααα»α /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
ααΆαα αΆααααααΎα αα·αααΆαα αΆααααααΎαααααααααΈαααΎαα‘αΎαααΆαααα systemctl α¬ααααΆαααα
# systemctl enable callme
# systemctl start callme
ααααΆααααααΉαα αΆααααααΎαα‘αΎααα·αααααααα½αα―αααΆααααααΌαααΆα (αααα»αααααΈααΆαααΆαααΆαα)α ααααΆααααααΆαααΆααααα’αααααα»ααααα·ααααααΌαα±ααααα‘αΎααααΆαααΈαααααα ααααααα ααΆααα php ααα»ααααααααααααΌαααΆα (ααααα·αααΆαα ααΎαααΆαααΈααα FeePBX) α ααα»αααααα αααα»αααΆαα’ααααααΆαααααΆαα αΌαααααΎαααααααααΆααΆαα α ααΆαααααααΆαααΈααααααααΆα (ααααΆαα½α https) ααΆααΉααα·αα’αΆα ααααΆαααααααααααΆααΆαα α ααΆαααα
α₯α‘αΌααααααΌααα·ααΆαα’αααΈααΆαα α α ααα ααααααΈα CallMeOut.php ααΆααα»αααΆαααΈαα
-
ααΆαα αΆααααααΎαααααΆαα α αα αααααααΎααααΌαααΆαααα½ααααααΆααααααααΈα php (αα½αααΆααααΆαααααΎαααΌαα»α "α α " αα αααα»α Bitrix αααα½αααΆααααΆαα) α ααΆαα·αααααΎαααΆααααααααΆααααΆαααΈαααααα ααααα ααααΎααααΌαααΆαααα½αααΆαααα HTTP POST ααααΎααΆααααααΆαααααΆαα
-
ααΆαα’αααΈααΆαα α ααΌααααα αααΆαααΆαααααα αα·ααααααααααΆααααααΆαα αααα»α Bitrix α ααααααααα Asterisk αα αααα»ααααααα·ααΈα α ααΌααααα [sub-call-internal-ended] αα αααααΆαα α ααΌααααααααα αα
αααΆαααΈααααααααΆαααΊααααΌαααΆααααααΆααααααΏαααΈαααα»ααααα - ααΆαααΆαααα―αααΆααααααααααΆ Bitrix (ααΆαααα HTTPS) αα·αααΆαα α ααααααΈα CallMeOut.php α α’αααα’αΆα ααααΎαααΆαααΈααα FreePBX αααααααΆααααααΆαα½αα―αααΆααααααΆα /var/www/html α’αααα’αΆα ααα‘αΎααααΆαααΈααααααααααα α¬αααααΆααααααΌααααααα
αααΆαααΈαααααα ααααα
α
αΌαααΎαα
αΆαα
ααααΈααΆαααα‘αΎααααΆαααΈαααααα ααααααααααΆααααΆααα·ααααΆα―αααΆααα (
ααΆαααα‘αΎαααααααααααααα·αααα
αααααα·ααΈααα‘αΎαααααΌαααΆααααααΎαα‘αΎααα ααΎ github ααΎααααΈααααΎα±ααααΆαααα‘αΎαααΆααααααΆααααα½αα ααα»ααααααΆααΆαααΆααααΌααα ααΎαααααΆα - αααααααααααΎααααα»αααα‘αΎαααΆααΆααα’ααααααα α αΆααααΆααααΈαααααΆααααΈααααΎαααΆαααΆαα½αα’αααΈαααΆααα’ααααα ααΆααΆααααα αααΆααααΆ ααΎαα·αααααααα·ααΆαα½αα’αααααΆ α’αααααΆαα ααΆ αα·αααααααααΆααααα α»αααΆα αα·αααΆααααΆααααααα·ααΈααα‘αΎααα α‘αΎααα
Dockers
ααααα·αααΎα’αααα
ααααΆααααααααααααααΆααααΆαααΆαααα αα - ααΆααααααΎαααΆαα½α Docker - αααααΎααα»αααΊααααααΆαααΆαααα αα αααααα±ααααΆααΌαα
ααααα
ααΆααααα
αα»αα―αααΆαααΆαααααα α αΎαααααΆααΆα (αααααΊααΆαααααΎαααΆαα½ααα»αααΊααα LetsEncrypt ααααα·αααΎα’αααααΆααα·ααααΆαααααααα½α
α αΎαα α’αααααααΆααααααααΌαααΆαααααΌααα·αααααΌααααΈαααα
αααΆααα
αααΆαααΈαααααα ααααα FreePBX (ααΎαααΆααααααα±ααααΆααΌαα
ααααα½ααααααΊ 88) LetsEncrypt αα
αααα»α docker αααααα’ααααΎ
α’αααααααΌαααααΎαααΆαα―αααΆααα αααα»ααααααααααααααΆαααΆααα (αααααΆααααΈααααΌα git) ααα»ααααααααΌαα αΌααα αααα»αααΆαααααααα ααΆαααααααααααααΆααααΆα (αααααααΆααααΆα) α αΎααααααααααΌααα ααΆαααααααααααΆ αα·α URL ααααα αααααααααα’ααααα ααΈαααα
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 αααααααΌαααΆαααααΎαααΆαααΆαααα
docker-compose up -d
ααααα·αααΎ nginx αα·αα αΆααααααΎα αααααΆαα’αααΈαα½ααα»αααΆαα½αααΉαααΆαααααααα αααα»ααα nginx/ssl_docker.conf
ααΆααα½ααααα αΌαααααααααα
α αΎαα ααα»α’αααΈααΆαααΆααΎααα·αααΆαα CRM αααααα αααα»αααααααΈααααα»αααααααα½αα ααΎαααΆααα·ααααΆ CRM APIs ααΆα αααΎααααααααα ααΆαα·ααα PBX αααααααΆααααααΆαα½ααααα₯ααα·ααααα - ShugarCRM αα·α Vtiger α αΎαααΆα! ααΆα αααααΆαααααΊααΌα ααααΆα ααα»ααααβαααβααΆβααΏαβαα½αβαααααβααα αααβαααβαααααβααΎαβααΉαβαααα ααβαα github αααβα‘ααβααΈβααααΆα
ααα ααααΈααα
-
ααΌααααα½αα―αααΊαα ααΎ github -
https://github.com/CrezZ/bitrix24-freepbx-php -
αααααα’ααααααααααΆααααααΆααααΌα
https://habr.com/ru/post/349316/
ααΆαααα·αααα ααΆαααααααααααΆααΆαα½ααα ααΉαααΆααα·αααΊααααα·α α αΎαααΆαα·ααααααΆαααα»αααα
ααααα: www.habr.com