Скрипт Python для отображения звездочки в ожидании 10 секунд - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь перевести вызов на удержание в звездочку, используя сценарий 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 проснется?

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Я исправил свою проблему, просто вызвав функцию Asterisk Wait (10) вместо time.sleep (10).

0 голосов
/ 18 марта 2019

почему бы не попробовать разницу во времени до условия и после условия что-то вроде этого

import time

start = time.time()
end = time.time()

while (end-start) < 10:
    end = time.time()
print(start, end, end-start)
...