> Отправка отчета в теле письма:
> echo "select src, duration, calldate, billsec, disposition from cdr where calldate
> >= '2020-02-20 12:00:00' and calldate <= '2020-02-20 12:10:00' and length(src) >
> 3;" | mysql asteriskcdrdb | mutt -s "Report" user@example.com
> Отправка отчета во вложении:
> echo "select src, duration, calldate, billsec, disposition from cdr where calldate
> >= '2020-02-20 12:00:00' and calldate <= '2020-02-20 12:10:00' and length(src) >
> 3;" | mysql asteriskcdrdb > report.txt; mutt -s "Report" -a report.txt
> user@example.com Спасибо огромное! Очень удобно.
Я начал смотреть формирование таблицы через PHP:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$hostname = "localhost"; //адрес хоста. Скрипт мы будем запускать на той же машине, на которой находится БД asteriskcdrdb;
//$username = "ПользовательSQL";
// $password = "ПарольSQL";
$dbName = "asteriskcdrdb"; //база данных, в которой хранятся необходимые нам данные
$today = date('y-m-d'); // сегодняшняя дата в формате 2020-02-25
$counter = 1; // счетчик
mysql_connect($hostname) OR DIE("Не могу создать соединение "); // соединиться к БД
mysql_select_db($dbName) or die(mysql_error()); //выбрать базу данных. Если произойдет ошибка - вывести ее
$headers = "From: CDRPBX <почта@отКого>";
/*
$headers = "Content-type: text/html; charset=windows-1251 \r\n"; //заголовок для письма
$headers .= "From: CDRPBX <почта@отКого>\r\n";
$headers .= "Reply-To: почта@комуПисать\r\n";
*/
$query = "SELECT `dst` , `src` , `duration` , `dstchannel` , `calldate` , `disposition` FROM `cdr` WHERE `calldate` >='$today 00:00:00' AND `calldate` <='$today 23:59:59' AND LENGTH( `src` ) >3 AND `dst` = '469';" ;
//$query = "SELECT `dst` , `src` , `duration` , `dstchannel` , `calldate` , `disposition` FROM `cdr` WHERE `dst` = '469' AND LENGTH( `src` ) >3 AND `calldate` >='$today 00:00:00' AND `calldate` <='$today 23:59:59';" ;
$res=mysql_query($query) or die(mysql_error()); // Выполнить запрос. Если произойдет ошибка - вывести ее.
$number = mysql_num_rows($res); // Как много нашлось строк
//формируем шапку нашей таблицы со значениями
$mes .= '
table style="max-width: 575px;border-bottom:none; margin: 0 auto;border-spacing: inherit;">
thead>
tr style="border-bottom: 2px solid #05477c;">
th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Порядковый номер</th>
th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Дата</th>
th style="padding:10px; color: #fff; max-width: 100px;background:#05477c;">От кого</th>
th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Кому</th>
th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Статус звонка</th>
/tr>
/thead>';
//перебираем значения ассоциативного массива. Число элементов данного массива равно числу строк на выходе sql запроса
while ($row=mysql_fetch_array($res)) { $mes .= '
tbody>
tr style="width: 100px;">
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$counter.'</td>
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['calldate'].'</td>
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['src'].'</td>
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$row['dst'].'</td>
td style="padding:10px; text-align:center; border-bottom: 1px solid #eee; min-width: 120px; ">'.$row['disposition'].'</td>
/tr>';
$counter = $counter + 1;
}
//Теперь, мы храним в переменной $mes html таблицу, которая готова к отправке на почту.
$to = "<почта@комуОтчёт>";
$subject = 'OtchetCDRPBX'; // тема письма
$msg = "Все входящие за $today $mes\r\n";
mail($to, $subject, $msg, $headers);
?>
Но его надо доработать. Ищу ошибки.
Это позволит в дальнейшем выводить общее время вызовов - что очень важно.