Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

Битрикс24 Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½Π° комбинация, която ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π° CRM, Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс, счСтоводство ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅Ρ‰Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈΡ‚Π΅ наистина харСсват, Π° ИВ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŠΡ‚ Π½Π΅ харСсва. ΠŸΠΎΡ€Ρ‚Π°Π»ΡŠΡ‚ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΈ ΠΈ срСдни Ρ„ΠΈΡ€ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ°Π»ΠΊΠΈ ΠΊΠ»ΠΈΠ½ΠΈΠΊΠΈ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΈ Π΄ΠΎΡ€ΠΈ салони Π·Π° красота. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° функция, която ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈΡ‚Π΅ β€žΠΎΠ±ΠΈΡ‡Π°Ρ‚β€œ, Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° тСлСфония ΠΈ CRM, ΠΊΠΎΠ³Π°Ρ‚ΠΎ всяко ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ сС записва Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π² CRM, ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ сС клиСнтски ΠΊΠ°Ρ€Ρ‚ΠΈ, ΠΏΡ€ΠΈ входящо сС ΠΏΠΎΠΊΠ°Π·Π²Π° информация Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠΉ Π΅ Ρ‚ΠΎΠΉ, ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ΄Π°Π΄Π΅ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ дълТи. Но тСлСфонията ΠΎΡ‚ Bitrix24 ΠΈ Π½Π΅ΠΉΠ½Π°Ρ‚Π° интСграция с CRM струва ΠΏΠ°Ρ€ΠΈ, понякога ΠΌΠ½ΠΎΠ³ΠΎ. Π’ статията Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΎΠΏΠΈΡ‚Π° ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ инструмСнти ΠΈ популярната IP PBX Π‘Π΅Π·ΠΏΠ»Π°Ρ‚Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π°, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ части

Работя ΠΊΠ°Ρ‚ΠΎ Π°ΡƒΡ‚ΡΠΎΡ€ΡΡŠΡ€ във Ρ„ΠΈΡ€ΠΌΠ°, която ΠΏΡ€ΠΎΠ΄Π°Π²Π° ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° IP тСлСфония. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΌΠ΅ ΠΏΠΎΠΏΠΈΡ‚Π°Ρ…Π° Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠΌ Π½Π΅Ρ‰ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ ΠΈ Ρ‚Π°Π·ΠΈ компания Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Bitrix24 с Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ°Ρ‚, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ VDS ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΡ‚ΠΈΠ΄ΠΎΡ… Π² Google. И Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Ρ‚ΠΎΠΉ ΠΌΠΈ Π΄Π°Π΄Π΅ Π»ΠΈΠ½ΠΊ към статия Π² Ρ…Π°Π±Ρ€, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠΌΠ° описаниС ΠΈ github ΠΈ всичко ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. Но ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΠΏΠΈΡ‚Π°Ρ… Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, сС ΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Bitrix24 Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ ΡΡŠΡ‰ΠΈΡΡ‚ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ трябва Π΄Π° сС ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π’ допълнСниС, FreePBX Π½Π΅ Π΅ Π³ΠΎΠ»Π° Π·Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ° Π·Π° вас, Ρ‚ΡƒΠΊ трябва Π΄Π° помислитС ΠΊΠ°ΠΊ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π»Π΅ΠΊΠΎΡ‚Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΈ Ρ…Π°Ρ€Π΄ΠΊΠΎΡ€ Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Π˜Π·ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°

И Ρ‚Π°ΠΊΠ°, ΠΊΠ°Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ, ΠΊΠ°ΠΊ трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ всичко. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ извън PBX (SIP INVITE ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ ΠΎΡ‚ доставчика) Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π° (dialplan, dialplan) - ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΈ Π² какъв Ρ€Π΅Π΄ Π΄Π° сС ΠΏΡ€Π°Π²ΠΈ с ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ. ΠžΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ информация, която слСд Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°. ΠžΡ‚Π»ΠΈΡ‡Π΅Π½ инструмСнт Π·Π° ΠΈΠ·ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚Ρ‚Π° Π½Π° SIP Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ sngrep (Π²Ρ€ΡŠΠ·ΠΊΠ°), ΠΊΠΎΠΉΡ‚ΠΎ просто сС инсталира Π² популярни дистрибуции Ρ‡Ρ€Π΅Π· apt install/yum install ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ ΠΈ ΠΎΡ‚ изходния ΠΊΠΎΠ΄. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° повикванията Π² sngrep

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

