IP-Symcon mit VoIP/SIP Support

sobald das VoIP Modul „abstürzt“? (Also am besten mit dem Zeitpunkt von der „Arbeiter Thread ist abgestürzt“ Meldung vergleichen)

es stürzt gar nicht erst ab, es lässt sich überhaupt nicht aktivieren. Die oa Meldung kommt nur, wenn ich versuche zu aktivieren

@Paresy

Hättet ihr einen öffentlichen Endpunkt an dem ich das Testen/Nachstellen könnte?

Was brauchst Du da genau?

Am besten einen Zugriff, sodass ich die VoIP Instanz von mir aus darauf verbinden kann und dann die Nummer auf die ich anrufen muss, dass es abstürzt. (So hatte ich das Problem verstanden, oder?)

paresy

so, habe den WinPC mal neu gestartet und nun Funzt es wieder !
Da lag das Problem bestimmt am Windows (windoofs halt)

Hallo,

Gestern habe ich mal das Voip-Modul installiert. Mit Forenhilfe war schnell die Nummer registriert und eine Türklingel Betätigung im WF sichtbar gemacht.

Seit heute morgen lässt sich mein VOIP intern auf die Fritzbox und auch extern nicht mehr registrieren.

Was habe ich probiert:

  • Fritzbox Restart
  • FB IP-Telefon gelöscht und neu angelegt
  • IP-Symcon Restart
  • Raspi Restart
  • Modul gelöscht und erneut installiert
  • Modul mit meinem SIP Providerdaten gestartet

In den Meldungen erscheint immer nur noch dieser Eintrag:

und im Modul steht sofort, als ob gar nicht gesucht wird: " Registrierung fehlgeschlagen. Bitte die Meldungen…"

Gestern bei meinen Versuchen während der Ersteinrichtung stand dort auch mal deregistriert, nachdem die Registrierung fehlgeschlagen ist.

Was ist hier los, bitte um Hilfe?

tom2005

Hallo zusammen,

bei mir läuft IP Symcon 5.4 auf einer Synology im Docker-Container. VoIP nutzt eine SIP-Nummer meiner FritzBox. Ausgehende Anrufe scheinen zu funktionieren (zumindest klingelt die Gegenstelle, mehr habe ich noch nicht getestet), aber wenn ich die für IP-Symcon registrierte VoIP-Rufnummer anrufe, kommt keine Verbindung zustande. Ich nehme an, das Problem hängt mit dem NAT zusammen, aber wo kann ich so etwas (z. B. analog zu der Einstellung im Homematic-Socket) bei VoIP einstellen? Ich habe auch bereits versucht den üblicherweise von SIP genutzten Port 5060 an den Container weiterzuleiten. Leider alles ohne Erfolg. Was habe ich übersehen bzw. vergessen?

Was bedeutet die Auswahl „Kein(e)“ in der VoIP-Instanz bei der Standardaktion? Wird das Abarbeitungsskript dann trotzdem ausgeführt

Jörg

Aktuell gibt es dafür keine Option. Du kannst also bei Docker dies nur im Host Modus verwenden.

paresy

Hallo,

ich glaub ich steh gerade auf dem Schlauch. Ich versuche mich gerade an VoIP und habe als „Abarbeitungsskript“ das Beispielscript minimal angepasst:

<?php
$id_voip=17213;
$id_polly=45082;

if($_IPS['SENDER'] != "VoIP")  return 0;
if(VoIP_GetConnection($id_voip, $_IPS["CONNECTION"])["Direction"] == 1 /* Ausgehend */)  return 0;


switch($_IPS["EVENT"]) {
    case "Incoming":
        IPS_LogMessage("VoIP", "Ein eingehender Anruf (".$_IPS["CONNECTION"].")");
        break;
 
    case "Connect":
        IPS_LogMessage("VoIP", "Es wurde eine Verbindung aufgebaut (".$_IPS["CONNECTION"].")");
        VoIP_PlayWave($id_voip, $_IPS["CONNECTION"], TTSAWSPOLLY_GenerateFile($id_polly, "Willkommen"));
        break;
 
    case "Disconnect":
        IPS_LogMessage("VoIP", "Es wurde eine Verbindung beendet (".$_IPS["CONNECTION"].")");
        break;
 
    case "DTMF":
        IPS_LogMessage("VoIP", "Es wurde eine der Tasten gedrückt (".$_IPS["CONNECTION"].")");
        VoIP_PlayWave($id_voip, $_IPS["CONNECTION"], TTSAWSPOLLY_GenerateFile($id_polly, "Es wurde Taste ".$_IPS["DATA"]." gedrückt"));
        break;
 
    case "PlayFinish":
        IPS_LogMessage("VoIP", "Es wurde eine Sounddatei abgespielt (".$_IPS["CONNECTION"].")");
        break;
 
    default:
        IPS_LogMessage("VoIP", "Ein unbekanntes Event wurde ausgelöst (".$_IPS["CONNECTION"].")");
        break;
}

?>

