Unterscheidung interne oder externe Anrufe?

ike

Aktives Mitglied
Mitglied seit
18 Apr 2005
Beiträge
1,004
Punkte für Reaktionen
0
Punkte
0
Ich kämpfe gerade mit den Asterisk-Skripten (in diesem Fall mit Asterisk@Home). Dort sind fertige Skripte definiert, die ich gerade umschreibe.

Unter Anderem möchte ich prüfen, ob Anrufe von extern oder intern stammen und dann dementsprechend auf Voicebox umleiten oder nicht.

Wie prüfe ich das am Elegantesten? Ich könnte sicherlich nachschauen, ob die CallerID eine gewissen Länge hat, aber das erscheint mir nicht elegant. Es gibt da doch sicherlich bessere Prüfungsmöglichkeiten, oder?
 
Pruefe ob die CallerID mit einer '0' anfaengt (vorrausgesetzt bei ankommenden Anrufen wird vor die CallerID eine 0 gestellt).
 
Oder setzte im entsprechenden Context über den der Anruf reinkommt eine Variable. Diese kannst Du dann im weiteren Verlauf des Dialplans abfragen.
 
Das mit der "0" ist genau dann schlecht, wenn der Anrufer die Rufnummer unterdrückt. Das mit dem Setzen einer Variablen erscheint mir sinnvoller. Dann müsste ich "nur noch" die entsprechenden Stellen finden.

Ich hätte mir gedacht, dass in irgendwelchen Systemvariablen schon etwas stehen würde. Schade, dass das anscheinend nicht der Fall ist.
 
Es sollte auch moeglich sein, das ganze ueber die Variable ${CHANNEL} rauszufinden.
 
Da steht bei mir soetwas wie "SIP/20-8868" drin. Die 8868 sagen mir jetzt gar nichts. Die 20 ist die Nebenstelle, von der ich angerufen habe.

Wo ist eigentlich eine gute Quelle, um das Scripten richtig zu lernen? Ich sehe z.B. Zeilen wie:
Code:
exten => s,5,GotoIf($[${CHANNEL:0:5} = Local]?s-${DIALSTATUS},1)
Da frage ich mich, ob das wirklich bedeuten soll, dass er weiterspringt, wenn die ersten 5 Stellen - beginnend mit der 0. - mit "Local" anfangen.

Wenn ja - wieso sieht der Inhalt der Channel-Variable dann total anders aus?
 
Externe und interne Anrufe sollten sich doch schon dadurch unterscheiden, dass sie in einem anderen [Context] stattfinden.

Udo
 
Das kann natürlich auch sein. Ich habe derzeit augenscheinlich keinen anderen Context, in dem einzelne Anschlüsse angerufen werden, allerdings habe ich auch noch nichts im Zusammenhang mit HFC konfiguriert. Kann natürlich sein, dass da noch was fehlt.

Das mit dem "Local" habe ich übrigens herausgefunden. Das wird intern genutzt, Local heisst hier also nicht, dass es direkt am Server angemeldete User sind.
 
ike schrieb:
Da steht bei mir soetwas wie "SIP/20-8868" drin. Die 8868 sagen mir jetzt gar nichts. Die 20 ist die Nebenstelle, von der ich angerufen habe.[/quote

Die Zahl hiter dem '-' wird zufaellig vergeben.

Wo ist eigentlich eine gute Quelle, um das Scripten richtig zu lernen? Ich sehe z.B. Zeilen wie:
Code:
exten => s,5,GotoIf($[${CHANNEL:0:5} = Local]?s-${DIALSTATUS},1)
Da frage ich mich, ob das wirklich bedeuten soll, dass er weiterspringt, wenn die ersten 5 Stellen - beginnend mit der 0. - mit "Local" anfangen.

Da gabs wohl zwischendurch ein "Dial(Local/...)".

Die Idee von udosw ist natuerlich noch besser. Bisher hatte ich daran nicht gedacht, weil Anrufe von extern bei mir generell im default-Kontext landen. Man sollte also einfach nen 'vonextern'-Kontext machen und darin z.B. den default-Kontext inkludieren damit man die Eintraege fuer die Nummern nicht duplizieren muss.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,695
Beiträge
2,216,692
Mitglieder
371,315
Neuestes Mitglied
jack-mack
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.