Π’ опростСн Π²ΠΈΠ΄ dialplan сС Π·Π°Π½ΠΈΠΌΠ°Π²Π° само с ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚, понякога ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€, ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ, натисканС Π½Π° Π±ΡƒΡ‚ΠΎΠ½ΠΈ (DTMF), Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ интСрСсни Π½Π΅Ρ‰Π° ΠΊΠ°Ρ‚ΠΎ FollowMe, RingGroup, IVR ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ.

Какво ΠΈΠΌΠ° Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π° с ΠΏΠΎΠΊΠ°Π½ΠΈ

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ прости Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½ΠΎΠ²Π΅ работят с ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π° ΠΈ цялата Π»ΠΎΠ³ΠΈΠΊΠ° сС Π²ΡŠΡ€Ρ‚ΠΈ ΠΎΠΊΠΎΠ»ΠΎ DID ΠΈ CallerID. DID - къдС сС ΠΎΠ±Π°ΠΆΠ΄Π°ΠΌΠ΅, CallerID - ΠΊΠΎΠΉ сС ΠΎΠ±Π°ΠΆΠ΄Π°.

Но Π² края Π½Π° ΠΊΡ€Π°ΠΈΡ‰Π°Ρ‚Π° ΠΈΠΌΠ°ΠΌΠ΅ компания, Π° Π½Π΅ Π΅Π΄ΠΈΠ½ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ - ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ PBX Π½Π°ΠΉ-вСроятно ΠΈΠΌΠ° Π³Ρ€ΡƒΠΏΠΈ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ (Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ / послСдоватСлно звънСнС Π½Π° няколко устройства) Π½Π° градски Π½ΠΎΠΌΠ΅Ρ€Π° (Ring Group), IVR (Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅, Π²ΠΈΠ΅ сС ΠΎΠ±Π°Π΄ΠΈΡ…Ρ‚Π΅ ... НатиснСтС Π΅Π΄ΠΈΠ½ Π·Π° ...), Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΈ сСкрСтари (Ρ„Ρ€Π°Π·ΠΈ), Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ условия, ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Π½Π΅ към Π΄Ρ€ΡƒΠ³ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ към ΠΊΠ»Π΅Ρ‚ΠΊΠ° (FollowMe, Forward). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ нСдвусмислСно ΠΊΠΎΠΉ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ с ΠΊΠΎΠ³ΠΎ Ρ‰Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ пристигнС ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅. Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π½Π°Ρ‡Π°Π»ΠΎ Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ Π² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π° Π½Π° наши ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Π»Π΅Π·Π΅ Π² PBX, Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ β€žΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΠΈβ€œ. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Asterisk Π΅ Π½ΠΎΠΌΠ΅Ρ€ΠΈΡ€Π°Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, всяка ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΏΠΎ набрания Π½ΠΎΠΌΠ΅Ρ€ (Π½Π°Ρ€ΠΈΡ‡Π° сС exten, Π·Π° външно ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π² началния Π΅Ρ‚Π°ΠΏ exten=DID). ΠšΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π² Ρ€Π΅Π΄Π° Π½Π° ΠΏΠ»Π°Π½Π° Π·Π° Π½Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ всякакви - Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ Π°Π±ΠΎΠ½Π°Ρ‚ - Dial(), остави Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° - Hangup()), условни ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ (IF, ELSE, ExecIF ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ), ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈ към Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ контСкст (Goto, GotoIF), ΠΏΡ€Π΅Ρ…ΠΎΠ΄ към Π΄Ρ€ΡƒΠ³ΠΈ контСксти ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функция (Gosub, Macro). ΠžΡ‚Π΄Π΅Π»Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° include имя_контСкста, ΠΊΠΎΠΉΡ‚ΠΎ добавя ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ контСкст Π² края Π½Π° тСкущия контСкст. ΠšΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Ρ‡Ρ€Π΅Π· include, Π²ΠΈΠ½Π°Π³ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ слСд ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° тСкущия контСкст.

