Наверх
Подписаться

Настройка интеграции с Roistat

Содержание

 

Об интеграции

Интеграция с Roistat предназначена для передачи из Calltouch в Roistat информации о звонках. Синхронизация Calltouch и Roistat происходит в режиме реального времени - как только в личном кабинете Calltouch появляется звонок, информация по нему сразу же отправляется в Roistat.

 

Удаление стандартного скрипта Calltouch

Необходимо найти и удалить в коде сайта или GTM стандартный скрипт Calltouch, обычно он выглядет следующем образом:

<!-- Стандартный скрипт Calltouch -->
<script type="text/javascript">
(function (w, d, nv, ls){
var cid  = function () { try { var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null; var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/); if (!(m2 && m2.length > 1)) return null; return m2[1]} catch (err) {}}();
var ct = function (w, d, e, c, n){ var a = 'all', b = 'tou', src = b + 'c' + 'h';  src = 'm' + 'o' + 'd.c' + a + src;
    var jsHost = "https://" + src, p = d.getElementsByTagName(e)[0],s1 = d.createElement(e);
    s1.async = 1; s1.src = jsHost + "." + "r" + "u/d_client.js?param;" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170310}") + ";";
    if (!w.jQuery) { var jq = d.createElement(e); jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js'; jq.onload = function () { 
        p.parentNode.insertBefore(s1, p);};
        p.parentNode.insertBefore(jq, p);}else{
        p.parentNode.insertBefore(s1, p);}};
var gaid = function(w, d, o, ct, n){ if (!!o){ w.ct_timer = 0; w.ct_max_iter = (navigator.userAgent.match(/Opera|OPR\//) ? 10 : 20); w.ct_interval = setInterval(function(){
w.ct_timer++; if (w.ct_timer>=w.ct_max_iter) { clearInterval(w.ct_interval); ct(w, d, 'script', null, n); }},200);
w[o](function (){ var clId = null; try { var cnt = w[o] && w[o].getAll ? w[o].getAll() : null; clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null;} catch(e){ console.warn("Unable to get clientId, Error: "+e.message);} clearInterval(w.ct_interval); if(w.ct_timer < w.ct_max_iter){ct(w, d, 'script', clId, n);}});}else{ct(w, d, 'script', null, n);}};
if (cid === null && !!w.GoogleAnalyticsObject){
    if (w.GoogleAnalyticsObject=='ga_ckpr') w.ct_ga='ga'; else w.ct_ga = w.GoogleAnalyticsObject;
        if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1){new Promise(function (resolve) {var db, on = function () {  resolve(true)  }, off = function () {  resolve(false)}, tryls = function tryls() { try { ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) { nv.cookieEnabled ? on() : off(); }};w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm){
            if (pm){gaid(w, d, w.ct_ga, ct, 2);}else{gaid(w, d, w.ct_ga, ct, 3);}})}else{gaid(w, d, w.ct_ga, ct, 4);}
}else{ct(w, d, 'script', cid, 1);}})(window, document, navigator, localStorage);
</script>

Однако, в зависимости от версий, он может различаться. Найти любую из его версий в коде сайта можно по слову "d_client.js" без кавычек.

Обратите внимание! Если Вы используете более одного личного кабинета Calltouch для просмотра статистики в пределах одного сайта, например, когда на одном сайте подменяются сразу два номера в кодах 495 и 800 разными пулами номеров, на Вашем сайте используется нестандартный скрипт Calltouch. В этом случае, чтобы настроить интеграцию с Roistat, обратитесь в техническую поддержку info@calltouch.net, с просьбой выслать скрипт совместного подключения Calltouch и Roistat непосредственно для Вашего сайта.

 

Удаление стандартного скрипта Roistat

Аналогично предыдущему пункту необходимо найти и удалить в коде сайта или GTM стандартный скрипт Roistat:

<!-- Стандартный скрипт Roistat -->
<script>
(function(w, d, s, h, id) {
    w.roistatProjectId = id; w.roistatHost = h;
    var p = d.location.protocol == "https:" ? "https://" : "http://";
    var u = /^.*roistat_visit=[^;]+(.*)?$/.test(d.cookie) ? "/dist/module.js" : "/api/site/1.0/"+id+"/init";
    var js = d.createElement(s); js.async = 1; js.src = p+h+u; var js2 = d.getElementsByTagName(s)[0]; js2.parentNode.insertBefore(js, js2);
})(window, document, 'script', 'cloud.roistat.com', 'ID Вашего проекта в Roistat');
</script>

Где вместо ID Вашего проекта в Roistat - должен быть указан идентификатор Вашего проекта в Roistat, который может обозначаться как в открытом виде в качестве нескольких цифр (прежняя версия), так и в зашифрованном в качестве длинного сочетания букв и цифр (новая версия). Найти любую из версий скрипта в коде сайта можно по слову "cloud.roistat.com" без кавычек.

Прежде, чем удалить данный скрипт из кода, сохраните ID Вашего проекта в Roistat. Он понадобится Вам на следующем этапе.

 

Установка скрипта совместного подключения Calltouch и Roistat 

Вместо стандартных скриптов Calltouch и Roistat из двух этапов ранее, для интеграции данных сервисов необходимо установить на сайт объединенный скрипт совместного подключения:

<!-- Скрипт совместного подключения Calltouch и Roistat-->
<script type="text/javascript">
(function(w, d, s, h, id) {
    w.roistatProjectId = id; w.roistatHost = h;
    var p = d.location.protocol == "https:" ? "https://" : "http://";
    var u = /^.*roistat_visit=[^;]+(.*)?$/.test(d.cookie) ? "/dist/module.js" : "/api/site/1.0/"+id+"/init";
    var js = d.createElement(s); js.async = 1; js.src = p+h+u;
    var js2 = d.getElementsByTagName(s)[0]; js2.parentNode.insertBefore(js, js2);
})(window, document, 'script', 'cloud.roistat.com', 'ID Вашего проекта в Roistat');
 
