Attente sur appel entrant (nuit)

Fonction

Ce contexte sert a mettre en attente les appels exterieurs de nuit pour filtrer les erreurs de numéro.

Utilisation

On appelle le contexte d’attente [in-wait] en passant une variable contenant le temps a attendre (duration).

Exemple:

[in-external]
include => in-external-day|07:30-21:00|mon-fri
include => in-external-night

[in-external-day]
exten => s,1,Set(DB(lastcallerid/number)=${CALLERID(number)})
exten => s,n,Dial(${PHONES},25,i)
exten => s,n,VoiceMail(${PTSN_NUMBER}|u)
exten => s,n,Goto(in-end-call,s,1)
exten => a,1,VoiceMailMain(${PTSN_NUMBER})

[in-external-night]
; night incoming call from external (ptsn/9talk)
exten => s,n,Set(duration=45)
exten => s,n,Gosub(in-wait,s,1)
exten => s,n,Dial(${PHONES},25,i)
exten => s,n,VoiceMail(${PTSN_NUMBER}|u)
exten => s,n,Goto(in-end-call,s,1)
exten => a,1,VoiceMailMain(${PTSN_NUMBER})
exten => a,n,Goto(in-end-call,s,1)

Contexte

[in-wait]
; in: duration
exten => s,1,Wait(1)
exten => s,n,Playback(privacy-please-stay-on-line-to-be-connected)
exten => s,n,Set(step=18)
exten => s,n,Set(elapsed=0)
exten => s,n,Playback(est-hold-time-is)
exten => s,n,SayNumber(${duration})
exten => s,n,Playback(seconds)
exten => s,n,While($[${elapsed} <= ${duration}])
exten => s,n,Wait(1)
exten => s,n,Set(elapsed=$[${elapsed} + 1])
exten => s,n,GotoIf($[$[${elapsed} % ${step}] != 0]?loop)
exten => s,n,Playback(wait-moment)
exten => s,n(loop),EndWhile
exten => s,n,Return()