VOIP / Fritzbox

Warning: Verbindung 1 ist noch nicht vollständig verbunden! in C:\IP-Symcon\scripts\49157.ips.php on line 15

Die Warnung konnte ich auch schon reproduzieren. Scheinbar kommt der Disconnect zu schnell. In einer der letzten Beta-Versionen hatte ich das noch nicht.
Leider bekommt man den IPS-Dienst auch in bestimmten Konstellationen mit dem VoIP-Modul zum Absturz.

@galleto: Erfüllt deine WAV-Datei die Voraussetzungen fürs VoIP-Modul (16 Bit, 8 kHz, Mono)?

Warning: Verbindung 1 ist noch nicht vollständig verbunden! in C:\IP-Symcon\scripts\49157.ips.php on line 15

Das ist ein Fehler, der sich in den letzten RCs eingeschlichen hat, in dem wir einige weitere Checks hinzugefügt haben. Dadurch greift der Disconnect nicht sauber. :frowning: Ein Fix kommt zur nächsten Beta der 5.2.x

@slummi: Magst du mir zu deinem Absturz einen Minidump zuschicken?

paresy

Ziemlich sicher, es ist eine der Beispieldateien von hier.

Keine Ahnung, warum sie nicht abgespielt wird.

Grüße
galleto

Ich habe ein ähnliches Problem. Wenn das Telefon klingelt und man direkt abhebt funktioniert die Ansage. Wenn man aber 2 mal Klingen lässt dann kommt keine Ansage mehr. Liegt das am Script? Das heißt sobald es länger wie 2 Sekunden klingelt kommt keine Ansage mehr.

galleto heb mal direkt ab wenn es klingelt…

Bekomme auch die Fehlermeldung mit dem Disconnect.

@becker010

Soll das so sein, dass das Disconnect nicht aúfgerufen wird, nachdem die WAV Datei abgespielt wurde?
Nicht das dadurch etwas durcheinander gerät. Ich würde vermuten, dass das ‚return‘ eher ein ‚break‘ sein sollte, damit der Disconnect Aufruf erfolgen kann, oder?

Grüße
Gollum

Ja, das Skript ist so gebaut, dass es nur ein paar Sekunden wartet. Die Fehlermeldung beim Disconnect ist übrigens in der aktuellen 5.2.x Beta korrigiert. Probiert die gerne einmal aus.

paresy

Also versteh ich euch richtig das es am Script liegt das die Wave Datei ab 2 Sekunden abnehmen des anrufes nicht mehr abgespielt wird?
Ich muss das morgen mal ohne das Script probieren.

Eigentlich sollte das nicht so sein. Ich habe die Erfahrung aber auch schon gemacht.
Bau mal nach dem PlayWave ein Sleep ein, was der Länge der WAV-Datei entspricht oder nimm das return ganz raus, dann sollte es funktionieren. Wenn du das return raus nimmst, musst du aber auch das Disconnect rausnehmen und anschließend manuell trennen.

Das return beendet das Skript. Scheinbar läuft die Methode PlayWave aus dem VoIP-Modul aber nebenläufig, sodass das return bereits während des PlayWave ausgeführt wird und dann auch die aufgerufene Methode mit beendet, sodass das Abspielen stoppt.

Aber da ich die Interna des Moduls nicht kenne, weiß ich nicht, was da genau passiert und ob das so gewollt ist.
@paresy: Kannst du dazu etwas sagen?

Gruß
Slummi

Das return Beendet nur das Skript. Wenn das PlayWave sauber ausgeführt wurde, wird dies dadurch nicht beendet. Wenn ihr im Skript in der for Schleife das Warten (also das i) einfach erhöht, könne ihr „später“ abnehmen. Der Rufaufbau kann insbesondere zu Mobil ja auch einiges an Zeit kosten. Das Disconnect ist übrigens nicht ganz korrekt im Stable Release gewesen - das haben wir in der aktuellen Beta korrigiert.

paresy

Bei mir ist das fast das gleiche Problem.
In der Beta hatte alles gut geklappt, nach dem Release funktioniert der Anruf, aber kein Ton zu hören.
Habe die aktuellste BETA und da Problem bleibt gleich.