window.onRoistatModuleLoaded = function() {
  window.roistat.registerOnVisitProcessedCallback(function() {
  (function (w, d, nv, ls){
var cid  = function () { try { var m1 = d.cookie.match('(?:^|;)\\s*_ga=([^;]*)');if (!(m1 && m1.length > 1)) return null; var m2 = decodeURIComponent(m1[1]).match(/(\d+\.\d+)$/); if (!(m2 && m2.length > 1)) return null; return m2[1]} catch (err) {}}();
var ct = function (w, d, e, c, n){ var a = 'all', b = 'tou', src = b + 'c' + 'h';  src = 'm' + 'o' + 'd.c' + a + src;
    var jsHost = "https://" + src, pp = d.getElementsByTagName(e)[0],s = d.createElement(e);
	s.async = 1; s.src = jsHost + "." + "r" + "u/d_client.js?param;" + (c ? "client_id" + c + ";" : "") + "ref" + escape(d.referrer) + ";url" + escape(d.URL) + ";cook" + escape(d.cookie) + ";attrs" + escape("{\"attrh\":" + n + ",\"ver\":170310,\"roistat_visit\":"+window.roistat.visit+"}") + ";";
    if (!w.jQuery) { var jq = d.createElement(e); jq.src = jsHost + "." + "r" + 'u/js/jquery-1.7.min.js'; jq.onload = function () {  
	    d.getElementsByTagName("head")[0].appendChild(s);};
		pp.parentNode.insertBefore(jq, pp);}else{
		pp.parentNode.insertBefore(s, pp);}};
var gaid = function(w, d, o, ct, n){ if (!!o){ w.ct_timer = 0; w.ct_max_iter = (navigator.userAgent.match(/Opera|OPR\//) ? 10 : 20); w.ct_interval = setInterval(function(){ 
w.ct_timer++; if (w.ct_timer>=w.ct_max_iter) { clearInterval(w.ct_interval); ct(w, d, 'script', null, n); }},200);
w[o](function (){ var clId = null; try { var cnt = w[o] && w[o].getAll ? w[o].getAll() : null; clId = cnt && cnt.length > 0 && !!cnt[0] && cnt[0].get ? cnt[0].get('clientId') : null;} catch(e){ console.warn("Unable to get clientId, Error: "+e.message);} clearInterval(w.ct_interval); if(w.ct_timer < w.ct_max_iter){ct(w, d, 'script', clId, n);}});}else{ct(w, d, 'script', null, n);}};
if (cid === null && !!w.GoogleAnalyticsObject){
    if (w.GoogleAnalyticsObject=='ga_ckpr') w.ct_ga='ga'; else w.ct_ga = w.GoogleAnalyticsObject;
        if (typeof Promise !== "undefined" && Promise.toString().indexOf("[native code]") !== -1){new Promise(function (resolve) {var db, on = function () {  resolve(true)  }, off = function () {  resolve(false)}, tryls = function tryls() { try { ls && ls.length ? off() : (ls.x = 1, ls.removeItem("x"), off());} catch (e) { nv.cookieEnabled ? on() : off(); }};w.webkitRequestFileSystem ? webkitRequestFileSystem(0, 0, off, on) : "MozAppearance" in d.documentElement.style ? (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off) : /constructor/i.test(w.HTMLElement) ? tryls() : !w.indexedDB && (w.PointerEvent || w.MSPointerEvent) ? on() : off();}).then(function (pm){
            if (pm){gaid(w, d, w.ct_ga, ct, 2);}else{gaid(w, d, w.ct_ga, ct, 3);}})}else{gaid(w, d, w.ct_ga, ct, 4);}
}else{ct(w, d, 'script', cid, 1);}})(window, document, navigator, localStorage);
  });
}
</script>

Где вместо ID Вашего проекта в Roistat аналогично предыдущему этапу должен быть указан идентификатор Вашего проекта в Roistat, который может обозначаться как в открытом виде в качестве нескольких цифр (прежняя версия), так и в зашифрованном в качестве длинного сочетания букв и цифр (новая версия). Просто вставьте ранее скопированное значение из предыдущего этапа.

 

Получение ключа API в Roistat

Для того, чтобы предоставить право Calltouch на передачу данных в Ваш личный кабинет Roistat, нам понадобиться специальный секретный ключ API из Roistat, узнать который Вы можете в разделе "Профиль => API" Вашего личного кабинета Roistat. Сохраните данный секрет ключ, он понадобится на следующем этапе.

 

Включение интеграции Calltouch и Roistat

Для включения интеграции необходимо отправить заявку в техническую поддержку Calltouch на нашу почту info@calltouch.net с просьбой включить интеграцию с Roistat. В письме необходимо обязательно указать:

  • Название Вашего сайта, подключенного к сервису Calltouch
  • ID Вашего проекта в Roistat (см. выше)
  • Ключ API Roistat (см. выше)

Активация интеграции после отправки заявки происходит в течении дня, по результатам мы обязательно сообщаем Вам. После активации интеграции, в истории вызовов личного кабинета Roistat в режиме реального времени будут появляться звонки, зафиксированные в Calltouch.

Обратите внимание! Отправлять заявку необходимо только уже заранее выполнив все этапы интеграции выше. В целях безопасности заявки принимаются только с почты владельца аккаунта Calltouch, в котором подключен Ваш сайт.

 

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос

0 Комментарии

Войдите в службу, чтобы оставить комментарий.