andgera (andgera) wrote,
andgera
andgera

Category:

Настройка телефонного автоответчика под Linux

За что я люблю Linux, так это за его универсальность....

Превращаем рабочую станцию в телефонный автоответчик

Введение


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

Программное и аппаратное обеспечение

  • Intel(R) Celeron(R) CPU 1.70GHz; 768 MB RAM; HDD 40GB. Модем Acorp-56EMSF-2
  • Базовая система -- дистрибутив Debian GNU/Linux 3.1 "Sarge"; Kernel 2.6.16.16
Установка и настройка mgetty

Установка mgetty проводилась в соответствии со стандартными процедурам.

vc01 ~ ( 01:24 ) > apt-cache search mgetty
mgetty - Smart Modem getty replacement
mgetty-viewfax - Program for displaying Group-3 Fax files under X
mgetty-docs - Documentation Package for mgetty
mgetty-fax - Faxing tools for mgetty
mgetty-voice - Voicemail handler for mgetty
mgetty-pvftools - Programs for listening and manipulating pvf and rmd files
mingetty - Console-only getty
vc01 ~ ( 01:25 ) >
apt-get install mgetty mgetty-viewfax mgetty-fax mgetty-voice mgetty-pvftools mingetty
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
.........................................
Правим /etc/mgetty/voice.conf

port ttyS0 -- Последовательный порт
rings 3 -- Три звонка и поднимается трубка
answer_mode voice:fax:data -- Порядок ответа голос:факс:данные
rec_max_len 30 -- Задаем максимальную длину сообщения у меня 30 секунд.
rec_min_len 2 -- Минимальная длинна сообщения.
port_speed 115200 -- Устанавливаем скорость порта.
backup_message standard.rmd -- Файл приветственного сообщения.
phone_owner root -- Владелец файлов сообщений (root).
phone_group voice -- Группа файлов сообщений (voice).
phone_mode 0660 -- Права для файлов сообщений (-rw--rw---).

В /etc/inittab пишим
# starting vgetty
S1:2345:respawn:/usr/sbin/vgetty ttyS0
Для того чтобы иметь доступ к сообщениям в /var/spool/voice/incoming/. Добавляем себя в группу voice

vc01 ~ ( 01:50 ) >
sudo addgroup $USER voice
Добавляется пользователь `$USER' в группу `voice'...
Готово.
vc01 ~ ( 01:50 ) >


Создаем скрипт следующего содержания:

Код:


#!/bin/bash
#--------------------------------
MINC=/var/spool/voice/incoming/
MDIR=/home/$USER/msg
#--------------------------------
clear
case "$1" in
-h|--h|--he|--hel|--help)
echo "
Copyringts (c) Andrey G-v 2007

Options:
-h, --help Показать справку и выйти
-v, --version Показать информацию о версии

"
exit 1
;;

-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "ubdate 0.1 "
exit 1
;;

-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;

esac

clear

echo -en " \33[33m
==============================
1) Новые сообщения:
2) Слушать старьё:
3) Выход:
==============================
Выберите действие :# \33[0m"

read num
case $num in
1)
if !( [ -d $MDIR ] ); then
mkdir $MDIR ;
fi

cd $MINC

for i in `ls -x1 *.[Rr][Mm][Dd] 2> /dev/null`; do
MSDATE=$(date -r $i +Msg-%d%m%y-%H%M%S.wav)
rmdtopvf -b $i | pvftowav > $MDIR/$MSDATE
done

cd $MDIR

for i in `ls -x1 *.[Ww][Aa][Vv] 2> /dev/null`; do
echo "Играю "$i"..."
play $i
done

rm -f $MINC/*.[Rr][Mm][Dd]

;;

2)
clear
cd $MDIR
LSDIR=$(ls -x1 *.[Ww][Aa][Vv] 2> /dev/null)
echo -en " \33[33m
==============================
$LSDIR
==============================
Имя фаила :# \33[0m"

read PLFILE
#ls -x1 *.[Ww][Aa][Vv]

echo "Играю "$PLFILE"..."
play $PLFILE
;;

3)
clear
echo "Не туда попал? :)"
sleep 3
;;

*)
clear
echo "ОШИБКА! НЕ ВЕРНЫЙ АРГУМЕНТ! :("
exit 1
;;

esac

Для настройки оповещения о приходе новых сообщений, создаем скрипт следующего содержания:

Код:

#!/bin/bash

MESDIR=`ls /var/spool/voice/incoming/*.[Rr][Mm][Dd] 2> /dev/null | wc -l`
if [ $MESDIR != "0" ]; then
echo Для Вас есть $MESDIR сообщение\(ний\). | mail -s "Есть сообщения на автоответчике" $USER # Имя пользователя
fi
И скормим этот скрипт cron(у). Информация о наличии новых сообщений будет приходить к вам на e-mail

vc01 ~ ( 02:09 ) > crontab -e

#Запускать каждые 10 минут
0,10,20,30,40,50 * * * * $HOME/bin/ваш_скрипт.sh

Теперь практически всё готово для запуска автоответчика, осталось только записать или скачать фаил приветствия.
Втыкаем ваш микрофон в соответствующие гнездо модема, и записываем ваше гениальное приветствие выполняя следующие команды:

vc01 ~ ( 02:10 ) > sudo /usr/bin/vm record -m -l ttyS0 -v standard.rmd

Следующая команда поможет прослушать то что мы записали.

vc01 ~ ( 02:11 ) >
sudo chown $USER:$USER standard.rmd
vc01 ~ ( 02:11 ) >
rmdtopvf -b standard.rmd | pvftowav > temp.wav && play temp.wav

Выставляем права доступа и копируем файл standard.rmd в каталог /var/spool/voice/messages/

vc01 ~ ( 02:13 ) > sudo cp -v standard.rmd /var/spool/voice/messages/
vc01 ~ ( 02:13 ) >  ls -al /var/spool/voice/messages/
итого 68
drwxr-xr-x 2 root voice 4096 2007-03-13 14:13 .
drwxr-xr-x 4 root root 4096 2006-07-13 14:13 ..
-rw-rw-r-- 1 andrey andrey 54212 2007-03-13 14:13 standard.rmd
vc01 ~ ( 02:13 ) >
sudo chown root:voice /var/spool/voice/messages/standard.rmd
vc01 ~ ( 02:13 ) > ls -al /var/spool/voice/messages/
итого 68
drwxr-xr-x 2 root voice 4096 2007-03-13 14:13 .
drwxr-xr-x 4 root root 4096 2006-07-13 14:13 ..
-rw-rw-r-- 1 root voice 54212 2007-03-13 14:13 standard.rmd
Теперь все окончательно готово для запуска, для этого говорим процессу init перечитать файл конфигурации /etc/inittab

vc01 ~ ( 02:13 ) > sudo kill -HUP 1

Все! Готово ......
Tags: Линукс
Subscribe

  • Звук в MSI VR321

    Я уже писал о приобретение мною ноутбука MSI VR321. Вчера возникла необходимость подключить к нему наушники. Оказалось что звук идет как в…

  • Сборка ядра Ubuntu Way

    apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 sudo addgroup $USER src cd /usr/src wget…

  • Ramdisk

    mkdir -p /home/$USER/ram mount -t ramfs none /home/$USER/ram -o maxsize=10000 ram = 10 Mb

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments