FreePBX рдмреБрдЭреНрджреИ рд░ Bitrix24 рд░ рдердкрд╕рдБрдЧ рдпрд╕рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

Bitrix24 CRM, рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣, рд▓реЗрдЦрд╛ рд░ рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВрд▓рд╛рдИ рд╕рд╛рдБрдЪреНрдЪреИ рдордирдкрд░реНрдиреЗ рд░ IT рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВрд▓рд╛рдИ рдорди рдирдкрд░реНрдиреЗ рдЕрдиреНрдп рдзреЗрд░реИ рдХреБрд░рд╛рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗ рдПрдЙрдЯрд╛ рдареВрд▓реЛ рд╕рдВрдпреЛрдЬрди рд╣реЛред рдкреЛрд░реНрдЯрд▓ рдзреЗрд░реИ рд╕рд╛рдирд╛ рд░ рдордзреНрдпрдо рдЖрдХрд╛рд░рдХрд╛ рдХрдореНрдкрдиреАрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд╕рд╛рдирд╛ рдХреНрд▓рд┐рдирд┐рдХрд╣рд░реВ, рдирд┐рд░реНрдорд╛рддрд╛рд╣рд░реВ рд░ рд╕реМрдиреНрджрд░реНрдп рд╕реИрд▓реВрдирд╣рд░реВ рд╕рдореЗрддред рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВрд▓реЗ "рдкреНрд░реЗрдо" рдЧрд░реНрдиреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рднрдиреЗрдХреЛ рдЯреЗрд▓рд┐рдлреЛрдиреА рд░ рд╕реАрдЖрд░рдПрдордХреЛ рдПрдХреАрдХрд░рдг рд╣реЛ, рдЬрдм рдХреБрдиреИ рдкрдирд┐ рдХрд▓ рд╕реАрдЖрд░рдПрдордорд╛ рддреБрд░реБрдиреНрддреИ рд░реЗрдХрд░реНрдб рд╣реБрдиреНрдЫ, рдЧреНрд░рд╛рд╣рдХ рдХрд╛рд░реНрдбрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдиреНрдЫрдиреН, рдЬрдм рдЖрдЧрдорди рд╣реБрдиреНрдЫ, рдЧреНрд░рд╛рд╣рдХрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реБрдиреНрдЫ рд░ рддрдкрд╛рдИрдВрд▓реЗ рддреБрд░реБрдиреНрддреИ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдЙрд╣рд╛рдБ рдХреЛ рд╣реБрдиреБрд╣реБрдиреНрдЫ, рдЙрд╣рд╛рдБ рдХреЗ рд╣реЛред рдмреЗрдЪреНрди рд╕рдХреНрдЫ рд░ рдЙрд╕рдХреЛ рдХрддрд┐ рдЛрдг рдЫред рддрд░ Bitrix24 рдмрд╛рдЯ рдЯреЗрд▓рд┐рдлреЛрдиреА рд░ CRM рд╕рдБрдЧ рдпрд╕рдХреЛ рдПрдХреАрдХрд░рдгрдорд╛ рдкреИрд╕рд╛ рдЦрд░реНрдЪ рд╣реБрдиреНрдЫ, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдзреЗрд░реИред рд▓реЗрдЦрдорд╛ рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЦреБрд▓рд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рд░ рд▓реЛрдХрдкреНрд░рд┐рдп IP PBX рд╕рдБрдЧ рдПрдХреАрдХрд░рдгрдХреЛ рдЕрдиреБрднрд╡ рдмрддрд╛рдЙрдиреЗрдЫреБ freepbx, рд░ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧрд╣рд░реВрдХреЛ рдХрд╛рдордХреЛ рддрд░реНрдХрд▓рд╛рдИ рдкрдирд┐ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдо рдЖрдИрдкреА рдЯреЗрд▓рд┐рдлреЛрдиреА рдмреЗрдЪреНрдиреЗ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ, рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ рдХрдореНрдкрдиреАрдорд╛ рдЖрдЙрдЯрд╕реЛрд░реНрд╕рд░рдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫреБред рдЬрдм рдорд▓рд╛рдИ рдпреЛ рд░ рдпрд╕ рдХрдореНрдкрдиреАрд▓рд╛рдИ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓реЗ рднрдПрдХрд╛ PBXs рд░ рд╕рд╛рдереИ рд╡рд┐рднрд┐рдиреНрди VDS рдХрдореНрдкрдиреАрд╣рд░реВрдорд╛ рднрд░реНрдЪреБрдЕрд▓ PBX рд╕рдБрдЧ рдПрдХреАрдХрд░рдг рдЧрд░реНрди рд╣рд╛рдореА рдпреЛ рд░ рдпреЛ рдХрдореНрдкрдиреАрд▓рд╛рдИ рдХреЗрд╣реА рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рднрдиреЗрд░ рд╕реЛрдзрд┐рдпреЛ, рдо Google рдЧрдПрдБред рд░ рдкрдХреНрдХреИ рдкрдирд┐ рдЙрд╕рд▓реЗ рдорд▓рд╛рдИ рдПрдЙрдЯрд╛ рд▓рд┐рдЩреНрдХ рджрд┐рдпреЛ habr рдорд╛ рд▓реЗрдЦ, рдЬрд╣рд╛рдБ рдПрдХ рд╡рд░реНрдгрди рдЫ, рд░ github, рд░ рд╕рдмреИ рдХрд╛рдо рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред рддрд░ рдпреЛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрд╛, рдпреЛ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ рдХрд┐ Bitrix24 рдЕрдм рдкрд╣рд┐рд▓реЗ рдЬрд╕реНрддреИ рдЫреИрди, рд░ рдзреЗрд░реИ рдкреБрди: рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдердк рд░реВрдкрдорд╛, FreePBX рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдирдЧреНрди рддрд╛рд░рд╛ рдЪрд┐рдиреНрд╣ рд╣реЛрдЗрди, рдпрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧрдХреЛ рд╕рд╣рдЬрддрд╛ рд░ рд╣рд╛рд░реНрдбрдХреЛрд░ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдХрд╕рд░реА рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рд╣рд╛рдореА рдХрд╛рдордХреЛ рддрд░реНрдХ рдЕрдзреНрдпрдпрди рдЧрд░реНрдЫреМрдВ

