使用Bash AGI将呼叫文件设置为在一段时间后挂断



我正在尝试使用星号上的呼叫文件拨打电话,无论声音文件是否已完成,它都会播放文件并在给定时间后挂断。

我让它使用这个 bash 脚本作为 AGI 脚本:

#!/bin/bash
Duration="30"
file="sound.mp3"
while read VAR && [ -n ${VAR} ] ; do : ; done
echo "ANSWER"
read RESPONSE
echo 'SET AUTOHANGUP $Duration'
echo 'EXEC PLAYBACK "'$file'" ""'
read RESPONSE
exit 0

问题是星号CDR日志显示呼叫持续30秒,无论另一端的人是否已挂断...

谁能帮忙?

好吧,这很尴尬...

清理了我的代码,以便我可以将其粘贴到此处,当我再次尝试时,它似乎可以按照我想要的方式工作。仍然不知道问题是什么,但这段代码似乎有效

#!/bin/bash
 Duration="20"
 file="soundfile"
while read VAR && [ -n ${VAR} ] ; do : ; done
echo "ANSWER"
read RESPONSE
echo 'SET AUTOHANGUP '$Duration''
echo 'EXEC PLAYBACK "'$file'" ""'
read RESPONSE
exit 0

您可以使用信号工具。例如:

#!/bin/bash
times_up(){ echo "time is up, pens down."; exit 0; }
trap 'times_up' ALRM
(sleep 10;kill -0 $$ && kill -ALRM $$)&
s=0
while (true) do
    sleep 1
    echo "$s: do my stuff"
    let s=$s+1
done

相关内容

最新更新