exten => *60,1,ringing exten => *60,2,Set(FutureTime=$[${EPOCH} + 8]) exten => *60,3,Set(FutureTimeMod=$[${FutureTime} % 10]) exten => *60,4,Set(FutureTime=$[${FutureTime} - ${FutureTimeMod}]) ;180 in next line is max # seconds connection can be held open. Use multiples of 10. exten => *60,5,Set(MaxConnectTime=$[${FutureTime} + 180]) exten => *60,6,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}]) exten => *60,7,GotoIf($["${FutureTimeMod}" < "0"]?10:8) exten => *60,8,wait(1) exten => *60,9,goto(6) exten => *60,10,Answer exten => *60,11,Set(FutureTime=$[${FutureTime} + 10]) exten => *60,12,Set(FutureTimeMod=$[${FutureTime} % 60]) exten => *60,13,wait(1) exten => *60,14,playback(at-tone-time-exactly) exten => *60,15,SayUnixTime(${FutureTime},,I) exten => *60,16,SayUnixTime(${FutureTime},,M) exten => *60,17,GotoIf($["${FutureTimeMod}" = "0"]?18:20) exten => *60,18,SayUnixTime(${FutureTime},,p) exten => *60,19,goto(23) exten => *60,20,playback(and) exten => *60,21,SayUnixTime(${FutureTime},,S) exten => *60,22,playback(seconds) exten => *60,23,Set(FutureTimeMod=$[${FutureTime} - ${EPOCH}]) exten => *60,24,GotoIf($["${FutureTimeMod}" < "1"]?27:25) exten => *60,25,wait(1) exten => *60,26,goto(23) exten => *60,27,playback(beep) exten => *60,28,Set(FutureTimeMod=$[${MaxConnectTime} - ${EPOCH}]) exten => *60,29,GotoIf($["${FutureTimeMod}" < "1"]?30:11) exten => *60,30,Hangup