рддреНрдпрд╕реИрд▓реЗ рд╢реБрд░реБрд╡рд╛рддрдХрд╛ рд▓рд╛рдЧрд┐, рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреБрдкрд░реНрдЫред рдЬрдм PBX рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рдХрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫ (рдкреНрд░рджрд╛рдпрдХрдмрд╛рдЯ SIP INVITE рдШрдЯрдирд╛), рдбрд╛рдпрд▓рдкреНрд▓рд╛рди (рдбрд╛рдпрд▓ рдкреНрд▓рд╛рди, рдбрд╛рдпрд▓рдкреНрд▓рд╛рди) рдХреЛ рдкреНрд░рд╢реЛрдзрди рд╕реБрд░реБ рд╣реБрдиреНрдЫ - рдХреЗ рд░ рдХреБрди рдХреНрд░рдордорд╛ рдХрд▓ рдЧрд░реНрдиреЗ рдирд┐рдпрдорд╣рд░реВред рдкрд╣рд┐рд▓реЛ рдкреНрдпрд╛рдХреЗрдЯрдмрд╛рдЯ, рддрдкрд╛рдИрдВрд▓реЗ рдзреЗрд░реИ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬреБрди рддреНрдпрд╕рдкрдЫрд┐ рдирд┐рдпрдорд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред SIP рдХреЛ рдЖрдиреНрддрд░рд┐рдХ рдЕрдзреНрдпрдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдХрд░рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реЛ sngrep (рд▓рд┐рдЩреНрдХ) рдЬреБрди рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рддрд░рдгрд╣рд░реВрдорд╛ apt install/yum install рд░ рдпрд╕реНрддреИ рдорд╛рд░реНрдлрдд рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ, рддрд░ рдпреЛ рд╕реНрд░реЛрддрдмрд╛рдЯ рдкрдирд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдХрд▓ рд▓рдЧ рдЗрди sngrep рд╣реЗрд░реМрдВ

FreePBX рдмреБрдЭреНрджреИ рд░ Bitrix24 рд░ рдердкрд╕рдБрдЧ рдпрд╕рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

рд╕рд░рд▓реАрдХреГрдд рд░реВрдкрдорд╛, рдбрд╛рдпрд▓рдкреНрд▓рд╛рдирд▓реЗ рдкрд╣рд┐рд▓реЛ рдкреНрдпрд╛рдХреЗрдЯрд╕рдБрдЧ рдорд╛рддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрджрдЫ, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдХреБрд░рд╛рдХрд╛рдиреАрдХреЛ рдХреНрд░рдордорд╛, рдХрд▓рд╣рд░реВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдиреНрдЫ, рдмрдЯрди рдерд┐рдЪреНрдиреЗ (рдбреАрдЯреАрдПрдордПрдл), рдлрд▓реЛрдореА, рд░рд┐рдЩреНрдЧреНрд░реБрдк, рдЖрдИрднреАрдЖрд░ рд░ рдЕрдиреНрдп рдЬрд╕реНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рд░реЛрдЪрдХ рдХреБрд░рд╛рд╣рд░реВред

рдирд┐рдордиреНрддреНрд░рдгрд╛ рдкреНрдпрд╛рдХ рднрд┐рддреНрд░ рдХреЗ рдЫ

FreePBX рдмреБрдЭреНрджреИ рд░ Bitrix24 рд░ рдердкрд╕рдБрдЧ рдпрд╕рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

рд╡рд╛рд╕реНрддрд╡рдорд╛, рдзреЗрд░реИ рд╕рд╛рдзрд╛рд░рдг рдбрд╛рдпрд▓рдкреНрд▓рд╛рдирд╣рд░реВ рдкрд╣рд┐рд▓реЛ рджреБрдИ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрдЫ, рд░ рд╕рдореНрдкреВрд░реНрдг рддрд░реНрдХ DID рд░ CallerID рд╡рд░рд┐рдкрд░рд┐ рдШреБрдореНрдЫред DID - рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдХрд▓ рдЧрд░реНрджреИрдЫреМрдВ, CallerID - рдЬрд╕рд▓реЗ рдХрд▓ рдЧрд░реНрджреИрдЫред

