{"id":281707,"date":"2016-11-29T11:40:05","date_gmt":"2016-11-29T08:40:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=281707"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=281707","title":{"rendered":"\u0422\u0443\u0442-\u0442\u0443\u043a, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/523\/da3\/185\/523da31857f648b396c3571a838a8361.jpg\"\/><\/p>\n<p>  \u0412\u0441\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u0438\u0432\u0435\u0442! <br \/>  \u041d\u0430 \u044d\u0442\u0438\u0445 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/vk.com\/devfestsiberia\">DevFest Siberia 2016<\/a> \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c IoT \u0434\u043e\u043c\u043e\u0444\u043e\u043d\u0430. \u042d\u0442\u043e \u0431\u044b\u043b\u0430 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f. \u041d\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043d\u0435 \u043e \u043d\u0435\u0439. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u044f \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b, \u0447\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u043a\u0430\u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 Knock Knock \u0438\u0437 Google DUO \u0432 \u0434\u043e\u043c\u043e\u0444\u043e\u043d\u0435.<\/p>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f <a href=\"https:\/\/support.google.com\/duo\/answer\/6376115?hl=ru\">\u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0442 Google<\/a>:<br \/>  \u00ab\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0432\u043e\u043d\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 \u0432 Duo, \u0430\u0431\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0430\u0448\u0435 \u0432\u0438\u0434\u0435\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u0447\u0438\u0441\u043b\u043e \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u00bb.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u0434\u043e\u043c\u043e\u0444\u043e\u043d\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u043c\u0435\u0442\u044c \u0437\u0432\u043e\u043d\u0438\u0442\u044c, \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0432\u043e\u043d\u043a\u0438. \u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0437\u0432\u043e\u043d\u0438\u043b\u0438 \u043d\u0430 \u0434\u043e\u043c\u043e\u0444\u043e\u043d, \u044d\u0442\u043e \u043a\u0430\u043a \u0437\u0432\u043e\u043d\u043a\u0438 \u043d\u0430 \u0442\u0430\u043a\u0441\u043e\u0444\u043e\u043d.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0432\u0438\u0434\u0435\u043e \u0447\u0430\u0442, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043a\u043e\u0434 \u043e\u0431\u043e\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.<\/p>\n<h2> \u0412\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 <\/h2>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e html+css, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e. \u0427\u0442\u043e \u0432\u044b\u0439\u0434\u0435\u0442 \u0432 \u0438\u0442\u043e\u0433\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u041a\u0414\u041f\u0412 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<pre><code class=\"html\">&lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt;     &lt;meta charset=&quot;UTF-8&quot;&gt;     &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;     &lt;title&gt;Intercom&lt;\/title&gt;     &lt;script type=&quot;text\/javascript&quot; src=&quot;\/\/cdn.voximplant.com\/edge\/voximplant.min.js&quot;&gt;&lt;\/script&gt;     &lt;link href=&quot;https:\/\/fonts.googleapis.com\/icon?family=Material+Icons&quot; rel=&quot;stylesheet&quot;&gt; &lt;\/head&gt; &lt;body&gt; &lt;!-- \u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u043c \u0441\u0432\u043e\u0435 \u0432\u0438\u0434\u0435\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438 \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043e\u0442\u0432\u0435\u0442\u044f\u0442, \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e --&gt; &lt;div class=&quot;it_remote_wrapper&quot;&gt;     &lt;div class=&quot;it_remote_video&quot;&gt;&lt;\/div&gt; &lt;\/div&gt; &lt;!-- \u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448\u0435 \u0432\u0438\u0434\u0435\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043e\u0442\u0432\u0435\u0442\u044f\u0442--&gt; &lt;div class=&quot;it_local_video&quot;&gt;&lt;\/div&gt; &lt;!-- \u041e\u0442\u043c\u0435\u043d\u0430 \u0437\u0432\u043e\u043d\u043a\u0430 --&gt; &lt;div class=&quot;it_exit_link&quot;&gt;     &lt;i class=&quot;material-icons&quot;&gt;call_end&lt;\/i&gt; &lt;\/div&gt; &lt;!-- \u041f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0431\u0430\u043d\u043d\u0435\u0440 \u0432 \u0448\u0430\u043f\u043a\u0435 --&gt; &lt;div class=&quot;it_connecting&quot;&gt;     \u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c &lt;br&gt; \u0441 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u043e\u0439     &lt;br&gt;     \u0436\u0434\u0438\u0442\u0435 &lt;\/div&gt; &lt;!-- \u0417\u0432\u043e\u043d\u043e\u043a \u0433\u0443\u0434\u043a\u0430 --&gt; &lt;audio src=&quot;\/assets\/31800_81339-lq.mp3&quot; id=&quot;beeptone&quot; loop autoplay&gt;&lt;\/audio&gt; &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  <\/p>\n<h2> \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 <\/h2>\n<p>  <\/p>\n<pre><code class=\"html\">&lt;div class=&quot;mdl-layout mdl-js-layout&quot;&gt;     &lt;main class=&quot;mdl-layout__content&quot;&gt;         &lt;h1&gt;Please, wait incoming call.&lt;\/h1&gt;     &lt;\/main&gt;     &lt;div class=&quot;callpopup&quot;&gt;         &lt;div class=&quot;it_remote_wrapper&quot;&gt;             &lt;div class=&quot;it_remote_video&quot;&gt;&lt;\/div&gt;         &lt;\/div&gt;         &lt;div class=&quot;it_local_video&quot;&gt;&lt;\/div&gt;         &lt;div class=&quot;it_exit_link&quot;&gt;             &lt;i class=&quot;material-icons&quot;&gt;call_end&lt;\/i&gt;         &lt;\/div&gt;         &lt;div class=&quot;it_start_link&quot;&gt;             &lt;i class=&quot;material-icons&quot;&gt;call&lt;\/i&gt;         &lt;\/div&gt;         &lt;div class=&quot;it_connecting&quot;&gt;             Incoming call         &lt;\/div&gt;     &lt;\/div&gt; <\/code><\/pre>\n<p>  \u041e \u0432\u0435\u0440\u0441\u0442\u043a\u0435 \u043e\u0441\u043e\u0431\u043e \u043d\u0435\u0447\u0435\u0433\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c. \u042d\u0442\u043e \u0434\u0435\u043b\u043e \u0432\u043a\u0443\u0441\u0430 \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043d\u0430 Voximplant. <\/p>\n<pre><code class=\"javascript\">VoxEngine.forwardCallToUserDirect(function(call1,call2){     call2.addEventListener(CallEvents.InfoReceived,function(e){         call1.sendMessage(e.body);     }); },true); <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0437\u0432\u043e\u043d\u043e\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 P2P \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0447\u0430\u043b\u0435 \u0437\u0432\u043e\u043d\u043a\u0430. \u0422\u0443\u0442 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0437\u0432\u043e\u043d\u043e\u043a \u0438 \u0447\u0435\u043c \u044d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430.<\/p>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u0441\u0445\u0435\u043c\u0430 \u0442\u0430\u043a\u0430\u044f:  <\/p>\n<ul>\n<li>\u041f\u0430\u0432\u0435\u043b \u0410 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u041f\u0430\u0432\u043b\u0430 \u0411<\/li>\n<li>\u041f\u0430\u0432\u0435\u043b \u0411 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0432\u043e\u043d\u043e\u043a, \u043d\u043e \u043d\u0435 \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043c\u0435\u0434\u0438\u0430 \u043f\u043e\u0442\u043e\u043a\u0438<\/li>\n<li>\u041f\u0430\u0432\u0435\u043b \u0411 \u0432\u0438\u0434\u0435\u0442 \u041f\u0430\u0432\u043b\u0430 \u0410 \u0438 \u043d\u0430 \u0432\u0438\u0434 \u0440\u0435\u0448\u0430\u0435\u0442, \u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c<\/li>\n<li>\u041f\u0430\u0432\u0435\u043b \u0411 \u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0438 \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043c\u0435\u0434\u0438\u0430 \u043f\u043e\u0442\u043e\u043a\u0438 \u041f\u0430\u0432\u043b\u0443 \u0410<\/li>\n<li>\u2026 Renegotiation &#8230;<\/li>\n<li>PROFIT!<\/li>\n<\/ul>\n<p>  \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u2014 \u0432 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 renegotiation \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f WebSDK \u0438 \u043b\u043e\u0433\u0438\u043d. \u0414\u043b\u044f \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430.<\/p>\n<pre><code class=\"javascript\">var vox = VoxImplant.getInstance(); vox.init({micRequired: true,     videoSupport:true,     progressTone:true }); vox.addEventListener(VoxImplant.Events.SDKReady, function(){     vox.connect(); }); var call; vox.addEventListener(VoxImplant.Events.ConnectionEstablished,function(){     vox.showLocalVideo(true);     vox.login(settings.users[0].name+&quot;@&quot;+settings.app_name+&quot;.&quot;+settings.account_name+&quot;.voximplant.com&quot;,settings.users[0].pass);     vox.addEventListener(VoxImplant.Events.AuthResult,function(e){              }); }); <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u043d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d.<\/p>\n<pre><code class=\"javascript\">vox.showLocalVideo(true); var localvideo = document.querySelector('#voximplantlocalvideo');  document.querySelector('.it_remote_video').appendChild(localvideo); localvideo.style.height = &quot;100%&quot;;  localvideo.play(); \/\/\u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c play \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0438\u043d\u0430\u0447\u0435 \u0431\u043e\u043b\u044c \u0438 \u0431\u0430\u0433\u0438 <\/code><\/pre>\n<p>  \u0410 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043f\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435) \u043f\u0440\u0438\u0434\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0438 \u0437\u0432\u043e\u043d\u043a\u0430, \u043f\u043e\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u043c \u0432\u0438\u0434\u0435\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0430 \u0441\u0432\u043e\u0451 \u0432\u0438\u0434\u0435\u043e \u0443\u0431\u0435\u0440\u0435\u043c \u0432 \u0443\u0433\u043e\u043b.<\/p>\n<pre><code class=\"javascript\">call.addEventListener(VoxImplant.CallEvents.MessageReceived,function(e){     if(e.text==&quot;CONNECTED&quot;){         document.querySelector('.it_local_video').style.display = &quot;block&quot;;         document.querySelector('.it_local_video').appendChild(localvideo);         document.querySelector('.it_connecting').style.display = &quot;none&quot;;         localvideo.style.height = &quot;140px&quot;;         localvideo.style.marginLeft = &quot;-40px&quot;;         localvideo.play();         var remotevideo = document.getElementById(call.getVideoElementId());          document.querySelector('.it_remote_video').appendChild(remotevideo);         remotevideo.style.height = &quot;100%&quot;;         remotevideo.removeAttribute(&quot;height&quot;);         remotevideo.removeAttribute(&quot;width&quot;);           remotevideo.play();     } }); <\/code><\/pre>\n<p>  \u041d\u0443 \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0432\u043e\u043d\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435.<\/p>\n<pre><code class=\"javascript\">call = vox.call(settings.users[1].name,true); <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430.<\/p>\n<p>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0445\u0438\u0442\u0440\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u044b\u0437\u043e\u0432. \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0432\u0443\u043a \u0438 \u0432\u0438\u0434\u0435\u043e.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434 \u043f\u0440\u0438\u0435\u043c\u0430 \u0437\u0432\u043e\u043d\u043a\u0430.\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f SDK \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043e\u0442\u0432\u0435\u0442.<\/p>\n<pre><code class=\"javascript\">vox.addEventListener(VoxImplant.Events.IncomingCall,function(e){     e.call.sendAudio(false);     document.querySelector('.callpopup').style.display = 'block';     call = e.call;     call.answer();     call.addEventListener(VoxImplant.CallEvents.Connected,function () {         call.mutePlayback();         var remotevideo = document.getElementById(call.getVideoElementId());         document.querySelector('.it_remote_video').appendChild(remotevideo);         remotevideo.style.height = &quot;100%&quot;;         remotevideo.removeAttribute(&quot;height&quot;);         remotevideo.removeAttribute(&quot;width&quot;);         remotevideo.play();     });     call.addEventListener(VoxImplant.CallEvents.Disconnected,cancelCall);     call.addEventListener(VoxImplant.CallEvents.Disconnected,Failed);  }) <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u044b \u0433\u043b\u0443\u0448\u0438\u043c \u0437\u0432\u0443\u043a \u043e\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0427\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0438 \u00ab\u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c\u00bb \u0438 \u00ab\u041e\u0442\u0431\u043e\u0439\u00bb. <\/p>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u00ab\u041e\u0442\u0431\u043e\u044f\u00bb:<\/p>\n<pre><code class=\"javascript\">function cancelCall() {     if(typeof call!=&quot;undefined&quot;)         call.hangup();     document.querySelector('.it_remote_video').removeChild(document.querySelector('.it_remote_video').childNodes[0]);     document.querySelector('.it_connecting').style.display = &quot;block&quot;;     document.querySelector('.it_exit_link').style.marginLeft = '-110px';     document.querySelector('.it_start_link').style.display = 'block';     document.querySelector('.callpopup').style.display = 'none';     document.querySelector('.it_local_video').style.display = 'none'; } <\/code><\/pre>\n<p>  \u041a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041e\u0442\u0432\u0435\u0442\u0438\u0442\u044c\u00bb \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430. \u0412 \u0435\u0451 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043c\u0430\u0433\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0436\u043c\u0435\u0442 \u0435\u0451, \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043a sdk \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c renegotiation.<\/p>\n<pre><code class=\"javascript\">function answerCall(){     document.querySelector('.it_exit_link').style.marginLeft = '-40px';     document.querySelector('.it_start_link').style.display = 'none';     vox.showLocalVideo(true);     var localvideo = document.querySelector('#voximplantlocalvideo');     document.querySelector('.it_local_video').appendChild(localvideo);     document.querySelector('.it_local_video').style.display = 'block';     document.querySelector('.it_connecting').style.display = &quot;none&quot;;     localvideo.style.height = &quot;140px&quot;;     localvideo.style.marginLeft = &quot;-40px&quot;;     localvideo.play();     call.unmutePlayback();     call.sendAudio(true);     call.sendVideo(true);     call.sendMessage('CONNECTED'); } <\/code><\/pre>\n<p>  \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u0439 \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u2192 <a href=\"https:\/\/github.com\/voximplant\/demo_callstats.io\">github.com\/voximplant\/demo_callstats.io<\/a><br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code class=\"bash\">npm install npm start <\/code><\/pre>\n<p>  \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0441\u0442\u0438 \u0432\u0430\u0448<a href=\"https:\/\/manage.voximplant.com\/#apiaccess\"> api_key \u0438 account_id<\/a><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/315774\/\"> https:\/\/habrahabr.ru\/post\/315774\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/523\/da3\/185\/523da31857f648b396c3571a838a8361.jpg\"\/><\/p>\n<p>  \u0412\u0441\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u0438\u0432\u0435\u0442! <br \/>  \u041d\u0430 \u044d\u0442\u0438\u0445 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430 <a href=\"https:\/\/vk.com\/devfestsiberia\">DevFest Siberia 2016<\/a> \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c IoT \u0434\u043e\u043c\u043e\u0444\u043e\u043d\u0430. \u042d\u0442\u043e \u0431\u044b\u043b\u0430 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f. \u041d\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043d\u0435 \u043e \u043d\u0435\u0439. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u044f \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b, \u0447\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u043a\u0430\u043a \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 Knock Knock \u0438\u0437 Google DUO \u0432 \u0434\u043e\u043c\u043e\u0444\u043e\u043d\u0435.<\/p>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f <a href=\"https:\/\/support.google.com\/duo\/answer\/6376115?hl=ru\">\u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0442 Google<\/a>:<br \/>  \u00ab\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0432\u043e\u043d\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0443 \u0432 Duo, \u0430\u0431\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0430\u0448\u0435 \u0432\u0438\u0434\u0435\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u0447\u0438\u0441\u043b\u043e \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u00bb.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-281707","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=281707"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/281707\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=281707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=281707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=281707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}