Всем привет
после развертывания Asterisk'a встает вопрос - а с чего звонить?
обычно это SIP-телефоны, но в условиях ограниченного бюджета - используют софтофоны, например, ПК, смартфоны.
Если ПК по проводной сети не "отваливается", то с софтофонами на смартах - немного иначе. При переходе по сотам оператора сотовой связи SIP-софтофон, зашитый, например, в стандартную звонилку более менее актуальных Samsung, Xiaomi, Honor регистрируется в нашем сервере телефонии через раз и "принудительно" зарегистрировать его там - чаще всего означает звонок на другой номер.
Игра с Keep-Alive автоматически/всегда, например, в Xiaomi- не помогла, поэтому было решено смастерить небольшой костыль.
Проверить доступность телефона из баша можно следующей командой
asterisk -rx "pjsip show endpoint XXX" | grep "Avail"
где XXX - ваш внутренний номер (сам ведь Asterisk настроили уже давно, да?) :)
выдаст примерно следующее
Contact: XXX/sip:XXX@aaa.bbb.ccc.ddd:53646;x-ast-orig- 36c235c384 Avail 353.384
где XXX - номер, aaa.bbb.ccc.ddd - айпи софтофона, далее идет идентификатор сессии, доступность и время
при недоступности - не выдаст ничего
устанавливаем пакет для отправки почты
sudo apt install ssmtp
пилим конфиг для почтовика
sudo nano /etc/ssmtp/ssmtp.conf
Пример конфига
hostname=localhost FromLineOverride=YES AuthUser= ваш_аккаунт@yandex.ru AuthPass= ваш_пароль_от_аккаунта mailhub=smtp.yandex.ru:465 rewriteDomain=yandex.ru UseTLS=YES
Пилим скрипт
#!//bin/bash
function main {
currenttime=$(date '+%H%M%S')
if [ "$currenttime" -ge '082500' ] && [ "$currenttime" -le '164000' ]
then
astercheck=$(asterisk -rx "pjsip show endpoint XYZ" | grep "Avail")
if test -z "$astercheck"
then
echo "\Телефон не доступен"
echo -e "Subject: SIP-телефон не доступен\n\n наберите внутренний номер админа" | ssmtp -v -s user@company.ru
sleep 30m
else
sleep 10m
echo "\Телефон доступен"
fi
fi
}
while true;
do
echo "it's ok"
main
done
echo "end"
С 8:25 по 16:40 он проверяет доступность номера раз в 10 минут, в случае недоступности - раз в полчаса отправляет почту юзеру, чтобы он подключился к телефонии
Пилим службу
sudo nano /etc/systemd/system/asteriskcheksecretar.service
код службы
[Unit]
Description=asteriskcheksecretar
After=network.target
[Service]
Type=simple
ExecStart=/путь до скрипта/asteriskcheksecretar.sh
[Install]
WantedBy=multi-user.target
сохраняем
перезагружаем демонов и запускаем нашу службу
systemctl daemon-reload
systemctl start asteriskcheksecretar.service
systemctl enable asteriskcheksecretar.service
Проверяем работоспособность
systemctl status asteriskcheksecretar.service
При недоступности телефона - выдаст лог отправки письма на почту юзера, при желании - туда возможно прикрутить и оповещение на AD-шный ПК поверх всех окон :)
Всем спасибо за внимание, подписывайтесь, комментируйте, дополняйте неточности
#ит #автоматизация #скрипты #