Использование модема для отправки записи голоса
У меня есть интересный для вас. Я обошел свои системы мониторинга и оповещения серверов (на основе Nagios) и понял, что если наше интернет-соединение оборвется, у него не будет возможности уведомить меня. У меня уже есть прослушивание модема (через CentOS 5) на запасной линии POTS, чтобы я мог дозвониться на случай, если наш интернет отключится. Мне было интересно, смогу ли я придумать сценарий (Shell, Python и т. Д.), Который может набирать номер и воспроизводить записанное сообщение (я думаю, волновой файл), когда оно поднято. Я знаю, что Windows поддерживает голосовые вызовы через голосовой модем, мне было интересно, существует ли решение для Linux...
Я знаю, что звездочка, вероятно, может это сделать, но разве это не излишне (Полноценная система VOIP только для механизма уведомлений, который, мы надеемся, никогда не будет использован)? И не помешает ли это основной функции модема в качестве резервного сетевого интерфейса (PPP порождается через mgetty)?
Я провел некоторые поиски, и не особо придумал. Я знаю, как набирать номер из командной строки, но только как модем (не как голос). В худшем случае, я мог бы настроить его так, чтобы он вызывался как модем, а затем просто понял, что если я получу звонок со звуками модема с этого номера, то это уведомление... Любое понимание будет оценено...
6 ответов
Linux использует vgetty
для голосовых данных через модем (в основном в качестве автоответчика). Похоже, что в CPAN есть модуль perl, который поставляется с примером скрипта, подобным тому, что вы хотите.
Сценарий Callme
В подкаталоге example s исходного дистрибутива есть скрипт callme.pl. Это набирает указанный номер и воспроизводит данное сообщение. Используйте следующую команду для его запуска:
vm shell -S /usr/bin/perl callme.pl <number> <message>.rmd
Я использую внешний сервер для запуска дополнительного экземпляра Nagios, который является последним средством уведомления в случае полного сбоя.
Хотелось бы, чтобы у меня был ответ на вопрос о воспроизведении звука через модем. Я хочу сказать, что это должно быть просто, но мои знания об этом становятся ржавыми. Раньше голосовые модемы продавались специально для воспроизведения звука.
На вашем месте я бы попытался перенаправить воспроизведение звука с помощью консольного программного обеспечения. Я думаю, это может быть очень просто. Я мог бы исследовать больше позже, когда у меня есть момент.
В дополнение к модулю и скрипту Perl, Vgetty включает скрипт Bash message.sh
который может аналогичным образом вызвать и воспроизвести сообщение. Это можно найти в mgetty_src_1.1.37/voice/scripts
каталог. Он может быть установлен вместе с документацией mgetty/vgetty в зависимости от вашего дистрибутива. На OpenSuSE 42.1 его можно найти в /usr/share/doc/packages/mgetty/voice/scripts/message.sh
,
Чтобы использовать это:
message.sh 5551212 message.rmd
Он не требует запуска vgetty, только правильно установлен и настроен для вашего модема. Номер телефона может быть локальным (555-1212) или полным (1-942-555-1212), но без дефисов (-). message.rmd
должен быть в формате, понятном вашему модему, или быть готовым к шипению и шипению.
При поиске Google наткнулся на этот вопрос и подумал, что, хотя я специально хочу захватить / воспроизвести образец голоса, для вашей ситуации может подойти простое SMS.
Я использовал модем Huawei (USB-ключ) в качестве SMS-центра на своем Raspberry Pi с бесплатной SIM-картой от CSP, чтобы я мог отправлять текстовые сообщения и получать базовую информацию о системе. Я предполагаю, что это может быть легко изменено, чтобы отправить SMS в ответ на Nagios, обнаруживающий интернет-сбой!
Обратите внимание, что для отправки SMS вам нужна обычная телефонная SIM-карта (а не SIM-карта только для данных / планшета).
Я использовал пост в блоге здесь: http://hristoborisov.com/index.php/projects/turning-the-raspberry-pi-into-a-sms-center-using-python/
... который специально использует этот пример кода на github.
В целях предотвращения гниения ссылок, суть заключается в том, чтобы использовать serial
библиотека в питоне (import serial
) и отправьте обычные AT-команды модема на модем. Переведите модем в текстовый режим, а затем отправьте тестовое сообщение, используя следующие строки:
AT+CMGF=1\r
AT+CMGS="07123456789"\r
some message here.<Ctrl-Z>
Если у вас была удаленная учетная запись, она может подключиться к Интернету, отправить текстовое сообщение по электронной почте, а затем отключиться.