Knoppix.ru

Линукс в пять минут!
Текущее время: Вт дек 28, 2010 12:49 pm

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Linux + vmshell = Голововая почта Trouble... :(
СообщениеДобавлено: Вт янв 31, 2006 12:27 pm 
Не в сети

Зарегистрирован: Ср июл 06, 2005 3:03 am
Сообщения: 3
Проблема в том, что при дозвоне я не могу отследить подняли на том конце трубку или нет. Как это сделать??? см. блок "Ждём пока чуаак возьмёт трубку"
в логах видно что после DIAL=>DIALING=>READY никаких EVENTS больше нет...(хотя должен быть DIAL_TONE=>HANDSET_OFF_HOOK)
Тоесть я неправильно их отслеживаю... Как их отслеживать правильно?

#! /usr/bin/vm shell

#
# Этот скрипт звонит по номеру $1 и проигрывает сообщение $2
#
#
#


#------------------------ Функции--------------------

function receive
{
read -r INPUT <&$VOICE_INPUT;
echo "$INPUT";
}



function send
{
echo $1 >&$VOICE_OUTPUT;
kill -PIPE $VOICE_PID
}
#------------------------ Функции--------------------

#---------------- Инициализация и установка выходного устройства ----------------

ANSWER=`receive`

if [ "$ANSWER" != "HELLO SHELL" ]; then
kill -KILL $$
fi

send "HELLO VOICE PROGRAM"

ANSWER=`receive`

if [ "$ANSWER" != "READY" ]; then
kill -KILL $$
fi

send "ENABLE EVENTS"
ANSWER=`receive`
if [ "$ANSWER" != "READY" ]; then
kill -KILL $$
fi
#---------------- Инициализация и установка выходного устройства ----------------


#---------------------------------- Звоним --------------------------------------
send "DIAL $1"

ANSWER=`receive`

if [ "$ANSWER" != "DIALING" ]; then
kill -KILL $$
fi

ANSWER=`receive`
if [ "$ANSWER" != "READY" ]; then
echo "ERROR: $ANSWER, aborting"
exit 99
fi

#---------------------------------- Звоним --------------------------------------
echo "dial is complite"
#---------------------------------- Ждём пока чуаак возьмёт трубку --------------------------------------
checker=1
while [ $checker = 1 ]; do
ANSWER=`receive`
echo "$ANSWER"
case $ANSWER in
HANDSET_OFF_HOOK) checker=0;;
esac

done

#---------------------------------- Ждём пока чуаак возьмёт трубку --------------------------------------


echo "Let's play"
#---------------- Проигрыш сообщения --------------------------------------------
send "PLAY $2"

ANSWER=`receive`

if [ "$ANSWER" != "PLAYING" ]; then
kill -KILL $$
fi

ANSWER=`receive`

if [ "$ANSWER" != "READY" ]; then
kill -KILL $$
fi
#---------------- Проигрыш сообщения --------------------------------------------
##################################################################
#echo "Let's disable"
#---------------------------------- Вырубаем функции --------------------------------------
#send "DISABLE EVENTS"
#ANSWER=`receive`
#if [ "$ANSWER" != "READY" ]; then
# kill -KILL $$
#fi
#---------------------------------- Вырубаем функции --------------------------------------
############################################################
#---------------- Закрытие shell --------------------------------------------
send "GOODBYE"

ANSWER=`receive`

if [ "$ANSWER" != "GOODBYE SHELL" ]; then
kill -KILL $$
fi
#---------------- Закрытие shell --------------------------------------------

echo "OK: message send"
exit 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Засада какая-то...
СообщениеДобавлено: Ср фев 01, 2006 4:19 am 
Не в сети

Зарегистрирован: Ср июл 06, 2005 3:03 am
Сообщения: 3
Вооот... Чуток переделал блок "Ждём пока чуаак возьмёт трубку"
#---------------------------------- Ждём пока чуаак возьмёт трубку --------------------------------------
echo "Ожидание"
send "WAIT 3600"

ANSWER=`receive`
echo "Проверка"
if [ "$ANSWER" != "WAITING" ]; then
kill -KILL $$
fi
echo "Цикл пошёл!"
while true; do
ANSWER=`receive`
echo "$ANSWER"
case $ANSWER in
LOOP_BREAK) break;;
BUSY_TONE) send "STOP"; receive; send "GOODBYE";receive; exit 0;kill -PIPE $VOICE_PID;;
esac

done

send "STOP"

ANSWER=`receive`
if [ "$ANSWER" != "READY" ]; then
echo "Could not stop waiting"
exit 99
fi
---------------------------------- Ждём пока чуаак возьмёт трубку -----------------------------
В результате сразу после набора начинает работать цикл тоесть по идее скрипт должен выслеживать EVENTS такие как DIAL_TONE и LOOP_BREAK... Однако во время дозвона скрипт ничего не выдаёт...(DIAL_TONE) Никаких EVENTS... После снятия трубки опять молчит (LOOP_BREAK)... Зато видит DTMF код ... И когда я ложу трубку он видит BUSY_TONE... Не могу понять пАчИмУ не моуотследить не BUSY_TONE не LOOP_BREAK???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 03, 2006 12:26 pm 
Не в сети

Зарегистрирован: Ср июл 06, 2005 3:03 am
Сообщения: 3
Народ если неможеите ничем помочь - может скажите где мне помогут?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB