แแ แแแฃแจแแแ แแฃแแกแแ แกแแ แแ แแแแแแแแแจแ, แ แแแแแแช แงแแแแก แแ แแแแแคแแแฃแ แแ แแแก, แแแ แแแแแแแก IP แขแแแแคแแแก. แ แแแแกแแช แแแแแฎแแก, แจแแแแแซแแ แแฃ แแ แ แ แแแแ แจแแแแแแแแแ แแ แแ แแ แแแแแแแแแก Bitrix24-แแก แแแขแแแ แแ แแแแกแแแแก PBX-แแแแแ, แ แแแแแแแช แแแแฎแแแ แแแแแแก แแฅแแ, แแกแแแ แแแ แขแฃแแแฃแ PBX-แแแแแ แกแฎแแแแแกแฎแแ VDS แแแแแแแแแแแ, แแแแแแ Google-แจแ. แแ แ แ แแฅแแ แฃแแแ แแแ แแแแชแ แแแฃแแ
แฉแแแ แแกแฌแแแแแแ แแฃแจแแแแแก แแแแแแแก
แแกแ แ แแ, แแแแฌแงแแแแแแแแก, แ แแแแ แฃแแแ แแฃแจแแแแแแก แแก แงแแแแแคแแ แ. แ แแแแกแแช แแแ แ แแแแฆแแแ แแแ แแแแ PBX-แแ (SIP INVITE แฆแแแแกแซแแแแ แแ แแแแแแแ แแกแแแ), แแฌแงแแแ แแแ แแคแแ แแแแแแก แแแแฃแจแแแแแ (แแแ แแคแแ แแแแแ, แแแ แแคแแ แแแแแ) - แฌแแกแแแ แแฃ แ แ แแ แ แ แแแแแแแแแแ แแแแ แฃแแแ แแแแแแแแ แแแ แ. แแแ แแแแ แแแแแขแแแแ แจแแแแซแแแแ แแแแฆแแ แแแแ แ แแแคแแ แแแชแแ, แ แแแแแแช แจแแแแแ แจแแแแซแแแแ แแแแแแงแแแแ แฌแแกแแแจแ. แจแแกแแแแจแแแแ แแแกแขแ แฃแแแแขแ SIP-แแก แจแแแ แจแแกแแกแฌแแแแแ แแ แแก แแแแแแแแขแแ แ sngrep (
แแแแแ แขแแแแแฃแแ แคแแ แแแ, dialplan แแฎแแแ แแฎแแแแ แแแ แแแ แแแแแขแก, แแแแฏแแ แกแแฃแแ แแก แแ แแกแแช แฎแแแแ แแแ แแแแก แแแแแชแแแ, แฆแแแแแแแแก แแแญแแ แ (DTMF), แกแฎแแแแแกแฎแแ แกแแแแขแแ แแกแ แ แแ, แ แแแแ แแชแแ FollowMe, RingGroup, IVR แแ แกแฎแแ.
แ แ แแ แแก Invite Pack-แแก แจแแแแแ
แกแแแแแแแแแแจแ, แฃแแ แแแ แแแ แแคแแ แแแแแแแแก แฃแแแขแแกแแแ แแฃแจแแแแก แแแ แแแ แแ แแแแแแ แแ แแแแแ แแแแแแ แขแ แแแแแแก DID-แกแ แแ CallerID-แแก แแแ แจแแแ. DID - แกแแแแช แฉแแแ แแฃแ แแแแแ, CallerID - แแแแช แ แแแแแก.
แแแแ แแ แแแแแก แแ แแแแแก, แฉแแแ แแแแฅแแก แแแแแแแแ แแ แแ แ แแ แแ แขแแแแคแแแ - แ แแช แแแจแแแแก, แ แแ PBX-แก แแแแ แแแแแแแแแ แแฅแแก แแแ แแก แฏแแฃแคแแแ (แ แแแแแแแแ แแแฌแงแแแแแแแแก แแ แแแ แแฃแแ / แแแแแแแแแแ แฃแแ แแแ แ) แฅแแแแฅแแก แแแแ แแแแ (Ring Group), IVR (แแแแแ แฏแแแ, แแฅแแแ แแแ แแแแ ... แแแแญแแ แแ แแ แแ ...), แแแขแแแแแแกแฃแฎแแแแ (แคแ แแแแแ), แแ แแแก แแแ แแแแแ, แแแแแแแกแแแแ แแแแ แกแฎแแ แแแแ แแแแ แแ แฃแฏแ แแแจแ (FollowMe, Forward). แแก แแแจแแแแก, แ แแ แซแแแแแ แ แแฃแแแ แชแแแกแแฎแแ แแแแกแแแฆแแ แ, แแฃ แแแ แแแแฆแแแก แ แแแแฃแ แแ แแแ แก แแ แแแกแแแ แแฅแแแแ แกแแฃแแแ แ แแแ แแก แแแกแแแแกแแก. แแฅ แแแชแแแฃแแแ แฉแแแแ แแแแแแขแแแแก PBX-แจแ แขแแแแฃแ แ แแแ แแก แแแฌแงแแแแก แแแแแแแแ
แแแก แจแแแแแ, แ แแช แแแ แ แฌแแ แแแขแแแแ แจแแแแก PBX-แจแ, แแก แแแซแ แแแแก แชแแคแ แฃแแ แแแแแแก แแแจแแแแแแ แกแฎแแแแแกแฎแแ โแแแแขแแฅแกแขแจแโ. แแแแขแแฅแกแขแ Asterisk-แแก แแแแแกแแแ แแกแแ แแ แแก แแ แซแแแแแแแแก แแแแแแ แแแ แแแแ แแแ, แ แแแแแแแแแ แแแแแแฃแแ แจแแแชแแแก แคแแแขแ แก แแแ แแคแแแ แแแแ แแก แแแฎแแแแแ (แแแก แฃแฌแแแแแแ exten, แกแแฌแงแแก แแขแแแแ แแแ แ แแแ แแกแแแแก exten=DID). Dialplan แฎแแแแก แแ แซแแแแแแแ แจแแแซแแแแ แแงแแก แแแแแกแแแแ แ - แจแแแ แคแฃแแฅแชแแแแ (แแแแแแแแแ, แแแ แแแแ แจแแแ แแแแแแแขแก - Dial()
แแแแ แขแแแแคแแแ - Hangup()
แแแ แแแแแ แแแแ แแขแแ แแแ (IF, ELSE, ExecIF
แแ แแกแแแแกแ), แแ แแแแขแแฅแกแขแแก แกแฎแแ แฌแแกแแแแ แแแแแกแแแ (Goto, GotoIF
), แกแฎแแ แแแแขแแฅแกแขแแแแ แแแแแกแแแ แคแฃแแฅแชแแแก แแแแแซแแฎแแแแก แกแแฎแแ (Gosub, Macro). แชแแแแ แแแ แแฅแขแแแ include ะธะผั_ะบะพะฝัะตะบััะฐ
, แ แแแแแแช แแแแขแแแก แแ แซแแแแแแแก แกแฎแแ แแแแขแแฅแกแขแแแแ แแแแแแแแ แ แแแแขแแฅแกแขแแก แแแแแก. แแ แซแแแแแแแ, แ แแแแแแแช แจแแแแก แฉแแแแแแ, แงแแแแแแแแก แกแ แฃแแแแแ แจแแแแแ แแแแแแแแ แ แแแแขแแฅแกแขแแก แแ แซแแแแแแแ.
FreePBX-แแก แแแแแ แแแแแแ แแแแแฃแแแ แกแฎแแแแแกแฎแแ แแแแขแแฅแกแขแแแแก แแ แแแแแแแจแ แฉแแ แแแแแ Gosub, Macro แแ Handler แแแแ แแขแแ แแแแก แแแจแแแแแแ แฉแแแแแแ. แแแแแฎแแแแ แจแแแแแแแแแ FreePBX แแแ แแแแก แแแแขแแฅแกแขแ
แแแ แ แแแแแก แแฎแ แแ แแแแแก แงแแแแ แแแแขแแฅแกแขแก แแแแแแแ แฅแแแแแแแ, แแแแแแฃแ แแแแขแแฅแกแขแจแ แจแแแซแแแแ แแงแแก แแแ แแแ แกแฎแแ แแแแขแแฅแกแขแแแแ, แ แแแแ แแชแแ แแแแ แ (แแแแ แ), แคแฃแแฅแชแแแแ (Gosub) แแ แฃแแ แแแแ แแแแแกแแแแแ (Goto), แแกแ แ แแ, แแแแแแแแ แฎแ, แ แแกแแช แแฌแแแแแ, แจแแแซแแแแ แแฎแแแแ แแแแแงแฃแ แ แแแแแแแ แแฃแ แแแแแแจแ.
แขแแแแฃแ แ แแแงแแแแแแก แแแแแ แแแ แขแแแแฃแ แ PBX-แแกแแแแก แแแฉแแแแแแแ แฅแแแแแ. แแแ แแแแแกแแก, DID แแซแแแแแแ แจแแแแแแแแ แแแ แจแ แฃแขแแแจแ, แแแฌแแแแแ แแ แแแแแแ แแแ แแแแแ, แแฃ แงแแแแแคแแ แ แ แแแแแ, แแฎแกแแแแ แฎแแแแแแ แแแแแฃ. แแแกแแแ, แฆแแแแ 1-แแก แแแญแแ แแ แแ แแ แแแก แแแแฌแฃแ แแแ, แแแแแ แแแ แแคแแก แแแแ แแขแแ แแแแก แฏแแฃแคแจแ. แแแ แแก แแแกแ แฃแแแแแก แจแแแแแ แแแแแแซแแฎแแแ hangupcall แแแแ แ, แ แแก แจแแแแแแแช dialplan-แจแ แแ แแคแแ แ แจแแแซแแแแ แแแแแแแแก, แแแ แแ แกแแแชแแแแฃแ แ แแแแแฃแจแแแแแแแแแกแ (hangup handler).
แแ แแแ แแก แแแแแ แแแแจแ แกแแ แฃแแแ แแแแแฌแแแแ แแแคแแ แแแชแแ CRM-แแ แแแ แแก แแแฌแงแแแแก แจแแกแแฎแแ, แกแแ แแแแแฌแงแแ แฉแแฌแแ แ, แกแแ แแแแแกแ แฃแแแ แฉแแฌแแ แ แแ แแแแแแแแแแแ แแแ แแก แจแแกแแฎแแ แแแคแแ แแแชแแแก CRM-แจแ?
แแแขแแแ แแชแแ แแแ แ แกแแกแขแแแแแแแ
แ แ แแ แแก PBX แแ CRM แแแขแแแ แแชแแ? แแก แแ แแก แแแ แแแแขแ แแแ แแ แแ แแแ แแแแแ, แ แแแแแแแช แแแแแแ แขแแ แแแแ แแแแแชแแแแแกแ แแ แแแแแแแแแก แแ แแ แแแแขแคแแ แแแก แจแแ แแก แแ แฃแแแแแแแแ แแแ แแ แแแแแแแก. แแแแแฃแแแแแแแแ แกแแกแขแแแแแแกแแแแก แแแแฃแแแแแชแแแก แงแแแแแแ แแแแ แชแแแแแฃแแ แแแ แแ แแก API-แแแ, แฎแแแ API-แแแแ แฌแแแแแแก แงแแแแแแ แแแแฃแแแ แฃแแ แแแแ HTTP REST. แแแแ แแ แแ แ แแแ แกแแแแแแแกแแแแก.
แแกแขแแ แแแแก แจแแแแแ แแ แแก:
-
AGI - แแแ แ แแ แแแ แแแแแแก/แแแแแแแแแขแแแแก แกแแแฅแ แแแฃแแ แแแแแซแแฎแแแ, แ แแแแแแช แซแแ แแแแแแ แแแแแแงแแแแแ แแแ แแคแแ แแแแแแจแ, แแ แแก แแแแแแแแแแแแ, แ แแแแ แแชแแ
phpagi ,PAGI -
AMI - แขแแฅแกแขแฃแ แ TCP แกแแแแขแ, แ แแแแแแช แแฃแจแแแแก แแแแแแแแแแ แแแแแฌแแ แแกแ แแ แขแแฅแกแขแฃแ แ แแ แซแแแแแแแแก แจแแงแแแแแก แแ แแแชแแแแ, แจแแแแแแแ แฌแแแแแแก SMTP-แก, แจแแฃแซแแแ แแแแแแแแแแก แแแแแงแฃแ แแก แแแแแแแ แแ แแแ แแแแก แแแ แแแ, แแ แแก แแแแแแแแแแ.
PAMI - แงแแแแแแ แแแแฃแแแ แฃแแ Asterisk-แแแ แแแแจแแ แแก แจแแกแแฅแแแแแแ
AMI แแแแแแแแแแ แแแแแแแแ
แฆแแแแกแซแแแแ: แแฎแแแ แแ แฎแ
แแ แแแแแแแแ: แแแ แแแแ, แงแแแแ
แแ แฎแ: PJSIP/VMS_pjsip-0000078b
แแ แฎแแก แแแแแแแ แแแแ: 4
ChannelStateDesc: แแแญแแแ
CallerIDNum: 111222
CallerIDName: 111222
ConnectedLineNum:
แแแแแแจแแ แแแฃแแ แฎแแแแก แกแแฎแแแ:
แแแ: en
แแแแแ แแจแแก แแแแ:
แแแแขแแฅแกแขแ: from-pstn
แแแคแแ แแแแแ: แก
แแ แแแ แแขแแขแ: 1
แฃแแแแแแฃแ แ: 1599589046.5244
Linkedid: 1599589046.5244
-
ARI แแ แแก แแ แแแแก แแแแแแ, แงแแแแแคแแ แ REST-แแก, WebSocket-แแก แกแแจแฃแแแแแแ, JSON แคแแ แแแขแจแ - แแแแ แแ แแฎแแแ แแแแแแแแแแแแแแ แแ แจแแคแฃแแแแ, แแ แช แแฃ แแกแ แแแ แแ, แฃแแ แแแแแแแ แแแแแแแ (
แคแคแแ แแ ,phpari ) แ แแแแแแช แแแ แแแแแแแแ แแแแจแ แจแแแแแ แแแแฎแแแแแแ 3 แฌแแแก แฌแแ.
ARI แแแแแแแแแแ แแแแแแแแ แแแ แแก แแแฌแงแแแแกแแก
{ "แชแแแแแ":"CallMeCallerIDName", "แแแแจแแแแแแแ":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "แแ แฎแ":{ "id ยป:ยป1599644315.5334โณ, ยซแกแแฎแแแยป:ยปPJSIP/VMSpjsip-000007b6โณ, "state":"แแแ แ", "แแแแแแแขแ":{ "แกแแฎแแแ":"111222โณ, "แแแแแ แ":"111222โณ }, "แแแแแแจแแ แแแฃแแ":{ "แกแแฎแแแ":"", "แแแแแ แ" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "appแกแแฎแแแ":"แกแขแแแแกแ", "แแแ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 แแ แแก แกแแแชแแแแฃแ แ แแแแแ แ แแแ แแคแแก แแแแแแจแ, แ แแแแแแช แจแแกแ แฃแแแแฃแแแ DID แซแแแแแก แแแฌแงแแแแแแ)
[ext-did-custom]
exten => s,1,Set(CallStart=${STRFTIME(epoch,,%s)})
แแแแแแแแ AMI แฆแแแแกแซแแแแ แแ แฎแแแแกแแแแก
แฆแแแแกแซแแแแ: แแฎแแแ แแ แฎแ
แแ แแแแแแแแ: แแแ แแแแ, แงแแแแ
แแ แฎแ: PJSIP/VMS_pjsip-0000078b
แแ แฎแแก แแแแแแแ แแแแ: 4
ChannelStateDesc: แแแญแแแ
CallerIDNum: 111222
CallerIDName: 111222
ConnectedLineNum:
แแแแแแจแแ แแแฃแแ แฎแแแแก แกแแฎแแแ:
แแแ: en
แแแแแ แแจแแก แแแแ:
แแแแขแแฅแกแขแ: from-pstn
แแแคแแ แแแแแ: แก
แแ แแแ แแขแแขแ: 1
แฃแแแแแแฃแ แ: 1599589046.5244
Linkedid: 1599589046.5244
แแแแแแแชแแ: แแแแงแแแแ AppData:
CallStart=1599571046
แ แแแแแ FreePBX แแแแแฌแแ แก extension.conf แแ extension_ แคแแแแแแกแแแแแขแแแแแ.conf, แฉแแแ แแแแแแแงแแแแแ แคแแแแก แแแคแแ แแแแแ_แกแแแแแ.แแแแแแฎแแแ
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
แแแฎแแกแแแแแแแแ แแ แแแแกแฎแแแแแแ แแ แแแแแแแฃแ แ แกแขแแขแแแก แแแขแแ แแแแก แแแแแแแแ แแแแ แแแแ แแกแแแ -
-
Dialplan .conf แคแแ แแแขแจแ, แ แแแแ แช แแแแก FreePBX แกแฃแ แก (แแแแฎ, แจแแฃแซแแแ .ael, แแแแ แแ แแ แ แงแแแแ แแแ แกแแ แแ แงแแแแแแแแก แแ แแ แแก แแแกแแฎแแ แฎแแแแแ)
-
แแแกแแกแ แฃแแแก exten=>h-แแ แแแแฃแจแแแแแแก แแแชแแแแ, แแแแฃแจแแแแแ แแแแแแ แแ hangup_handler-แแก แแแจแแแแแแ, แ แแแแแ FreePBX dialplan แแฃแจแแแแแ แแฎแแแแ แแแกแแแ.
-
แคแแฅแกแแ แแแฃแแ แกแแ แแแขแแก แแแ แแก แกแขแ แแฅแแแ, แแแแแขแแแฃแแ แชแแขแแขแแแ แแ แแแ แ แแแ แแก แแแแแ แ ExtNum
-
แแแแฃแจแแแแแ แแแแแขแแแแแแ _custom แแแแขแแฅแกแขแจแ แแ แกแแจแฃแแแแแแก แแแซแแแแ แแ แจแแแฎแแ แแ แแ แจแแชแแแแแ FreePBX แแแแคแแแฃแ แแชแแแแ - แจแแแแแแแแแ [แแฅแก-แแแแแแแแฃแแ-แฉแแแฃแแแแ แแแ], แแแแแแแแ [outbound-allroutes-custom]
-
แชแแคแ แแแแแ แแแแแแจแแ แแแ แแ แแ แแก - แคแแแแ แฃแแแแแ แกแแแฃแ แแ แแ แกแแญแแ แแ แแฎแแแแ แแแแคแแแฃแ แแชแแ แแแแกแ แแ แกแแ แแแ แแก แแแฃแแแกแแแแก
แแแกแแฌแงแแแแ, แแฅแแแ แแกแแแ แฃแแแ แแแฃแจแแแ แกแแ แแแขแแแ 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-แแก แแแแฎแแแแแก แคแฃแแฅแชแแ, แกแแแแช แแแแแแ แแแ แ. แ แ แแแฎแแแแ, แแฃ แแก แแ แแก dial-up แฏแแฃแคแ? แแแแฎแแ แแแแแขแแแฃแ แแ, แแฃแชแแแแแแแแ แแฃ แแ แ แงแแแแแกแแแแก แแแฌแแแแแแก แแ แแแ แแฃแแแ แจแแฅแแแ (แ แแชแ แงแแแแ แแ แแแ แแฃแแแ แฃแ แแแแแก) แแฃ แจแแฅแแแ, แ แแแแ แช แ แแแ แแแแแแ แแแ แแแแแกแแก แแซแแฎแแแ? แแแแแแขแแแแก แฃแแแขแแกแแแแก แแฅแแก Fisrt Available แกแขแ แแขแแแแ, แแแแขแแ แแแแจแ แแ แแแแแแ แแ แแ แแก, แแฎแแแแ แแ แแ แแแ แ. แแแแ แแ แกแแแแแฎแ แฃแแแ แแแแแแ แแแก.
-
แแแ แแก แ แแแแกแขแ แแชแแแก แคแฃแแฅแชแแ Bitrix24-แจแ, แ แแแแแแช แแแ แฃแแแแก CallID-แก, แ แแแแแแช แจแแแแแ แกแแญแแ แแแแก แแแ แแก แแแ แแแแขแ แแแแก แแแฎแกแแแแแแก แแ แฉแแแแฌแแ แแก แแแฃแแก. แแแแแฎแแแก แแแคแแ แแแแแแก แแแแแ แก แแ แแแแฎแแแ แแแแแก ID-แก
แแแ แแก แแแกแ แฃแแแแแก แจแแแแแ แแแแแแซแแฎแแแ แฉแแแแฌแแ แแก แฉแแแแขแแแ แแแแก แคแฃแแฅแชแแ, แ แแแแแแช แแ แแแ แแฃแแแ แแชแแแแแแก แแแ แแก แแแกแ แฃแแแแแก แกแขแแขแฃแกแก (แแแแแแแแฃแแ, แแแกแฃแฎแแก แแแ แแจแ, แฌแแ แแแขแแแแแ) แแ แแกแแแ แฉแแแแขแแแ แแแแก แแแฃแแก mp3 แคแแแแแก แฉแแแแฌแแ แแแ แแ แแแ (แแกแแแแก แแ แกแแแแแแก แจแแแแฎแแแแแจแ).
แแแแก แแแแ, แ แแ CallMeIn.php แแแแฃแแ แแฃแแแแแแ แฃแแแ แแแฃแจแแแก, แแแแกแแแแแก แจแแแฅแแแ SystemD แแแจแแแแแก แคแแแแ แแแ แแแ.แกแแ แแแกแ, แ แแแแแแช แฃแแแ แแแแแแแกแแแก /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-แแ [แฅแแแแแ แ-แจแแแ แแแกแ แฃแแแแฃแแ] แชแแคแแ แแแแขแแ, แ แแแแกแแช แแแ แ แแแกแ แฃแแแแแ
แแแ แกแแ แแแ แ แกแแญแแ แแ แแฎแแแแ แแ แ แ แแแแกแแแแก - Bitrix แฉแแแแฌแแ แแก แคแแแแแแแก แฉแแแแขแแแ แแแ (HTTPS-แแก แกแแจแฃแแแแแแ) แแ CallMeOut.php แกแแ แแแขแแก แแแแแซแแฎแแแ. แจแแแแซแแแแ แแแแแแงแแแแ แฉแแจแแแแแฃแแ FreePBX แกแแ แแแ แ, แ แแแแแก แคแแแแแแแ /var/www/html, แจแแแแซแแแแ แแแแแแกแขแแแแ แแ แกแฎแแ แกแแ แแแ แ แแ แแแฃแแแแแ แกแฎแแ แแแ.
แแแ แกแแ แแแ แ
แแแแแ แแแแขแแแแ แแแ แกแแ แแแ แแก แแแงแแแแแ แแแแแฃแแแแแแแแ แจแแกแฌแแแแแกแแแแก (
แแแกแขแแแแชแแแก แแแขแแแแขแแแแชแแ
แแแกแขแแแแ แ แจแแแฅแแแ github-แแ แแแกแขแแแแชแแแก แแแกแแแแแแแแแแแ. แแแแ แแ แแก แแงแ แแแฃแแ แฅแแฆแแแแแ - แกแแแแ แฉแแแ แแแแก แแแแแกแขแแแแ แแแ แฎแแแแ, แ แแแแแ แแ แงแแแแแคแ แแก แแแแแแแแแก แจแแแแแ แแแแแแ แแแฎแแ, แแแ แแแกแแแ แแแแแแ แแแก, แแแ แกแแ แแแแแก แแ แ แแแแ แฃแแแ แแแแแ แแแก แแแ. แฏแแ แแ แแ แแก แแแกแขแแแแ แ
docker
แแฃ แแกแฃแ แ แกแฌแ แแคแแ แกแชแแแแ แแแแแกแแแแแ - แแ แแก แแแ แแแแขแ Docker-แแแ แแ แแแ - แกแฌแ แแคแแ แจแแฅแแแแแ แแแแขแแแแแ แ, แแแแชแแ แแแ แขแแแ แแแ แแแแ, แแแแแแขแแแแ แแแ แแแแขแ แแแแก แคแแแแแแ แแ แกแชแแแแ (แแก แแ แแก แแแ แแแแขแ LetsEncrypt แแแแขแแแแแ แแ, แแฃ แฃแแแ แแแฅแแ แกแแ แแแคแแแแขแ , แแฅแแแ แฃแแ แแแแ แฃแแแ แแแแแแแกแแแแ แแแ แกแแแแ แแกแแแ แ แแ แแฅแกแ FreePBX แแแ แกแแ แแแ แแ (แฉแแแ แแแแแชแแ แกแฎแแ แแแ แขแ แแ แแก 88), LetsEncrypt in 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 API, แแแแกแแแฃแแ แแแแ แฃแคแแกแ แฉแแจแแแแแฃแแ PBX - ShugarCRM แแ Vtiger, แแ แแแแฎ! แแแแฎ, แแ แแแชแแแ แแแแแแ. แแแแ แแ แแก แกแฎแแ แแแแแแแ, แ แแแแแกแแช แแแแแแแแแแแ แชแแแแ แแแขแแแ แแแแ github-แจแ.
แแแขแแ แแขแฃแ แ
-
แแแแแ แแแแ แแ แแก github-แแ -
https://github.com/CrezZ/bitrix24-freepbx-php -
แฌแงแแ แแก แกแขแแขแแ แแแกแแแกแแแแก
https://habr.com/ru/post/349316/
แฃแแ แ แแแกแฃแฎแแกแแแแแแแแแแ: แ แแแแแแแกแแแ แแแแแกแแแแ แ แแกแแแแกแแแ แคแแฅแขแแฃแ แแ แแ แแก แแ แแ แแแงแแแ.
แฌแงแแ แ: www.habr.com