Sip(gate)/Asterisk: Ab wann bezahlt der Anrufer?

08/02/2008 - 23:25 von Paul Hink | Report spam
Folgendes Szenario: Ein Asterisk registriert sich als SIP-Client bei
z.B. Sipgate. Bei einem über Sipgate eingehenden Anruf versucht
Asterisk - ebenfalls über Sipgate - mehrere Festnetz-/Mobilfunk-Nummern
zu erreichen. Wird einer dieser Anrufe entgegengenommen, wird der
Angerufene aufgefordert, eine bestimmte Taste zu drücken, um mit dem
Anrufer verbunden zu werden, andernfalls werden die beiden nicht
verbunden. Das funktioniert - soweit ich bisher getestet habe - auch
recht problemlos.

Nun der Knackpunkt: Der ursprünglichen Anrufer sollte im Idealfall erst
ab dem Zeitpunkt für seinen Anruf bezahlen, zu dem er ggf. mit einem
Gespràchspartner (der abgenommen und die o.g. Taste gedrückt hat)
verbunden wird, vorher soll er einfach durchgehend kostenfrei den
"Freiton" [1] hören. Übernimmt kein Gespràchspartner den Anruf, sollen
dem Anrufer für diesen Anruf(versuch) auch keine Kosten entstehen.

Bei meinen Tests bzw. beim Lesen der jeweils nàchsten Telefonrechnungen
hatte ich jedoch den subjektiven Eindruck, dass das so leider nicht der
Fall ist und wenigstens teilweise auch Gespràche berechnet werden, die
nicht verbunden werden konnten. Durch den recht großen zeitlichen
Abstand von Tests und dazugehöriger Telefonrechnung ließ sich das für
mich bislang aber leider nicht eindeutig herausfinden.

Kann jemand etwas dazu sagen, ab wann Anrufe bei Sipgate berechnet
werden und ob der SIP-Client (hier also Asterisk) das beeinflussen
kann? Oder hat jemand eine Idee, wie man (ich) ersteres ohne lange
Verzögerung durch die asynchrone Abrechnung der Telefonanbieter
herausfinden könnte?

Falls es was zur Sache tun sollte: Es geht in diesem konkreten Fall um
ein Asterisk 1.2.13 (Debian etch). Hier ein absolutes Minimalbeispiel
für die von mir oben skizzierten Asterisk-Konfiguration (in AEL):

| context sipgate {
| s => {
| Dial(SIP/012345@sipgate&SIP/012346@sipgate|60|rM(AskCallee));
| Busy();
| };
| };
|
| macro AskCallee(){
| Set(MACRO_RESULT=CONTINUE);
| Read(CalleeInput|some-voice-prompt-file|1|||20);
| if("${CalleeInput}" = "*") {
| Set(MACRO_RESULT=);
| };
| };

(In der "Vollversion" splitte ich den Programmablauf schon vor den
eigentlichen ausgehenden Anrufen über ein Dial() auf mehrere Local-
Channel auf und rufe dann aus jedem diese Local-Channel heraus eine
Nummer über Sipgate an. Aber das sollte hier nichts zur Sache tun,
denke ich.)

[1]: http://de.wikipedia.org/wiki/Freiton#Tonarten
 

Lesen sie die antworten

#1 Ruediger Schwarz-Linek
09/02/2008 - 21:10 | Warnen spam
Oder hat jemand eine Idee, wie man (ich) ersteres ohne lange
Verzögerung durch die asynchrone Abrechnung der Telefonanbieter
herausfinden könnte?



Nimm eine Prepaidkarte, die machen das in Echtzeit.

Ansonsten, dein Problem liegt darin dass du den Ruf zum Angerufenen
durchschaltest und dann versuchst zu basteln. Du koenntest es
hinbekommen wenn du den "Anfrageruf" zum Ziel separat aufsetzt und
nach Rufannahme mit dem eigentlichen Anrufer zusammenschaltest.
Frag mich aber nicht wie du das im Asterisk tippen musst.

Ruediger

Ähnliche fragen