我正尝试使用python AGI脚本在星号中“保留”呼叫,该功能将检查此人是否可用,当他为星号时,将拨打该人(如果不是该人,则应拨打该电话,应等待10)请在几秒钟后再次检查可用性,并在该人员空闲时拨打电话。但是我遇到了一个小问题,在没有人时使用time.sleep(10)
函数挂断了电话,我希望这是因为运行脚本的线程将进入睡眠状态,并且星号认为脚本已完成运行并挂起打电话。删除time.sleep()
可以在没有时间间隔的情况下得到我想要的东西。
agi = AGI()
agi.verbose("python agi started")
place_call_on_hold("SIP/6001")
def place_call_on_hold(s):
agi.verbose("entered place_call_on_hold function")
while True:
status = agi.get_variable('DEVICE_STATE(%(redirect)s)'%{'redirect':s})
agi.verbose(status)
if status == 'NOT_INUSE':
agi.verbose("Info: place_call_on_hold: calling the number")
agi.appexec("Dial",s)
else:
agi.verbose("Info: place_call_on_hold: sleeping for 10 sec")
time.sleep(10)
有没有一种方法可以等待10秒而不使用sleep()
函数,或者如何确保在time.sleep
唤醒之前通话不会结束?
答案 0 :(得分:0)
为什么不尝试在条件之前和之后的时间差
import time
start = time.time()
end = time.time()
while (end-start) < 10:
end = time.time()
print(start, end, end-start)
答案 1 :(得分:0)
我仅通过调用Asterisk Wait(10)函数而不是time.sleep(10)来解决了问题。