В предыдущей статье мы реализовали генерацию и проверку наличия coockie, используемой для подстановки номера на странице, а так же добавили логирование отображаемых номеров с привязкой к источнику перехода. В этой статье будет рассмотрен процесс создания интерфейса вывода информации о звонках.
Но сначала привяжем в функциях getNumberFirstTime и generateuser_id создание coockie к домену site-with-ct-code.ru с указанием относительного пути для того, чтобы при дальнейшем выполнении кода на нескольких страницах сайта не создавалась одноименная coockie.
Теперь обратимся к журналу вызовов. Это ядро нашего функционала, по сопоставлению входящих вызовов и отображению номеров будет происходить создание событий в GA, генерация лида в CRM, отправка письма на почту, вывод графиков и т.п.
Подразумевается, что у нас есть доступ к информации о звонках из ВАТС, либо логирование происходит путем синхронизации журнала вызовов на мобильных телефонах менеджеров с внешней базой, в этом случае для реализации потребуется приложение, позволяющие выгружать журнал вызовов.
Остановимся на варианте, при котором мы оперативно получаем актуальный журнал вызовов на номера, используемые нами для отображения на сайте и привели их в формат, используемый нами при создании таблицы numbers в предыдущей статье.
Отразим эти данные в таблице incoming_calls.
Подтянем данные из таблицы numbers по номеру телефона и временному отрезку, когда номер отображался на сайте и осуществлялся вызов.
Теперь выведем полученные данные в табличку. Для этого создадим файл ct-server.ru/info.php, в который поместим наш запрос.
В итоге мы получили таблицу, по которой можно определить какой номер отображался на сайте в момент звонка.

Но сначала привяжем в функциях getNumberFirstTime и generateuser_id создание coockie к домену site-with-ct-code.ru с указанием относительного пути для того, чтобы при дальнейшем выполнении кода на нескольких страницах сайта не создавалась одноименная coockie.
function getNumberFirstTime() {
//..........
var t = xhr.responseText;
var path = '/';
var domain = '.site-with-ct-code.ru';
document.getElementById("calltracking").innerHTML = t;
setcookie("phone", t, new Date().getTime() + 60 * 60 * 1000, path, domain); // час
};
}
function generateuser_id() {
var ct_user_id = makeid(33);
var path = '/';
var domain = '.site-with-ct-code.ru';
setcookie("ct_user", ct_user_id, new Date().getTime() + 60 * 60 * 1000, path, domain); // час
}
Журнал Вызовов
Теперь обратимся к журналу вызовов. Это ядро нашего функционала, по сопоставлению входящих вызовов и отображению номеров будет происходить создание событий в GA, генерация лида в CRM, отправка письма на почту, вывод графиков и т.п.
Подразумевается, что у нас есть доступ к информации о звонках из ВАТС, либо логирование происходит путем синхронизации журнала вызовов на мобильных телефонах менеджеров с внешней базой, в этом случае для реализации потребуется приложение, позволяющие выгружать журнал вызовов.
Остановимся на варианте, при котором мы оперативно получаем актуальный журнал вызовов на номера, используемые нами для отображения на сайте и привели их в формат, используемый нами при создании таблицы numbers в предыдущей статье.
Отразим эти данные в таблице incoming_calls.
CREATE TABLE `incoming_calls` (
`id` int(11) NOT NULL,
`client_number` varchar(200) NOT NULL,
`phone_number` varchar(200) NOT NULL,
`time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`end_call` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `incoming_calls` (`id`, `client_number`, `phone_number`, `time`, `end_call`) VALUES
(1, '78123456789', '78000000005', '2019-11-01 17:33:10', '2019-11-01 17:43:32'),
(4, '79876543210', '78000000004', '2019-11-05 11:52:54', '2019-11-05 11:53:40'),
(5, '78888888888', '78000000005', '2019-11-01 18:37:44', '2019-11-01 18:38:43');
ALTER TABLE `incoming_calls`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id` (`id`);
ALTER TABLE `incoming_calls`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;COMMIT;
Сопоставление данных с журналом вызовов
Подтянем данные из таблицы numbers по номеру телефона и временному отрезку, когда номер отображался на сайте и осуществлялся вызов.
SELECT numbers.id, incoming_calls.time AS time_when_call_start, incoming_calls.end_call AS time_when_call_end, numbers.time AS time_when_phone_show, numbers.phone AS number FROM numbers
INNER JOIN incoming_calls ON numbers.phone = incoming_calls.phone_number
WHERE numbers.time BETWEEN incoming_calls.time AND incoming_calls.end_call GROUP by time_when_call_start
Теперь выведем полученные данные в табличку. Для этого создадим файл ct-server.ru/info.php, в который поместим наш запрос.
<?php
$pdo = new PDO('mysql:host=localhost;dbname=calltracking', 'root', '');
$sql = "SELECT numbers.id, incoming_calls.time AS time_when_call_start, incoming_calls.end_call AS time_when_call_end, numbers.time AS time_when_phone_show, numbers.phone AS number FROM numbers
INNER JOIN incoming_calls ON numbers.phone = incoming_calls.phone_number
WHERE numbers.time BETWEEN incoming_calls.time AND incoming_calls.end_call";
$st = $pdo->prepare($sql);
$st->execute();
$result = $st->fetchAll(PDO::FETCH_NUM);
echo "<table border = '1'><tr><th>time_when_call_start</th><th>time_when_call_end</th><th>time_when_phone_show</th><th>number</th></tr>";
foreach($result as $row){
echo "<tr><td>{$row[1]}</td><td>{$row[2]}</td><td>{$row[3]}</td><td>{$row[4]}</td></tr>";
}
echo "</table>";
$pdo = null;
?>
В итоге мы получили таблицу, по которой можно определить какой номер отображался на сайте в момент звонка.
