15.7. Anwendungsbeispiel Calling-Card
In der Apfelmus GmbH sollen private Gespräche über eine Calling-Card
abgerechnet werden. Diese wird vom Hausmeister über sein Telefon virtuell
aufgeladen (durch Anwahl der internen Servicenummer 88, gefolgt von der
3-stelligen Durchwahl und vom gewünschten Geldbetrag in Euro).[79] Die Gespräche werden zu einem Pauschalpreis von 1 Euro pro
Gespräch abgerechnet. Diese privaten Gespräche werden über die interne
Servicenummer 99, gefolgt von der Zielrufnummer, geführt. Dabei ist zu
beachten, dass bei einem Besetzt (busy) kein
Geldbetrag vom Konto abgebucht wird. Die interne Rufnummer 98 kann dazu
benutzt werden, den aktuellen Betrag auf dem Calling-Card-Konto
abzurufen.
[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.