Création d'un service de suivi d'appels simple, partie 2

Dans l' article précédent, nous avons implémenté la génération et la vérification de la présence du coockie utilisé pour remplacer le numéro sur la page, et également ajouté la journalisation des numéros affichés en référence à la source de transition. Cet article décrit le processus de création d'une interface de sortie d'informations sur les appels.

Mais d'abord, dans les fonctions getNumberFirstTime et generateuser_id , nous allons créer un coockie vers le domaine site-with-ct-code.ru avec une indication du chemin relatif afin que le code du même nom ne soit pas créé sur plusieurs pages du site avec le 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); //  } 

Journal des appels


Passons maintenant au journal des appels. C'est le cœur de nos fonctionnalités, selon la comparaison des appels entrants et l'affichage des numéros, les événements seront créés en GA, la génération de leads dans le CRM, l'envoi de lettres par e-mail, la représentation graphique, etc.

Il est entendu que nous avons accès aux informations sur les appels du PBX, ou la journalisation se produit en synchronisant le journal des appels sur les téléphones mobiles des gestionnaires avec une base de données externe, auquel cas une application sera nécessaire pour télécharger le journal des appels.

Attardons-nous sur l'option dans laquelle nous recevons rapidement un journal d'appels à jour pour les numéros que nous utilisons pour afficher sur le site et les avons mis dans le format utilisé par nous lors de la création du tableau des numéros dans l' article précédent .

Nous reflétons ces données dans la table des appels entrants .

 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; 

Correspondance des données du journal des appels


Tirez les données du tableau des numéros par numéro de téléphone et période de temps où le numéro était affiché sur le site et un appel a été effectué.

 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 

Maintenant, nous affichons les données reçues dans une plaque. Pour ce faire, créez le fichier ct-server.ru/info.php , dans lequel nous plaçons notre demande.

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

En conséquence, nous avons obtenu un tableau grâce auquel vous pouvez déterminer quel numéro était affiché sur le site au moment de l'appel.

image

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


All Articles