Π Π°Π±ΠΎΡΡ ΠΊΠ°ΡΠΎ Π°ΡΡΡΠΎΡΡΡΡ Π²ΡΠ² ΡΠΈΡΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠΎΠ΄Π°Π²Π° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° IP ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈΡ. ΠΠΎΠ³Π°ΡΠΎ ΠΌΠ΅ ΠΏΠΎΠΏΠΈΡΠ°Ρ
Π° Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠΌ Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΈ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ Π½Π° Bitrix24 Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Ρ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ VDS ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΡΠΈΠ΄ΠΎΡ
Π² Google. Π ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΎΠΉ ΠΌΠΈ Π΄Π°Π΄Π΅ Π»ΠΈΠ½ΠΊ ΠΊΡΠΌ
ΠΠ·ΡΡΠ°Π²Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°
Π ΡΠ°ΠΊΠ°, ΠΊΠ°ΡΠΎ Π½Π°ΡΠ°Π»ΠΎ, ΠΊΠ°ΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠΈΡΠΊΠΎ. ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ PBX (SIP INVITE ΡΡΠ±ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°) Π·Π°ΠΏΠΎΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π° (dialplan, dialplan) - ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ ΠΈ Π² ΠΊΠ°ΠΊΡΠ² ΡΠ΅Π΄ Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Ρ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ. ΠΡ ΠΏΡΡΠ²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ°. ΠΡΠ»ΠΈΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΡΡΠ° Π½Π° SIP Π΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡΡ sngrep (
Π ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π²ΠΈΠ΄ dialplan ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° ΡΠ°ΠΌΠΎ Ρ ΠΏΡΡΠ²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ, ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠΈ, Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° Π±ΡΡΠΎΠ½ΠΈ (DTMF), ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ FollowMe, RingGroup, IVR ΠΈ Π΄ΡΡΠ³ΠΈ.
ΠΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ° Π² ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΠΊΠ°Π½ΠΈ
ΠΡΡΡΠ½ΠΎΡΡ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΡΡΠΈ Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½ΠΎΠ²Π΅ ΡΠ°Π±ΠΎΡΡΡ Ρ ΠΏΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π΅ ΠΏΠΎΠ»Π΅ΡΠ° ΠΈ ΡΡΠ»Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ΅ Π²ΡΡΡΠΈ ΠΎΠΊΠΎΠ»ΠΎ DID ΠΈ CallerID. DID - ΠΊΡΠ΄Π΅ ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°ΠΌΠ΅, CallerID - ΠΊΠΎΠΉ ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°.
ΠΠΎ Π² ΠΊΡΠ°Ρ Π½Π° ΠΊΡΠ°ΠΈΡΠ°ΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, Π° Π½Π΅ Π΅Π΄ΠΈΠ½ ΡΠ΅Π»Π΅ΡΠΎΠ½ - ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ PBX Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈΠΌΠ° Π³ΡΡΠΏΠΈ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ (Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ / ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π·Π²ΡΠ½Π΅Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°) Π½Π° Π³ΡΠ°Π΄ΡΠΊΠΈ Π½ΠΎΠΌΠ΅ΡΠ° (Ring Group), IVR (ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅, Π²ΠΈΠ΅ ΡΠ΅ ΠΎΠ±Π°Π΄ΠΈΡ ΡΠ΅ ... ΠΠ°ΡΠΈΡΠ½Π΅ΡΠ΅ Π΅Π΄ΠΈΠ½ Π·Π° ...), ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ°ΡΠΈ (ΡΡΠ°Π·ΠΈ), Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΏΡΠ΅ΠΏΡΠ°ΡΠ°Π½Π΅ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΊΡΠΌ ΠΊΠ»Π΅ΡΠΊΠ° (FollowMe, Forward). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π½Π΅Π΄Π²ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΎ ΠΊΠΎΠΉ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ Ρ ΠΊΠΎΠ³ΠΎ ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅. ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π½Π°ΡΠ°Π»ΠΎ Π½Π° ΡΠΈΠΏΠΈΡΠ΅Π½ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Π² ΡΠ΅Π»Π΅ΡΠΎΠ½Π½Π°ΡΠ° ΡΠ΅Π½ΡΡΠ°Π»Π° Π½Π° Π½Π°ΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²Π»Π΅Π·Π΅ Π² PBX, ΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ βΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈβ. ΠΠΎΠ½ΡΠ΅ΠΊΡΡΡΡ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Asterisk Π΅ Π½ΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π²ΡΡΠΊΠ° ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΡΠΈΠ»ΡΡΡ ΠΏΠΎ Π½Π°Π±ΡΠ°Π½ΠΈΡ Π½ΠΎΠΌΠ΅Ρ (Π½Π°ΡΠΈΡΠ° ΡΠ΅ exten, Π·Π° Π²ΡΠ½ΡΠ½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π² Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ exten=DID). ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π² ΡΠ΅Π΄Π° Π½Π° ΠΏΠ»Π°Π½Π° Π·Π° Π½Π°Π±ΠΈΡΠ°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ - Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ΅Π½ Π°Π±ΠΎΠ½Π°Ρ - Dial()
, ΠΎΡΡΠ°Π²ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½Π° - Hangup()
), ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ (IF, ELSE, ExecIF
ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ), ΠΏΡΠ΅Ρ
ΠΎΠ΄ΠΈ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΡ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (Goto, GotoIF
), ΠΏΡΠ΅Ρ
ΠΎΠ΄ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ (Gosub, Macro). ΠΡΠ΄Π΅Π»Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° include ΠΈΠΌΡ_ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
, ΠΊΠΎΠΉΡΠΎ Π΄ΠΎΠ±Π°Π²Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ Π΄ΡΡΠ³ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π² ΠΊΡΠ°Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅, Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΡΡΠ΅Π· include, Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ»Π΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ.
Π¦ΡΠ»Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° FreePBX Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π²ΡΡΡ Ρ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ Π΅Π΄ΠΈΠ½ Π² Π΄ΡΡΠ³ ΡΡΠ΅Π· Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Gosub, Macro ΠΈ Handler. ΠΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° FreePBX
ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ ΠΎΡΠ³ΠΎΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ Π½Π° ΡΠ²ΠΎΠΉ ΡΠ΅Π΄, Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ ΠΊΠ°ΡΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΈ (Macro), ΡΡΠ½ΠΊΡΠΈΠΈ (Gosub) ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Ρ ΠΎΠ΄ΠΈ (Goto), ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΡΡΠΈΠ½ΡΠΊΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΡΠ»Π΅Π΄Π΅Π½ΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
Π’ΠΈΠΏΠΈΡΠ½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΠΈΠΏΠΈΡΠ½Π° PBX Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρ. ΠΡΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ ΡΠ΅ ΡΡΡΡΠΈ DID Π²ΡΠ² Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π° Π½Π΅Π³ΠΎ, Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π³Π»Π°ΡΠΎΠ²ΠΎΡΠΎ ΠΌΠ΅Π½Ρ. ΠΡ Π½Π΅Π³ΠΎ Ρ Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° Π±ΡΡΠΎΠ½ 1 ΠΈΠ»ΠΈ ΡΠ°ΠΉΠΌΠ°ΡΡ ΠΈΠ·Π»ΠΈΠ·Π°ΡΠ΅ Π² Π³ΡΡΠΏΠ°ΡΠ° Π½Π°Π±ΠΈΡΠ°ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ. Π‘Π»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ°ΠΊΡΠΎΡΡΡ hangupcall, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π² Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π°, ΠΎΡΠ²Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ (hangup handler).
ΠΡΠ΄Π΅ Π² ΡΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ CRM, ΠΊΡΠ΄Π΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π·Π°ΠΏΠΈΡΠ°, ΠΊΡΠ΄Π΅ Π΄Π° Π·Π°Π²ΡΡΡΠΈΠΌ Π·Π°ΠΏΠΈΡΠ° ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ Π·Π°Π΅Π΄Π½ΠΎ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ CRM?
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π²ΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ
ΠΠ°ΠΊΠ²ΠΎ Π΅ PBX ΠΈ CRM ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ? Π’ΠΎΠ²Π° ΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π·ΠΈ Π΄Π²Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ Π΅Π΄Π½Π° Π½Π° Π΄ΡΡΠ³Π°. ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π΅ ΡΡΠ΅Π· API, Π° Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API Π΅ HTTP REST. ΠΠΎ Π½Π΅ ΠΈ Π·Π° Π·Π²Π΅Π·Π΄ΠΈΡΠΊΠ°.
ΠΡΡΡΠ΅ Π² Asterisk Π΅:
-
AGI - ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π³Π»Π°Π²Π½ΠΎ Π² Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π°, ΠΈΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ°ΡΠΎ
phpagi ,PAGI -
AMI - ΡΠ΅ΠΊΡΡΠΎΠ² TCP ΡΠΎΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Π°Π±ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π·Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π° SMTP ΠΎΡΠ²ΡΡΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΈΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠΠΠ - Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ° ΡΡΡ Π·Π²Π΅Π·Π΄ΠΈΡΠΊΠ°
ΠΡΠΈΠΌΠ΅Ρ Π·Π° AMI ΠΈΠ·Ρ ΠΎΠ΄
Π‘ΡΠ±ΠΈΡΠΈΠ΅: ΠΠΎΠ² ΠΊΠ°Π½Π°Π»
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ: ΠΎΠ±Π°Π΄Π΅ΡΠ΅ ΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ
ΠΠ°Π½Π°Π»: PJSIP/VMS_pjsip-0000078b
Π‘ΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΊΠ°Π½Π°Π»Π°: 4
ChannelStateDesc: ΠΠ²ΡΠ½Π΅Π½Π΅
ΠΠ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°ΡΠΈΡ: 111222
ΠΠ Π½Π° ΠΎΠ±Π°ΠΆΠ΄Π°ΡΠΈΡ ΡΠ΅: 111222
ConnectedLineNum:
ΡΠ²ΡΡΠ·Π°Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° Π»ΠΈΠ½ΠΈΡ:
ΠΠ·ΠΈΠΊ: en
ΠΊΠΎΠ΄ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ°:
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: ΠΎΡ-pstn
Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅: s
ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ: 1
Π£Π½ΠΈΠΊΠ°Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ: 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":"ΠΠΎΠ·Π²ΡΠ½ΡΠ²Π°Π½Π΅", "caller":{ "name":"111222β³, "number":"111222β³ }, "connected":{ "name":"", "number" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "appΠΈΠΌΠ΅":"Stasis", "ΠΏΡΠΈΠ»data":"hello-world" }, "creationtime":"2020-09-09T09:38:35.926+0000", "language":"en" }, "asteriskid":"48:5b:aa:aa:aa:aa", "ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅":"Π·Π΄ΡΠ°Π²Π΅ΠΉ-ΡΠ²ΡΡ"}
Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎΡΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΡΠΎ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° ΠΈΠ»ΠΈ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ 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: ΠΠ²ΡΠ½Π΅Π½Π΅
ΠΠ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°ΡΠΈΡ: 111222
ΠΠ Π½Π° ΠΎΠ±Π°ΠΆΠ΄Π°ΡΠΈΡ ΡΠ΅: 111222
ConnectedLineNum:
ΡΠ²ΡΡΠ·Π°Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° Π»ΠΈΠ½ΠΈΡ:
ΠΠ·ΠΈΠΊ: en
ΠΊΠΎΠ΄ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ°:
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ: ΠΎΡ-pstn
Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅: s
ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ: 1
Π£Π½ΠΈΠΊΠ°Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ: 1599589046.5244
Linkedid: 1599589046.5244
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΠ°Π΄Π°ΠΉΡΠ΅ AppData:
CallStart=1599571046
Π’ΡΠΉ ΠΊΠ°ΡΠΎ FreePBX ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ extention.conf ΠΈ extention_Additional.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-custom], ΠΈΠ·Ρ ΠΎΠ΄ΡΡ ΠΏΡΠ΅Π· [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, Π½Π΅ Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠ° ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½Π°, ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ±ΡΡΠ΄Π΅Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ. Asterisk ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ AMI ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ²Π°ΡΡ ΠΏΠΎΡΡΠ° ΠΈ ΡΠΎΠ²Π° Π΅. ΠΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈ, ΡΠΎΠΉ ΠΈΡΠΊΠ° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ° Π·Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ. Π‘ΡΠ±ΠΈΡΠΈΡΡΠ° ΠΈΠ΄Π²Π°Ρ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΡΠ΅ΠΊΡΡ, ΠΊΠΎΠΉΡΠΎ PAMI ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π² ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΠΏΠΎΠ»Π΅ΡΠ°, ΡΠΈΡΠ»Π° ΠΈ Ρ.Π½.
ΠΠ΅Π΄Π½Π°Π³Π° ΡΠΎΠΌ Π²Π»Π΅Π·Π΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ, ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ NewExten ΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°, ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈΡ [from-pstn] ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ±ΠΈΡΠΈΡ Π²ΡΡΠ²ΡΡ ΠΏΠΎ ΡΠ΅Π΄Π° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈΡΠ΅. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ CallMeCallerIDName ΠΈ CallStart, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² _custom dialplan,
-
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ ΠΈΠΌΠ΅, ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΎ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ Π½ΠΎΠΌΠ΅Ρ, ΠΎΡΠΊΡΠ΄Π΅ΡΠΎ Π΅ Π΄ΠΎΡΠ»ΠΎ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ΡΠΎ. ΠΠΌΠΈ Π°ΠΊΠΎ Π΅ Π³ΡΡΠΏΠ° Π·Π° ΠΊΠΎΠΌΡΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΡΠ·ΠΊΠ°? ΠΡΠΏΡΠΎΡΡΡ Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΡΠ±Π²Π° Π»ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ Π΄ΠΎ Π²ΡΠΈΡΠΊΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ (ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°Ρ Π½Π°Π²Π΅Π΄Π½ΡΠΆ) ΠΈΠ»ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°Ρ Π½Π° ΡΠ²ΠΎΠΉ ΡΠ΅Π΄? ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈΠΌΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° Fisrt Available, ΡΠ°ΠΊΠ° ΡΠ΅ Π½ΡΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠΎΠ²Π°, ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΡΠ΅ ΠΎΠ±Π°ΠΆΠ΄Π°. ΠΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅ΡΠ΅Π½.
-
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠΈ Π² Bitrix24, ΠΊΠΎΡΡΠΎ Π²ΡΡΡΠ° CallID, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ° ΠΈ Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ Π·Π°ΠΏΠΈΡΠ°. ΠΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ»ΠΈ Π²ΡΡΡΠ΅ΡΠ΅Π½ Π½ΠΎΠΌΠ΅Ρ, ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ ΠΈΠΌΠ΅
Π‘Π»Π΅Π΄ ΠΊΡΠ°Ρ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° Π·Π°ΠΏΠΈΡ, ΠΊΠΎΡΡΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΡΠΈΡΠ° ΡΡΠ°ΡΡΡΠ° Π½Π° ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ° (ΠΠ°Π΅Ρ, ΠΠ΅Π· ΠΎΡΠ³ΠΎΠ²ΠΎΡ, Π£ΡΠΏΠ΅Ρ ), Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·ΡΠ΅Π³Π»Ρ Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ 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 Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΎΡ, Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° ΠΎΡΠ΅ ΠΏΠΎ-Π»Π΅ΡΠ½Π°. ΠΠΎ Π²ΡΠΈΡΠΊΠΎ Π±Π΅ΡΠ΅ Π³Π»Π°Π΄ΠΊΠΎ Π½Π° Ρ Π°ΡΡΠΈΡ - Π΄ΠΎΠΊΠ°ΡΠΎ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΡΡΠ½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²ΡΡΠΊΠ°Π½Π΅ Ρ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΡΠ°Π½Π° ΠΊΡΠΈΡΡΠ°Π»Π½ΠΎ ΡΡΠ½ΠΎ ΠΊΠΎΠ΅ Ρ ΠΊΠΎΠ³ΠΎ Π΅ ΠΏΡΠΈΡΡΠ΅Π», ΠΊΠΎΠΉ ΠΊΡΠ΄Π΅ Ρ ΠΎΠ΄ΠΈ ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅ Π΄Π΅Π±ΡΠ³Π²Π°. ΠΡΠ΅ ΠΎΡΠ΅ Π½ΡΠΌΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΎΡ
Π΄ΠΎΠΊΠ΅Ρ
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠΎΠ±Π²Π°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ - ΠΈΠΌΠ° ΠΎΠΏΡΠΈΡ Ρ Docker - Π±ΡΡΠ·ΠΎ ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π΄Π°ΠΉΡΠ΅ ΠΌΡ ΠΏΠΎΡΡΠΎΠ²Π΅ Π½Π°Π²ΡΠ½, ΠΏΠ»ΡΠ·Π½Π΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ ΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ (ΡΠΎΠ²Π° Π΅ ΠΎΠΏΡΠΈΡΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° LetsEncrypt, Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ , ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ ΠΊΡΠΌ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° FreePBX (Π΄Π°Π΄ΠΎΡ
ΠΌΠ΅ ΠΌΡ Π΄ΡΡΠ³ ΠΏΠΎΡΡ Π΅ 88), LetsEncrypt Π² Π΄ΠΎΠΊΠ΅Ρ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π°
Π’ΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΉΠ»Π° Π² ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΡΠ»Π΅Π΄ git clone), Π½ΠΎ ΠΏΡΡΠ²ΠΎ Π²Π»Π΅Π·ΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π·Π²Π΅Π·Π΄ΠΈΡΠΊΠ°ΡΠ° (ΠΏΠ°ΠΏΠΊΠ° ΡΡΡ Π·Π²Π΅Π·Π΄ΠΈΡΠΊΠ°) ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ°ΠΌ ΠΏΡΡΠΈΡΠ°ΡΠ° Π΄ΠΎ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΈ 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