рддрд░ рдЬреЗ рднрдП рдкрдирд┐, рд╣рд╛рдореАрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдХрдореНрдкрдиреА рдЫ рд░ рдПрдЙрдЯрд╛ рдлреЛрди рдЫреИрди - рдЬрд╕рдХреЛ рдорддрд▓рдм PBX рд╕рдБрдЧ рд╕рдореНрднрд╡рддрдГ рдХрд▓ рд╕рдореВрд╣рд╣рд░реВ рдЫрдиреН (рдПрдХреИ рд╕рд╛рде / рдзреЗрд░реИ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдШрдгреНрдЯреА рдмрдЬреНрдиреЗ) рд╢рд╣рд░ рдирдореНрдмрд░рд╣рд░реВрдорд╛ (рд░рд┐рдВрдЧ рд╕рдореВрд╣), IVR (рдирдорд╕реНрддреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдХрд▓ рдЧрд░реНрдиреБрднрдпреЛ ... рдерд┐рдЪреНрдиреБрд╣реЛрд╕реНред рдПрдЙрдЯрд╛рдХреЛ рд▓рд╛рдЧрд┐ ...), рдЙрддреНрддрд░ рджрд┐рдиреЗ рдореЗрд╕рд┐рдирд╣рд░реВ (рд╡рд╛рдХреНрдпрд╛рдВрд╢рд╣рд░реВ), рд╕рдордп рд╕рд░реНрддрд╣рд░реВ, рдЕрдиреНрдп рдирдореНрдмрд░рд╣рд░реВрдорд╛ рд╡рд╛ рд╕реЗрд▓рдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрджреИ (FollowMe, Forward)ред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХрд╕рд▓реЗ рдХрд▓ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ рд░ рдХрд▓ рдЖрдЙрдБрджрд╛ рдХреЛрд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рд╣реБрдиреЗрдЫ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЫред рдпрд╣рд╛рдБ рд╣рд╛рдореНрд░рд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрдХреЛ PBX рдорд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд▓рдХреЛ рд╕реБрд░реБрд╡рд╛рддрдХреЛ рдЙрджрд╛рд╣рд░рдг рд╣реЛ

FreePBX рдмреБрдЭреНрджреИ рд░ Bitrix24 рд░ рдердкрд╕рдБрдЧ рдпрд╕рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

рдХрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ PBX рдорд╛ рдкреНрд░рд╡реЗрд╢ рдЧрд░реЗрдкрдЫрд┐, рдпреЛ рд╡рд┐рднрд┐рдиреНрди "рд╕рдиреНрджрд░реНрдн" рдорд╛ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдорд╛рд░реНрдлрдд рдпрд╛рддреНрд░рд╛ рдЧрд░реНрджрдЫред Asterisk рдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ рд╕рдиреНрджрд░реНрдн рднрдиреЗрдХреЛ рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдмрджреНрдз рд╕реЗрдЯ рд╣реЛ, рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдбрд╛рдпрд▓ рдЧрд░рд┐рдПрдХреЛ рдирдореНрдмрд░рджреНрд╡рд╛рд░рд╛ рдлрд┐рд▓реНрдЯрд░ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ (рдпрд╕рд▓рд╛рдИ exten рднрдирд┐рдиреНрдЫ, рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЪрд░рдгрдорд╛ рдмрд╛рд╣реНрдп рдХрд▓рдХреЛ рд▓рд╛рдЧрд┐ exten=DID)ред рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рд▓рд╛рдЗрдирдХрд╛ рдЖрджреЗрд╢рд╣рд░реВ рдЬреБрдирд╕реБрдХреИ рд╣реБрди рд╕рдХреНрдЫрдиреН - рдЖрдиреНрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╣рд░реВ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЖрдиреНрддрд░рд┐рдХ рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН - Dial()рдлреЛрди рддрд▓ рд░рд╛рдЦреЗ - Hangup()), рд╕рд╢рд░реНрдд рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ (IF, ELSE, ExecIF рд░ рдЬрд╕реНрддреИ), рдпрд╕ рд╕рдиреНрджрд░реНрднрдХреЛ рдЕрдиреНрдп рдирд┐рдпрдорд╣рд░реВрдорд╛ рд╕рдВрдХреНрд░рдордг (Goto, GotoIF), рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓ (рдЧреЛрд╕рдм, рдореНрдпрд╛рдХреНрд░реЛ) рдХреЛ рд░реВрдкрдорд╛ рдЕрдиреНрдп рд╕рдиреНрджрд░реНрднрд╣рд░реВрдорд╛ рд╕рдВрдХреНрд░рдордгред рдЫреБрдЯреНрдЯреИ рдирд┐рд░реНрджреЗрд╢рди include ╨╕╨╝╤П_╨║╨╛╨╜╤В╨╡╨║╤Б╤В╨░, рдЬрд╕рд▓реЗ рд╣рд╛рд▓рдХреЛ рд╕рдиреНрджрд░реНрднрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдЕрд░реНрдХреЛ рд╕рдиреНрджрд░реНрднрдмрд╛рдЯ рдЖрджреЗрд╢рд╣рд░реВ рдердкреНрдЫред рд╕рдорд╛рд╡реЗрд╢ рдорд╛рд░реНрдлрдд рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХрд╛ рдЖрджреЗрд╢рд╣рд░реВ рд╕рдзреИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреНрдЫрдиреН ╨┐╨╛╤Б╨╗╨╡ рд╡рд░реНрддрдорд╛рди рд╕рдиреНрджрд░реНрднрдХреЛ рдЖрджреЗрд╢ред

