könntest Du deine * Lösung hier posten?
Wird das auch auf Trixbox 2.6 (=Asterisk 1.4) funktionieren?
Hier ist mein Ansatz. Der beruht allerdings darauf, dass alle internen Nummern zweistellig sind. Falls das nicht der Fall ist, musst Du da noch irgendwas anpassen. Die Nummer, auf die umgeleitet wird, darf aber ruhig mehr Ziffern haben.
Code:
_*9XXX. => {
CFWSRC=${EXTEN:2:2};
CFWDST=${EXTEN:4};
if("${DB(CFW/${CFWSRC})}" = "${CFWDST}") {
Devstate(ru${CFWSRC}${CFWDST},1); // Idle - http://www.voip-info.org/wiki/view/Asterisk+cmd+BristuffDevstate
goto *9${CFWSRC}|1;
}
DB(CFW/${CFWSRC})=${CFWDST};
Devstate(ru${CFWSRC}${CFWDST},2); // InUse
Playback(auth-thankyou);
Hangup;
};
_*9XX => {
CFWSRC=${EXTEN:2};
DBdel(CFW/${CFWSRC});
Playback(vm-goodbye);
Hangup;
};
Wie Du das in Trixbox integrierst, kann ich Dir leider nicht sagen. Habe ich noch nie benutzte. Zudem ist das in AEL geschrieben.
Wenn Du jetzt Anschluss 12 auf Anschluss 27 umleiten willst, dann waehlst Du die '*91227'. Nochmaliges Waehlen der Nummer schaltet die Umleitung wieder aus. Ebenso ein '*912', wobei dies nicht das BLF-Laempchen ausschaltet. Falls das gewuenscht sein sollte, sollte das aber nicht sonderlich schwierig sein zu programmieren. Aber wenn man per Hand umleitet, sind die Laempchen ja sowieso egal und wenn man auf die Umleitung eine BLF-Taste programmiert hat, dann benutzt man wahrscheinlich die. Und dann tritt das eigentlich nicht auf.
Ebenso kann man die Lampen auch "austricksen", wenn Du erst eine Umleitung und dann eine andere Umleitung "anwaehlst" ohne die alte zu loeschen. Dann bleiben beide Lampen an. Sollte sicherlich nicht schwierig sein, dass Problem zu loesen, aber ich habe das noch nie benoetigt.
Damit die BLF-Lampen funktionieren, brauchst Du app_devstate aus den agx-ast-addons. Dann kannst Du fuer jeden programmierte Umleitung Hints der folgenden Art anlegen:
Code:
exten => *91227,hint,DS/ru1227
exten => *91218,hint,DS/ru1218
Auf diese Hints setzt Du dann Dein Telefon an.
So. Dann fehlt noch der Teil zum Waehlen. Hier ist nur ein Ausschnitt. Das musst Du irgendwie ins Wahl-Macro einbinden. MAXCFWS muss dann noch irgendwo definiert werden, damit der Dialplan sich nicht aufhaengt, wenn man einen Umleitungskreis gebaut hat.
Code:
for(j=0; ${j} < ${MAXCFWS}; j=${j} + 1) { // Weiterleitungen holen
Set(cfwdst=${DB(CFW/${exten})});
if("${cfwdst}" = "")
break;
exten=${cfwdst};
};
if(${j} = ${MAXCFWS}) { // Mehr als x Weiterleitungen
NoOp(Achtung. Mehr als ${MAXCFWS} Umleitungen);
// Hier kannst Du entweder abbrechen oder den Fall ignorieren, dann wird die letzte rausgesuchte Weiterleitung benutzt.
};
Die zu waehlende Nummer steht danach in $exten. Falls Trixbox schon irgendein Weiterleitungs-Feature hat, dann kannst Du den letzten Teil vielleicht rauslassen und musst nur die entsprechenden Variablen im Weiterleitungs-Code setzen, damit Trixbox das auch mitbekommt. Aber dafuer bin ich nicht der richtige Ansprechpartner mangels Trixbox-Erfahrung.