Die Sprachausgabe bei DTMF klappt prima, jedoch nicht bei Connect. Was mach ich da falsch oder muss ich da ein wenig mehr warten?

Bezüglich der $_IPS[„CONNECTION“]-Var. Bei Incoming ist dieser aktuell schon bei 37, ist das dann einfach die Gesamtanzahl an eingehenden Anrufen, da zu diesem Zeitpunkt ja noch keine Verbindung besteht?

Mir ist auch aufgefallen, dass nach einer bestimmten Anzahl an Testanrufen die Nummer quasi tot ist. Sobald ich dann unter VoIP die Instanz deaktiviere und wieder aktiviere, scheint die Nummer wieder aktiv zu sein. Hängen da irgendwelche Connections oder liegt das am Anbieter (dus.net)?

Danke

Welche Version und welches OS nutzt du? Versuch gerne mal die 5.4 aus dem Beta Kanal.

paresy

Ich habe einige Fragen zum VoIP-Modul:

  • Wie ich sehe registriert sich das Modul alle 27 Sekunden neu. Kann man das anpassen/anpassbar machen ? Mein Provider unterstützt das zwar, aber es müllt doch ziemlich das Log-File zu. Zudem wird die Re-registrierungszeit eigentlich ohnehin vom Provider vorgegeben.
  • Kann man die LogMeldungen wie das oben erwähnte „Registriert!“ eliminieren ?
  • In welchem Format muss die Rufnummer bei „erlaubte Anrufer“ eingegeben werden, damit dies funktioniert ? Bei leer gelassenem Feld sehe ich bei einem eingehenden Anruf die Nummer im schweizerischen nationalen Format XXX XXX XX XX. Wenn ich die Nummer genau so unter „erlaubte Anrufe“ eingebe, werden die eingehenden Anrufe nicht mehr beantwortet.
  • Wie kann ich die Ablaufsteuerung so ändern, dass ein eingehender Anruf nicht automatisch beantwortet wird ? Allenfalls möchte ich es ja etwas länger klingeln lassen oder basierend bsp. auf der Zeit bestimmte Anrufer via IP-Symcon beantworten und gewisse Anrufer selber beantworten.

Ich verwende IP-Symcon auf der Symbox mit der Version 5.3 vom 16.03.2020

Gruss
Letraz

  1. Eigentlich wird das Intervall vom Provider vorgegeben. Wir geben zumindest keinen Wert von 27 Sekunden vor.
  2. Ja, mit dem Spezialschalter, welcher Filter aufs Logfile erlaubt (Kommt zur 5.4)
  3. Klick mal in der Instanz auf Debug. Das Format, welches dort angezeigt wird, wird für den Filter verwendet.
  4. Ja, aber der 5.4 kannst du dies einstellen. Aktuell im Beta-Kanal als RC2 verfügbar.

paresy

Besten Dank für die schnelle Antwort. Dann warte ich mal auf die Version 5.4.
Das Formatproblem konnte ich klären, funktioniert jetzt. Und die Sache mit der Re-Registrierungszeit schaue ich mir mal in der SIP-Signalisierung an.

Ich habe jetzt zwei verschiedene Provider getestet. Bei Sipcall.ch funktioniert es einwandfrei. Ein- bzw. ausgehende Anrufe klappen perfekt. Bei diesem Provider ist aber meine primäre Rufnummer und da bei einem eingehenden Anruf von meinem Mobile immer Symcon beantwortet, kann ich nicht mehr nach Hause anrufen. Zumindest in der Version 5.3.

Beim anderen Provider namens Swisscom jedoch (und genau den möchte ich mit Symcon eigentlich ausschliesslich nutzen) kriege ich die Registration nicht hin. Ich kann zwei Fehlerfälle unterscheiden, wobei Fall 1 meiner Meinung nach ein Bug ist. Fall 2 ist ein Feature request.

Fall 1:
Ich erhalte ein „Registrierung war erfolgreich“ und eine Minute später ein „Registrierung fehlgeschlagen! Grund: Connection timed out“.
Bei genauer Analyse stelle ich fest, dass die gesendete Registrierung gar nicht beantwortet wird. Es wird lediglich alle paar Sekunden bzw. Millisekunden eine REGISTER-Meldung ausgesendet. Hier erwarte ich ein „Registrierung war erfolgreich“ erst, wenn der SIP-Server die Registrierung mit „200 OK“ bestätigt hat. Während der Registration selber wäre der Status „registrieren“. Daher erachte ich das als BUG.

Fall 2:
Ich erhalte sofort ein „Registrierung fehlgeschlagen! Grund: 403 Forbidden“.
Der Grund dazu ist der, dass der Provider die SIP-Meldungen auf einer bestimmten Adresse erwartet, die Domain allerdings eine andere Adresse hat. Heisst im Umkehrschluss, dass die Möglichkeit einer „Outbound Proxy-Adresse“ anzugeben fehlt wie dies eigentlich alle mir bekannten VoIP-Geräte können.
Um mich beim Provider registrieren zu können sind folgende Angaben nötig:

Domain: swisscom.ch
Outbound-Proxy-Adresse: fs1.ims.swisscom.ch
Benutzername = Telefonnummer
AuthID = NC00000XXXXXXX
Passwort = … selbsterklärend …

Auch der Versuch Domain = OutboundProxy-Adresse und bei Benutzername und AuthID ein @swisscom.ch anhängen funktioniert nicht und bringt die gleiche Fehlermeldung.

Gibt es allenfalls eine andere Möglichkeit, wie ein Proxy-Server konfiguriert werden könnte ? Oder könnt ihr das bitte als Feature-request aufnehmen ?

Beide Fälle lassen sich problemlos reproduzieren. Bei Fall 1 wird als „Domain“ lediglich swisscom.ch eingetragen. Bei Fall 2 steht bei Domain „fs1.ims.swisscom.ch“.

Gruss Letraz

… ein weiterer feature request wäre, dass man in der Debug-Instanz des VoIP-Moduls die vollständigen SIP-Meldungen angezeigt kriegt. Das Debugging wäre dann deutlich einfacher, als sich mit Laptop bewaffnet neben den Switch mit konfiguriertem Mirroring-Port zu setzen …

Gruss Letraz

Edit: Gerade eben den Spezialschalter "VoIPLogLevel " entdeckt. Das hilft schon mal sehr viel weiter. Die vollständigen SIP-Meldungen wären allerdings nach wie vor wünschenswert. Vielleicht auf VoIPLogLevel = 4 ?

Hi Letraz,

zum mitloggen geht aktuell nur Wireshark. Da wir hauptsächlich unter Windows entwicklen ist dies für uns auch recht einfach realisierbar und wir haben nicht vor logging auf Paketebene anzubieten :wink:

Deine Wunsch zu Proxy-Support nehme ich gerne auf - mache dir aktuell aber keine großen Hoffnungen, dass so etwas schnell kommt, da die Nachfrage bisher bei 1 ist :slight_smile:

paresy

Hallo Paresy

Danke für die Antwort. Wie sieht es aus betreffend der Meldung des BUG’s aus Fall 1 oben stehend ? Solange Symcon im Registering-Status ist, wird angezeigt dass die Registrierung erfolgreich ist, obschon vom Registrar gar keine Meldung zurückkommt. Das lässt sich mit dem Debug auf höchster Stufe sehr einfach nachstellen.
Betreffend Nachfrage nach Proxy-Support. Sobald mehr Schweizer-User ihren Swisscom-Account verwenden wollen, wird die Nachfrage sicher steigen… :slight_smile:

Gruss Letraz

Ich hätte mal eine Frage:D
…und zwar möchte ich folgendes Script verwenden um einen Anruf abzusetzen. Die „WaveOut.wav“ wird vorher mit tts generiert. Anruf klappt auch alles. Mein Problem, Symcon blockiert nach dem Anruf diese Datei. Ich kann sie erst löschen oder überschreiben wenn ich Symcon komplett runterfahre. Kann man da was machen?

IP-Symcon 5.4, Windows x64, 19.05.2020

$id = VOIP_Connect(56647, "+49xxxxxxxxx");

 for($i = 0; $i <= 30; $i++) {
     IPS_Sleep(1000);
     $c = VOIP_GetConnection(56647, $id);
     if($c['Connected']) {
        
        VOIP_PlayWave(56647, $id, IPS_GetKernelDir() . "/webfront/user/Sprachausgabe/WaveOut.wav");
        IPS_Sleep(20000);
        break;
     }
 }
 
 VOIP_Disconnect(56647, $id);  

Seit der 5.4 läuft VoIP auch bei mir gut (inkl. auflegen). Was jetzt noch fehlt oder was ich nicht finde: Wenn ich einen Anruf über meine FritzBox starte, wird aktuell meine Rufnummer zum Empfänger nicht übertragen. Da wohl laut AVM die Einstellung nicht in der FritzBox, sondern im Gerät selbst vorgenommen werden muss, suche ich also eine Einstellmöglichkeit im Symcon-Modul… Hat da jemand eine Lösung bzw. geht das nur bei mir nicht?

Viele Grüße, Carsten

@BrausePaul: Ich kann das bei mir leider nicht nachstellen :frowning: Hat noch wer das Problem?
@doctee: Bei meinen Tests (Sipgate) muss ich keinerlei Absender setzen. Das macht Sipgate von sich aus - je nachdem welche Nummer dem SIP Endpunkt zugeordnet ist.

paresy

Hallo paresy,

danke für den Hinweis. Bisher hatte ich nur an die Einstellungen im Modul und in der Fritzbox gedacht; jetzt habe ich gelernt, dass mein Telekom-Anschluss (IP) sich auch über das sog. Telefoniecenter online konfigurieren lässt; dort war die Rufnummerunterdrückung (wohl standardmäßig) eingeschaltet. Haken raus, Problem gelöst.:slight_smile:

doctee