Цялата Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° FreePBX Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° Π²ΡŠΡ€Ρ…Ρƒ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ контСксти Π΅Π΄ΠΈΠ½ Π² Π΄Ρ€ΡƒΠ³ Ρ‡Ρ€Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Ρ‡Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Gosub, Macro ΠΈ Handler. ΠŸΠΎΠΌΠΈΡΠ»Π΅Ρ‚Π΅ Π·Π° контСкста Π½Π° входящитС повиквания Π½Π° FreePBX

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

Π˜Π·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· всички контСксти ΠΎΡ‚Π³ΠΎΡ€Π΅ Π½Π°Π΄ΠΎΠ»Ρƒ Π½Π° свой Ρ€Π΅Π΄, във всСки контСкст ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° извиквания към Π΄Ρ€ΡƒΠ³ΠΈ контСксти ΠΊΠ°Ρ‚ΠΎ макроси (Macro), Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Gosub) ΠΈΠ»ΠΈ просто ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈ (Goto), Ρ‚Π°ΠΊΠ° Ρ‡Π΅ истинското Π΄ΡŠΡ€Π²ΠΎ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ само Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ прослСдСни Π² рСгистрационнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Π’ΠΈΠΏΠΈΡ‡Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π·Π° настройка Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° PBX Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ. ΠŸΡ€ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ сС Ρ‚ΡŠΡ€ΡΠΈ DID във входящитС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈ, провСряват сС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ условия Π·Π° Π½Π΅Π³ΠΎ, Π°ΠΊΠΎ всичко Π΅ Π½Π°Ρ€Π΅Π΄, сС стартира гласовото мСню. ΠžΡ‚ Π½Π΅Π³ΠΎ с натисканС Π½Π° Π±ΡƒΡ‚ΠΎΠ½ 1 ΠΈΠ»ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ ΠΈΠ·Π»ΠΈΠ·Π°Ρ‚Π΅ Π² Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° Π½Π°Π±ΠΈΡ€Π°Ρ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ. Π‘Π»Π΅Π΄ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ°ΠΊΡ€ΠΎΡΡŠΡ‚ hangupcall, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈΡ‰ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π² Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π°, освСн спСциални ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ (hangup handler).

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

КъдС Π² Ρ‚ΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ трябва Π΄Π° прСдоставим информация Π·Π° Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ към 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 (Π½ΠΎ Π½Π΅ напълно). ОсвСн Ρ‚ΠΎΠ²Π° (Π΅, къдС Π±ΠΈ Π±ΠΈΠ»ΠΎ Π±Π΅Π· Ρ‚ΠΎΠ²Π°, Π½ΠΈΠ΅ смС ΠΌΡŠΡ€Π·Π΅Π»ΠΈΠ²ΠΈ Ρ…ΠΎΡ€Π°) - Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° (статия Π² Ρ…Π°Π±Ρ€) ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ PAMI. *Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° трябва Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π° ARI, Π½ΠΎ Π½Π΅ ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ.

