[from-hausmeister]
; Aufladen der virtuellen Calling-Card
;
exten => _88XXX.,1,Answer()
exten => _88XXX.,2,Set(DB(CallingCard/${EXTEN:2:3})=${EXTEN:5})
exten => _88XXX.,3,SayNumber(${EXTEN:5})
exten => _88XXX.,4,NoOp(CallingCard fuer ${EXTEN:2:3} mit ${EXTEN:5} aufgeladen.)
exten => _88XXX.,5,Hangup()
[from-intern]
; private Gespräche
;
exten => _99.,1,GotoIf($[${DB(CallingCard/${CALLERID(num)} > 0]?2:200)
exten => _99.,2,Set(DB(CallingCard/${CALLERID(num)})=$[DB(CallingCard/${CALLERID(num)}) - 1])
exten => _99.,3,Dial(local/${EXTEN:2})
exten => _99.,104,Set(DB(CallingCard/${CALLERID(num)})=$[DB(CallingCard/${CALLERID(num)}) + 1])
exten => _99.,200,NoOp(CallingCard Konto ${CALLERID(num) ist leer.)
exten => _99.,201,Answer()
exten => _99.,202,SayNumber(0)
exten => _99.,203,Hangup()
; Mit der 98 kann der aktuelle Kontostand abgefragt werden.
;
exten => 98,1,Answer()
exten => 98,2,SayNumber(${DB(CallingCard/${CALLERID(num)})})
exten => 98,3,Hangup()[79] Um das Beispiel möglichst einfach zu halten, wird nicht der Fall besprochen, dass auf ein bereits bestehendes Calling-Card-Konto ein weiterer Betrag eingezahlt wird (also eine Addition vollzogen werden muss). Ebenfalls nicht behandelt wird die Möglichkeit, dass ein Mitarbeiter von einem anderen Telefon ein privates Gespräch führen könnte.