我正在尝试使用星号上的调用文件拨打电话,播放文件并在给定时间后挂断,无论声音文件是否已完成。
我使用这个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秒的呼叫是否是另一端的人是否已挂断...
有人可以帮忙吗?
答案 0 :(得分:0)
好的,这很令人尴尬......
我清理了我的代码,以便我可以将其粘贴在此处,当我再次尝试时,它似乎按照我想要的方式工作。仍然不知道当时的问题是什么,但这段代码似乎有效
#!/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
答案 1 :(得分: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