Вплетение мессенджеров в бизнес становится повсеместным. Не будем отставать от трендов и научим свою офисную IP – АТС Asterisk отправлять ежедневные отчеты по звонкам (пропущенные/отвеченные) в групповой Telegram – чат. Начинаем.


Создание Telegram – бота для Asterisk

Cоздаем бота в Телеграме. Воспользуйтесь нашим пошаговым материалом по созданию бота, который доступен по ссылке ниже.

Выполнив все шаги, которые указаны в пункте «Создание бота в Telegram» — возвращайтесь сюда и переходите к следующему шагу.


PHP — скрипт

Скрипт, который будет отвечать за отправку отчетности в Telegram будет написан на php. Код представлен ниже. Комментарии указаны после решетки #:

<?php
#выводим дату в адекватном формате;
function rus_date() {
    $translate = array(
    "am" => "дп",
    "pm" => "пп",
    "AM" => "ДП",
    "PM" => "ПП",
    "Monday" => "Понедельник",
    "Mon" => "Пн",
    "Tuesday" => "Вторник",
    "Tue" => "Вт",
    "Wednesday" => "Среда",
    "Wed" => "Ср",
    "Thursday" => "Четверг",
    "Thu" => "Чт",
    "Friday" => "Пятница",
    "Fri" => "Пт",
    "Saturday" => "Суббота",
    "Sat" => "Сб",
    "Sunday" => "Воскресенье",
    "Sun" => "Вс",
    "January" => "января",
    "Jan" => "Янв",
    "February" => "февраля",
    "Feb" => "Фев",
    "March" => "марта",
    "Mar" => "Мар",
    "April" => "апреля",
    "Apr" => "Апр",
    "May" => "мая",
    "May" => "Мая",
    "June" => "июня",
    "Jun" => "Июн",
    "July" => "июля",
    "Jul" => "Июл",
    "August" => "августа",
    "Aug" => "Авг",
    "September" => "сентября",
    "Sep" => "Сен",
    "October" => "октября",
    "Oct" => "Окт",
    "November" => "ноября",
    "Nov" => "Ноя",
    "December" => "декабря",
    "Dec" => "Дек",
    "st" => "ое",
    "nd" => "ое",
    "rd" => "е",
    "th" => "ое"
    );
    
    if (func_num_args() > 1) {
        $timestamp = func_get_arg(1);
        return strtr(date(func_get_arg(0), $timestamp), $translate);
    } else {
        return strtr(date(func_get_arg(0)), $translate);
    }
}
#формируем переменные: 
$hostname = "localhost"; #на каком хосте располагается Asterisk; 
$username = "имя_пользователя"; #имя созданного пользователя, который имеет доступ к БД;
$password = "пароль_пользователя"; #пароль, указанного пользователя;
$dbName = "asteriskcdrdb"; #оставляем без изменений;
$token = "Telegram_API"; #ваш API - токен для доступа к Telegram - боту;
$chat_id = "чат_ID"; #идентификатор чата;
$today = date('y-m-d'); #сегодняшняя дата в подходящем формате (y-m-d);
$did = "номер_DID"; #ваш номер на который звонят клиенты (DID). Например, 74996491913;
$noanswer = 0; #переменная, в которую мы будем записывать количество неотвеченных вызовов;
#парсим данные через SQL по звонкам
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
$query = "SELECT DISTINCT `clid` ,`dst` ,`duration` , `dstchannel` , `calldate` , `disposition` FROM `cdr` WHERE `calldate` >='$today 00:00:00' AND `calldate` <='$today 23:59:59' AND `did` = '$did' GROUP BY `clid`;" ; 
$res=mysql_query($query) or die(mysql_error());
$number = mysql_num_rows($res);
while ($row=mysql_fetch_array($res)) {
if ($row['disposition'] == 'NO ANSWER') $noanswer = $noanswer + 1; }
#Оправляем в телеграм
if ($noanswer != 0) {$percentage = round(100 * ($noanswer / $number));} else #делить на ноль это моветон :) поэтому, делаем проверку;
{
$percentage = 0;
};
$percentage = ''.$percentage.'%';
$date_rus = rus_date("j F");
$hello = "<b>Добрый вечер</b>, уважаемые коллеги! За сегодня, <b>$date_rus</b>, было уникальных звонков -  ";
$missed = "Из них пропущено - ";
$missed_percent = "Процент пропущенных вызовов от общего числа  - ";
$arr = array(
$hello => $number,
$missed => $noanswer,
$missed_percent => $percentage,
);
foreach($arr as $key => $value) {
$txt .= "".$key." <b>".$value."</b>%0A";
};
fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
?>

Укажите ваши данные в соответствующие переменные и сохраните файл как asterisktelegram.php. Далее, закидываем файл в директорию /home.

После этого, введите следующие команды в консоль сервера:

chmod 755 /home/asterisktelegram.php 
dos2unix /home/asterisktelegram.php

Теперь остается только запланировать выполнение нашего скрипта с помощью cron. Мы хотим выполнять скрипт по будням, с понедельника по пятницу в 19:00. Открываем cron командой:

crontab e

Добавляем туда следующую строчку:

00 19 * * 1-5 /usr/bin/php /home/asterisktelegram.php

Ждем окончания рабочего дня и проверяем, что у нас получилось :)

 

 Ежедневные отчеты Asterisk в Telegram