dialplan mit if-Bedingung

Junialter

Mitglied
Mitglied seit
19 Jun 2005
Beiträge
214
Punkte für Reaktionen
0
Punkte
0
Hi,

kann ich in einen Dialplan eine if-Bedingung einbauen?
Quasi so:

if sipuser 200 ist angemeldet dann
do that
else
do this

Danke!
 
Ok, danke euch beiden. Und wie kann ich abfragen, ob jemand registriert ist (SIP)?
Ich kenn auf der cli nur sip show peers. Aber wie mache ich das im dialplan?

Danke!
 
Hallo Junialter,

außer GotoIf gibt es auch noch ExecIf, damit brauchst Du nicht im Dialplan zu springen.

Um eine Nebenstelle zu überprüfen gibt es ab 1.6 device_state und extension_state, dazu brauchst Du die passenden hints, dann geht das recht schön. Zu Alternativen für <1.6 haben wir zwei Basteleien am Laufen, bei Interesse kann ich Dir die schicken.

Rentier
 
Ich nutze 1.4.26.3-BRIstuffed-0.4.0-RC3i.
Gelten Deine Tips für die Version?
 
Für 1.4 gibt es eine app_devstate.c, die man in den Asterisk mit einbauen kann. Ich weiß aber ehrlich gesagt nicht, wie sich die in der BRIstuffed verhält, weil BRIstuff selbst eine Funktion devstate hat. Aber such mal nach "device_state backport 1.4", da müsstest Du einen Patch finden, mit dem die Funktion in 1.4 dann auch device_state heißt.

Alternativ dazu könnte ich Dir ein selbstgebasteltes PHP AGI aus der 1.4er Anfangszeit anbieten, das den Status über AMI ermittelt. Das ist nicht 100%ig ausgereift, aber es hat mal funktioniert.

Aber mal was anderes, was genau hast Du eigentlich vor? Weil oft reicht es auch, den dial loszuschicken und nachher mittels ${DIALSTATUS} zu schauen was passiert ist.

Rentier
 
Ich lasse bei einem Anruf von extern mehrere Geräte klingeln:
1x Hauptapparat 1xHandy und 1x Handy per SIP.
Mein Handy läuft halt nebenbei auch als SIP-Client am Asterisk Server, aber nur ,wenn es lokal im Netzwerk ist (also wenn ich vor Ort bin).

Ich hätte gerne sowas:
if (SIP Handy ist angemeldet)
{
DIAL (SIP Hauptapparat&SIP Handy)
}
else
{
DIAL (SIP Hauptapparat&GSM Handy)
}
 
Genau so habe ich das lange gemacht, aber mit Chanisavail().
Mit dem TC-300 hat das auch gut funktioniert, allerdings muß expirey am Telefon sehr kurz eingestellt werden, damit es zuverlässig funktioniert. Beim TC-300 konnte man 120 Sekunden einstellen, bei anderen SIP-Clients geht das nicht.
Damit es immer problemlos funktioniert, habe ich eine TCOM Switch Base am Asterisk angemeldet (gibts für 1 ¤ in der Bucht), die die Rufumleitung einschaltet, wenn ich das Telefon von der Box nehme. Zusätzlich wird auch die Rufumleitung eingeschaltet, wenn ich länger als 40 Sekunden brauche, bis ich ans Telefon gehe. Wenn ich das Telefon wieder auflege, wird die Umleitung abgestellt.
 
Also ich muss sagen, mit chanisavail hab ich nur schlechte Erfahrungen gemacht. Ich hab 1.6.1.6 und eigentlich alles mit Realtime. Damit wurden mir regelmäßig Anrufe in die Voicemail verbannt, obwohl das Tel. eigentlich registriert und erreichbar war.

Aber wenn Du sagst, dass es bei Dir lange Zeit funktioniert hat, dann liegt das wahrscheinlich am Realtime (wie so vieles :( ).

Rentier
 
Ich hatte die Rufumleitung ständig an und nur bei positiver Chanisavail-Antwort vorübergehend abgestellt, also war bei Problemen die Rufumleitung immer eingeschaltet. Das einzige Problem, das blieb, war, dass kurz nachdem sich der SIP-Client neu am Asterisk zurückgemeldet hatte, die Rufumleitung bis zu zwei Minuten noch nicht aktiv war, wenn ich das Haus verlassen hatte.
 
Zuletzt bearbeitet:
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.