FreePBX рдХреЛ рд╕рдореНрдкреВрд░реНрдг рддрд░реНрдХ Gosub, Macro рд░ рд╣реНрдпрд╛рдиреНрдбрд▓рд░ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ рдорд╛рд░реНрдлрдд рд╕рдорд╛рд╡реЗрд╢ рд░ рдХрд▓ рдорд╛рд░реНрдлрдд рдПрдХрдЕрд░реНрдХрд╛рдорд╛ рд╡рд┐рднрд┐рдиреНрди рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдирдорд╛ рдирд┐рд░реНрдорд┐рдд рдЫред рдЖрдЧрдорди FreePBX рдХрд▓рд╣рд░реВрдХреЛ рд╕рдиреНрджрд░реНрднрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН

FreePBX рдмреБрдЭреНрджреИ рд░ Bitrix24 рд░ рдердкрд╕рдБрдЧ рдпрд╕рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

рдХрд▓ рдорд╛рдерд┐рджреЗрдЦрд┐ рддрд▓рд╕рдореНрдо рд╕рдмреИ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдиреНрджрд░реНрднрдорд╛ рдореНрдпрд╛рдХреНрд░реЛ (рдореНрдпрд╛рдХреНрд░реЛ), рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ (рдЧреЛрд╕рдм) рд╡рд╛ рдмрд╕ рдЯреНрд░рд╛рдиреНрдЬрд┐рд╕рдирд╣рд░реВ (рдЧреЛрдЯреЛ) рдЬрд╕реНрддрд╛ рдЕрдиреНрдп рд╕рдиреНрджрд░реНрднрд╣рд░реВрдорд╛ рдХрд▓ рд╣реБрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдХреЗ рднрдирд┐рдиреНрдЫ рднрдиреНрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдЦ рдорд╛рддреНрд░ рд╣реБрди рд╕рдХреНрдЫред рд▓рдЧрд╣рд░реВрдорд╛ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ PBX рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрдЕрдк рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рддрд▓ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫред рдХрд▓ рдЧрд░реНрджрд╛, рдЖрдЧрдорди рдорд╛рд░реНрдЧрд╣рд░реВрдорд╛ DID рдЦреЛрдЬреА рдЧрд░рд┐рдиреНрдЫ, рдЕрд╕реНрдерд╛рдпреА рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рдБрдЪ рдЧрд░рд┐рдиреНрдЫ, рдпрджрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЫ рднрдиреЗ, рднреНрд╡рд╛рдЗрд╕ рдореЗрдиреБ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рдпрд╕рдмрд╛рдЯ, рдмрдЯрди 1 рд╡рд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдерд┐рдЪреЗрд░, рдбрд╛рдпрд▓рд┐рдЩ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рд╕рдореВрд╣рдорд╛ рдирд┐рд╕реНрдХрдиреБрд╣реЛрд╕реНред рдХрд▓ рд╕рдорд╛рдкреНрдд рднрдПрдкрдЫрд┐, рд╣реНрдпрд╛рдЩреНрдЧрдЕрдкрдХрд▓ рдореНрдпрд╛рдХреНрд░реЛ рднрдирд┐рдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рд╡рд┐рд╢реЗрд╖ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ (рд╣реНрдпрд╛рдЩрдЕрдк рд╣реНрдпрд╛рдиреНрдбрд▓рд░) рдмрд╛рд╣реЗрдХ рдбрд╛рдпрд▓рдкреНрд▓рд╛рдирдорд╛ рдХреЗрд╣реА рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред

FreePBX рдмреБрдЭреНрджреИ рд░ Bitrix24 рд░ рдердкрд╕рдБрдЧ рдпрд╕рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

рдпрд╕ рдХрд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдордорд╛ рд╣рд╛рдореАрд▓реЗ CRM рд▓рд╛рдИ рдХрд▓ рд╕реБрд░реБ рднрдПрдХреЛ рдЬрд╛рдирдХрд╛рд░реА, рдХрд╣рд╛рдБ рд░реЗрдХрд░реНрдбрд┐рдЩ рд╕реБрд░реБ рдЧрд░реНрдиреЗ, рдХрд╣рд╛рдБ рд░реЗрдХрд░реНрдбрд┐рдЩ рдЕрдиреНрддреНрдп рдЧрд░реНрдиреЗ рд░ CRM рдорд╛ рдХрд▓рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╣рд┐рдд рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдЙрдиреБрдкрд░реНрдЫ?

рдмрд╛рд╣реНрдп рдкреНрд░рдгрд╛рд▓реА рд╕рдВрдЧ рдПрдХреАрдХрд░рдг

PBX рд░ CRM рдПрдХреАрдХрд░рдг рдХреЗ рд╣реЛ? рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рд╣реБрдиреН рдЬрд╕рд▓реЗ рдпреА рджреБрдИ рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВ рдмреАрдЪ рдбреЗрдЯрд╛ рд░ рдШрдЯрдирд╛рд╣рд░реВ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрджрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдПрдХрдЕрд░реНрдХрд╛рд▓рд╛рдИ рдкрдард╛рдЙрдБрджрдЫред рд╕реНрд╡рддрдиреНрддреНрд░ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рддрд░рд┐рдХрд╛ API рдорд╛рд░реНрдлрдд рд╣реЛ, рд░ API рд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рддрд░рд┐рдХрд╛ HTTP REST рд╣реЛред рддрд░ рддрд╛рд░рд╛рдЩреНрдХрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛрдЗрдиред

