创建简单的呼叫跟踪服务,第2部分

上一篇文章中,我们实现了用于替换页面上数字的coockie的生成和验证,并且还添加了参考转换源来记录显示的数字的记录。 本文将讨论创建呼叫信息输出接口的过程。

但是首先,在getNumberFirstTimegenerateuser_id函数中, 我们将创建一个到site-with-ct-code.ru域的Coockie,并带有相对路径的指示,这样就不会在具有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中生成潜在客户,将信件发送到电子邮件,以图形显示等。

可以理解,我们可以访问来自PBX的呼叫信息,或者通过将管理器移动电话上的呼叫日志与外部数据库同步来进行记录,在这种情况下,将需要一个应用程序来下载呼叫日志。

让我们详细介绍一下该选项,在该选项中,我们会迅速收到有关我们使用的号码的最新呼叫日志,以便在网站上显示这些号码,并将其设置为上一篇文章中创建号码表时使用的格式。

我们将此数据反映在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; 

匹配通话记录数据


当电话号码显示在网站上并拨打电话时,按电话号码和时间段从电话号码表中提取数据。

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

结果,我们得到了一个表格,您可以通过该表格确定通话时在网站上显示了哪个号码。

图片

Source: https://habr.com/ru/post/zh-CN475060/


All Articles