IP-Symcon mit VoIP/SIP Support

Wenn es das Problem von kronos ist, dann bekommst du

  1. einen Logeintrag, dass VoIP abgestürzt ist
  2. ist das Problem nach dem Neustart wieder weg.

Ansonsten müsste es etwas anderes sein :frowning:

paresy

Über den Event-Handler. Dort kannst Du für Instanzen Deiner Wahl hinterlegen, dass ein Skript bei einer Statusänderung der betreffenden Instanz (hier VoIP) ausgeführt werden soll. Und über IPS_GetInstance(12345) kann ich in dem dadurch getriggerten Skript dann ermitteln, ob die Instanz fehlerhaft ist oder nicht. Alles <> Status 102 ist böse.

Nachtrag: Meine PBX trägt Geräte basierend auf IP/MAC bei mehreren fehlerhaften Anmeldeversuchen für ein paar Stunden in eine Blacklist ein. Damit sind Anmeldeversuche von dem betroffenen Endgerät zum scheitern verurteilt während andere Geräte sich sehr wohl mit den identischen Anmeldedaten erfolgreich registrieren können.

  1. einen Logeintrag, dass VoIP abgestürzt ist

…Einstellungen gespeichert
…Registriere…
dann nichts mehr.

Habe normal an Fritzbox, sonstige Registrierungen alle problemlos. zusätzlich auch an einer Asterik getestet,
Telefone registrieren ohne Probs, Netzwerk ist ok, VoIP hat separates Netz, welches in den Spezialschaltern als IF eingetragen hat.
Wie gesagt, bisher war VoIP immer angemeldet, nur nach dem (angenommenen) Anruf ist der Fehler aufgetreten

hier mal die Logs

13.01.2020 10:33:37 | 24352 | MESSAGE | VoIP | Erstelle…
13.01.2020 10:33:37 | 00000 | DEBUG | VoIP | ua: SIP Transport failed: No such file or directory
13.01.2020 10:33:37 | 00000 | DEBUG | VoIP | ua: init failed (No such file or directory)
13.01.2020 10:33:37 | 00000 | ERROR | VoIP | Initialiazion for ua failed (2)
13.01.2020 10:33:37 | 24352 | MESSAGE | VoIP | Registriere…
13.01.2020 10:33:37 | 24352 | WARNING | VoIP | VoIP ist nicht verfügbar!

Du musst ganz sicher noch folgende Meldung irgendwo haben „Arbeiter Thread ist abgestürzt“. Denn nur dann kann die Meldung kommen, dass VoIP nicht mehr verfügbar ist. Kannst du mal im Debug der VoIP Instanz schauen, ob dort etwas relevantes passiert, sobald das VoIP Modul „abstürzt“? (Also am besten mit dem Zeitpunkt von der „Arbeiter Thread ist abgestürzt“ Meldung vergleichen)

@Axel37, @kronos: Hättet ihr einen öffentlichen Endpunkt an dem ich das Testen/Nachstellen könnte?

paresy

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