Asterisk рднрд┐рддреНрд░ рдЫ:

  • AGI - рдмрд╛рд╣реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ/рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд▓, рдореБрдЦреНрдп рд░реВрдкрдорд╛ рдбрд╛рдпрд▓рдкреНрд▓рд╛рдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рддреНрдпрд╣рд╛рдБ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдЫрдиреНред phpagi, PAGI

  • AMI - рдкрд╛рда TCP рд╕рдХреЗрдЯ рдЬрд╕рд▓реЗ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдиреЗ рд░ рдкрд╛рда рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреЗ рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рднрд┐рддреНрд░рдмрд╛рдЯ SMTP рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ, рдШрдЯрдирд╛рд╣рд░реВ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рд░ рдХрд▓рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХреНрдЫ, рддреНрдпрд╣рд╛рдБ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЫред PAMI - Asterisk рд╕рдВрдЧ рдЬрдбрд╛рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп

AMI рдЖрдЙрдЯрдкреБрдЯ рдЙрджрд╛рд╣рд░рдг

рдХрд╛рд░реНрдпрдХреНрд░рдо: рдирдпрд╛рдБ рдЪреНрдпрд╛рдирд▓
рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░: рдХрд▓, рд╕рдмреИ
рдЪреНрдпрд╛рдирд▓: PJSIP/VMS_pjsip-0000078b
рдЪреНрдпрд╛рдирд▓ рд╕реНрдерд┐рддрд┐: 4
ChannelStateDesc: рдШрдгреНрдЯреА
CallerIDNum: 111222
CallerIDName: 111222
ConnectedLineNum:
рдЬреЛрдбрд┐рдПрдХреЛ рд░реЗрдЦрд╛рдирд╛рдо:
рднрд╛рд╖рд╛: en
рдЦрд╛рддрд╛ рдХреЛрдб:
рд╕рдиреНрджрд░реНрдн: pstn рдмрд╛рдЯ
рд╡рд┐рд╕реНрддрд╛рд░: рдПрд╕
рдкреНрд░рд╛рдердорд┐рдХрддрд╛: рез
рдЕрджреНрд╡рд┐рддреАрдп: 1599589046.5244
Linkedid: 1599589046.5244

  • ARI рджреБрдмреИрдХреЛ рдорд┐рд╢реНрд░рдг рд╣реЛ, REST, WebSocket рдорд╛рд░реНрдлрдд, JSON рдврд╛рдБрдЪрд╛рдорд╛ - рддрд░ рддрд╛рдЬрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд░ рд░реНрдпрд╛рдкрд░рд╣рд░реВрд╕рдБрдЧ, рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рдЫреИрди, рдЕрдлрд╣реНрдпрд╛рдиреНрдб рдлреЗрд▓рд╛ рдкрд░реНрдпреЛ (phparia, phpari) рдЬреБрди рдХрд░рд┐рдм рей рд╡рд░реНрд╖ рдЕрдШрд┐ рдЙрдиреАрд╣рд░реБрдХреЛ рд╡рд┐рдХрд╛рд╕рдорд╛ рдЖрдПрдХреЛ рдерд┐рдпреЛ ред

рдХрд▓ рд╕реБрд░реБ рд╣реБрдБрджрд╛ ARI рдЖрдЙрдЯрдкреБрдЯрдХреЛ рдЙрджрд╛рд╣рд░рдг

