- Mitglied seit
- 5 Jan 2006
- Beiträge
- 329
- Punkte für Reaktionen
- 0
- Punkte
- 0
Hallo,
ich hänge hier so ein wenig fest. Folgender Setup: Ich lasse mir von meiner Fritzbox im Büro meine ankommenden ISDN Anrufe über Voip auf meinen Asterisk (VServer) weiterleiten, anschließend auf mein Homebüro. Leider geht ja bei diesem Weiterleiten die Anrufernummer verloren, weil die Fritzbox das ja über einen weiteren VoipAccount laufen lässt. Nun habe ich für den Büroanschluss das Leistungsmerkmal Parallelruf. Ich leite also zusätzlich den Anruf über Parallelruf auf den Asterisk, über eine Voipnummer bei meinem Voipprovider. Diese Anrufe treffen nun ziemlich zeitgleich bei meinem Asterisk ein. Ich habe mir also einen Dialplan gebastelt der, wenn der Anruf über den Parallelruf eintrifft (mit der CallerID) die CallerID in eine Variable der Asterisk Datenbank schreibt, und dann einen Hangup macht. Parallel dazu trifft der Anruf von der Fritzbox ein, dort nehme ich mir dann die CallerID aus der Datenbank, und setze die CallerID des Anrufes neu. Ergebnis ist, das ich kostenlos weiterleite über die Fritzbox, und trotzdem die CallerID des Anrufers bekomme. Das funktioniert soweit auch schon. Hier nun das Problem. Ich möchte nachdem ich die CallerID gesetzt habe, den Wert aus der Datenbank löschen. Leider wird der DBdel Befehl nicht ausgeführt. Der Wert ist nach dem Durchlauf des Dialplans noch da. Funktionieren tut der Befehl, ich habe einfach mal eine interne Rufnummer eingerichtet, die nur den DBdel Befehl aufruft und dann einen Hangup macht. Dann ist der Wert weg.
Zweites Problem ist ähnlich. Wenn man mit DBget einen Wert aufruft,dort aber kein Eintrag/Wert in der Datenbank ist, wird auf +101 im Dialplan verzweigt. Das klappt bei mir auch nicht. Der Hintergrund ist, da die Anrufe über beide Accounts nur fast gleichzeitig kommen, wollte ich den Anruf der von der Fritzbox kommt in eine Schleife schicken, bis die CallerID über die andere Verbindung in die Datenbank geschrieben wurde. (Das ist am Ende auskommentiert, das DBget am Anfang habe ich rausgenommen) Im Moment warte ich einfach ein paar Sekunden.
Hiermit setze ich den Wert in der Datenbank:
Hiermit gelingt es problemlos den Wert zu löschen.
Wichtig ist das die CallerID schnell gelöscht wird,weil sonst die Schleife am Anfang nicht funktionieren würde. Der nächste Anruf kann ja noch eintreffen während der andere noch läuft.
Hat jemand eine Idee was mit dem beiden Befehlen schiefläuft? Habe ich was übersehen?
Gruß
Alf aus HH
-----------------------
1. FRITZ!Box Fon WLAN 7050,1und1 6000/600,ISDN (Office)
2. Asterisk 1.2.1 auf Vserver
3. Grandstream BT100 an DLink 614+ mit Hansenet 2000/192 vom Nachbarn.(Home)
ich hänge hier so ein wenig fest. Folgender Setup: Ich lasse mir von meiner Fritzbox im Büro meine ankommenden ISDN Anrufe über Voip auf meinen Asterisk (VServer) weiterleiten, anschließend auf mein Homebüro. Leider geht ja bei diesem Weiterleiten die Anrufernummer verloren, weil die Fritzbox das ja über einen weiteren VoipAccount laufen lässt. Nun habe ich für den Büroanschluss das Leistungsmerkmal Parallelruf. Ich leite also zusätzlich den Anruf über Parallelruf auf den Asterisk, über eine Voipnummer bei meinem Voipprovider. Diese Anrufe treffen nun ziemlich zeitgleich bei meinem Asterisk ein. Ich habe mir also einen Dialplan gebastelt der, wenn der Anruf über den Parallelruf eintrifft (mit der CallerID) die CallerID in eine Variable der Asterisk Datenbank schreibt, und dann einen Hangup macht. Parallel dazu trifft der Anruf von der Fritzbox ein, dort nehme ich mir dann die CallerID aus der Datenbank, und setze die CallerID des Anrufes neu. Ergebnis ist, das ich kostenlos weiterleite über die Fritzbox, und trotzdem die CallerID des Anrufers bekomme. Das funktioniert soweit auch schon. Hier nun das Problem. Ich möchte nachdem ich die CallerID gesetzt habe, den Wert aus der Datenbank löschen. Leider wird der DBdel Befehl nicht ausgeführt. Der Wert ist nach dem Durchlauf des Dialplans noch da. Funktionieren tut der Befehl, ich habe einfach mal eine interne Rufnummer eingerichtet, die nur den DBdel Befehl aufruft und dann einen Hangup macht. Dann ist der Wert weg.
Zweites Problem ist ähnlich. Wenn man mit DBget einen Wert aufruft,dort aber kein Eintrag/Wert in der Datenbank ist, wird auf +101 im Dialplan verzweigt. Das klappt bei mir auch nicht. Der Hintergrund ist, da die Anrufe über beide Accounts nur fast gleichzeitig kommen, wollte ich den Anruf der von der Fritzbox kommt in eine Schleife schicken, bis die CallerID über die andere Verbindung in die Datenbank geschrieben wurde. (Das ist am Ende auskommentiert, das DBget am Anfang habe ich rausgenommen) Im Moment warte ich einfach ein paar Sekunden.
Code:
exten => 413,1,wait,5
exten => 413,2,Set(CALLERID(number)=${DB(test/cid)})
exten => 413,3,NoOp(${CALLERID})
exten => 413,4,wait,2
exten => 413,5,DBdel(test/cid) <<<<< Der Befehl wird nicht ausgeführt.
exten => 413,6,Dial,SIP/30|55|Ttr
;exten => 413,102,wait,1
;exten => 413,103,Goto(1)
Hiermit setze ich den Wert in der Datenbank:
Code:
exten => 4940xxxxxxx,1,Set(DB(test/cid)=${CALLERIDNUM})
exten => 4940xxxxxxx,n,hangup
Hiermit gelingt es problemlos den Wert zu löschen.
Code:
exten => 414,1,DBdel(test/cid)
exten => 414,2,hangup
Wichtig ist das die CallerID schnell gelöscht wird,weil sonst die Schleife am Anfang nicht funktionieren würde. Der nächste Anruf kann ja noch eintreffen während der andere noch läuft.
Hat jemand eine Idee was mit dem beiden Befehlen schiefläuft? Habe ich was übersehen?
Gruß
Alf aus HH
-----------------------
1. FRITZ!Box Fon WLAN 7050,1und1 6000/600,ISDN (Office)
2. Asterisk 1.2.1 auf Vserver
3. Grandstream BT100 an DLink 614+ mit Hansenet 2000/192 vom Nachbarn.(Home)
Zuletzt bearbeitet: