Crear un servicio de seguimiento de llamadas simple, parte 2

En el artículo anterior, implementamos la generación y verificación de la presencia del coockie utilizado para sustituir el número en la página, además de agregar el registro de los números mostrados con referencia a la fuente de transición. Este artículo discutirá el proceso de creación de una interfaz para mostrar información sobre llamadas.

Pero primero, en las funciones getNumberFirstTime y generateuser_id , crearemos un coockie para el dominio site-with-ct-code.ru con una indicación de la ruta relativa para que el código del mismo nombre no se cree en varias páginas del sitio con el 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); //  } 

Registro de llamadas


Ahora pasemos al registro de llamadas. Este es el núcleo de nuestra funcionalidad, de acuerdo con la comparación de llamadas entrantes y la visualización de números, se crearán eventos en GA, generación de leads en CRM, envío de cartas a correos electrónicos, gráficos, etc.

Se supone que tenemos acceso a la información sobre las llamadas desde la central, o el registro se realiza sincronizando el registro de llamadas en los teléfonos móviles de los administradores con una base de datos externa, en cuyo caso se requerirá una aplicación para descargar el registro de llamadas.

Consideremos la opción en la que recibimos rápidamente un registro de llamadas actualizado para los números que usamos para mostrar en el sitio y los llevamos al formato que usamos al crear la tabla de números en el artículo anterior .

Reflejamos estos datos en la tabla entrante_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; 

Datos de registro de llamadas coincidentes


Extraiga los datos de la tabla de números por número de teléfono y período de tiempo cuando el número se mostró en el sitio y se realizó una llamada.

 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 

Ahora mostramos los datos recibidos en una placa. Para hacer esto, cree el archivo ct-server.ru/info.php , en el que colocamos nuestra solicitud.

 <?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; ?> 

Como resultado, obtuvimos una tabla mediante la cual puede determinar qué número se mostraba en el sitio en el momento de la llamada.

imagen

Source: https://habr.com/ru/post/475060/


All Articles