Автор Тема: Linux + vmshell = Голововая почта Trouble... :(  (Прочитано 4591 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Zwei

  • *
  • Сообщений: 3
  • Karma: +0/-0
Проблема в том, что при дозвоне я не могу отследить подняли на том конце трубку или нет. Как это сделать??? см. блок "Ждём пока чуаак возьмёт трубку"
в логах видно что после 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

Zwei

  • *
  • Сообщений: 3
  • Karma: +0/-0
Засада какая-то...
« Ответ #1 : 01 Февраля 2006, 05:19 »
Вооот... Чуток переделал блок "Ждём пока чуаак возьмёт трубку"
#---------------------------------- Ждём пока чуаак возьмёт трубку --------------------------------------
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???

Zwei

  • *
  • Сообщений: 3
  • Karma: +0/-0
(Нет темы)
« Ответ #2 : 03 Февраля 2006, 01:26 »
Народ если неможеите ничем помочь - может скажите где мне помогут?