- Mitglied seit
- 3 Sep 2005
- Beiträge
- 264
- Punkte für Reaktionen
- 0
- Punkte
- 16
Hallo,
ich habe zwar kein asterisk@home bzw Trixbox am laufen, sondern nur
freepbx, jedoch sollte dies meiner Einschätzung nach keinen großen Unterschied bei der Lösung des Problems sein.
Ich benutze das Modul Callback und DISA um mich auf dem Handy zurückrufen zu lassen, Freiton zu bekommen und dann wieder rauswählen zu können.
Funktioniert alles soweit ganz gut. Allerdings wollte ich nun auf die Eingabe eines Passwortes verzichten(Handy wird ja anhand der callerid identifiziert) und habe das Passwortfeld leer gelassen.
Beim Rückruf gebe ich dann einfach die Rufnummer ein, die ich anrufen möchte. Leider resultiert das in einem Besetztzeichen, obwohl die Leitung frei ist.
in der disa-x.conf unter /etc/asterisk/ steht normalerweise bei Passwortverwendung
zumBeispiel333|from-internal|
lasse ich im webinterface das Passwortfeld leer wird
no-password|from-internal|
eingetragen.
Klappt es bei jemand anderem ohne Passwort und wie sieht dann dort die
disa-x.conf aus?
--------------------
Hab jetzt mal etwas "weiter" geschaut,
unter /var/www/.../htdocs/admin/modul/disa/functions.inc.php
liegt ja sozusagen die Vorlage, nach der in die extensions_additional.conf geschrieben wird.
Wenn ich die makierten Zeichen lösche bzw ändere entsteht in der exensionts_additional.conf auch der eintrag, den ich sonst immer manuell verändert habe und der auch funktionierte,
jetzt aber nach dieser Änderung erhalte ich den Rückruf, keine fragt nach dem Passwort sondern gleich Freizeichen (so wie es soll) aber nach Eingabe der Nummer erhalte ich Besetztzeichen.
ich habe zwar kein asterisk@home bzw Trixbox am laufen, sondern nur
freepbx, jedoch sollte dies meiner Einschätzung nach keinen großen Unterschied bei der Lösung des Problems sein.
Ich benutze das Modul Callback und DISA um mich auf dem Handy zurückrufen zu lassen, Freiton zu bekommen und dann wieder rauswählen zu können.
Funktioniert alles soweit ganz gut. Allerdings wollte ich nun auf die Eingabe eines Passwortes verzichten(Handy wird ja anhand der callerid identifiziert) und habe das Passwortfeld leer gelassen.
Beim Rückruf gebe ich dann einfach die Rufnummer ein, die ich anrufen möchte. Leider resultiert das in einem Besetztzeichen, obwohl die Leitung frei ist.
in der disa-x.conf unter /etc/asterisk/ steht normalerweise bei Passwortverwendung
zumBeispiel333|from-internal|
lasse ich im webinterface das Passwortfeld leer wird
no-password|from-internal|
eingetragen.
Klappt es bei jemand anderem ohne Passwort und wie sieht dann dort die
disa-x.conf aus?
--------------------
Hab jetzt mal etwas "weiter" geschaut,
unter /var/www/.../htdocs/admin/modul/disa/functions.inc.php
liegt ja sozusagen die Vorlage, nach der in die extensions_additional.conf geschrieben wird.
Code:
<?php
/* $Id */
// This is the hook for 'destinations'
function disa_destinations() {
$results = disa_list();
// return an associative array with destination and description
if (isset($results)) {
foreach($results as $result){
$extens[] = array('destination' => 'disa,'.$result['disa_id'].',1', 'description' => $result['displayname']);
}
return $extens;
} else {
return null;
}
}
// This actually generates the dialplan
function disa_get_config($engine) {
global $ext;
switch($engine) {
case "asterisk":
$disalist = disa_list();
if(is_array($disalist)) {
foreach($disalist as $item) {
// Create the disa-$id.conf file
$fh = fopen("/etc/asterisk/disa-".$item['disa_id'].".conf", "w+");
$pinarr = explode(',' , $item['pin'] );
foreach($pinarr as $pin) {
// empty password should be 'no-password'
if ( (isset($pin) ? $pin : '') == '' )
$pin = 'no-password';
// Don't support remote MWI, too easy for users to break.
fwrite($fh, "$pin|".$item['context']."|".$item['cid']."\n");
}
fclose($fh);
$thisitem = disa_get(ltrim($item['disa_id']));
// add dialplan
if ($thisitem['needconf'] == 'CHECKED') {
$ext->add('disa', $item['disa_id'], '', new ext_setvar('RESCOUNT', '1'));
$ext->add('disa', $item['disa_id'], 'loop', new ext_gotoif('$[ ${RESCOUNT} > 5]', 'end'));
$ext->add('disa', $item['disa_id'], '', new ext_read('RRES', 'press-1', '1', ',1,3'));
$ext->add('disa', $item['disa_id'], '', new ext_setvar('RESCOUNT', '$[${RESCOUNT}+1]'));
$ext->add('disa', $item['disa_id'], '', new ext_gotoif('$["x${RRES}"="x"]', 'loop'));
}
$ext->add('disa', $item['disa_id'], '', new ext_setvar('TIMEOUT(digit)', $thisitem['digittimeout']));
$ext->add('disa', $item['disa_id'], '', new ext_setvar('TIMEOUT(response)', $thisitem['resptimeout']));
$ext->add('disa', $item['disa_id'], '', new ext_playback('enter-password')); DIESE ZEILE LÖSCHEN
$ext->add('disa', $item['disa_id'], '', new ext_disa('/etc/asterisk/disa-'.$item['disa_id'].'.conf|from-internal')); DIESE ZEILE ÄNDERN IN no-password
$ext->add('disa', $item['disa_id'], 'end', new ext_hangup(''));
}
}
break;
}
}
function disa_list() {
$results = sql("SELECT * FROM disa","getAll",DB_FETCHMODE_ASSOC);
if(is_array($results)){
foreach($results as $result){
// check to see if we have a dept match for the current AMP User.
if (!isset($results['deptname']) || checkDept($result['deptname'])){
// return this item's dialplan destination, and the description
$allowed[] = $result;
}
}
}
if (isset($allowed)) {
return $allowed;
} else {
return null;
}
}
function disa_get($id){
//get all the variables for the meetme
$results = sql("SELECT * FROM disa WHERE disa_id = '$id'","getRow",DB_FETCHMODE_ASSOC);
return $results;
}
function disa_chk($post) {
return true;
}
function disa_add($post) {
if(!disa_chk($post))
return null;
extract($post);
if (!isset($needconf))
$needconf = '';
if(empty($displayname)) $displayname = "unnamed";
$results = sql("INSERT INTO disa (displayname,pin,cid,context,resptimeout,digittimeout,needconf) values (\"".str_replace("\"", "\"\"",$displayname)."\",\"".$pin."\",\"".str_replace("\"", "\"\"", $cid)."\",\"".$context."\", \"$resptimeout\", \"$digittimeout\", \"$needconf\")");
}
function disa_del($id) {
$results = sql("DELETE FROM disa WHERE disa_id = \"$id\"","query");
unlink("/etc/asterisk/disa-{$id}.conf");
}
function disa_edit($id, $post) {
if (!disa_chk($post))
return null;
extract($post);
if (!isset($needconf))
$needconf = '';
if(empty($displayname)) $displayname = "unnamed";
$results = sql("UPDATE disa set displayname = \"".str_replace("\"", "\"\"",$displayname)."\", pin = \"$pin\", cid = \"".str_replace("\"", "\"\"",$cid)."\", context = \"$context\", resptimeout = \"$resptimeout\", digittimeout = \"$digittimeout\", needconf = \"$needconf\" where disa_id = \"$id\"");
}
?>
Wenn ich die makierten Zeichen lösche bzw ändere entsteht in der exensionts_additional.conf auch der eintrag, den ich sonst immer manuell verändert habe und der auch funktionierte,
jetzt aber nach dieser Änderung erhalte ich den Rückruf, keine fragt nach dem Passwort sondern gleich Freizeichen (so wie es soll) aber nach Eingabe der Nummer erhalte ich Besetztzeichen.
Zuletzt bearbeitet: