рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ WebRTC рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдЦ рд╣рдм рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдЙрддреНрдкрд╛рджрди рдкрд░ WebRTC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SIP рдЯреЗрд▓реАрдлреЛрдиреА рдХреЗ рд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИред , рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдЬрд┐рд╕ рдЪреАрдЬ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдЙрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рдФрд░ рд╣рдо рдмрд╣реБрдд рдХреБрдЫ рдХрд░ рдЧрдП: рджрд░реНрдж, рдШрдмрд░рд╛рд╣рдЯ, рдирдЦрд░реЗ, рдЕрд╢реНрд▓реАрд▓рддрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдФрд░ рд░рдЦрд╡рд╛рд▓реЗ рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВред
рдЕрдм рдпрд╣ рд╕рдм рдЕрддреАрдд рдореЗрдВ рд╣реИред рд╣рдордиреЗ рдЙрди рд╕рднреА рдмреИрд╕рд╛рдЦрд┐рдпреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛, рдЬреЛ рд╣рдордиреЗ рдмрдирд╛рдП, рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдлреЛрди рдХрд┐рдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред
рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ, рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИред
рдкреГрд╖реНрдарднреВрдорд┐:
рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрд╛ рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ рддрд╛рдХрд┐ рд╣рдо рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ, рд╣рдордиреЗ рдЪреБрдирд╛:
- SIPml5 - рдПрдХ рд╕реАрдорд╛рдВрдд рдкрд░рд┐рд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ
- рддрд╛рд░рд╛рдВрдХрди - рдПрдХ рдмреИрдХреЗрдВрдб рдХреА рддрд░рд╣
- Google Chrome рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рддрд░рд╣ рд╣реИред рдпрд╣ рд╕рдм рдХрд╣рд╛рдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рднреА рддрд░рд╣ рд╕реЗ рд╣рдордиреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:
- рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдФрд░ рдПрд╕рдЖрдИрдкреАрдПрдордПрд▓
- рдПрд╕реНрдЯреЗрд░рд┐рд╕реНрдХ + рд╡реАрдмреНрд░рдЯ 2 рдПрд╕рдЖрдИрдкреА рдФрд░ рдПрд╕рдЖрдИрдкреАрдПрдордПрд▓
- Freeswitch + SIPml
- Freeswitch + JSSIP
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ:
- рддрд╛рд░рд╛рдВрдХрди рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдирд░рдо-рд╕реНрд╡рд┐рдЪ рд╣реИред рдбрд┐рдЧрд┐рдпрдо рдХрд╛рд░реАрдЧрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
- Freeswitch - рд╕реЙрдлреНрдЯ-рд╕реНрд╡рд┐рдЪред рддрд╛рд░рд╛рдВрдХрди рдХреЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ
- SIPml5 - рдЦреБрдж рдХреЛ рдкрд╣рд▓реЗ HTML5 SIP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рди рджреЗрддрд╛ рд╣реИред рдПрд╕рдЖрдИрдкреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯред
- JSSIP - SIP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд▓реНрдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯред
- WebRTC2SIP - SIP рдФрд░ рдореАрдбрд┐рдпрд╛ рдЧреЗрдЯрд╡реЗ
рддрд╛рд░рд╛рдВрдХрди + sipml
рдпрд╛рддреНрд░рд╛ рдХреА рд╢реБрд░реБрдЖрддред рд╣рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рдереА рдФрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЕрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдерд╛ред
рдЗрд╕ рдореИрдиреБрдЕрд▓ рдкрд░ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рд╕рдВрдХрд▓рд┐рдд рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рдкрд╛рдпрд╛:
- рдлреЛрди рдХрд░рддреЗ рд╕рдордп "рд╕рдлреЗрдж рд╢реЛрд░"
- рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдХреЗ рд╕рд╛рде 10 рд╕реЗрдХрдВрдб рддрдХ рдХрд╛ рдореМрдиред
- рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдереАред
1. рдЗрд╕ рдкреИрдЪ рдХреЗ рд╕рд╛рде рд╕рдлреЗрдж рд╢реЛрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
2. рд╣рдо Asterisk рдкрд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рдХреЗ рдХреЙрд▓ рдЫреЛрдбрд╝рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рдХреЙрд▓ рдХреА рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рдереАред
3. рд╣рдордиреЗ Asterisk рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 1.6 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ 10 рджреВрд╕рд░реА рдЪреБрдкреНрдкреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдФрд░ рдЕрдм рд╣рдо 1.6 рддрд╛рд░рд╛рдВрдХрди рдкрд░ рд╣реИрдВред рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛:
- рдХреЛрдИ "рд╕рдлреЗрдж рд╢реЛрд░" рдирд╣реАрдВ рд╣реИ
- рдиреЗрдЯрд┐рд╡ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рдкреЛрд░реНрдЯ
рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рд╛рдордиреЗ рдЖрдИрдВ:
- RTP рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреЙрд▓ рдкрд░ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
- рдореМрди 10 рд╕реЗрдХрдВрдб рддрдХ рдмрдирд╛ рд░рд╣рд╛ред
рдЪреБрдкреНрдкреА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╣рдордиреЗ SIPml5 рдореЗрдВ STUN рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рд╕реНрдерд┐рддрд┐ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред
рд╣рдордиреЗ WebRTC2SIP рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ SIPml5 рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдиреЗ рд╕рд▓рд╛рд╣ рджреА рдереАред
рддрд╛рд░рд╛рдВрдХрди + webrtc2sip + sipml
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐ рд╣реИ:
- рдХреЛрдИ рдкреБрд░рд╛рдирд╛ рдмрдЧ рдирд╣реАрдВ
- рдЧрд┐рд░рддреЗ рд╣реБрдП рддрд╛рд░ рдирд╣реАрдВ
- рд╕рдиреНрдирд╛рдЯрд╛ рдЫрд╛ рдЧрдпрд╛ред
рд▓реЗрдХрд┐рди! рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА рдХрд┐ WebRTC2SIP рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рд╡рд╣ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдВрддрд░рд╛рд▓реЛрдВ рдкрд░ рдЧрд┐рд░рддрд╛ рд░рд╣рд╛ред
рдЯреНрд░реИрдХрд░ рдореЗрдВ рдмрдЧреНрд░реЗрдкреЛрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЙрдиреНрд╣реЗрдВ рдЖрдзреЗ рд╕рд╛рд▓ рддрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдерд╛, рдЬрдм рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рдХреБрдЫ рднреА рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рд╣рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
// рдЗрд╕ рдмреАрдЪ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣реИред
рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмрд┐рддрд╛рдиреЗ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдордиреЗ рдПрдХ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд┐рдпрд╛ webrtc2sip рдФрд░ рдлрд╝реНрд░реАрд╕реНрд╡рд┐рдЪ рдХреА рдУрд░ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
freeswitch + sipml
рдореИрдВрдиреЗ рддрдм рднреА Freeswitch рдХреА рдУрд░ рджреЗрдЦрд╛, рдЬрдм WebRTC рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг 1.4 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рди рддреЛ рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ, рдФрд░ рди рд╣реА рдбрд╛рдЙрдмреЛрдВрдЧреЛ рдЯреЗрд▓реАрдХреЙрдо рд╕реЗ рдорджрдж рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Freeswitch рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ, xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрджрдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдЙрдирдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд░рд╣ рд╕рдХрддреЗред
рдЬрдм рд╣рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдХреЗ рдХрд░реАрдм рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдирд╕реЗ рдХрд╛рдо рдорд┐рд▓рд╛, рддреЛ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдХреЛрдИ рдХреАрдбрд╝реЗ рдирд╣реАрдВ рдереЗ, рд╣рдордиреЗ рдЙрддреНрдкрд╛рджрди рдкрд░ рдЖрдЧреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди + WebRTC2SIP рдмрдВрдбрд▓ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмрд░рдХрд░рд╛рд░ рд░рд╣реЗ
рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рд╕реЛрдлреНрдЯрд╕реНрд╡рд┐рдЪ рдХреА рдУрд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИрдВред SIPml рдХреА рдУрд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ:
- рдпрджрд┐ рдЖрдк рдлреЛрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлреЛрди рдЙрдард╛рддреЗ рд╣реИрдВ, рддреЛ рдПрд╕рдЖрдИрдкреАрдПрдордПрд▓ рдпрд╣ рд╕реЛрдЪреЗрдЧрд╛ рдХрд┐ рд╡реЗ рднреА рдЙрд╕реЗ рдлреЛрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореГрдд рдХреЙрд▓ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
- рдХреЙрд▓ 2 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдЪрд▓реАред
рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдИ рдмреИрд╕рд╛рдЦреА рдмрдирд╛рдИрдВ рддрд╛рдХрд┐ рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рди рдХрд░реЗрдВ рдФрд░ JSSIP рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред JSSIP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдбрдмрдВрдЧреЛ рдФрд░ рдЙрдирдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирдлрд░рдд рдереА рдФрд░ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдмрд╣реБрдд рдЗрдЪреНрдЫрд╛ рдереАред
Tryit.jssip.net рдкрд░ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪрдиреЗ рдФрд░ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, JSSIP рдХреА рдУрд░ рдкрд▓рд╛рдпрди рдХрд░рдиреЗ рдХреЗ рддреАрди рджрд┐рди рдмрд╛рдж, SIP рдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреАрдбрд╝реЗ рдХреЗ рдФрд░ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рд╕рд╛рд░рд╛рдВрд╢
рдпрд╣рд╛рдБ рдХрд╣рд╛рдиреА рд╣реИред рдФрд░ рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдпред
SIPml
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
рд╡рд┐рдкрдХреНрд╖:
- рдмрд╣реБрдд рд╣реА рдХрдорд╛рд▓ рдХрд╛ред рдиреНрдпреВрдирддрдо рдЬреАрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рдЬрди> 1 рдПрдордмреА рд╣реИ
- рдХреЛрдИ рдкреВрд░реНрдг рдкреНрд░рд▓реЗрдЦрди рдирд╣реАрдВред рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдвреВрдВрдврдиреА рдереАрдВред
- WebRTC2sip рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рдкреИрдирд╛рдкрди
- рдвреЗрд░ рд╕рд╛рд░рд╛ рдХреЛрдб
рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди рдЙрджрд╛рд╣рд░рдг
// SIPml.init( function(e){ var stack = new SIPml.Stack({realm: 'example.org', impi: 'bob', impu: 'sip:bob@example.org', password: 'mysecret', events_listener: { events: 'started', listener: function(e){ var callSession = stack.newSession('call-audiovideo', { video_local: document.getElementById('video-local'), video_remote: document.getElementById('video-remote'), audio_remote: document.getElementById('audio-remote') }); callSession.call('alice'); } } }); stack.start(); } );
рдХреЙрд▓ рдЙрджрд╛рд╣рд░рдг
// var callSession; var eventsListener = function(e){ console.info('session event = ' + e.type); } var makeCall = function(){ callSession = sipStack.newSession('call-audiovideo', { video_local: document.getElementById('video-local'), video_remote: document.getElementById('video-remote'), audio_remote: document.getElementById('audio-remote'), events_listener: { events: '*', listener: eventsListener } // optional: '*' means all events }); callSession.call('johndoe'); }
JSSIP
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рд▓рд╛рдЗрдЯрд╡реЗрдЯ (~ 130kb)
- рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд▓реЗрдЦрди
- Freeswitch рдХреЗ рд╕рд╛рде рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдФрд░ рдЕрдиреНрдп рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ)
- рдорд╣рд╛рди рдПрдкреАрдЖрдИ
рд╡рд┐рдкрдХреНрд╖:
- рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛
рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
// var configuration = { 'ws_servers': 'ws://sip-ws.example.com', 'uri': 'sip:alice@example.com', 'password': 'superpassword' }; var coolPhone = new JsSIP.UA(configuration);
рдХреЙрд▓ рдЙрджрд╛рд╣рд░рдг
// var selfView = document.getElementById('my-video'); var remoteView = document.getElementById('peer-video'); // Register callbacks to desired call events var eventHandlers = { 'progress': function(e){ /* Your code here */ }, 'failed': function(e){ /* Your code here */ }, 'started': function(e){ var rtcSession = e.sender; // Attach local stream to selfView if (rtcSession.getLocalStreams().length > 0) { selfView.src = window.URL.createObjectURL(rtcSession.getLocalStreams()[0]); } // Attach remote stream to remoteView if (rtcSession.getRemoteStreams().length > 0) { remoteView.src = window.URL.createObjectURL(rtcSession.getRemoteStreams()[0]); } }, 'ended': function(e){ /* Your code here */ } }; var options = { 'eventHandlers': eventHandlers, 'extraHeaders': [ 'X-Foo: foo', 'X-Bar: bar' ], 'mediaConstraints': {'audio': true, 'video': true} }; coolPhone.call('sip:bob@example.com', options);
Webrtc2sip
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- Asterisk рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА
рд╡рд┐рдкрдХреНрд╖:
- рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ
- рдПрдХ рд╕рд╛рд▓ рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЧрдИред
рддрд╛рд░рд╛рдВрдХрди
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╢рд┐рд▓реНрдкрдХрд╛рд░ рдЗрд╕реЗ рдПрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдорд░рдореНрдордд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВред
рд╕рдВрд╕реНрдХрд░рдг 1.7 рдкрд░, рд╡реЗрдмрдЖрд░рдЯреАрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрд╕рдЖрдИрдкреА рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред
рд╣рдмреНрд░рд╛рд╕ рдУрд╡рд╢реЛрдЕрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛:
рд╢рд┐рд▓реНрдкрдХрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреИрдмрдВрдж рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВред рдЕрдм рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдФрд░ рд╕рднреА-рдЧрд▓реЗ рд▓рдЧрд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдЕрд▓рдЧ рд╣реИ: рдЬрдм рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдПрд╡реАрдкреА рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдордВрддреНрд░рдг рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдлреЛрди рдкрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдмреИрдарддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рддрджрдиреБрд╕рд╛рд░ рдПрд╡реАрдкреАрдПрдл рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЙрд▓рд░ 603 рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЧрд╛, рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕реНрдерд╛рдиреАрдп рдПрд╕рдбреАрдкреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ - рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рддрд╛рд░рд╛рдВрдХрди рдпрд╣ рдирд┐рдЧрд░рд╛рдиреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд┐рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдмреИрдард╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдУрдкрдирд╕рд┐рдкреНрд╕ рдпрд╛ рдХрдореЗрд▓рд┐рдпреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИред
рдирддреАрдЬрддрди, рдпрд╣ рд╕рдм рдердХрд╛ рд╣реБрдЖ рдерд╛ рдФрд░ рд╣рдордиреЗ рдПрдХ рдирд░рдо-рд╕реНрд╡рд┐рдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдлреНрд░рд┐рд╕реНрд╡рд┐рдЪ рдХреЛ рдЪреБрдирд╛
Freeswitch
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рд╕рдВрдЪрд╛рд▓рд┐рдд
- рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд
- рдирдП рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЯреВрдЯрддрд╛
рд╡рд┐рдкрдХреНрд╖:
- рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдорд╣рд┐рд▓рд╛-рд░реЛрдмреЛрдЯ рдХреЗ рд╕рд╛рде рддрд╛рд░рд╛рдВрдХрди рдореЗрдВ рд╣реИ
рдкрд░рд┐рдгрд╛рдо
рдПрд╕рдЖрдИрдкреА рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд╕рдВрдЪрд╛рд▓рдХ рдЦреБрд╢ рд╣реИрдВред Freeswitch + JSSIP рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдмрдВрдбрд▓ ~ 10k рдкреНрд░рддрд┐ рджрд┐рди рдФрд░ рдкреАрдХ рдЖрд╡рд░реНрд╕ рдХреЗ рджреМрд░рд╛рди 15k рддрдХ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ
рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ рд╣рдордиреЗ MySQL, рдХреЙрд▓ рд╕реЗрдВрдЯрд░, рдХреЙрд▓ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде Freeswitch рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреИрд╕реЗ рдХреА рдФрд░ рдЗрд╕реЗ рдЧрд▓рддреА-рд╕рд╣рд┐рд╖реНрдгреБ рдмрдирд╛ рджрд┐рдпрд╛ред