[Frage] Gibt es eine Möglicheit abzufragen ob Nebenstelle SIP oder IAX2 nutzt ???

Carbon_Storm

Neuer User
Mitglied seit
28 Dez 2005
Beiträge
47
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,
gibt es eine Möglichkeit zur Abfrage, ob eine Nebenstelle SIP oder IAX2 nutzt?

Wenn ich eine Umleitung programmiere, dann wäre es sehr hilfreich zu wissen, welches was von beiden genutzt wird. Jetzt mache ich es so, dass SIP-Nebenstellen aus dem 200-er Block sind und IAX2-Nebenstellen aus dem 400-er Block. Dann kann ich beim Umleiten unterscheiden.

Ich habe bereits versucht im Nebenstellencontext in der SIP.conf einen Datenbankeintrag zu machen. Aber das funktioniert wohl nicht.

Habt Ihr da irgendweine Idee?

Danke und Gruß,
Heiko
 
wähle doch die Nebenstelle einfach auf beiden Protokollen an:

Code:
exten => 200,1,dial,SIP/${EXTEN}&IAX2/${EXTEN}

Solange sichergestellt ist, daß es jede Nebenstelle nur ein einziges Mal (= in einem Protokoll) gibt, funktioniert das völlig problemlos und Du kannst Dir den ganzen Aufwand mit der Prüfung einfach sparen.
 
... ja, ok. Super Idee. Da habe ich noch gar nicht dran gedacht. Externe Umleitungsziele (z.B. zap) muss ich ja sowieso anders behandeln.

Kann ich aus Deinem Vorschlag schliessen, dass es keine Abfragemöchlichkeit gibt?
Mit so einer Abfragemöglichkeit könnte ich dann in einem Aufwasch auch feststellen, ob es das Umleitungsziel überhaupt gibt .

Heiko
 
Es gibt natürlich Abfragemöglichkeiten.

mach mal auf der CLI

Code:
database show sip

da siehst Du, daß ein angemeldeter SIP Client (im Beispiel 30) automatisch einen Eintrag in der Asterisk internen Datenbank hat.

Code:
/SIP/Registry/30                                  : 84.163.xxx.xxx:5060:60:30:sip:[email protected]:5060

Danach kannst Du natürlich auswerten. Die Frage ist, ob sich der Aufwand wirklich lohnt. Ob ein Umleitungsziel erreichbar ist, kriegst Du einfach nach einem Anwahlversuch über ${DIALSTATUS} raus. Das sollte also nicht das Problem sein.
 
Wenn Du Dein Asterisk weiter entwickelst wirst Du realtime benutzen und machst dann einfache eine Datenbankabfrage.
Deswegen ist es eigentlich kein Problem.

Ansonsten stehen diese Infos in der sip.conf und der iax.conf.
Du könntest diese Dateien also mit einem Script aufgerufen mit AGI auswerten und nach einem Eintrag suchen.
 
Es geht aber darum, herauszufinden, ob ein Client per SIP oder IAX angemeldet ist. Das Auslesen der .conf Dateien nützt überhaupt nix, wenn ich den Client in beiden Dateien eingetragen habe, weil ich dem Client die Wahl des Protokolls überlassen will :rolleyes:
 
Der Threadschreiber erkennt zur Zeit das Protokoll mit der Durchwahl 2XX ist SIP und 4XX ist IAX

Da man die Durchwahl aber eher nach Abteilungen als nach Telefontechnik vergibt ging es wohl darum die Nummern wahllos zu vergeben und für den Dial-Befehl dann die richtige Technik zu nehmen.
Dieses steht eben in den conf-Dateien.

Ob der Client dann auch erreichbar ist steht auf einem anderen Blatt und folgt erst danach.

Wenn es erlaubt sein soll das sich unter einer Durchwahl gleichzeitig ein IAX und ein SIP-Client anmelden soll sieht der Dialplan eh anders aus.

Ansonsten gibt es noch sip show peers und iax2 show peers über Client Stati.
 
Danke an alle für die Beiträge und Antworten.

Im ersten Schritt werde ich sowohl SIP als auch IAX2 signalisieren (wie von betateilchen vorgeschlagen).
Im zweiten Schritt werde ich dann auf "Realtime" umstellen und habe dort ja die Möglichkeiten zur Abfrage.

Gruß,
Heiko
 
Eine anderen Möglichkeit wäre noch es in der extensions.conf fest einzutragen.
Geht halt wenn es nicht zu viele Nebenstellen sind und nicht häufig geändert wird.
Eleganter ist es aber schon die Infos aus den conf-Datein zu parsen oder aus der SQL-Datenbank auszulesen.

[internal]

exten => 200,1,Macro(dial_internal,SIP,${EXTEN})
exten => 200,n,HangUp

exten => 201,1,Macro(dial_internal,IAX2,${EXTEN})
exten => 201,n,HangUp

exten => _ZXX,1,Playback(Nummer_nicht_vergeben)
exten => _ZXX,n,HangUp


PS: Wenn man wissen möchte ob man zu einem Channel ein Gespräch zu schicken kann nimmt man ChanIsAvail (siehe Doku)
ChanIsAvail prüft aber nicht ob es dieses peer überhaupt gibt!
 
Im zweiten Schritt werde ich dann auf "Realtime" umstellen und habe dort ja die Möglichkeiten zur Abfrage.

Wie gesagt - diese Möglichkeit hast Du unabhängig von Realtime auch jetzt schon - die angemeldeten peers stehen alle automatisch in der asterisk-DB in der entsprechenden familiy :wink:
 
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.