Context einer Extension

pbillx

Neuer User
Mitglied seit
13 Sep 2008
Beiträge
21
Punkte für Reaktionen
0
Punkte
0
Hallo,
kann man ueber den CLI den Context einer Extension von from-internal auf ext-local aendern? Also ich mein damit, ueber eine direkte eingabe im CLI ohne editieren der conf dateien.
Ich hab schon versucht, ueber dialplan remove <ext>@from-internal die extension zu loeschen, leider funktioniert das nicht. ich krieg da immer ne fehlermeldung. Ein loeschen mit: dialplan remove <ext>@ext-local geht, aber halt nicht mit from-internal.
Ich brauch das ganze fuer ein Phone Barring. Fuer unser Hotelsoftware suche ich eine einfache Loesung, um ein Phone zu sperren oder freizugeben fuer externe Calls. Intern muss es dabei immer funktionieren.
Auch andere Ideen dazu sind willkommen.

Liebe gruesse

Fred
 
als Denkanstoß:

vielleicht nicht gleich die extension löschen, sondern einfach umleiten z.b. auf eine Ansage "Zur zeit nicht möglich" whatever und das per db handlen :)
 
Hallo

Vielen Dank erstmal fuer die Antworten.
Ja, AstDB hab ich bisher auch benutzt. Und ueber den Dialplan einen Lookup auf den Status des Phones gemacht, ob geblockt oder nicht geblockt.
Das Problem ist aber dann, dass wir sehr viele Installationen machen muessen. So haben wir dann auch eine Vielzahl von verschiedenen Dialplans. Und speziell in den Hotels haben die dann immer irgendwelche Sonderwuensche. Deshalb bin ich am tuefteln, wie man das universell handeln kann und das es transparent zum Dial plan ist. Deshalb die Idee, den Kontext waehrend der Runtime zu wechseln.
Der Context ist in FreePBX in der Sip Tabelle gespeichert. Wenn ich den aber nur dort aender, wird es nich uebernommen. Es muss erst in FreePBX apply settings gemacht werden. Gibt es ein script, welches das durchfuehren kann?

Gruesse
 
Soweit ich weiß speichert FreePBX das zwar in einer Datenbank, schreibt aber beim "Apply"en dann die entsprechenden conf-Files von Asterisk und macht ein asterisk -rx '[sip|modules|dialplan] reload'.

Grundsätzlich sollte das machbar sein, mittels Skriptsprache Deiner Wahl aus der FreePBX (MySQL-)Tabelle eine sip_users.conf zu erzeugen und dann ein sip reload an Asterisk zu schicken. Also quasi das Verhalten des Apply-Buttons nachzubilden. Dazu müsstest Du Dir nur die Dateien genau anschauen, wie sie FreePBX erzeugt.

Weiß jemand, ob man die FreePBX Tabellen von der Struktur her vielleicht direkt für Realtime brauchen kann? Evtl. eine MySQL View dazwischen?

Rentier
 
Habs rausgefunden

Erst den entsprechenden datensatz in sip tabelle der mysql aendern. Also dort den context auf ext-local setzen. Dann php -q /var/lib/asterisk/bin/retrieve_conf ausfuehren. dann asterisk -rx reload

Danke erstmal
 
OK, oder so. Was mich etwas wundert, wenn FreePBX da scheinbar schon ein eigenes zentrales Skript dafür hat, das die config schreibt, warum das dann nicht gleich selber ein reload hinterher schickt.

Aber wenn Du das reload schon selber schicken musst, dann mach
asterisk -rx 'sip reload'
Damit wird nur die SIP config neu geladen und nicht der ganze restliche Haufen auch noch.

Rentier
 
Danke erstmal...

Ja, mit sip reload gehts auch.
Hier die komplett loesung fuer Elastix als php, einfach auf die webroot kopieren. Sie kann dann aufgerufen werden mit:
http://<serverip>/blacklist.php?PhoneNumber=<ext>&blacklist=<0> oder groesser 0. bei 0 ist das phone internal only, bei groesser 0 kann es raustelefonieren. Ausserdem muss die datei retrieve_conv aus dem verzeichnis /var/lib/asterisk/bin in die webroot kopieren. Mysql user und pw anpassen.
<?
include 'config.php';
$phonevar=$_GET['PhoneNumber'];
$blacklistvar=$_GET['blacklist'];
$verbindung = @mysql_connect("localhost","root","eLaStIx.2oo7");
if (!$verbindung) {
echo "Fehler";
exit;
}
if ($blacklistvar <> "0") {
$abfrage2 = "UPDATE sip SET data='from-internal' WHERE id= $phonevar and keyword='context'";
}
else
{
$abfrage2 = "UPDATE sip SET data='ext-local' WHERE id= $phonevar and keyword='context'";
}
$erg2 = mysql_db_query("asterisk",$abfrage2,$verbindung);
system("php -q retrieve_conf");
system("/usr/sbin/asterisk -rx " . escapeshellarg("sip reload"));

echo $erg2;
?>

Gruss an Alle.
Schaut auch gern mal auf meine Homepage www.pbillx.org
Wir sind im Moment die einzige Company mit einem von Micros zertifizierten Middleware fuer Asterisk und Micros Hotel Property Management System

Fred
 
Wir sind im Moment die einzige Company mit einem von Micros zertifizierten Middleware fuer Asterisk und Micros Hotel Property Management System
Glaubt ihr, dass Hotels schon ein Markt für VoIP-Systeme sind? Meine Erfahrungen waren bisher eher so:
- Nur 2-Draht (alles analog - Neue Verkabelung kommt nicht in Frage)
- Billige Telefone (<35¤)
- Analog-Gateways viel zu teuer (Port-Preis)

Gruß,
Heldenhaft
 
... Markt

Markt:
Sicher ist Asterisk die kommende Sache im Hotel Gewerbe. Der springende Punkt dabei ist genau dass, was du gerade mit billig ansprachst:
Asterisk ist kostenguenstiger als z.b Nortel oder Mitel, und zwar um bis zu 50%. Das sind unsere Erfahrungen.
Wir haben jede Menge Anfragen und auch inzwischen einige Installation in z.b. Holliday Inn. Sicher braucht das noch alles ein wenig Zeit, bis es zu einem Boom kommt, aber allein Micros hat 35000 Hotels weltweit mit ihrer Software ausgestattet. So kommen zwangslaeufig einige Hotels zu uns.

Gruesse

Fred
 
Noch ne Frage

Ich hab noch ein kleines Problemchen:
Wenn ich eine Extension auf context ext-local umstelle, funktionieren die Feature codes nicht mehr. Weiss einer, wie ich das umgehen kann?

Gruesse

Fred

Nachtrag: Hat sich erledigt. Man kann ueber einen Context ext-local-custom in der extensions_custom.conf sich die zusaetzlichen Sachen definieren, die man braucht. So dann auch eben feature codes abfangen und entsprechend weiterverabeiten.
 
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.