ist mein Problem so trivial oder hat einfach keiner Lust zu antworten?
Wie dem auch sei.. ich habe mir einen workaround geschrieben da mein Timeout merkwuerdigerweise nicht funktioniert.
Die Funktion ist folgende:
Bevor die Q startet speichere ich den Zeitpunkt, addiere einen Zeitraum hinzu. Fliegt der Anrufer sofort wieder aus der Q weil Telefon besetzt (Q gestartet mit Option 'n' um Timeout-reset zu vermeiden) ist, wird dann wiederrum die Zeit gespeichert. Zusaetzlich wird noch gezaehlt wie oft der Anrufer bereits in der Q war. War er bereits 2mal drin fliegt er raus. War er erst einmal drin werden die Zeitpunkte verglichen und entsprechend entschieden, wie es weitergehen soll. Entweder man geht nochmal in die Q nachdem man sich ein bischen Musik angehoert hat, oder man wird aus dem Programm verabschiedet.
Code:
[startQ]
exten => Q,1,Set(QUEUESTARTTIME=${STRFTIME(${EPOCH},,%H%M%S)})
exten => Q,2,Set(QUEUESTARTTIME=$[${QUEUESTARTTIME}+21])
exten => Q,3,Set(Q_COUNT=0)
exten => Q,4,Set(Q_COUNT=$[${Q_COUNT}+1])
; start Q
exten => Q,n,Queue(${PHONENUMBER}_${REGSTATUS}_${INSSTATUS},n)
; end Q
exten => Q,n,Set(QUEUEENDTIME=${STRFTIME(${EPOCH},,%H%M%S)})
exten => Q,n,Set(QUEUEENDTIME=$[${QUEUEENDTIME}+1])
; check how offen the callee has been in the Q
exten => Q,n,GotoIf($["${Q_COUNT}"<"2"]?decide:is_busy)
exten => Q,n(decide),GotoIf($["${QUEUEENDTIME}"<"${QUEUESTARTTIME}"]?wait_a_bit:is_timeout)
exten => Q,n(is_busy),Playback(...)
exten => Q,n(is_busy),Hangup()
exten => Q,n(is_timeout),Playback(...)
exten => Q,n(is_timeout),Hangup()
exten => Q,n(wait_a_bit),Playback(...)
exten => Q,n(wait_a_bit),Goto(Q,4)