{ "variable":"CallMeCallerIDName", "value":"111222", "type":"ChannelVarset", "timestamp":"2020-09-09T09:38:36.269+0000", "channel":{ "id ┬╗:┬╗резрелрепрепремрекрекрейрезрел.релрейрейректА│, ┬лрдирд╛рдо┬╗:┬╗PJSIP/VMSpjsip-000007b6тА│, "state":"Ring", "caller":{ "name":"111222тА│, "number":"111222тА│ }, "connected":{ "name":"", "number" :"" }, "accountcode":"", "dialplan":{ "context":"from-pstn", "exten":"s", "priority":2, "appname":"рд╕реНрдЯреЗрд╕рд┐рд╕", "рдПрдкdata":"hello-world" }, "creativetime":"2020-09-09T09:38:35.926+0000", "language":"en" }, "рддрд╛рд░рд╛рдВрдХрдиid":"48:5b:aa:aa:aa:aa", "application":"hello-world" }

рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛ рдЕрд╕реБрд╡рд┐рдзрд╛, рдПрдХ рд╡рд┐рд╢реЗрд╖ API рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рд╡рд╛ рдЕрд╕рдореНрднрд╡рддрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫред CRM рд╕рдБрдЧ рдПрдХреАрдХрд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╣рд░реВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЫрдиреН:

  • рдХрд▓рдХреЛ рд╢реБрд░реБрд╡рд╛рдд рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╣рд╛рдБ рдпреЛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдХрд▓рд░рдЖрдИрдбреА рдирд┐рдХрд╛рд▓реНрдиреБрд╣реЛрд╕реН, DID, рд╕реБрд░реБ рд░ рдЕрдиреНрддреНрдп рд╕рдордп, рд╣реБрдирд╕рдХреНрдЫ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдмрд╛рдЯ рдбрд╛рдЯрд╛ (рдлреЛрди рд░ CRM рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдмреАрдЪрдХреЛ рдЬрдбрд╛рди рдЦреЛрдЬреНрди)

  • рдХрд▓рдХреЛ рд░реЗрдХрд░реНрдбрд┐рдЩ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЕрдиреНрддреНрдп рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ рдЗрдЪреНрдЫрд┐рдд рдврд╛рдБрдЪрд╛рдорд╛ рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░реЗрдХрд░реНрдбрд┐рдЩрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд╕реВрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рдлрд╛рдЗрд▓ рдЕрд╡рд╕реНрдерд┐рдд рдЫред

  • рдмрд╛рд╣реНрдп рдШрдЯрдирд╛ (рдХрд╛рд░реНрдпрдХреНрд░рдордмрд╛рдЯ) рдорд╛ рдХрд▓ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЖрдиреНрддрд░рд┐рдХ рдирдореНрдмрд░, рдмрд╛рд╣реНрдп рдирдореНрдмрд░ рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

  • рд╡реИрдХрд▓реНрдкрд┐рдХ: рд╕реНрдерд╛рдирдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐рдорд╛ рдХрд▓рд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ CRM, рдбрд╛рдпрд▓рд░ рд╕рдореВрд╣рд╣рд░реВ рд░ FollowME рд╕рдБрдЧ рдПрдХреАрдХреГрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╕реАрдЖрд░рдПрдо рдЕрдиреБрд╕рд╛рд░)

рдпреА рд╕рдмреИ рдХрд╛рд░реНрдпрд╣рд░реВ AMI рд╡рд╛ ARI рдорд╛рд░реНрдлрдд рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддрд░ ARI рд▓реЗ рдзреЗрд░реИ рдХрдо рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдШрдЯрдирд╛рд╣рд░реВ рдЫреИрдирдиреН, AMI рд╕рдБрдЧ рдЕрдЭреИ рдкрдирд┐ рдзреЗрд░реИ рдЪрд░рд╣рд░реВ рдЫрдиреН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдореНрдпрд╛рдХреНрд░реЛ рдХрд▓рд╣рд░реВ, рдореНрдпрд╛рдХреНрд░реЛ рднрд┐рддреНрд░ рднреЗрд░рд┐рдПрдмрд▓рд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреЗ, рдХрд▓ рд░реЗрдХрд░реНрдбрд┐рдЩ рд╕рд╣рд┐рдд) рдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рддреНрдпрд╕рдХрд╛рд░рдг, рд╕рд╣реА рд░ рд╕рд╣реА рдЯреНрд░реНрдпрд╛рдХрд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐, рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ AMI рдЫрдиреМрдЯ рдЧрд░реМрдВ (рддрд░ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╣реЛрдЗрди)ред рдердк рд░реВрдкрдорд╛ (рд░рд╛рдореНрд░реЛ, рдпреЛ рдмрд┐рдирд╛ рдпреЛ рдХрд╣рд╛рдБ рд╣реБрдиреЗрдЫ, рд╣рд╛рдореА рдЕрд▓реНрдЫреА рдорд╛рдирд┐рд╕рд╣рд░реВ рд╣реМрдВ) - рдореВрд▓ рдХрд╛рдордорд╛ (habr рдорд╛ рд▓реЗрдЦ) PAMI рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред *рддреНрдпрд╕реЛрднрдП рддрдкрд╛рдИрдВрд▓реЗ рдПрдЖрд░рдЖрдИрдорд╛ рдкреБрди: рд▓реЗрдЦреНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рддрд░ рдпрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ рднрдиреНрдиреЗ рддрдереНрдп рд╣реЛрдЗрдиред

рдПрдХреАрдХрд░рдг рдкреБрди: рдЖрд╡рд┐рд╖реНрдХрд╛рд░

рд╣рд╛рдореНрд░реЛ 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

рдЦрд╛рддрд╛ рдХреЛрдб:

рд╕рдиреНрджрд░реНрдн: pstn рдмрд╛рдЯ

рд╡рд┐рд╕реНрддрд╛рд░: рдПрд╕

рдкреНрд░рд╛рдердорд┐рдХрддрд╛: рез

рдЕрджреНрд╡рд┐рддреАрдп: 1599589046.5244

Linkedid: 1599589046.5244

рдЖрд╡реЗрджрди: рд╕реЗрдЯ AppData:

рдХрд▓рд╕реНрдЯрд╛рд░реНрдЯ=резрелрепрепрелренрезрежрекрем

рдХрд┐рдирднрдиреЗ FreePBX рд▓реЗ extention.conf рд░ extention_ рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ рдУрднрд░рд░рд╛рдЗрдЯ рдЧрд░реНрдЫextra.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

