Dieses Script wurde als fehlerhaft markiert - Wo? Was? Welche Auswirkungen?

Ich blicke das mit der Markierung „dieses Skript wurde als fehlerhaft markiert“ noch nicht.

  1. Gibt es Hinweise, wo der Fehler liegt (Syntax-Fehler oder Ort der Exception)?
  2. Was für ein Fehler?
  3. Wird das Skript dann überhaupt noch gestartet oder läuft es gar nicht mehr bis die Markierung zurück gesetzt wird?
  4. WIE setzt man die Markierung zurück? Speichern ändert nix, manuell laufen lassen ohne Fehler ändert auch nichts. Muß man einen speziellen Check starten?

Servus

wenn ich dich richtig verstehe funktioniert dein Script wenn du es händisch startest ?
Wenn es aber über einen Trigger gestartet wird dann klappte es nicht, oder ?

Interaktiv gestartete Scripte schreiben ihre Ausgabe und damit auch Fehlermeldungen ins log und ins Meldungsfenster.
Geht ja auch nicht anders, da sie ja quasi als Hintergrundtask arbeiten.

gruß
bb

Hallo,
keine Ahnung ob und von wann das Script fehlerhaft sein soll.
Wenn ich es manuell starte kommt kein Fehler. Es sieht alles soweit gut aus.
Ich bleibe bei meinen 4 Fragen (noch einmal neu formuliert).
1.) Wie kann ich prüfen, was für ein Fehler überhaupt vorliegt (Timeout, Syntax-Fehler, Exception)?
2.) Wie erfahre ich den Fehlerort, der zu dieser Fehlermarkierung geführt hat? (Zeile, Datum/Zeit des registrierten Fehlers; dann könnte ich im Log mal schauen)
3.) Das Skript ist durch die Markierung nicht irgendwie gesperrt? D.h. ruft ein Trigger dieses Skript auf, läuft es trotzdem?
4.) Wie lösche ich diese Markierung?

Hier das Script (unten; sind noch einige Debug echo drinne), welches ich mit diesem Trigger-Aufruf starte:

IPS_RunScriptEx(15212 /*[Alarmanlage\Text To Speech\ISDN-Ansage]*/ ,Array("text"=>$text));

$text enthält den Ansagetext

<?
//läuft eventuell schon eine Ansage/TTS Umsetzung? Dann abbruch
echo "text to speech aufgerufen<br>";
if (GetValueBoolean(14535 /*[Alarmanlage\Text To Speech\Speaking]*/ )==1)
{
  return;
}
$nummer=GetValueString(57217 /*[Vorgabewerte\Telefonnummer]*/ );
if (empty($text) or empty($nummer)) {
  echo "keine textdaten oder Tel-Nr. übergeben";
  return; //keine Daten dann nichts anrufen
}
// zu häufige Ansagen unterbinden; 
$mintime=5*60; //5min.
$z2=time(); //jetzt
if (($z2-GetValueInteger(45251 /*[Alarmanlage\Text To Speech\Time_derletztenAnsage]*/ ))<=$mintime) //weniger als mintime. her
{
Echo "Speak zu oft";
return;
}
echo "jetzt ANSAGEN! ".$text."<br>";
SetValueInteger(45251 /*[Alarmanlage\Text To Speech\Time_derletztenAnsage]*/ ,$z2);
//variable $text muß den anzusagenden Text enthalten
//$text='Am Bahndamm 3, Dieses ist ein Testanruf der Gebäudesteuerung Am Bahndamm 3; Vielen Dank, Tschüß';
$dateiname='D:\speak'.time().'.wav';

TTS_GenerateFile(54855 /*[Alarmanlage\Text To Speech]*/,$text,$dateiname, 6);
//TTS_Speak(54981 /*[Objekt #54981 existiert nicht]*/, "Der Rauchmelder in der Werkstatt  hat Alarm ausgelst",true);
//         $len = ISDN_PlayWave(37323 /*[Objekt #37323 existiert nicht]*/, $ISDN_CONNECTION, $file);
//         IPS_Sleep($len);
$isdn=14940 /*[Alarmanlage\ISDN Module]*/;
$id = ISDN_Connect($isdn ,$nummer);
do {
    IPS_Sleep(500);
    $callinfo = ISDN_GetConnectionInfo($isdn, $id);
} while ( $callinfo["State"] != "4") ; // warten, bis abgenommen wurde; nach 30 Sekunden Timeout des PHP Skriptes
  IPS_Sleep(1000); //1 Sek. warten
  $len=ISDN_PlayWave($isdn,$id, $dateiname);
  IPS_Sleep($len+200);
  ISDN_StopPlay($isdn , $id);
  ISDN_Disconnect($isdn,$id);
  unlink($dateiname);

?>

Es kann auch sein, das bei den Versuchen in der Vergangenheit die ISDN Befehle mal Fehler produziert haben (kein Amt, Benutzer legt vor Ende des kompletten Ansagetextes auf etc.). Nur ist das kein Fehler im Script selbst.

1+2) Im Log nach der ID suchen, oder einen Logger wie z.B. von Brownsen installieren. Der sammelt Fehler inkl. StackTrace.
3) Nein. Es ist nur ein Hinweis.
4) Sobald es wieder korrekt ausgeführt wurde.

paresy

@paresy:
Vielen Dank. Das sind genau die Antworten die mir weiter helfen.
Dann werde ich da mal die Spur aufnehmen.