{"id":28921,"date":"2015-05-27T13:49:22","date_gmt":"2015-05-27T12:49:22","guid":{"rendered":"https:\/\/voipstudio.com\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti-2\/"},"modified":"2025-12-11T17:17:27","modified_gmt":"2025-12-11T17:17:27","slug":"kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti","status":"publish","type":"post","link":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/","title":{"rendered":"&#8222;Kliknij, aby zadzwoni\u0107&#8221; za pomoc\u0105 \u0142\u0105cznika JavaScript CTI"},"content":{"rendered":"\n<p>Jaki\u015b czas temu wprowadzili\u015bmy funkcj\u0119&nbsp;Click to Call z API VoIPstudio, kt\u00f3ra pozwala na tworzenie prostych interfejs\u00f3w u\u017cytkownika typu \u201eclick2call\u201d. Rozwi\u0105zanie ewoluowa\u0142o od innego&nbsp;<a href=\"http:\/\/level7systems.co.uk\/en\/click_to_call_with_php_sip\/\" target=\"_blank\" rel=\"noreferrer noopener\">starszego wpisu na blogu<\/a>, kt\u00f3ry wprowadzi\u0142 \u201ec2c\u201d z klas\u0105 PHP-SIP. Dzi\u015b chc\u0119 Wam pokaza\u0107 kolejny etap ewolucji wdro\u017cenia c2c: JavaScript CTI Connector pozwalaj\u0105cy na integracj\u0119 telefonii komputerowej (CTI) strony internetowej lub aplikacji klienta oraz VoIPstudio Cloud PBX.<\/p>\n\n\n\n<p>Ta integracja nie wymaga ju\u017c PHP ani \u017cadnych innych komponent\u00f3w po stronie serwera. Ca\u0142a implementacja napisana jest w j\u0119zyku JavaScript i mo\u017cna j\u0105 w prosty spos\u00f3b zintegrowa\u0107 z dowoln\u0105 aplikacj\u0105 obs\u0142uguj\u0105c\u0105 JavaScript w przegl\u0105darce internetowej.<\/p>\n\n\n\n<p>To og\u00f3lne z\u0142\u0105cze JavaScript CTI Connector opiera si\u0119 na najnowszych pracach, kt\u00f3re wykonali\u015bmy w celu integracji naszej&nbsp;<a href=\"https:\/\/appexchange.salesforce.com\/listingDetail?listingId=a0N3000000B5MTxEAN\" target=\"_blank\" rel=\"noreferrer noopener\">platformy Cloud PBX z Salesforce<\/a>&nbsp;i&nbsp;<a href=\"https:\/\/cloud.oracle.com\/marketplace\/listing\/3089596\/Level-7-Systems-Ltd\/VoIPstudio-CTI-Connector\" target=\"_blank\" rel=\"noreferrer noopener\">Oracle Sales Cloud<\/a>. Naszym g\u0142\u00f3wnym celem by\u0142o udost\u0119pnienie podobnej funkcjonalno\u015bci programistom pracuj\u0105cym nad dowolnymi aplikacjami internetowymi, kt\u00f3re mog\u0105 czerpa\u0107 korzy\u015bci z integracji VoIP (telefonii).<\/p>\n\n\n\n<p>Nasz CTI Connector jest w pewnym sensie podobny do&nbsp;<a href=\"http:\/\/www.webrtc.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">WebRTC<\/a>, poniewa\u017c oferuje bogat\u0105 komunikacj\u0119 w czasie rzeczywistym kontrolowan\u0105 przez przegl\u0105dark\u0119 internetow\u0105. Istnieje jednak kilka zasadniczych r\u00f3\u017cnic:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>dzia\u0142a we wszystkich przegl\u0105darkach internetowych (w chwili pisania tego tekstu WebRTC nie jest obs\u0142ugiwany przez przegl\u0105dark\u0119 Internet Explorer, co mo\u017ce ogranicza\u0107 jego wykorzystanie w aplikacjach biznesowych);<\/li><li>nie jest to technologia peer-to-peer i korzysta ze wszystkich zaawansowanych funkcjonalno\u015bci telefonicznych dost\u0119pnych w platformie VoIPstudio;<\/li><li>oferuje \u0142\u0105czno\u015b\u0107 z\/do sieci PSTN (tradycyjnego telefonu) \u201eod razu po wyj\u0119ciu z pude\u0142ka\u201d;<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">WYMAGANIA<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Strofa<\/h3>\n\n\n\n<p>Nasz Cti.Connector wymaga biblioteki XMPP dla JavaScript:&nbsp;<a href=\"http:\/\/strophe.im\/strophejs\" target=\"_blank\" rel=\"noreferrer noopener\">Strophe.js<\/a>&nbsp;\u2013 Strophe wykorzystuje BOSH (strumienie dwukierunkowe przez synchroniczny HTTP) do emulacji trwa\u0142ego, stanowego, dwukierunkowego po\u0142\u0105czenia z serwerem XMPP. Wi\u0119cej informacji o Strophe i XMPP mo\u017cna znale\u017a\u0107 w&nbsp;<a href=\"http:\/\/strophe.im\/strophejs\/doc\/1.2.0\/files\/strophe-js.html\" target=\"_blank\" rel=\"noreferrer noopener\">oficjalnej dokumentacji<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Konto Studio VoIP<\/h3>\n\n\n\n<p>Aby m\u00f3c przetestowa\u0107 nasz Connector, musisz za\u0142o\u017cy\u0107&nbsp;<a href=\"https:\/\/voipstudio.pl\/rejestracja\/\" target=\"_blank\" rel=\"noreferrer noopener\">konto pr\u00f3bne<\/a>&nbsp;\u2013 je\u015bli jeszcze go nie masz. Konto to oferuje wszystkie dost\u0119pne funkcjonalno\u015bci bezp\u0142atnie przez miesi\u0105c.<\/p>\n\n\n\n<p>VoIPstudio og\u0142osi\u0142o tak\u017ce ograniczon\u0105 czasowo ofert\u0119 dla spo\u0142eczno\u015bci programist\u00f3w \u2013 aby umo\u017cliwi\u0107 \u0142atwe testowanie CTI Connector, zaoferuje dodatkowe 5 dolar\u00f3w darmowego kredytu na po\u0142\u0105czenia wychodz\u0105ce i bezp\u0142atny numer przychodz\u0105cy w dowolnym z ponad 5000 miast w 50 krajach.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Z\u0141\u0104CZE<\/h2>\n\n\n\n<p>Zalecamy zapoznanie si\u0119 z nasz\u0105&nbsp;<a href=\"https:\/\/voipstudio.com\/en\/manual\/Admin_Integrations-CTI-Connector\" target=\"_blank\" rel=\"noreferrer noopener\">oficjaln\u0105 dokumentacj\u0105 Cti.Connector<\/a>&nbsp;w celu uzyskania szczeg\u00f3\u0142\u00f3w implementacji. W tym artykule chc\u0119 si\u0119 skupi\u0107 na wdro\u017ceniach i integracji.<\/p>\n\n\n\n<p>Najpierw musisz pobra\u0107 Cti.Connector z naszego&nbsp;<a href=\"https:\/\/github.com\/level7systems\/cti-connector\" target=\"_blank\" rel=\"noreferrer noopener\">repozytorium<\/a>&nbsp;i jego zale\u017cno\u015bci (&nbsp;<a href=\"http:\/\/strophe.im\/strophejs\/\" target=\"_blank\" rel=\"noreferrer noopener\">Strophe.js<\/a>&nbsp;).<\/p>\n\n\n\n<p><p>Aby zainstalowa\u0107 Cti.Connector w swojej aplikacji, wystarczy skopiowa\u0107\/wklei\u0107 nast\u0119puj\u0105ce linie kodu:<\/p> <pre>&lt;script src=\"\u201dhttps:\/\/cdnjs.cloudflare.com\/ajax\/libs\/strophe.js\/1.1.3\/strophe.min.js\u201d\" type=\"\u201dtext\/javascript\u201d\">&lt;\/script> &lt;script src=\"\u201djs\/cti-connector.js\u201d\" type=\"\u201dtext\/javascript\u201d\">&lt;\/script> <\/pre><\/p>\n\n\n\n<p>I to wszystko, czego potrzeba do integracji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tworzenie \u0142\u0105cznika CTI<\/h3>\n\n\n\n<p>Aby m\u00f3c komunikowa\u0107 si\u0119 z API VoIP Studio nale\u017cy utworzy\u0107 instancj\u0119 Cti.Connector z odpowiedni\u0105 konfiguracj\u0105, uwierzytelni\u0107 si\u0119 i po\u0142\u0105czy\u0107 z API XMPP.<\/p>\n\n\n\n<p>W tym celu nale\u017cy przekaza\u0107 tylko jeden parametr:&nbsp;<code>onMessage<\/code> do konstruktora Connectora. Ale przed wykonaniem tej&nbsp;<code>onMessage<\/code> funkcji wywo\u0142ania zwrotnego nale\u017cy zdefiniowa\u0107. Dla Ciebie i Twojej integracji jest to najwa\u017cniejsza cz\u0119\u015b\u0107, poniewa\u017c&nbsp;<code>onMessage<\/code> funkcja nas\u0142uchuje zdarze\u0144 Connector i mo\u017ce odpowiednio na nie reagowa\u0107.<\/p>\n\n\n\n<p><a href=\"https:\/\/voipstudio.com\/en\/manual\/Admin_Integrations-CTI-Connector#Connector%27s-Events\" target=\"_blank\" rel=\"noreferrer noopener\">Tutaj<\/a>&nbsp;znajdziesz wszystkie niezb\u0119dne informacje o zdarzeniach, kt\u00f3re wysy\u0142a Connector.<\/p>\n\n\n\n<p><pre>var onMessage = function(event) {     if (event.name === Cti.EVENT.LOGGED_IN) {         \/\/ ...     }     if (event.name === Cti.EVENT.READY) {         \/\/ ...     }     if (event.name === Cti.EVENT.RINGING) {         \/\/ ...     }     if (event.name === Cti.EVENT.CONNECTED) {         \/\/ ...     }     if (event.name === Cti.EVENT.ON_HOLD) {         \/\/ ...     }     if (event.name === Cti.EVENT.HUNGUP) {         \/\/ ...     }      } var connector = new Cti.Connector({     onMessage: onMessage }); <\/pre><\/p>\n\n\n\n<p><strong>Uwaga:<\/strong>&nbsp;Pami\u0119taj o dodaniu w\u0142asnej implementacji, kt\u00f3ra b\u0119dzie odpowiada\u0107 na wydarzenia, kt\u00f3rymi jeste\u015b zainteresowany.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Uwierzytelnianie<\/h3>\n\n\n\n<p>Teraz, gdy Connector jest ustawiony, mo\u017cemy uwierzytelni\u0107 si\u0119 i po\u0142\u0105czy\u0107 z API VoIP Studio przy u\u017cyciu danych uwierzytelniaj\u0105cych VoIP Studio (nazwa u\u017cytkownika i has\u0142o). Jest to tak proste, jak wywo\u0142anie metody logowania w instancji Connector z parametrami:<\/p>\n\n\n<pre>var username = \u201ctest@example.com\u201d,\n    password = \u201csecretpassword\u201d;\n\nconnector.login(username, password);\n<\/pre>\n\n\n<p>Po pomy\u015blnym uwierzytelnieniu Connector powinien wys\u0142a\u0107 zdarzenia:<br>*&nbsp;<code>Cti.EVENT.LOGGED_IN<\/code> co oznacza, \u017ce \u200b\u200bu\u017cytkownik zosta\u0142 zalogowany;<br>*&nbsp;<code>Cti.EVENT.READY<\/code> co oznacza, \u017ce \u200b\u200bpo\u0142\u0105czenie zosta\u0142o nawi\u0105zane.<\/p>\n\n\n\n<p>Mo\u017cemy tak\u017ce sprawdzi\u0107 czy u\u017cytkownik jest zalogowany i czy nawi\u0105zano po\u0142\u0105czenie wywo\u0142uj\u0105c&nbsp;<code>isConnected<\/code> metod\u0119:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">connector.isConnected();\n<\/pre>\n\n\n\n<p>Metoda ta mo\u017ce by\u0107 przydatna np. je\u015bli po od\u015bwie\u017ceniu strony chcesz sprawdzi\u0107 czy Connector jest pod\u0142\u0105czony.<\/p>\n\n\n\n<p>Aby wylogowa\u0107 si\u0119 i zamkn\u0105\u0107 metod\u0119 po\u0142\u0105czenia&nbsp;<code>logout<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">connector.logout();\n<\/pre>\n\n\n\n<p>Po wylogowaniu Connector wy\u015ble&nbsp;<code>Cti.EVENT.LOGGED_OUT<\/code>\u200b\u200b zdarzenie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Po\u0142\u0105czenia<\/h3>\n\n\n\n<p><strong>Wykonywanie po\u0142\u0105czenia<\/strong><\/p>\n\n\n\n<p>Po otrzymaniu&nbsp;<code>Cti.EVENT.READY<\/code> zdarzenia jeste\u015bmy gotowi do wykonywania po\u0142\u0105cze\u0144. Aby wykona\u0107 nowe po\u0142\u0105czenie telefoniczne nale\u017cy wywo\u0142a\u0107&nbsp;<code>call<\/code> metod\u0119 z parametrem numeru docelowego w&nbsp;<a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc2916.txt\" target=\"_blank\" rel=\"noreferrer noopener\">formacie E164<\/a>&nbsp;.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var miejsce docelowe = \"+123456789\";\n\nz\u0142\u0105cze.call(miejsce docelowe);\n<\/pre>\n\n\n\n<p>Nast\u0119pnie przez Connector zostan\u0105 wys\u0142ane nast\u0119puj\u0105ce zdarzenia:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>Cti.EVENT.INITIAL<\/code>\u2013 inicjalizacja po\u0142\u0105czenia<\/li><li><code>Cti.EVENT.ACCEPTED<\/code>\u2013 aby powiadomi\u0107, \u017ce rozm\u00f3wca odbierze telefon;<\/li><li><code>Cti.EVENT.RINGING<\/code>\u2013 aby powiadomi\u0107, \u017ce po\u0142\u0105czenie jest nawi\u0105zywane i dzwoni telefon rozm\u00f3wcy;<\/li><li><code>Cti.EVENT.CONNECTED<\/code>\u2013 aby powiadomi\u0107, \u017ce odbiorca odebra\u0142 po\u0142\u0105czenie i po\u0142\u0105czenie zosta\u0142o nawi\u0105zane.<\/li><\/ul>\n\n\n\n<p><strong>Uwaga:<\/strong>&nbsp;Ka\u017cde zdarzenie ma unikalny identyfikator wywo\u0142ania, kt\u00f3rego nale\u017cy u\u017cywa\u0107 do identyfikowania przysz\u0142ych zmian wywo\u0142a\u0144.<\/p>\n\n\n\n<p><strong>Przekazywanie po\u0142\u0105czenia<\/strong><\/p>\n\n\n\n<p>Rozpocz\u0119te po\u0142\u0105czenie mo\u017cna przenie\u015b\u0107 lub zako\u0144czy\u0107. Aby przekierowa\u0107 po\u0142\u0105czenie do innego miejsca docelowego nale\u017cy wywo\u0142a\u0107&nbsp;<code>transfer<\/code> metod\u0119 na instancji Connector z&nbsp;<code>callId<\/code> parametrem (w celu okre\u015blenia kt\u00f3re po\u0142\u0105czenie ma zosta\u0107 przekazane) oraz parametrem numeru docelowego w formacie E164:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var callId = \"1432549154470\",\n    miejsce docelowe = \"+987654321\";\n\nz\u0142\u0105cze.transfer(id po\u0142\u0105czenia, miejsce docelowe);\n<\/pre>\n\n\n\n<p>Po przekazaniu po\u0142\u0105czenia Connector wy\u015ble&nbsp;<code>Cti.EVENT.HANGUP<\/code> \u200b\u200bzdarzenie z potwierdzeniem pomy\u015blnej operacji.<\/p>\n\n\n\n<p><strong>Zako\u0144czenie po\u0142\u0105czenia<\/strong><\/p>\n\n\n\n<p>Aby zako\u0144czy\u0107 dane wywo\u0142anie musimy wywo\u0142a\u0107&nbsp;<code>terminate<\/code> metod\u0119 z&nbsp;<code>callId<\/code> parametrem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var callId = \"1432549154470\",\n\nz\u0142\u0105cze.terminate(identyfikator po\u0142\u0105czenia);\n<\/pre>\n\n\n\n<p>Po zako\u0144czeniu po\u0142\u0105czenia Connector wy\u015ble&nbsp;<code>Cti.EVENT.HANGUP<\/code>\u200b\u200b zdarzenie z potwierdzeniem pomy\u015blnej operacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Obs\u0142uga b\u0142\u0119d\u00f3w<\/h3>\n\n\n\n<p>W niekt\u00f3rych przypadkach Connector mo\u017ce wys\u0142a\u0107&nbsp;<code>Cti.EVENT.ERROR<\/code> zdarzenie, np. gdy podczas uwierzytelniania przeka\u017cemy b\u0142\u0119dn\u0105 nazw\u0119 u\u017cytkownika i has\u0142o lub gdy przeka\u017cemy do&nbsp;<code>call<\/code> metody nieprawid\u0142owy numer docelowy.<\/p>\n\n\n\n<p>Takie zdarzenia powinny by\u0107 obs\u0142ugiwane w wywo\u0142aniu zwrotnym funkcji onMessage:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var onMessage = funkcja (zdarzenie) {\n\n    if (nazwa.zdarzenia === Cti.EVENT.ERROR) {\n        \/\/ ka\u017cde zdarzenie b\u0142\u0119du ma odpowiedni atrybut komunikatu\n        alert(zdarzenie.wiadomo\u015b\u0107);\n    }\n}\n<\/pre>\n\n\n\n<p>Wszystkie szczeg\u00f3\u0142y wdro\u017cenia znajdziesz w naszej dokumentacji (https:\/\/voipstudio.com\/en\/manual\/Admin_Integrations-CTI-Connector).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SZYBKI START PLATFORMY CTI.PLATFORM<\/h2>\n\n\n\n<p>Zach\u0119camy do zapoznania si\u0119 z nasz\u0105 przyk\u0142adow\u0105 realizacj\u0105:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Zarejestruj konto na stronie&nbsp;<a href=\"https:\/\/voipstudio.com\/en\/register\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/voipstudio.pl\/rejestracja\/<\/a><\/li><li>Pobierz i uruchom softphone&nbsp;<a href=\"https:\/\/voipstudio.pl\/pobieranie\/\">https:\/\/voipstudio.pl\/pobieranie\/<\/a> (lub u\u017cyj dowolnego innego klienta SIP)<\/li><li>Wyci\u0105gnij z\u0142\u0105cze cti z&nbsp;<a href=\"https:\/\/github.com\/level7systems\/cti-connector\" target=\"_blank\" rel=\"noreferrer noopener\">Githuba<\/a>&nbsp;na sw\u00f3j komputer<\/li><li>Otw\u00f3rz plik example\/cti-connector.html w swojej przegl\u0105darce internetowej<\/li><li>Zaloguj si\u0119 za pomoc\u0105 adresu e-mail i has\u0142a VoIPstudio<\/li><li>Wpisz numer, pod kt\u00f3ry chcesz zadzwoni\u0107<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">POMOC<\/h2>\n\n\n\n<p>Je\u015bli napotkasz jakiekolwiek problemy, znajdziesz b\u0142\u0105d lub masz pomys\u0142 na rozszerzenie funkcjonalno\u015bci CTI Connector, otw\u00f3rz zg\u0142oszenie&nbsp;<a href=\"https:\/\/github.com\/level7systems\/cti-connector\/issues\" target=\"_blank\" rel=\"noreferrer noopener\">na Githubie<\/a>, a jeden z naszych programist\u00f3w wkr\u00f3tce odpowie.<\/p>\n\n\n\n<p>Powodzenia z integracj\u0105!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jaki\u015b czas temu wprowadzili\u015bmy funkcj\u0119&nbsp;Click to Call z API VoIPstudio, kt\u00f3ra pozwala na tworzenie prostych interfejs\u00f3w u\u017cytkownika typu \u201eclick2call\u201d. Rozwi\u0105zanie ewoluowa\u0142o od [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":37570,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[293],"tags":[],"class_list":["post-28921","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologia-i-innowacje"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>&quot;Kliknij, aby zadzwoni\u0107&quot; za pomoc\u0105 \u0142\u0105cznika JavaScript CTI &#183; VoIPstudio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"&quot;Kliknij, aby zadzwoni\u0107&quot; za pomoc\u0105 \u0142\u0105cznika JavaScript CTI\" \/>\n<meta property=\"og:description\" content=\"Jaki\u015b czas temu wprowadzili\u015bmy funkcj\u0119&nbsp;Click to Call z API VoIPstudio, kt\u00f3ra pozwala na tworzenie prostych interfejs\u00f3w u\u017cytkownika typu \u201eclick2call\u201d. Rozwi\u0105zanie ewoluowa\u0142o od [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/\" \/>\n<meta property=\"og:site_name\" content=\"VoIPstudio\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/voipstudio\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-27T12:49:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-11T17:17:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/voipstudio.com\/wp-content\/uploads\/vanity-numbers.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Peter Stopyra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@voipstudio\" \/>\n<meta name=\"twitter:site\" content=\"@voipstudio\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Peter Stopyra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/\"},\"author\":{\"name\":\"Peter Stopyra\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#\\\/schema\\\/person\\\/38695d7cddabffec3bdd0a4daebeeeaf\"},\"headline\":\"&#8222;Kliknij, aby zadzwoni\u0107&#8221; za pomoc\u0105 \u0142\u0105cznika JavaScript CTI\",\"datePublished\":\"2015-05-27T12:49:22+00:00\",\"dateModified\":\"2025-12-11T17:17:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/\"},\"wordCount\":1117,\"publisher\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/voipstudio.com\\\/wp-content\\\/uploads\\\/vanity-numbers.png\",\"articleSection\":[\"Technologia i Innowacje\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/\",\"url\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/\",\"name\":\"\\\"Kliknij, aby zadzwoni\u0107\\\" za pomoc\u0105 \u0142\u0105cznika JavaScript CTI &#183; VoIPstudio\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/voipstudio.com\\\/wp-content\\\/uploads\\\/vanity-numbers.png\",\"datePublished\":\"2015-05-27T12:49:22+00:00\",\"dateModified\":\"2025-12-11T17:17:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/#primaryimage\",\"url\":\"https:\\\/\\\/voipstudio.com\\\/wp-content\\\/uploads\\\/vanity-numbers.png\",\"contentUrl\":\"https:\\\/\\\/voipstudio.com\\\/wp-content\\\/uploads\\\/vanity-numbers.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"&#8220;Kliknij, aby zadzwoni\u0107&#8221; za pomoc\u0105 \u0142\u0105cznika JavaScript CTI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#website\",\"url\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/\",\"name\":\"VoIPstudio\",\"description\":\"Business communications for modern teams\",\"publisher\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#organization\",\"name\":\"VoIPstudio\",\"url\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/voipstudio.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/voipstudio_logo_black-1.png\",\"contentUrl\":\"https:\\\/\\\/voipstudio.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/voipstudio_logo_black-1.png\",\"width\":1961,\"height\":379,\"caption\":\"VoIPstudio\"},\"image\":{\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/voipstudio\",\"https:\\\/\\\/x.com\\\/voipstudio\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/voipstudio-com\\\/\"],\"description\":\"A limited company registered in England under company number 6978512, whose registered address is Gable House, 18-24 Turnham Green Terrace, W4 1QP London, United Kingdom.\",\"email\":\"marketing@voipstudio.com\",\"telephone\":\"+44 203 432 9230\",\"legalName\":\"Level 7 Systems\",\"foundingDate\":\"2009-08-03\",\"vatID\":\"GB982288750\",\"taxID\":\"6978512\",\"iso6523Code\":\"A8087849\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/#\\\/schema\\\/person\\\/38695d7cddabffec3bdd0a4daebeeeaf\",\"name\":\"Peter Stopyra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6230f61c4301b873228209e2e380b4780329783024ee9f745be554762edc137a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6230f61c4301b873228209e2e380b4780329783024ee9f745be554762edc137a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6230f61c4301b873228209e2e380b4780329783024ee9f745be554762edc137a?s=96&d=mm&r=g\",\"caption\":\"Peter Stopyra\"},\"url\":\"https:\\\/\\\/voipstudio.com\\\/pl\\\/blog\\\/author\\\/peter\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\"Kliknij, aby zadzwoni\u0107\" za pomoc\u0105 \u0142\u0105cznika JavaScript CTI &#183; VoIPstudio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/","og_locale":"pl_PL","og_type":"article","og_title":"\"Kliknij, aby zadzwoni\u0107\" za pomoc\u0105 \u0142\u0105cznika JavaScript CTI","og_description":"Jaki\u015b czas temu wprowadzili\u015bmy funkcj\u0119&nbsp;Click to Call z API VoIPstudio, kt\u00f3ra pozwala na tworzenie prostych interfejs\u00f3w u\u017cytkownika typu \u201eclick2call\u201d. Rozwi\u0105zanie ewoluowa\u0142o od [&hellip;]","og_url":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/","og_site_name":"VoIPstudio","article_publisher":"https:\/\/www.facebook.com\/voipstudio","article_published_time":"2015-05-27T12:49:22+00:00","article_modified_time":"2025-12-11T17:17:27+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/voipstudio.com\/wp-content\/uploads\/vanity-numbers.png","type":"image\/png"}],"author":"Peter Stopyra","twitter_card":"summary_large_image","twitter_creator":"@voipstudio","twitter_site":"@voipstudio","twitter_misc":{"Napisane przez":"Peter Stopyra","Szacowany czas czytania":"4 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/#article","isPartOf":{"@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/"},"author":{"name":"Peter Stopyra","@id":"https:\/\/voipstudio.com\/pl\/#\/schema\/person\/38695d7cddabffec3bdd0a4daebeeeaf"},"headline":"&#8222;Kliknij, aby zadzwoni\u0107&#8221; za pomoc\u0105 \u0142\u0105cznika JavaScript CTI","datePublished":"2015-05-27T12:49:22+00:00","dateModified":"2025-12-11T17:17:27+00:00","mainEntityOfPage":{"@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/"},"wordCount":1117,"publisher":{"@id":"https:\/\/voipstudio.com\/pl\/#organization"},"image":{"@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/#primaryimage"},"thumbnailUrl":"https:\/\/voipstudio.com\/wp-content\/uploads\/vanity-numbers.png","articleSection":["Technologia i Innowacje"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/","url":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/","name":"\"Kliknij, aby zadzwoni\u0107\" za pomoc\u0105 \u0142\u0105cznika JavaScript CTI &#183; VoIPstudio","isPartOf":{"@id":"https:\/\/voipstudio.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/#primaryimage"},"image":{"@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/#primaryimage"},"thumbnailUrl":"https:\/\/voipstudio.com\/wp-content\/uploads\/vanity-numbers.png","datePublished":"2015-05-27T12:49:22+00:00","dateModified":"2025-12-11T17:17:27+00:00","breadcrumb":{"@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/#primaryimage","url":"https:\/\/voipstudio.com\/wp-content\/uploads\/vanity-numbers.png","contentUrl":"https:\/\/voipstudio.com\/wp-content\/uploads\/vanity-numbers.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/voipstudio.com\/pl\/blog\/kliknij-aby-zadzwonic-za-pomoca-lacznika-javascript-cti\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/voipstudio.com\/pl\/"},{"@type":"ListItem","position":2,"name":"&#8220;Kliknij, aby zadzwoni\u0107&#8221; za pomoc\u0105 \u0142\u0105cznika JavaScript CTI"}]},{"@type":"WebSite","@id":"https:\/\/voipstudio.com\/pl\/#website","url":"https:\/\/voipstudio.com\/pl\/","name":"VoIPstudio","description":"Business communications for modern teams","publisher":{"@id":"https:\/\/voipstudio.com\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/voipstudio.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/voipstudio.com\/pl\/#organization","name":"VoIPstudio","url":"https:\/\/voipstudio.com\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/voipstudio.com\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/voipstudio.com\/wp-content\/uploads\/2025\/07\/voipstudio_logo_black-1.png","contentUrl":"https:\/\/voipstudio.com\/wp-content\/uploads\/2025\/07\/voipstudio_logo_black-1.png","width":1961,"height":379,"caption":"VoIPstudio"},"image":{"@id":"https:\/\/voipstudio.com\/pl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/voipstudio","https:\/\/x.com\/voipstudio","https:\/\/www.linkedin.com\/company\/voipstudio-com\/"],"description":"A limited company registered in England under company number 6978512, whose registered address is Gable House, 18-24 Turnham Green Terrace, W4 1QP London, United Kingdom.","email":"marketing@voipstudio.com","telephone":"+44 203 432 9230","legalName":"Level 7 Systems","foundingDate":"2009-08-03","vatID":"GB982288750","taxID":"6978512","iso6523Code":"A8087849","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/voipstudio.com\/pl\/#\/schema\/person\/38695d7cddabffec3bdd0a4daebeeeaf","name":"Peter Stopyra","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/6230f61c4301b873228209e2e380b4780329783024ee9f745be554762edc137a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6230f61c4301b873228209e2e380b4780329783024ee9f745be554762edc137a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6230f61c4301b873228209e2e380b4780329783024ee9f745be554762edc137a?s=96&d=mm&r=g","caption":"Peter Stopyra"},"url":"https:\/\/voipstudio.com\/pl\/blog\/author\/peter\/"}]}},"_links":{"self":[{"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/posts\/28921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/comments?post=28921"}],"version-history":[{"count":1,"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/posts\/28921\/revisions"}],"predecessor-version":[{"id":29288,"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/posts\/28921\/revisions\/29288"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/media\/37570"}],"wp:attachment":[{"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/media?parent=28921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/categories?post=28921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/voipstudio.com\/pl\/wp-json\/wp\/v2\/tags?post=28921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}