
рджреЛрд╕реНрддреЛрдВ, рдЖрдЬ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рд╡рд┐рд╖рдп рд╣реИред рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ "рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕реНрдХрд╛рдЗрдк рдХреЛ рдореЗрд░реЗ рдкрд╛рд╕ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП?" рддреАрд╕рд░реЗ рдХреЗ рд▓рд┐рдП, рдЕрдЪрд╛рдирдХ рдЬреАрд╡рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рд╕рдЪрдореБрдЪ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд╡реЗрдм рдбрд╛рдпрд▓рд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕реАрдзреЗ рдПрдХ рджреЛрд╕реНрдд рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрд┐ рдХрдИ рджрд╕рд┐рдпреЛрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдШреБрдЯрдиреЗ рдкрд░ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдпрд╣ 2019 рд╣реИ, рдФрд░ рд╣рдорд╛рд░реА рдЦреБрд╢реА рдХреЗ рд▓рд┐рдП, рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдЖрд░ eal- рдЯреА ime C ommunication (RTC) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдЯреВрд▓ рд╣реИ, рдЕрд░реНрдерд╛рдд WebRTC ред рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╡рд╣ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдерд╛ред рдПрдкреАрдЖрдИ рдХреЛ рдЕрднреА рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдирдХ рдмрди рдЧрдИ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕реНрд╡рдпрдВ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЖрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдм рдкрд░ рд▓реЗрдЦ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ ред
рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╢реБрд░реВ рдХрд░реЗрдВ, рдореИрдВ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, WebRTC рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдПрдХ рдмрдВрдбрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреА 2 рдкреА рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкрдХреЗ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдорд┐рддреНрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдПрд╕рдЖрдИрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред
- рдЖрдкрдХреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдЬреИрд╕реЗ FreeSwitch рдпрд╛ Asteriskред
рд╣рдо рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рдЬреИрд╕реЗ рд╣реА рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ, рдФрд░ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реАрдУрдЖрдИрдкреА рдЯреЗрд▓реАрдлреЛрдиреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред
рдЦреИрд░, рд▓реЗрдЦ рдХрд╛ рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреАрдЫреЗ рд╣реИ, рдЪрд▓реЛ рдХреЛрдб!
рдкреЗрдЬ рд▓реЗрдЖрдЙрдЯ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдкреГрд╖реНрда рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб, рдкрд╛рд╕рд╡рд░реНрдб, рдлрд╝реЛрди рдирдВрдмрд░ рдФрд░ рдХреБрдЫ рдмрдЯрдиред рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
<div class="container"> <div class="input-group mb-6"> <div class="input-group-prepend"> <span class="input-group-text">Login</span> </div> <input id="loginText" type="text" class="form-control"> <div class="input-group-prepend"> <span class="input-group-text">Password</span> </div> <input id="passwordText" type="password" class="form-control"> <button id="loginButton" type="button" class="btn btn-primary" onclick="login()">Login</button> <button id="logOutButton" type="button" class="btn btn-primary d-none" onclick="logout()">LogOut</button> </div> <div class="input-group mb-6 d-none" id="callPanel"> <input id="callNumberText" type="text" class="form-control" placeholder="Call number"> <button id="callNumberButton" type="button" class="btn btn-success" onclick="call()">Call</button> <button id="hangUpButton" type="button" class="btn btn-danger d-none" onclick="hangUp()">Hang Up</button> </div> <audio id="localAudio" autoPlay muted></audio> <audio id="remoteAudio" autoPlay></audio> <audio id="sounds" autoPlay></audio> </div>
рдСрдбрд┐рдпреЛ рддрддреНрд╡ "рднреЗрдЬреЗрдВрдЧреЗ" рдФрд░ "рдкреНрд░рд╛рдкреНрдд" рдзреНрд╡рдирд┐, рдФрд░ рд╕реБрдВрджрд░рддрд╛ рдХреЗ рд▓рд┐рдП, рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдбрд╛рдпрд▓-рдЕрдк рдзреНрд╡рдирд┐ рдЦреЗрд▓рддреЗ рд╣реИрдВред
рдпреВрдЖрдИ рддреИрдпрд╛рд░ рд╣реИ, рдЖрдкрдХреЛ рдпреВрдПрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЧрд▓рддреА рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдЪрд▓реЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рд╣рдордиреЗ JSSIP рдХреЛ рддреЗрдЬ рдХрд┐рдпрд╛

