Coverbild des Asterisk Buches von Stefan Wintermeyer

Letzte Woche => Endspurt!

Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ.

Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag

Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/


7. Anwendungsbeispiel CallingCard

In der Apfelmus GmbH sollen private Gespräche über eine CallingCard 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).[98] 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 CallingCard-Konto abzurufen.

[from-hausmeister]
; Aufladen der virtuellen CallingCard
;
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 Gespraeche
;
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()


[98] Um das Beispiel möglichst einfach zu halten, wird der Fall, dass auf ein bereits bestehendes CallingCard-Konto ein weiterer Betrag eingezahlt wird (also eine Addition vollzogen werden muss) nicht besprochen. Ebenfalls nicht behandelt wird die Möglichkeit, dass ein Mitarbeiter von einem anderen Telefon ein privates Gespräch führen könnte.