.titleBar { margin-bottom: 5px!important; }

AGI Skripte und * res_agi Version 1.11

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von betateilchen, 3 Okt. 2004.

  1. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Mit dieser Version aus dem aktuellen CVS scheint der Effekt aufzutreten, daß einige AGI Skripte nicht mehr richtig funktionieren.

    Betroffen hiervon u.a. das enumlookup.agi http://www.ip-phone-forum.de/forum/viewtopic.php?t=4635

    Deshalb habe ich auf meinem Asterisk vorläufig die Datei res_agi.so durch die Version 1.10 ersetzt, was dazu führte, daß dieses AGI wieder problemlos funktioniert. Andere Probleme sind bisher bei mir dadurch nicht aufgetreten.

    Falls jemand eine Idee hat, wie man dieses Phänomen "korrekt" lösen kann - bitte hier im Forum posten.

    Danke !
     
  2. wrrdlbrrmpft

    wrrdlbrrmpft Mitglied

    Registriert seit:
    17 Juli 2004
    Beiträge:
    263
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich vermute, dass ab res_agi.so 1.11 nun auch die Variable calleridname abgefragt wird.
    Ein agi-Skript muss zu Beginn eine ganze Latte von Variablen abfragen, bevor es mit der eigentlichen Prozedur beginnen kann. Wenn hier nun eine neue Variable hinzukommt, muss das das Skript berücksichtigen. Man kann das so lösen, dass so lange Variablen eingelesen werden, bis eine leere Zeile kommt. Dann ist die Liste beendet.
    Sollte das der Grund sein, werde ich meine Skripte dementsprechend anpassen. Das betrifft dann auch mein wakeup.agi.

    @betateilchen: Das sind alles nur vage Vermutungen. Wäre daher nett, wenn du enumlookup-0.13-beta mit res_agi.so 1.11 mal testen könntest.
     
  3. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    so etwas hier am anfang deines agi's (das hier jetzt php) und das sollte ausgeschlossen sein:


    ob_implicit_flush(true);
    set_time_limit(0);
    $out = fopen("php://stdout", "w");
    $in = fopen("php://stdin", "r");
    //$log = fopen("/tmp/agi.log", "w");
    while (!feof($in)) {
    $temp = str_replace("\n","",fgets($in,4096));
    $s = split(":",$temp);
    if (!isset($s[1])) $s[1] = "";
    $agi[str_replace("agi_","",$s[0])] = trim($s[1]);
    if (($temp == "") || ($temp == "\n")) {
    break;
    }
    }