рд╣рдо рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣рд░ рдЪреАрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИ - JSSIP ред рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг рднреА рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ - рдмрд╕ рд╕рдм рдХреБрдЫ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рдХрд░реЗрдВ рдФрд░ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИред
рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рдЕрдкрдиреЗ рдЯреЗрд▓реАрдлреЛрдиреА рд╕рд░реНрд╡рд░ рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ:
socket = new JsSIP.WebSocketInterface("wss://webrtcserver:port/ws"); _ua = new JsSIP.UA( { uri: "sip:" + this.loginText.val() + "@webrtcserver", password: this.passwordText.val(), display_name: this.loginText.val(), sockets: [socket] });
рд░рд╛рд╕реНрддреЗ рдХреЗ рд╕рд╛рде, рдЖрдк рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдХрдиреЗрдХреНрдЯреЗрдб рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдкрдВрдЬреАрдХрд░рдг рдШрдЯрдирд╛ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:
his._ua.on('registered', () => { console.log("UA registered"); this.loginButton.addClass('d-none'); this.logOutButton.removeClass('d-none'); this.loginText.prop('disabled', true); this.passwordText.prop('disabled', true); $("#callPanel").removeClass('d-none'); });
рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдмрдЯрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЖрд╡рд╢реНрдпрдХ рджрд┐рдЦрд╛рдПрдВ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЫрд┐рдкрд╛рдПрдВред рдФрд░ рдЕрдЧрд░ рд▓реЙрдЧрд┐рди рдореЗрдВ рдЕрдЪрд╛рдирдХ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛, рддреЛ рд╣рдо рд▓реЙрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ:
this._ua.on('registrationFailed', (data) => { console.error("UA registrationFailed", data.cause); });
рдпрд╣ рд▓реЙрдЧрд┐рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрд╣ рдмреИрд░рд▓ рдЕрдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ
this._ua.start ();
рдпрджрд┐ рд╕рд░реНрд╡рд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлреЛрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реАрд▓реНрдб рдФрд░ рдХреЙрд▓ рдмрдЯрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред _ua.stop (), рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред
рдПрдХ рдХреЙрд▓ рдХрд░реЗрдВ
рдЕрдм - рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд: рдЖрдкрдХреЛ рджрд░реНрдЬ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
this.session = this._ua.call(number, { pcConfig: { hackStripTcp: true,
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рд╕рдХреНрд╖рдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рддрд╛рд░рд╛рдВрдХрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ rtcp_mux = sip.conf рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣реИред
рдЖрдЧреЗ рдХреА рдмрд╛рддрдЪреАрдд рдХреЙрд▓рдмреИрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреЗрдЬ рддрддреНрд╡ рдХреЛ рдСрдбрд┐рдпреЛ-рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреА рджрд┐рд╢рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рддрд╛рд░реНрдХрд┐рдХ рд╣реИред рдбрд╛рдпрд▓ рдХрд░рддреЗ рд╕рдордп ['рдкреНрд░рдЧрддрд┐'] - рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╛рдЬрд╝реЗрдВ рдмрдЬрд╛рдПрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдЦреБрдж рдХреА рдзреНрд╡рдирд┐ рдмрдЬрд╛рддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ pvsur рдиреЗ рдареАрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ, рдЖрдк рдЗрд╕реЗ рднреА рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрд╡рдкреНрд░рддрд┐рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ "рдмреАрдк рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдВрджреЗрд╢ рдЫреЛрдбрд╝ рджреЗрдВ", рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдПрдХ рд╣реИред
рдЬреИрд╕реЗ рд╣реА рдореИрдВ ['рд╕реНрд╡реАрдХреГрдд'] рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрдпрд╛ - рдзреНрд╡рдирд┐ рдХрд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛ред рдЬреИрд╕реЗ рд╣реА рдЧреНрд░рд╛рд╣рдХ рдлреЛрди рдЙрдард╛рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреА рдзреНрд╡рдирд┐ рдзрд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рд░рд┐рдореЛрдЯрдПрдбрд┐рдпреЛ ['рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ' рдФрд░ 'рдПрдбрд╕реНрдЯреНрд░реАрдо'] рддрддреНрд╡ рдореЗрдВ рдбрд╛рд▓ рджреЗрдВрдЧреЗред
рдХреЙрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, CloseMediaStream рдХрд░реЗрдВред рдЖрдк рдЖрд░рд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛
рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рджреЛ рдЪреАрдЬреЛрдВ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред
- рдХреНрд░реЛрдо рдореЗрдВ, рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрдИ рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдереА, рдЬреЛ рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рдереАред рд╣рдореЗрдВ рд▓реЙрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд╣ рдЖрдЗрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, JSSIP рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рд╣рдордиреЗ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдФрд░ рддреБрд░рдВрдд рдкреНрд░реАрдЯрд┐рдпрд░ рд╣реЛ рдЧрдпрд╛ред PCConfig.iceServers рдФрд░ pcConfig.hackStripTcp рджреЗрдЦреЗрдВред
- рд╣рдорд╛рд░реЗ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдореЗрдВ SIP рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде WSS рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИред рдпрд╣ HTTPS рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рддрд╛рд░рд╛рдВрдХрди рд╕рдВрдкрд░реНрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ WS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ JSSIP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб WS рд╡рд┐рд╡рд░рдгрдХ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрди рдорд╛рдирдХреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдПрд╕реНрдЯрд░ рдХреЗ рд╕рд╛рдереА рд▓рдЧрд╛рддрд╛рд░ рдХреБрдЫ рднреА рдареАрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдореГрдд рдЕрдВрддред рдареАрдХ рд╣реИ, рдЗрд╕ рд╕рдордп рд╣рдо рд╕реНрд░реЛрдд рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдвреВрдБрдврддреЗ рд╣реИрдВ ред_configuration.contact_uri = new URI (...), рдкрд░рд┐рд╡рд╣рди рдмрджрд▓реЗрдВ: 'ws' рдХреЛ рдкрд░рд┐рд╡рд╣рди: 'wss' рдФрд░ рдЬреАрд╡рди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрджрд╛рд╣рд░рдг рддреИрдпрд╛рд░ рд╣реИ, рдЖрдк рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдИ рд╕реЙрдлреНрдЯрдлреЛрди рд▓рдЧрд╛рдиреЗ рдпрд╛ рдЕрдкрдирд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдмрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗрдВ рдФрд░ рдХреЙрд▓ рдХрд░реЗрдВред
рдПрдХ рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдкрдХреЛ рдЯреЛрди рдореЛрдб рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдирдВрдмрд░ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣реА рд╣реИ, рдЖрдк рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрдВрдХ рдХреЗ рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рдФрд░ рд╡реЙрдпрд╕ рдореЗрдиреВ рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
this._call.sendDTMF('. ')
рдлрдХрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдРрд╕реЗ рдХрдИ рдмрд┐рдВрджреБ рдереЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдФрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмреИрдардирд╛ рдкрдбрд╝рд╛, рдЬреЛ рдЖрдИ рдФрд░ рдлрд┐рд░ рдЯреВрдЯ рдЧрдИред рд╕рдм рдХреБрдЫ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд rtcpMuxPolicy рд╕реЗрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рддрд╛рд░рд╛рдВрдХрди рдкрд░ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдо рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдмреЗрд╡рдХреВрдл рдереЗред
рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ - рдЬрдм рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рдХреЙрд▓ рдФрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереА рдФрд░ рдХреЛрдИ рдЖрд╡рд╛рдЬрд╝ рднреА рдирд╣реАрдВ рдереА :) рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рднрд╛рд╡ рдкрд░ рд░рди рдмрдирд╛рдПред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдХреА рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЕрд▓рдЧ рдХрд╛рд░ рдкрд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рдореЗрдВ JSSIP + Asterisk рдмрдВрдбрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдХреНрд░реЛрдо рдореЗрдВ, рдЬреЛ рд╣рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдореАрдбрд┐рдпрд╛ рдЙрдкрдХрд░рдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдФрд░ рдбрд╛рдпрд▓рд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
рдЖрдк рдЬреАрдердм рдкрд░ рддреИрдпрд╛рд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
рд╡рдЬрд╝рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
SIP рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: tyts , tyts
рддрд╛рд░рд╛рдВрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
Jssip рдкреБрд╕реНрддрдХрд╛рд▓рдп