Anrufweiterleitung mittels Asterisk ohne "Loop"

baschdieh

Mitglied
Mitglied seit
15 Sep 2005
Beiträge
416
Punkte für Reaktionen
0
Punkte
0
Hi,

hat jemand von euch eine Idee, wie ich folgendes Szenario unterbinden kann:

Aperat: 2000 wird angerufen. Dieser Aperat hat allerdings eine Weiterleitung zur 2001. Die Weiterleitung greift und ruft 2001 an. Dieser Aperat allerdings hat ebenfalls eine Weiterleitung auf die 2000 und ruft 2000 an.

Ruck zuck habe ich einen Loop - ist ja klar - aber kann man das nicht filtern, dass so etwas nicht passiert?

Problem ist wohl, dass die Weiterleitung direkt auf dem Phone gemacht wird (Snom Telefone). Diese geben natuerlich dem Asterisk keine Meldung....

Ideen?
 
Zuletzt bearbeitet:
wenn die Telefone das wirklich selbst abwickeln, dann müßten sie eigentlich einen SIP Message mit dem REDIRECT an den Asterisk schicken SIP 302 - moved temporarily

Das sollte man irgendwie auswerten können.

Man müßte mal ein SIP Debug von solch einem Loop haben, um zu sehen, was da wirklich abläuft.
 
Mir wäre schon fast geholfen, wenn die Zentrale es sehen wuerde, welche Telefone eine Umleitung aktiviert haben. Leider ist das wohl ein Problem, dass das Snom Telefon der TK Anlage leider nicht bescheid gibt. Oder gibt es da ggf. noch eine andere Lösung?

Danke

p.s.: SIP-Debug kommt noch :)

[Zusatz]
So - ich denke wir haben ggf. eine Lösung des Problems. Werde nun "alle" Telefone über ein Macro Weiterleiten lassen:

Code:
[macro-stdexten]
exten => s,1,Set(temp=${DB(CFIM/${ARG1})})
exten => s,n,GotoIf(${temp}?cfim:nocfim)
exten => s,n(cfim),Dial(Local/${temp}@intern/n)
exten => s,n(nocfim),NoOp

exten => s,n,Dial(${ARG2},240,Tt)

exten => s,n,Set(temp=${DB(CFBS/${ARG1})})
exten => s,n,GotoIf(${temp}?cfbs:nocfbs)
exten => s,n(cfbs),Dial(Local/${temp}@intern/n)
exten => s,n(nocfbs),Busy

D.h. zum Umleiten am Endgerät wird dann eine Kurzwahl angerufen, siehe:
Code:
; Call Forward Statisch
exten => _*21*X.,1,DBput(CFIM/${CALLERIDNUM}=${EXTEN:4})
exten => _*21*X.,2,Playback(vm-saved)
exten => _*21*X.,3,Hangup

;Aufheben
exten => *21,1,DBdel(CFIM/${CALLERIDNUM})
exten => *21,2,Playback(auth-thankyou)
exten => *21,3,Hangup

; Call Forward bei Besetzt/Nichterreichbar
exten => _*61*X.,1,DBput(CFBS/${CALLERIDNUM}=${EXTEN:4})
exten => _*61*X.,2,Playback(vm-saved)
exten => _*61*X.,3,Hangup

;Aufheben
exten => *61,1,DBdel(CFBS/${CALLERIDNUM})
exten => *61,2,Playback(auth-thankyou)
exten => *61,3,Hangup

Das funktioniert soweit - nun, nachdem die "Weiterleitungen" in der Datenbank sind, kann man diese mittels kleinem php script auslesen. Das wäre ja schon mal ganz gut. Nur sollte man nun das Script noch in soweit anpassen, dass bei der Weiterleitung noch kontrolliert wird, ob ggf. ein Dubplikat in der Datenbank vorhanden ist, z.B. darf so etwas nicht eingetragen werden:

Code:
/CFIM/21                                          : 22
/CFIM/22                                          : 21

D.h. 21 leitet auf 22 und 22 auf 21 - kann man das bei der Eingabe irgendwie im Vorfeld anhand der Datenbank filtern/auslesen, whatever und somit ein "Invalid" abspielen?

Danke!
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
247,805
Beiträge
2,273,969
Mitglieder
376,761
Neuestes Mitglied
Liddlm