ΠŸΡ€Π΅ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° интСграцията

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° 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,

  1. Ѐункцията Π·Π° изискванС Π½Π° потрСбитСлско ΠΈΠΌΠ΅, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΎ Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Π½ΠΎΠΌΠ΅Ρ€, ΠΎΡ‚ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ дошло ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ. Ами Π°ΠΊΠΎ Π΅ Π³Ρ€ΡƒΠΏΠ° Π·Π° ΠΊΠΎΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠ° Π²Ρ€ΡŠΠ·ΠΊΠ°? Π’ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π΅ политичСски, трябва Π»ΠΈ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ Π΄ΠΎ всички навСднъТ (ΠΊΠΎΠ³Π°Ρ‚ΠΎ всички сС ΠΎΠ±Π°ΠΆΠ΄Π°Ρ‚ навСднъТ) ΠΈΠ»ΠΈ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ сС ΠΎΠ±Π°ΠΆΠ΄Π°Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΠ±Π°ΠΆΠ΄Π°Ρ‚ Π½Π° свой Ρ€Π΅Π΄? ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈΠΌΠ°Ρ‚ стратСгията Fisrt Available, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ няма ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ‚ΠΎΠ²Π°, само Π΅Π΄ΠΈΠ½ сС ΠΎΠ±Π°ΠΆΠ΄Π°. Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ трябва Π΄Π° бъдС Ρ€Π΅ΡˆΠ΅Π½.

  2. Ѐункцията Π·Π° рСгистриранС Π½Π° Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ Π² Bitrix24, която Π²Ρ€ΡŠΡ‰Π° CallID, ΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π·Π° ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ° към записа. Изисква ΠΈΠ»ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ Π½ΠΎΠΌΠ΅Ρ€, ΠΈΠ»ΠΈ потрСбитСлско ΠΈΠΌΠ΅

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

Π‘Π»Π΅Π΄ края Π½Π° Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° функцията Π·Π° изтСглянС Π½Π° запис, която Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π° статуса Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° (Π—Π°Π΅Ρ‚, Π‘Π΅Π· ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, УспСх), Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° изтСгля Π²Ρ€ΡŠΠ·ΠΊΠ° към 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] Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° FreePBX ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ с Bitrix24 ΠΈ Π΄Ρ€

Π£Π΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ само Π·Π° Π΄Π²Π΅ Π½Π΅Ρ‰Π° - изтСглянС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ със запис Π½Π° Bitrix (Ρ‡Ρ€Π΅Π· HTTPS) ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° скрипта CallMeOut.php. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ вградСния FreePBX ΡΡŠΡ€Π²ΡŠΡ€, Ρ‡ΠΈΠΈΡ‚ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ са /var/www/html, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС Π΄Ρ€ΡƒΠ³ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈΠ»ΠΈ Π΄Π° посочитС Π΄Ρ€ΡƒΠ³ ΠΏΡŠΡ‚.

ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€

НСка оставим настройката Π½Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° нСзависимо ΠΏΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅ (tyts, tyts, tyts). Ако няматС Π΄ΠΎΠΌΠ΅ΠΉΠ½, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ FreeDomain( https://www.freenom.com/ru/index.html), ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ Π΄Π°Π΄Π΅ Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ ΠΈΠΌΠ΅ Π·Π° вашия бял IP (Π½Π΅ забравяйтС Π΄Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ 80, 443 ΠΏΡ€Π΅Π· Ρ€ΡƒΡ‚Π΅Ρ€Π°, Π°ΠΊΠΎ Π²ΡŠΠ½ΡˆΠ½ΠΈΡΡ‚ адрСс Π΅ само Π½Π° Π½Π΅Π³ΠΎ). Ако Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ стС създали DNS Π΄ΠΎΠΌΠ΅ΠΉΠ½, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°Ρ‚Π΅ (ΠΎΡ‚ 15 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ Π΄ΠΎ 48 часа), Π΄ΠΎΠΊΠ°Ρ‚ΠΎ всички ΡΡŠΡ€Π²ΡŠΡ€ΠΈ сС зарСдят. Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΎΠΏΠΈΡ‚Π° ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с мСстни доставчици - ΠΎΡ‚ 1 час Π΄ΠΎ Π΄Π΅Π½.

Автоматизация Π½Π° инсталацията

Π’ 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.

ΠŸΠΎΠ·ΠΎΠ²Π°Π²Π°Π½Π΅Ρ‚ΠΎ

ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ отговорност: Всяка ΠΏΡ€ΠΈΠ»ΠΈΠΊΠ° с рСалността Π΅ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Π° ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ съм Π°Π·.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€