Чтобы вычислить разницу между двумя временами в номерном плане Астериск, сначала необходимо конвертировать время в формат Линукс эпохи. Это можно сделать с помощью функции Астериск STRFTIME. Строка в номерном плане, которая конвертирует время в формат Линукс эпохи:
Set(time=${STRFTIME(${EPOCH},,%s)})
В следующем примере мы имеем две переменные: starttime
и endtime
, заданные с интервалом времени 10 секунд. Далее высчитывается разница между временами и сохраняется в переменную diff
. В данном примере переменная diff
будет всегда равна 10:
exten => 1000,1,Set(starttime=${STRFTIME(${EPOCH},,%s)})
same => n,Wait(10)
same => n,Set(endtime=${STRFTIME(${EPOCH},,%s)})
same => n,Set(diff=$[${endtime} -${starttime}])
same => n,Hangup()