Nutzt du wirklich die selbe Sound Datei wie in der Beta? (Am besten die aus dem Test Beitrag). Den am Sound Processing gab es quasi seit Anfang an keine Änderungen.

paresy

Also bei mir tritt das Problem sporadisch auch auf und ich generiere die Sprache in der Regel über Polly. Meistens funktioniert es ohne Probleme, manchmal fängt die Soundausgabe aber nur kurz an und ist dann sofort wieder weg. Hatte das auch schon mit ein und demselben WAV-File. Von daher denke ich nicht, dass die WAV die Ursache ist.

Konnte es aber bisher noch nicht eingrenzen und habe auch im Debugging nichts konkretes gesehen. Das Script ist dabei immer unverändert. Deshalb dachte ich auch, dass das return in bestimmten Konstellationen vielleicht das PlayWave killt.

Ich werde mal weiter testen. Vielleicht finde ich ja noch was, um es weiter einzugrenzen. Im Moment tritt das aber eher selten bei mir auf.

Slummi

Habe es bei mir erst heute wieder testen können und es klappt wieder!
Ich habe nichts verändert!! Jetzt geht es wieder. Hoffentlich nu für immer.

Also ich kann die Zahl von i stellen wie ich will. Die Ansage klappt nur wenn ich direkt nach einer Sekunde schnell abhebe.
Wenn ich nach dieser Sekunde abhebe wird nix abgespielt.
Bei i hab ich mehrere Werte von 0,5,8,50,100 probiert…

Zur Zeit steht es so wie unten aufgeführt

<?php
if($_IPS['SENDER'] == "Execute") {
    $id = VoIP_Connect(20806 /*[VoIP]*/, "nummer");
 
    //Maximal 10 Sekunden warten, dass einer abnimmt
    for($i = 8; $i < 10; $i++) {
        IPS_Sleep(1000);
        $c = VoIP_GetConnection(20806 /*[VoIP]*/, $id);
        if($c['Connected']) {
	       VOIP_PlayWave(20806 /*[VoIP]*/, $id, IPS_GetKernelDir() . "/media/willkommen.wav");
            //VoIP_PlayWave(20806 /*[VoIP]*/, $id, TTSAWSPOLLY_GenerateFile(23456, "IP-Symcon wünscht einen wunderbaren Tag"));
            return;
        }
    }
 
    //Auflegen, falls keiner abnimmt
    VoIP_Disconnect(20806 /*[VoIP]*/, $id);
} 

Du darfst nicht das i vorne vergrößern, wenn du mehr Zeit zum Warten haben willst, sondern du musst den Vergleichswert (10) vergrößern. So wie du es hast mit i = 8 und dem Vergleich i < 10 wartest du max. 2 Sekunden.

Gruß
Slummi

ahhhh bei 30 Sekunden klappt es jetzt. Ganz komisch. Bei 100 geht es nicht.
Glaube da ist was Faul :smiley:

Werd das weiter testen und mal schauen ob es jetzt mit 30 Sekunden immer klappt

Achso danke. Das hatte ich vorhin verstellt um zu schauen ob es was bewirkt :cool:

Mit der Beta und 8 Sekunden läuft es jetzt. :slight_smile:

Grüße
galleto

Bei mir läuft es zur Zeit auch.
Habe ein paar mal mit Zeit-Versatz abgehoben. Muss es jetzt mal integrieren in die Alarmanlage :slight_smile:

Ich habe eine Wave mit VoiceRSS erzeugt. Das folgende Skript funktioniert damit:

if($_IPS['SENDER'] == "Execute") {
    $id = VoIP_Connect(57741, "#Rufnummer#");
 
    //Maximal 10 Sekunden warten, dass einer abnimmt
    for($i = 0; $i < 10; $i++) {
        IPS_Sleep(1000);
        $c = VoIP_GetConnection(57741, $id);
        if($c['Connected']) {
        TTSV_GenerateFileEx(44181,"Hallo, es funktioniert!", "/var/lib/symcon/media/hallo.wav", "8khz_16bit_mono", "WAV", "de-de");
        VoIP_PlayWave(57741, $id, IPS_GetKernelDir() . "/media/hallo.wav");
            return;
        }
    }

Die Frage ist aber, geht es auch andersherum, dass eine wav als Ansage abgespielt wird, wenn man das VoIP-Modul anruft?