Поддержание активности номера
При длительном неиспользовании номеров мобильных операторов для исходящих звонков возможно снятие абонентской платы со счета и/или блокировка номера. Для поддержания его активности и избежания блокировок можно добавить скрипт в cron, который будет проверять период его простоя и периодически совершать исходящие звонки. Также для администрирования БД можно использовать, например, Adminer. См. статью Для проверки последней активности […]
При длительном неиспользовании номеров мобильных операторов для исходящих звонков возможно снятие абонентской платы со счета и/или блокировка номера. Для поддержания его активности и избежания блокировок можно добавить скрипт в cron, который будет проверять период его простоя и периодически совершать исходящие звонки.
mysql -u freepbxuser -p Pa$$w0rd
use asteriskcdrdb;
Также для администрирования БД можно использовать, например, Adminer. См. статью
Для проверки последней активности необходимо определить был ли совершен с интересующего номера(в примере — 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;
Генерировать исходящие вызовы можно с помощью создания 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 используется редактор vi – см. статью с основными командами
Для мониторинга остатка на счете см. статью «Автоматизированная проверка баланса и информирование звонком»
Остались вопросы?
Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.