По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Сегодня подробно расскажем как найти практическое применение знаниям, полученным в статье про структуру asteriskcdrdb, а именно, как сделать ежедневные отчеты о входящих звонках на почту.
Создание скрипта
Чтобы наш .php скрипт смог подключиться к базе данных, необходимо создать пользователя, с правами, которые буду позволять ему извлекать необходимую информацию. Для этого, подключимся к нашему серверу по SSH
[root@asterisk]# mysql
mysql>CREATE USER ' user'@'localhost' IDENTIFIED BY 'P@ssw0rd';
На данном этапе мы создали пользователя user с паролем P@ssw0rd. Далее дадим ему необходимые права:
mysql> GRANT SELECT ON asteriskcdrdb.cdr TO 'user'
Создадим файл с расширением .php, в котором мы отразим подключение к нашей базе данных. Запишем эту конструкцию так:
$hostname = "localhost"; //адрес хоста. Скрипт мы будем запускать на той же машине, на которой находится БД asteriskcdrdb;
$username = "user"; //отражаем пользователя
$password = "P@ssw0rd"; //пароль для созданного нами пользователя
$dbName = "asteriskcdrdb"; //база данных, в которой хранятся необходимые нам данные
$today = date('y-m-d'); // сегодняшняя дата в формате 2016-03-25
$counter = 1; // счетчик
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); // соединиться к БД
mysql_select_db($dbName) or die(mysql_error()); //выбрать базу данных. Если произойдет ошибка - вывести ее
$headers = "; charset=windows-1251
"; //заголовок для письма
$headers .= "From: Мерион Нетворкс <info@merionet.ru>
";
$headers .= "Reply-To: info@merionet.ru
";
Предположим, что все входящие звонки приходят на номер секретаря – 100. Так же мы знаем, что при звонке из города, мы видим номер звонящего, который содержит в себе больше 3 символов (пусть у нас используется трехзначная внутренняя нумерация). Наша задача сводится к формулировке запроса к таблице cdr. Добавляем к нашему .php файлу:
$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` = '100';" ;
$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 таблицу, которая готова к отправке на почту. Добавим в конец скрипта:
mail("info@merionet.ru", 'Все входящие за '.$today.'', $mes, $headers);
ВАЖНО! Если вы используете кириллические символы, установите кодировку .php файла на Кириллицу (windows-1251)
Итак, готово. Давайте посмотрим что приходит нам на почту:
Работает. Давайте сделаем ежедневное задание на отработку этого скрипта через cron. Сделаем, например, ежедневно, в 17:30, когда рабочий день подходит к концу:
30 17 * * * php /home/admin/mail_report.php
Не забудьте в начала скрипта поставить открывающий тэг php, а в конце скрипта закрывающий.
По умолчанию, в дистрибутиве FreePBX Distro большинство лог – файлов Asterisk сконфигурированы на хранение в течение семи дней. Зачастую, пользователи жалуются на технические проблемы (недозвон, короткие гудки, обрыв и так далее) спустя недели, а порой и месяцы. Именно по этой причине, в статье расскажем как настроить хранение лог – файлов на более длительное время и как добавить сжатие для них, чтобы сохранить место на жестких дисках.
Настройка
За длительность хранения отвечает файл /etc/logrotate.d/asterisk. Давайте откроем его редактором vim и увеличим время хранения по нужным файла до 45 дней:
[root@asterisk ~]# vim /etc/logrotate.d/asterisk
И для файла /var/log/asterisk/freepbx_dbug меняем параметр rotate с 7 на 45:
/var/log/asterisk/freepbx_dbug{
daily
missingok
rotate 45 //меняем данное значение для увеличения времени хранения в днях;
notifempty
compress //добавляем параметр compress, для активации сжатия;
sharedscripts
create 0640 asterisk asterisk
}
Важно!: С увеличением времени хранения файлов, увеличивается и его объем, занимаемый на жестких дисках сервера. При добавлении параметра compress в конфигурационную секцию, файл будет сжиматься c помощью утилиты компрессии gzip
Как можно увидеть в нашем примере, для лог – файла /var/log/asterisk/freepbx_dbug выставлен параметр daily (ежедневно), который регламентирует значение параметра rotate. Это означает, что значение 45 будет интерпретировано днями. Если вы хотите указывать значение параметра rotate в месяцах, то укажите здесь вместо daily monthly (ежемесячно).
По завершению настроек сохраните их нажатием :x! + Enter - изменения вступят в силу.
В статье покажем, как настроить FXS шлюз Yeastar Neogate TA1600 в связке с IP - АТС Asterisk (для примера).
$dbName_ecom = "to-www_ecom";
$GoodID = "4103307288";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName_ecom) or die(mysql_error());
$query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';";
$res_ecom=mysql_query($query_ecom) or die(mysql_error());
$row_ecom = mysql_fetch_array($res_ecom);
echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧
Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽';
$dbName = "to-www_02";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
Базовая настройка
После того, как вы подключили шлюз к сети, открываем его web - интерфейс через браузер и вводим реквизиты подключения по умолчанию: логин admin и пароль password.
Как только подключились, нужно выполнить настройку статического IP - адреса у шлюза. Необходимо перейти на вкладку System → LAN Settings и настроить устройству статический IP адрес, как показано ниже:
Настройка SIP сервера (VoIP)
Прыгаем на вкладку Gateway → VoIP Server Settings ин настраиваем нашу IP - АТС. В нашем случае это Asterisk. Порядок настройки показан на скриншоте ниже:
Далее, настраиваем плечо в сторону Asterisk:
Server Name - Asterisk PBX;
Type - SIP;
Transport - UDP;
Hostname/IP - IP - адрес сервера Asterisk и порт, на котором он слушает SIP;
Domain - дублируем настройку выше;
Failover Hostname/IP - если у вас есть отказоустойчивая нода, укажите ее;
Сохраняем настройки и применяем их по кнопке Apply Changes.
Кстати, если вы все еще не уверены, что полностью понимаете разницу между FXS и FXO - у нас есть статья
Регистрация FXS порта
Теперь идем в настройки Port List. К первому порту нашего шлюза подключен аналоговый телефон, на котором мы настроим внутренний номер 115:
Настроить надо:
Caller ID Name - 115;
Caller ID Number - 115;
VoIP Server: - созданный нами ранее сервер;
User Name - 115;
Authentication Name - 115;
From User - 115;
Password - значение из поля Secret при настройке внутреннего номера в FreePBX;
Сохраняем настройки и применяем их по кнопке Apply Changes.
Проверка статуса
Перейдите во вкладку Status на шлюзе - должен гореть зеленый OK, прямо как у нас :)
Так же статус регистрации пира можно посмотреть командой asterisk -rx 'sip show peers' | grep 115. Профит!