рдореВрд▓ рд▓реЗрдЦрдХрд╛ рд▓реЗрдЦрдХрд╣рд░реВрдХреЛ рдореВрд▓ рдбрд╛рдпрд▓рдкреНрд▓рд╛рдирдмрд╛рдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рд░ рднрд┐рдиреНрдирддрд╛ -

  • .conf рдврд╛рдБрдЪрд╛рдорд╛ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕рд░реА FreePBX рд▓реЗ рдпреЛ рдЪрд╛рд╣рдиреНрдЫ (рд╣реЛ, рдпрд╕рд▓реЗ .ael рдЧрд░реНрди рд╕рдХреНрдЫ, рддрд░ рд╕рдмреИ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рд╣реЛрдЗрди рд░ рдпреЛ рд╕рдзреИрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реБрдБрджреИрди)

  • рдЕрдиреНрддреНрдпрд▓рд╛рдИ exten=>h рдорд╛рд░реНрдлрдд рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, hangup_handler рдорд╛рд░реНрдлрдд рдкреНрд░рд╢реЛрдзрди рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдХрд┐рдирднрдиреЗ FreePBX рдбрд╛рдпрд▓рдкреНрд▓рд╛рдирд▓реЗ рдпрд╕рдХреЛ рд╕рд╛рде рдорд╛рддреНрд░ рдХрд╛рдо рдЧрд░реНтАНрдпреЛред

  • рдлрд┐рдХреНрд╕реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд▓ рд╕реНрдЯреНрд░рд┐рдЩ, рдердкрд┐рдПрдХреЛ рдЙрджреНрдзрд░рдг рд░ рдмрд╛рд╣реНрдп рдХрд▓ рдирдореНрдмрд░ ExtNum

  • рдкреНрд░рд╢реЛрдзрдирд▓рд╛рдИ _custom рд╕рдиреНрджрд░реНрднрд╣рд░реВрдорд╛ рд╕рд╛рд░рд┐рдПрдХреЛ рдЫ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ FreePBX рдХрдиреНрдлрд┐рдЧрд╣рд░реВ рдЫреБрди рд╡рд╛ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ - рдорд╛рд░реНрдлрдд рдЖрдЧрдорди [ext-did-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] рд╕рдиреНрджрд░реНрднрдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рд╕рдмреИ рдШрдЯрдирд╛рд╣рд░реВ рд╕рдиреНрджрд░реНрднрд╣рд░реВрдорд╛ рд▓рд╛рдЗрдирд╣рд░реВрдХреЛ рдХреНрд░рдордорд╛ рдЬрд╛рдиреНрдЫрдиреНред рдЬрдм _custom dialplan рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ CallMeCallerIDName рд░ CallStart рдЪрд░рд╣рд░реВрдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫ,

  1. рдХрд▓ рдЖрдПрдХреЛ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди рдирдореНрдмрд░рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд UserID рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпред рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рдпреЛ рдПрдХ рдбрд╛рдпрд▓-рдЕрдк рд╕рдореВрд╣ рд╣реЛ? рдкреНрд░рд╢реНрди рд░рд╛рдЬрдиреАрддрд┐рдХ рд╣реЛ, рдХреЗ рддрдкрд╛рдИрдВрд▓реЗ рдПрдХреИрдЪреЛрдЯрд┐ рд╕рдмреИрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдЬрдм рд╕рдмреИрд▓реЗ рдПрдХреИ рдкрдЯрдХ рдХрд▓ рдЧрд░реНрдЫрдиреН) рд╡рд╛ рдкрд╛рд▓реИрдкрд╛рд▓реЛ рдХрд▓ рдЧрд░реНрджрд╛ рдЙрдиреАрд╣рд░реВрд▓реЗ рдХрд▓ рдЧрд░реЗрдЬрд╕реНрддреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ? рдзреЗрд░реИ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд╕рдБрдЧ Fisrt рдЙрдкрд▓рдмреНрдз рд░рдгрдиреАрддрд┐ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рдорд╛ рдХреБрдиреИ рд╕рдорд╕реНрдпрд╛ рдЫреИрди, рдХреЗрд╡рд▓ рдПрдХ рдХрд▓ред рддрд░ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

  2. Bitrix24 рдорд╛ рдХрд▓ рджрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░реНрдп, рдЬрд╕рд▓реЗ CallID рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдЫ, рдЬреБрди рддреНрдпрд╕рдкрдЫрд┐ рдХрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд░ рд░реЗрдХрд░реНрдбрд┐рдЩрдХреЛ рд▓рд┐рдЩреНрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╛ рдд рд╡рд┐рд╕реНрддрд╛рд░ рдирдореНрдмрд░ рд╡рд╛ UserID рдЖрд╡рд╢реНрдпрдХ рдЫ

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-cal-internal-ended] рдбрд╛рдпрд▓рдкреНрд▓рд╛рдирдорд╛ рдЬрдм рдХрд▓ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫ

FreePBX рдмреБрдЭреНрджреИ рд░ Bitrix24 рд░ рдердкрд╕рдБрдЧ рдпрд╕рд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрджреИ

рд╡реЗрдм рд╕рд░реНрднрд░ рдХреЗрд╡рд▓ рджреБрдИ рдЪреАрдЬрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ - Bitrix рд░реЗрдХрд░реНрдб рдлрд╛рдЗрд▓рд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди (HTTPS рдорд╛рд░реНрдлрдд) рд░ CallMeOut.php рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд▓ рдЧрд░реНрджреИред рддрдкрд╛рдЗрдБ рдирд┐рд░реНрдорд┐рдд FreePBX рд╕рд░реНрднрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдлрд╛рдЗрд▓рд╣рд░реВ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ /var/www/html, рддрдкрд╛рдЗрдБ рдЕрд░реНрдХреЛ рд╕рд░реНрднрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╡рд╛ рдлрд░рдХ рдорд╛рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╡реЗрдм рд╕рд░реНрднрд░

