Сергей Маликов
23.04.2020
1582

Поддержание активности номера

При длительном неиспользовании номеров мобильных операторов для исходящих звонков возможно снятие абонентской платы со счета и/или блокировка номера. Для поддержания его активности и избежания блокировок можно добавить скрипт в cron, который будет проверять период его простоя и периодически совершать исходящие звонки. Также для администрирования БД можно использовать, например, Adminer. См. статью Для проверки последней активности […]

При длительном неиспользовании номеров мобильных операторов для исходящих звонков возможно снятие абонентской платы со счета и/или блокировка номера. Для поддержания его активности и избежания блокировок можно добавить скрипт в cron, который будет проверять период его простоя и периодически совершать исходящие звонки.

mysql -u freepbxuser -p Pa$$w0rd

use asteriskcdrdb;

Консоль MySQL
Консоль MySQL
Пароль для пользователя freepbxuser можно посмотреть в файле /etc/freepbx.conf

Также для администрирования БД можно использовать, например, Adminer. См. статью

Для выполнения требующихся запросов к БД небезопасно использовать учетную запись пользователя root. Необходимо авторизовываться пользователем с более ограниченными правами, но имеющим доступ к требующимся таблицам или создать для необходимых целей нового.

Для проверки последней активности необходимо определить был ли совершен с интересующего номера(в примере — 89991112233) исходящий (и, впоследствии, отвеченный) звонок, длительностью более 3 с (минимально тарифицируемая продолжительность звонка) в течение последних 59 дней (в зависимости от оператора допустимая максимальная продолжительность неактивности на мобильном номере может быть разная). Если в базе найдется хотя бы одна запись, удовлетворяющая этим условиям – в последнее время активность на номере была. Для определения продолжительности разговора следует использовать значение в столбце billsec (duration – общая продолжительность вызова, вместе с периодом ожидания).

Таким, образом, SQL запрос выглядит так:

SELECT *

FROM cdr

WHERE src = 89991112233 AND disposition=’ANSWERED’ AND billsec > 3 AND DATE_FORMAT(calldate, ‘%Y-%m-%d’)

BETWEEN (CURDATE() — INTERVAL 59 DAY) AND CURDATE()

LIMIT 5;

Запрос, выводящий звонки в течение последних 59 дней
Запрос, выводящий звонки в течение последних 59 дней

Генерировать исходящие вызовы можно с помощью создания call файлов.

См. подробнее об использовании call файлов в статье «Использование Call-файлов в Asterisk»

Создаем скрипт, даем права на исполнение

cd /usr/local/bin

touch mob_activity_check.php

chmod +x mob_activity_check.php

nano mob_activity_check.php

Создание скрипта, изменение прав
Создание скрипта, изменение прав

Содержимое скрипта:

<?php

//Данные для подключения к базе

$link = mysqli_connect(«localhost», «freepbxuser», «57579ad1e9bf02c765ff629d28d721b1», «asteriskcdrdb»);

//номера, активность по которым мониторится

$mts_numbers = [

    «0» => «89991112233»,

    «1» => «89991112234»,

];

$megafon_numbers = [

    «0» => «89281112200»,

    «1» => «89281112201»,

];

$numbers = array($mts_numbers, $megafon_numbers);

check_nums($numbers, $link);

/* описание функции, проверяющая номера. Первый параметр – массив номеров, второй ссылка на бд. */

function check_nums($numbers, $link){

foreach($numbers as $value){

    foreach($value as $key => $value){

        $query =  «SELECT * FROM `cdr` WHERE `src` = » . $value . » AND `disposition`=’ANSWERED’ AND `billsec` > 3  AND DATE_FORMAT(calldate, ‘%Y-%m-%d’) BETWEEN (CURDATE() — INTERVAL 59 DAY) AND CURDATE() LIMIT 5″;

        if (($result = mysqli_query($link, $query)) and mysqli_num_rows($result) <= 0) {

            //нет звонков — генерируем активность

             make_call($value);

                /* очищаем результирующий набор */

            mysqli_free_result($result);

        }

            }

}

}

/*

Функция, генерирующая call файл. /var/spool/asterisk/outgoing/ — директория для call файлов по умолчанию. Первый параметр – $callerid – номер.моб.тел. Второй параметр $to_num – номер для вызова(там должен быть автоответ).

*/

function make_call($callerid, $to_num=89992900000){

$file_name = ‘activity-call-‘ . time() . ‘.call’;

$tmppath = ‘/root/’ . $file_name;

//Создаем call файл во временной директории

$fp = fopen($tmppath, ‘w’);

$text = <<<STR

Channel: SIP/$to_num

Callerid: $callerid

MaxRetries: 1

RetryTime: 60

WaitTime: 30

Context: from-internal

Extension: $callerid

Priority: 1

STR;

 

//записываем файл во временную директорию

fwrite($fp, $text);

 

// закрываем

fclose($fp);

 

//указываем директорию, в которой Asterisk отслеживает появление call файлов

$dstpath = ‘/var/spool/asterisk/outgoing/’ . $file_name;

 

// копируем туда call файл

copy($tmppath, $dstpath);

move_uploaded_file($tmppath, $dstpath);

unlink($tmppath);

 

//устанавливаем пользователя, группу, права

chown($dstpath, ‘asterisk’);

chgrp($dstpath, 495);

chmod($dstpath, 0644);

}

mysqli_close($link);

?>

Для автоматизации проверки в планировщик необходимо добавить задание и указать периодичность его запуска (лучше указать ночное время, когда нет загруженности). Выполняем команду:

crontab -e

Добавляем задание. Например – запуск ежедневно в 03:00

0 3 * * * /usr/bin/php /usr/local/bin/mob_activity_check.php

 Редактирование crontab – добавление задания
Редактирование crontab – добавление задания

Если для редактирования заданий в crontab используется редактор  vi – см. статью с основными командами

Для мониторинга остатка на счете см. статью «Автоматизированная проверка баланса и информирование звонком»

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.