# Voice over IP > Symcon Dokumentation · Deutsch · erzeugt am 2026-09-26 > Index: https://www.symcon.de/de/llms.txt Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/ Das VoIP Modul kann Telefonverbindungen aufbauen/entgegennehmen, DTMF Signale verarbeiten, Verbindungsgebundene Daten buffern und Sounds abspielen. > **Hinweis:** Folgende Geräte werden von IP-Symcon unterstützt: > > __[Unterstützte Geräte](voip.md) __ ### Voraussetzungen Es wird ein aktives Portal zur Telefonie benötigt. Dies kann eine Fritzbox oder ein Dienst wie Sipgate sein. ### Einbindung in IP-Symcon Zur Einbindung kann via Objekt hinzufügen im Objektbaum ein "VoIP" Gerät hinzugefügt werden. In der Instanzkonfiguration müssen Domain und Benutzername zum Telefonservice angegeben werden. Falls benötigt müssen noch AuthID und Passwort eingetragen werden. > **Hinweis:** Wenn der Rechner mehrere Netzwerkkarten oder -interfaces hat (z.B. auch virtuelle Adapter wie VPN, Docker, Hyper-V) kann es erforderlich sein die IP-Adresse über die die VoIP Verbindung aufgebaut wird zu definieren. Dazu gibt es den passenden [Spezialschalter](../developer/special-switches.md) "VoIPInterface" ![Konfiguration](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/fcfd667dde-1790424938/voip-configuration.png) Um zu verwalten was bei einer aktiven Verbindung passieren soll, muss ein Abarbeitungsskript hinzugefügt werden. ### Abarbeitungsskript Das Abarbeitungsskript bestimmt das Verhalten bei jeder eingehenden Verbindung. Dazu sind auch die [Systemvariablen](../concepts/automations.md) wichtig. ### Beispiele #### Skript für eingehende Anrufe (Abarbeitungsskript) ```php if($_IPS['SENDER'] == "VoIP") { // Wir wollen nur eingehende Anrufe verarbeiten // $_IPS["INSTANCE"] ist ab IP-Symcon 5.4 verfügbar if(VoIP_GetConnection($_IPS["INSTANCE"], $_IPS["CONNECTION"])["Direction"] == 1 /* Ausgehend */) { return; } switch($_IPS["EVENT"]) { case "Incoming": IPS_LogMessage("VoIP", "Ein eingehender Anruf"); break; case "Connect": IPS_LogMessage("VoIP", "Es wurde eine Verbindung aufgebaut"); break; case "Disconnect": IPS_LogMessage("VoIP", "Es wurde eine Verbindung beendet"); break; case "DTMF": IPS_LogMessage("VoIP", "Es wurde ein DTMF Signal empfangen"); switch($_IPS["DATA"]) { case '1': case '2': case '3': case '4': case '5': case '6': IPS_LogMessage("VoIP", "Es wurde eine der Tasten 1 bis 6 gedrückt"); break; case '#': IPS_LogMessage("VoIP", "Es wurde die Taste # gedrückt"); break; default: IPS_LogMessage("VoIP", "Es wurde die Taste ". $_IPS["DATA"] ." gedrückt"); break; } break; case "PlayFinish": IPS_LogMessage("VoIP", "Es wurde eine Sounddatei abgespielt"); break; default: IPS_LogMessage("VoIP", "Ein unbekanntes Event wurde ausgelöst"); break; } } ``` #### Skript für ausgehende Anrufe mit TTS-Module "AWS Polly" aus dem Module Store ```php if($_IPS['SENDER'] == "Execute") { $id = VoIP_Connect(12345, "0451305005xx"); //Maximal 10 Sekunden warten, dass einer abnimmt for($i = 0; $i < 10; $i++) { IPS_Sleep(1000); $c = VoIP_GetConnection(12345, $id); if($c['Connected']) { // VoIP_Playwave() unterstützt ausschließlich WAV im Format: 16 Bit, 8000 Hz, Mono. VoIP_PlayWave(12345, $id, TTSAWSPOLLY_GenerateFile(23456, "IP-Symcon wünscht einen wunderbaren Tag")); return; } } //Auflegen, falls keiner abnimmt VoIP_Disconnect(12345, $id); } ``` ### Beispieleinrichtung in der FritzBox Mithilfe der FritzBox kann das VoIP-Modul genutzt werden. Hierzu ist eine seperate freie Telefonnummer in der FritzBox empfohlen und folgende Schritte sind zu beachten. > **Hinweis:** Gegebenfalls muss unter "Telefonie" -> "Eigene Rufnummer" -> "Neue Rufnummer" eine neue Rufnummer eingerichtet werden Als erster Schritt muss in der FritzBox unter "Telefonie" -> "Telefoniegeräte" ein neues Telefoniegerät hinzugefügt werden. Dieses muss als neues "Telefon" hinzugefügt werden. ![Telefoniegerät hinzufügen](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/f84e5bdf4b-1790424938/voip-fritzbox-telefoniegeraethinzufuegen.png) Da IP-Symcon als IP-Telefon fungiert, muss dieses und anschließend eine seperate Telefonnummer ausgewählt werden. Es sollte ein sprechender Name für das Telefoniegerät gewählt werden. ![Telefontyp auswählen](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/eba2722b45-1790424938/voip-fritzbox-telefoniegeraettyp.png) Anschließend müssen ein Benutzername und Passwort festegelegt werden, diese werden später in das VoIP in IP-Symcon eingetragen. ![Logindaten für das VoIP Modul](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/7b4fead334-1790424938/voip-fritzbox-login.png) Das einzurichtende Telefoniegerät muss bestätigt und dessen Einrichtung im Anschluss abgeschlossen werden. ![Bestätigung](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/03368b158c-1790424938/voip-fritzbox-bestaetigen.png) ![Mit OK abschließen](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/7deea175c7-1790424938/voip-fritzbox-abschliessen.png) Nun kann das Telefoniegerät in IP-Symcon innerhalb des VoIP Modul übernommen werden. Wenn alles geklappt hat wird der Status "Registrierung war erfolgreich" angezeigt. ![VoIP Modul konfigurieren](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/2ff9974340-1790424938/voip-fritzbox-modulkonfiguration.png) Mit eingerichtetem [Abarbeitungsskript](voip.md) kann ein Testanruf getätigt werden. In den [Meldungen](../components/management-console.md) sollten folgende Nachrichten beim Drücken von Zifferntasten auf dem Telefon ersichtlich werden. ![Beispiel für Meldungen](https://www.symcon.de/media/pages/service/dokumentation/modulreferenz/geraete/voip/3101b88f68-1790424938/voip-fritzbox-meldungen.png) ## Geräteliste Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/geraeteliste/ ### Unterstützte Komponenten Ein Auszug unterstützter Komponenten. * Fritzbox * Sipgate > **Hinweis:** Dies sind nur die getesteten Geräte. Es können auch weitere Geräte funktionieren. ## VoIP_AcceptCall Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-acceptcall/ `bool VoIP_AcceptCall(int $InstanzID, int $VerbindungsID)` _Benötigt Symcon >= 5.4_ akzeptiert eine Verbindung **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. ID der zu schaltenden Verbindung **Beispiel** ```php // Akzeptiert die Verbindung mit der ID 3 der Instanz mit der ID 12345 VoIP_AcceptCall(12345, 3); ``` ## VoIP_Connect Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-connect/ `int VoIP_Connect(int $InstanzID, string $Nummer)` _Benötigt Symcon >= 5.2_ baut eine Verbindung auf **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$Nummer` (string): Telefonnummer mit der eine Verbindung aufgebaut werden soll **Rückgabewert** (int): Gibt die ID der Verbindung zurück Telefonnummer mit der eine Verbindung aufgebaut werden soll **Beispiel** ```php // Baut eine Verbindung mit der Telefonnummer 0451305005xx auf VoIP_Connect(12345, "0451305005xx"); ``` ## VoIP_Disconnect Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-disconnect/ `bool VoIP_Disconnect(int $InstanzID, int $VerbindungsID)` _Benötigt Symcon >= 5.2_ beendet eine Verbindung **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. ID der zu schaltenden Verbindung **Beispiel** ```php // Trennt die Verbindung mit der ID 3 der Instanz mit der ID 12345 VoIP_Disconnect(12345, 3); ``` ## VoIP_GetConnection Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-getconnection/ `array VoIP_GetConnection(int $InstanzID, int $VerbindungsID)` _Benötigt Symcon >= 5.2_ gibt Informationen zu einer Verbindung wieder **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung **Rückgabewert** (array): Array mit folgenden Informationen | Feld | Datentyp | Beschreibung | | ------------ | -------- | ------------------------------------------------------------ | | ID | integer | VerbindungsID | | TimeStamp | integer | Zeitstemmpel des Anrufs | | Number | string | Nummer mit der eine Verbindung aufgebaut wurde | | Direction | integer | Anrufrichtung: 0 = Eingehender Anruf, 1 = Ausgehender Anruf | | Connected | boolean | Verbindungsstatus: FALSE = nicht Verbunden, TRUE = Verbunden | | Disconnected | boolean | Trennungssstatus: FALSE = nicht Getrennt, TRUE = Getrennt | ID der zu schaltenden Verbindung **Beispiel** ```php // Gibt Informationen der Verbindung mit der ID 3 wieder. print_r(VoIP_GetConnection(12345, 3)); //Beispielausgabe /* Array ( [ID] => 3 [TimeStamp] => 1566915689 [Number] => 045130500511 [Data] => [Direction] => 1 [Connected] => 1 [Disconnected] => ) */ ``` ## VoIP_GetData Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-getdata/ `string VoIP_GetData(int $InstanzID, int $VerbindungsID)` _Benötigt Symcon >= 5.2_ gibt Daten einer Verbindung zurück **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung **Rückgabewert** (string): Inhalt der Daten der Verbindung als String ID der zu schaltenden Verbindung **Beispiel** ```php // Gibt den Inhalt der Daten der Verbindung mit der ID 3 zurück. VoIP_SetData(12345, 3, "Hallo Welt"); print_r(VoIP_GetData(12345, 3)); //Beispielausgabe /* Hallo Welt */ ``` ## VoIP_PlayWave Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-playwave/ `bool VoIP_PlayWave(int $InstanzID, int $VerbindungsID, string $Dateiname)` _Benötigt Symcon >= 5.2_ spielt eine Wavedatei ab **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung - `$Dateiname` (string): Pfad und Name der Datei, welche abgespielt werden soll **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. Pfad und Name der Datei, welche abgespielt werden soll **Beispiel** ```php // Spielt auf der Verbindung mit der ID 3 die Sounddatei "willkommen.wav" ab VoIP_PlayWave(12345, 3, IPS_GetKernelDir() . "/media/willkommen.wav"); ``` ## VoIP_RejectCall Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-rejectcall/ `bool VoIP_RejectCall(int $InstanzID, int $VerbindungsID)` _Benötigt Symcon >= 5.4_ lehnt eine Verbindung ab **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. ID der zu schaltenden Verbindung **Beispiel** ```php // Lehnt die Verbindung mit der ID 3 der Instanz mit der ID 12345 ab VoIP_RejectCall(12345, 3); ``` ## VoIP_SendDTMF Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-senddtmf/ `bool VoIP_SendDTMF(int $InstanzID, int $VerbindungsID, string $DTMF)` _Benötigt Symcon >= 5.3_ sendet eine Abfolge von Zeichen als DTMF **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung - `$DTMF` (string): Zeichen, welche als DTMF gesendet werden sollen **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. Zeichen, welche als DTMF gesendet werden sollen **Beispiel** ```php // Sendet auf der Verbindung mit der ID 3 die DTMF Signale für "*123#" VoIP_SendDTMF(12345, 3, "*123#"); ``` ## VoIP_SetData Quelle: https://www.symcon.de/de/service/dokumentation/modulreferenz/geraete/voip/voip-setdata/ `bool VoIP_SetData(int $InstanzID, int $VerbindungsID, string $Daten)` _Benötigt Symcon >= 5.2_ setzt die Daten einer Verbindung **Parameter** - `$InstanzID` (int): ID des zu schaltenden Geräts - `$VerbindungsID` (int): ID der zu schaltenden Verbindung - `$Daten` (string): Daten, für die Verbindung gesetzt werden soll **Rückgabewert** (bool): Konnte der Befehl erfolgreich ausgeführt werden, liefert er als Ergebnis __TRUE__, andernfalls __FALSE__. Daten, für die Verbindung gesetzt werden soll **Beispiel** ```php // Setzt den Inhalt der Daten der Verbindung mit der ID 3 auf "Hallo Welt" VoIP_SetData(12345, 3, "Hallo Welt"); ```