рд╕реНрд╡рддрдиреНрддреНрд░ рдЕрдзреНрдпрдпрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡реЗрдм рд╕рд░реНрднрд░ рд╕реЗрдЯрдЕрдк рдЫреЛрдбреМрдВ (tyts, tyts, tyts)ред рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдбреЛрдореЗрди рдЫреИрди рднрдиреЗ, рддрдкрд╛рдЗрдБ FreeDomain ( https://www.freenom.com/ru/index.html), рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рддрдкрд╛рдИрдВрдХреЛ рд╕реЗрддреЛ рдЖрдИрдкреАрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐:рд╢реБрд▓реНрдХ рдирд╛рдо рджрд┐рдиреЗрдЫ (рдпрджрд┐ рдмрд╛рд╣рд┐рд░реА рдареЗрдЧрд╛рдирд╛ рдорд╛рддреНрд░ рдЫ рднрдиреЗ рд░рд╛рдЙрдЯрд░ рдорд╛рд░реНрдлрдд рдкреЛрд░реНрдЯрд╣рд░реВ 80, 443 рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН)ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЦрд░реИ рдПрдЙрдЯрд╛ DNS рдбреЛрдореЗрди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИ рд╕рд░реНрднрд░рд╣рд░реВ рд▓реЛрдб рдирднрдПрд╕рдореНрдо (резрел рдорд┐рдиреЗрдЯрджреЗрдЦрд┐ рекрео рдШрдгреНрдЯрд╛рд╕рдореНрдо) рдкрд░реНрдЦрдиреБрдкрд░реНрдЫред рдШрд░реЗрд▓реБ рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рдЕрдиреБрд╕рд╛рд░ - 15 рдШрдгреНрдЯрд╛ рджреЗрдЦрд┐ рдПрдХ рджрд┐рдиред

рд╕реНрдерд╛рдкрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рди

рд╕реНрдерд╛рдкрдирд╛ рдЕрдЭ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрди github рдорд╛ рдПрдХ рд╕реНрдерд╛рдкрдирд╛рдХрд░реНрддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рддрд░ рдпреЛ рдХрд╛рдЧрдЬрдорд╛ рдЪрд┐рдХрдиреА рдерд┐рдпреЛ - рдЬрдм рд╣рд╛рдореА рдпреЛ рд╕рдмреИ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИрдЫреМрдВ, рдХрд┐рдирдХрд┐ рдпреА рд╕рдмреИрд╕рдБрдЧ рдЯрд┐рдВрдХрд░ рдЧрд░реЗрдкрдЫрд┐ рдпреЛ рдХреНрд░рд┐рд╕реНрдЯрд▓ рд╕реНрдкрд╖реНрдЯ рднрдпреЛ рдХрд┐ рдХреЛрд╕рдБрдЧ рд╕рд╛рдереАрд╣рд░реВ рдЫрдиреН, рдХреЛ рдХрд╣рд╛рдБ рдЬрд╛рдиреНрдЫ рд░ рдХрд╕рд░реА рдбрд┐рдмрдЧ рдЧрд░реНрдиреЗред рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдХреБрдиреИ рд╕реНрдерд╛рдкрдирд╛рдХрд░реНрддрд╛ рдЫреИрди

рдбрдХрд░

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЪрд╛рдБрдбреИ рд╕рдорд╛рдзрд╛рди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ - рддреНрдпрд╣рд╛рдБ рдбрдХрд░рд╕рдБрдЧ рд╡рд┐рдХрд▓реНрдк рдЫ - рджреНрд░реБрдд рд░реВрдкрдорд╛ рдХрдиреНрдЯреЗрдирд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ рдмрд╛рд╣рд┐рд░ рдкреЛрд░реНрдЯрд╣рд░реВ рджрд┐рдиреБрд╣реЛрд╕реН, рд╕реЗрдЯрд┐рдЩ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реНрд▓рд┐рдк рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдпреЛ LetsEncrypt рдХрдиреНрдЯреЗрдирд░рдХреЛ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рд╣реЛ, рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЫ рднрдиреЗред , рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЦрд░реИ рд░рд┐рднрд░реНрд╕ рдкреНрд░реЛрдХреНрд╕реАрд▓рд╛рдИ FreePBX рд╡реЗрдм рд╕рд░реНрднрд░рдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрд░реНрдХреЛ рдкреЛрд░реНрдЯ рджрд┐рдпреМрдВ 88), LetsEncrypt in docker рдЖрдзрд╛рд░рд┐рдд рдпреЛ рд▓реЗрдЦ

рддрдкрд╛рдИрдВрд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлреЛрд▓реНрдбрд░рдорд╛ рдлрд╛рдЗрд▓ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдЧрд┐рдЯ рдХреНрд▓реЛрди рдкрдЫрд┐), рддрд░ рдкрд╣рд┐рд▓реЗ рдПрд╕реНрдЯреЗрд░рд┐рд╕реНрдХ рдХрдиреНрдлрд┐рдЧрд╣рд░реВ (рдПрд╕реНрдЯреЗрд░рд┐рд╕реНрдХ рдлреЛрд▓реНрдбрд░) рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рд░реЗрдХрд░реНрдбрд╣рд░реВрдорд╛ рдкрдерд╣рд░реВ рд░ рддреНрдпрд╣рд╛рдБ рддрдкрд╛рдИрдВрдХреЛ рд╕рд╛рдЗрдЯрдХреЛ 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, рд░ рд╣реЛ! рд╣реЛ, рд╕рд┐рджреНрдзрд╛рдиреНрдд рдПрдЙрдЯреИ рдЫред рддрд░ рдпреЛ рдЕрд░реНрдХреЛ рдХрдерд╛ рд╣реЛ, рдЬреБрди рд╣рд╛рдореА рдкрдЫрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрд┐рдердмрдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреЗрдЫреМрдВред

рд╕рдиреНрджрд░реНрдн

рдЕрд╕реНрд╡реАрдХрд░рдг: рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рд╕рдБрдЧ рдХреБрдиреИ рдкрдирд┐ рд╕рдорд╛рдирддрд╛ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реЛ рд░ рдпреЛ рдо рдерд┐рдЗрдирдБред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди