<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Slu</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Slu"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Slu"/>
	<updated>2026-07-16T18:03:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80140</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80140"/>
		<updated>2026-07-14T12:50:21Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Configuration Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
 frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub innovaphone }&lt;br /&gt;
 &lt;br /&gt;
 backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host innovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80133</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80133"/>
		<updated>2026-07-13T14:12:26Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Configuration Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
 frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub inovaphone }&lt;br /&gt;
 &lt;br /&gt;
 backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host inovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80132</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80132"/>
		<updated>2026-07-13T14:12:07Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub inovaphone }&lt;br /&gt;
&lt;br /&gt;
backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host inovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80131</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80131"/>
		<updated>2026-07-13T14:09:58Z</updated>

		<summary type="html">&lt;p&gt;Slu: Fix list formatting and add HAProxy WebSocket config details - Co-Authored-By: Claude claude-opus-4-5-20251101&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
* myApps browser sessions reloading or disconnecting periodically (e.g. every 60 seconds)&lt;br /&gt;
* WebSocket-based services failing to establish stable connections&lt;br /&gt;
* Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly. The most common issue is that the WebSocket Upgrade/Connection headers are not passed through correctly, or the HTTP keep-alive behavior interferes with the persistent WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
* Enable HTTP keep-alive&lt;br /&gt;
* Pass through the Upgrade and Connection headers&lt;br /&gt;
* Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
The key is to add the correct headers to the backend configuration so that HAProxy does not interfere with the WebSocket upgrade process.&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
The following is a working HAProxy configuration example for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;haproxy&amp;quot;&amp;gt;&lt;br /&gt;
frontend https-frontend&lt;br /&gt;
    bind *:443&lt;br /&gt;
    mode http&lt;br /&gt;
    option http-keep-alive&lt;br /&gt;
    timeout client 30000&lt;br /&gt;
    http-request set-var(txn.txnhost) hdr(host)&lt;br /&gt;
    use_backend innovaphone if { var(txn.txnhost) -m sub inovaphone }&lt;br /&gt;
&lt;br /&gt;
backend innovaphone&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 30000&lt;br /&gt;
    timeout server 30000&lt;br /&gt;
    http-request set-header X-Forwarded-Proto https&lt;br /&gt;
    http-request set-header Host 192.168.26.11&lt;br /&gt;
    http-request set-header X-Forwarded-Host inovaphone.example.com&lt;br /&gt;
    http-request set-header Upgrade %[hdr(upgrade)]&lt;br /&gt;
    http-request set-header Connection %[hdr(connection),lower]&lt;br /&gt;
    server innovaphone 192.168.26.11:80 check&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Key Parameters Explained ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;option http-keep-alive&#039;&#039; (frontend): Ensures that the frontend connection is kept alive and can be reused for multiple requests, including WebSocket upgrades.&lt;br /&gt;
* &#039;&#039;timeout client/server 30000&#039;&#039;: Sufficiently long timeouts to prevent premature disconnection of persistent WebSocket connections.&lt;br /&gt;
* &#039;&#039;http-request set-header X-Forwarded-Proto https&#039;&#039;: Preserves the original protocol (HTTPS) so that the innovaphone Reverse Proxy can correctly identify the scheme.&lt;br /&gt;
* &#039;&#039;http-request set-header Host&#039;&#039;: Sets the correct Host header for the backend, which is important for virtual host routing on the innovaphone Reverse Proxy.&lt;br /&gt;
* &#039;&#039;http-request set-header Upgrade&#039;&#039;: Passes the &#039;&#039;Upgrade&#039;&#039; header (e.g. &amp;quot;websocket&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
* &#039;&#039;http-request set-header Connection&#039;&#039;: Passes the &#039;&#039;Connection&#039;&#039; header (e.g. &amp;quot;Upgrade&amp;quot;) to the backend, which is required for the WebSocket handshake.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
* Review the HAProxy configuration for proper WebSocket handling (see parameters above)&lt;br /&gt;
* Check the HAProxy logs for any connection errors&lt;br /&gt;
* Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
* Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
* Test the WebSocket connection without HAProxy in the path to isolate the problem&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== When to Open a Support Ticket ==&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing and adjusting the HAProxy configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
* A pcap capture from the innovaphone Reverse Proxy (reverse proxy / all IPv4 TCP/UDP traffic / all IPv4 TLS traffic / enable RPCAP)&lt;br /&gt;
* The relevant Client ID&lt;br /&gt;
* Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80130</id>
		<title>Howto16r1:Reverse Proxy with HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Reverse_Proxy_with_HAProxy&amp;diff=80130"/>
		<updated>2026-07-13T14:05:54Z</updated>

		<summary type="html">&lt;p&gt;Slu: Create HAProxy WebSocket configuration guide - Co-Authored-By: Claude claude-opus-4-5-20251101&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article explains how to configure HAProxy to work with the innovaphone Reverse Proxy, specifically when using WebSockets.&lt;br /&gt;
&lt;br /&gt;
== Problem Description ==&lt;br /&gt;
&lt;br /&gt;
When HAProxy is deployed in front of an innovaphone Reverse Proxy, WebSocket connections may not function correctly by default. This can cause issues such as:&lt;br /&gt;
&lt;br /&gt;
- myApps browser sessions reloading or disconnecting periodically&lt;br /&gt;
- WebSocket-based services (like myApps) failing to establish stable connections&lt;br /&gt;
- Unexpected behavior with real-time communication features&lt;br /&gt;
&lt;br /&gt;
This happens because HAProxy requires specific configuration to handle WebSocket upgrades properly.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
HAProxy needs to be configured to pass through the WebSocket upgrade headers correctly. The following configuration changes are required:&lt;br /&gt;
&lt;br /&gt;
- Enable HTTP keep-alive&lt;br /&gt;
- Pass through the Upgrade and Connection headers&lt;br /&gt;
- Configure proper timeouts for WebSocket connections&lt;br /&gt;
&lt;br /&gt;
A working HAProxy configuration should include:&lt;br /&gt;
&lt;br /&gt;
== Configuration Example ==&lt;br /&gt;
&lt;br /&gt;
An example backend configuration for connecting to an innovaphone Reverse Proxy:&lt;br /&gt;
&lt;br /&gt;
- frontend http-in&lt;br /&gt;
- bind *:443 ssl crt /etc/ssl/private/cert.pem&lt;br /&gt;
- mode http&lt;br /&gt;
- option http-keep-alive&lt;br /&gt;
- timeout client 30000&lt;br /&gt;
- backend innovaphone&lt;br /&gt;
- mode http&lt;br /&gt;
- timeout connect 30000&lt;br /&gt;
- timeout server 30000&lt;br /&gt;
- server innovaphone &amp;lt;internal-IP&amp;gt;:80 check&lt;br /&gt;
&lt;br /&gt;
For detailed HAProxy WebSocket configuration, please refer to the official HAProxy documentation:&lt;br /&gt;
&lt;br /&gt;
[https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy HAProxy WebSocket Blog]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing issues with WebSocket connections through HAProxy:&lt;br /&gt;
&lt;br /&gt;
- Review the HAProxy configuration for proper WebSocket handling&lt;br /&gt;
- Check the HAProxy logs for any connection errors&lt;br /&gt;
- Ensure that timeout values are set appropriately for long-lived connections&lt;br /&gt;
- Verify that the Upgrade and Connection headers are being passed through correctly&lt;br /&gt;
&lt;br /&gt;
If problems persist after reviewing the configuration, please open a support ticket with:&lt;br /&gt;
&lt;br /&gt;
- A pcap capture from the innovaphone Reverse Proxy&lt;br /&gt;
- The relevant Client ID&lt;br /&gt;
- Your HAProxy configuration (if available)&lt;br /&gt;
&lt;br /&gt;
[[Category:Reverse_Proxy]]&lt;br /&gt;
[[Category:Concept_Reverse_Proxy]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80043</id>
		<title>Reference16r1:IP6/ETH/IP6</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80043"/>
		<updated>2026-06-25T11:41:16Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Addresses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configuration ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Address Configuration:&#039;&#039;&#039;&lt;br /&gt;
| Automatic or static IP6 address configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6 Address:&#039;&#039;&#039;&lt;br /&gt;
| The IP address used by the network adapter.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Prefix:&#039;&#039;&#039;&lt;br /&gt;
| Prefix in CIDR notation without slash&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Gateway ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Default Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The standard router used by the device.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Options==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Router Interface:&#039;&#039;&#039;&lt;br /&gt;
| Interface is router. Replies Router Solicitations with Router Advertisments, publishes routes and forwards packets.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proxy ND:&#039;&#039;&#039;&lt;br /&gt;
| Enable replies to Neighbour Discovery requests if for queried IP6 address an active route exists&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Disabled:&#039;&#039;&#039; &lt;br /&gt;
| Disable the interface&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Static IP6 Routes ==&lt;br /&gt;
In the &#039;&#039;&#039;Static IP6 Routes&#039;&#039;&#039; section, additional network routes can be defined if other network areas apart from the local network are required.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination:&#039;&#039;&#039;&lt;br /&gt;
| The network address of the destination route.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The gateway of the network being routed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP6-Filter==&lt;br /&gt;
Definition of global IP6 address filters to protect the device from unauthorized access.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enable:&#039;&#039;&#039;&lt;br /&gt;
| Consider defined filters&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Address:&#039;&#039;&#039;&lt;br /&gt;
| The network address to be filtered.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Port:&#039;&#039;&#039;&lt;br /&gt;
| The port to be filtered out of the defined network address.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Protocol:&#039;&#039;&#039;&lt;br /&gt;
| Protocol to which the filter is applied. UDP or TCP.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80042</id>
		<title>Reference16r1:IP6/ETH/IP6</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/ETH/IP6&amp;diff=80042"/>
		<updated>2026-06-25T11:39:35Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;== Configuration == {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Address Configuration:&amp;#039;&amp;#039;&amp;#039; | Automatic or static IP6 address configuration |}  == Addresses == {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;IP6 Address:&amp;#039;&amp;#039;&amp;#039; | The IP6 address used by the network adapter. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Prefix:&amp;#039;&amp;#039;&amp;#039; | tbd |}  == Gateway == {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Default Gateway:&amp;#039;&amp;#039;&amp;#039; | The standard router used by the device. |}  == Options== {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Router Interface:&amp;#039;&amp;#039;&amp;#039; | tbd |- |val...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Configuration ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Address Configuration:&#039;&#039;&#039;&lt;br /&gt;
| Automatic or static IP6 address configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6 Address:&#039;&#039;&#039;&lt;br /&gt;
| The IP6 address used by the network adapter.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Prefix:&#039;&#039;&#039;&lt;br /&gt;
| tbd&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Gateway ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Default Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The standard router used by the device.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Options==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Router Interface:&#039;&#039;&#039;&lt;br /&gt;
| tbd&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proxy ND:&#039;&#039;&#039;&lt;br /&gt;
| Enable replies to Neighbour Discovery requests if for queried IP6 address an active route exists&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Disabled:&#039;&#039;&#039; &lt;br /&gt;
| Disable the interface&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Static IP6 Routes ==&lt;br /&gt;
In the &#039;&#039;&#039;Static IP6 Routes&#039;&#039;&#039; section, additional network routes can be defined, if other network areas apart from the local network are required.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination:&#039;&#039;&#039;&lt;br /&gt;
| The network address of the destination route.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The standard gateway of the network being routed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IP6-Filter==&lt;br /&gt;
Definition of global IP6 address filters to protect the device from unauthorised access.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enable:&#039;&#039;&#039;&lt;br /&gt;
| Consider defined filters&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Address:&#039;&#039;&#039;&lt;br /&gt;
| The network address to be filtered.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;IP6-Filter-Port:&#039;&#039;&#039;&lt;br /&gt;
| The port to be filtered out of the defined network address.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Protocol:&#039;&#039;&#039;&lt;br /&gt;
| Protocol to which the filter is applied. UDP or TCP.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/General/Routing&amp;diff=80041</id>
		<title>Reference16r1:IP6/General/Routing</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP6/General/Routing&amp;diff=80041"/>
		<updated>2026-06-25T11:39:11Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;routing&amp;#039;&amp;#039;&amp;#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:  {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Destination:&amp;#039;&amp;#039;&amp;#039; | The destination network. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Gateway:&amp;#039;&amp;#039;&amp;#039; | The IP address of the router. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Interface:&amp;#039;&amp;#039;&amp;#039; | Displays the interface on which the route was created. Possible interfaces are: &amp;#039;&amp;#039;ETH0, &amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;routing&#039;&#039;&#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination:&#039;&#039;&#039;&lt;br /&gt;
| The destination network.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The IP address of the router.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Interface:&#039;&#039;&#039;&lt;br /&gt;
| Displays the interface on which the route was created. Possible interfaces are: &#039;&#039;ETH0, &#039;&#039;ETH1, &#039;&#039;PPP0-31&#039;&#039;, &#039;&#039;Local&#039;&#039; and &#039;&#039;ISDN&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Flag:&#039;&#039;&#039;&lt;br /&gt;
| Address flag.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:IP4/General/Routing&amp;diff=80040</id>
		<title>Reference16r1:IP4/General/Routing</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:IP4/General/Routing&amp;diff=80040"/>
		<updated>2026-06-25T11:36:49Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;routing&amp;#039;&amp;#039;&amp;#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:  {| |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Destination Network:&amp;#039;&amp;#039;&amp;#039; | The destination network address. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Network Mask:&amp;#039;&amp;#039;&amp;#039; | The associated network mask. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Gateway:&amp;#039;&amp;#039;&amp;#039; | The IP-Adresse of the router. |- |valign=top nowrap=true|&amp;#039;&amp;#039;&amp;#039;Interface:&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;routing&#039;&#039;&#039; table of the current IP configuration of the device is displayed here. The table is used for fault analysis by the network administrator. The table is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Destination Network:&#039;&#039;&#039;&lt;br /&gt;
| The destination network address.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Network Mask:&#039;&#039;&#039;&lt;br /&gt;
| The associated network mask.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Gateway:&#039;&#039;&#039;&lt;br /&gt;
| The IP-Adresse of the router.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Interface:&#039;&#039;&#039;&lt;br /&gt;
| Displays the interface on which the route was created. Possible interfaces are: &#039;&#039;ETH0, &#039;&#039;ETH1, &#039;&#039;PPP0-31&#039;&#039;, &#039;&#039;Local&#039;&#039; and &#039;&#039;ISDN&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;State:&#039;&#039;&#039;&lt;br /&gt;
| Possible states are: &#039;&#039;Up&#039;&#039; or &#039;&#039;Down&#039;&#039;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80035</id>
		<title>Reference16r1:Gateway/GK/GW</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80035"/>
		<updated>2026-06-24T06:17:57Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Interface (VoIP Interfaces) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is an overview of all the gateway&#039;s configurable VoIP interfaces:&lt;br /&gt;
* &#039;&#039;&#039;Interface:&#039;&#039;&#039; The name of the interface. Clicking this name opens a popup page, on which all settings can be made. The settings are described in more detail in the following chapter &amp;quot;[[#Interface .28VoIP Interfaces.29|Administration/Gateway/VOIP/Interface (VoIP interfaces)]]&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;CGPN In, CDPN In, CGPN Out, CDPN Out:&#039;&#039;&#039; Precise details on CGPN In, CDPN In, CGPN Out and CDPN Out mappings are contained in the chapter entitled &amp;quot;[[#CGPN.2FCDPN Mappings|Administration/Gateway/Interfaces/CGPN-CDPN Mappings]]&amp;quot; further up in the text.&lt;br /&gt;
* &#039;&#039;&#039;Registration:&#039;&#039;&#039; If a terminal has successfully registered with a gateway, then this is indicated in this column through specification of the IP address &amp;lt;Name of the VoIP interface:Call number:IP address&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interface (VoIP Interfaces) ==&lt;br /&gt;
Clicking the relevant VoIP interface (GW1-12 &amp;lt;Name of the VoIP interface&amp;gt;) in the Interface column opens a popup page, on which the VoIP interfaces can be individually configured. Like the PBX objects, this popup page also contains standard entry fields that occur, more or less, in all VoIP interfaces.&lt;br /&gt;
&lt;br /&gt;
These standard fields are:&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The descriptive name of the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Disable:&#039;&#039;&#039; A checked check box disables the relevant VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Protocol:&#039;&#039;&#039; The protocol to be used, that is, H.323 or SIP. Depending on which protocol is used, the set-up of the entry fields changes.&lt;br /&gt;
* &#039;&#039;&#039;Mode:&#039;&#039;&#039; Describes the mode of registration. Possible registration modes are:&lt;br /&gt;
# Gateway without Registration - Logs the VoIP interface (gateway) on to the configured gatekeeper without a registration.&lt;br /&gt;
# Register as Endpoint - Registers a VoIP terminal with the configured gatekeeper.&lt;br /&gt;
# Register as Gateway - Registers a VoIP gateway with the configured gatekeeper. &lt;br /&gt;
# Gatekeeper/Registrar - Is required for managing all gatekeeper registrations on a gateway. (is only visible when running in test-mode or if a gatekeeper license is available) &lt;br /&gt;
# ENUM - Is used to register an ENUM connection with the relevant interface.&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (primary):&#039;&#039;&#039; The primary Gatekeeper IP address at which the terminal or gateway is to register via the relevant interface. Only necessary for modes 2 and 3. (IPv6 addresses must be enclosed in square brackets)&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (secondary):&#039;&#039;&#039; The alternative gatekeeper IP address at which the terminal or gateway is to register via the relevant interface, if registration with the primary gatekeeper fails. Only necessary for modes 2 and 3. (IPv6 addresses must be enclosed in square brackets)&lt;br /&gt;
* &#039;&#039;&#039;Local Domain:&#039;&#039;&#039; Replaces the existing system/domain name (for H323 federation only).&lt;br /&gt;
* &#039;&#039;&#039;Mask:&#039;&#039;&#039; By specifying a network mask, incoming calls can be filtered. Specification of the network mask 255.255.0.0 therefore allows incoming calls on the relevant interface for terminals from the IP address range 192.168.0.0 - 192.168.255.255 .&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Identifier:&#039;&#039;&#039; It is also sufficient to specify only the gatekeeper ID. Every gatekeeper in a network can be identified by means of its own gatekeeper ID, so that several gatekeepers can be operated in a network, with each terminal nevertheless identifying the correct gatekeeper by means of Gatekeeper Discovery (uses the multicast address 224.0.1.41).&lt;br /&gt;
* &#039;&#039;&#039;STUN SERVER:&#039;&#039;&#039; The STUN server name or IP address must be configured if this device has no public IP address while the SIP server is accessible under a public IP address. The value is given by the SIP provider or administrator (for example, stun.xten.com or 64.69.76.23). You can choose any STUN server; it does not necessarily have to correspond to the one of the SIP provider.&lt;br /&gt;
* &#039;&#039;&#039;Local Signalling Port:&#039;&#039;&#039; Signalling Port used by the Interface.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Register as Gateway/Endpoint:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; SIP Domain of the remote SIP Server to register (often equal to the SIP Proxy).&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (REGISTER,INVITE,etc) are to be sent to. Proxy can be omitted if domain part of AOR can be used as remote signaling destination and it&#039;s set at Remote Domain.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Gateway without Registration:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;FROM&amp;quot; field and removes it if match. &lt;br /&gt;
** &#039;&#039;&#039;Local Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;TO&amp;quot; field and removes it if match.&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (INVITE,etc) are to be sent to, this field it&#039;s mandatory.&lt;br /&gt;
** &#039;&#039;&#039;Filter Incoming Calls (SIP Only):&#039;&#039;&#039; Accept Incoming Call on this interface only if the domain part of the &amp;quot;To:&amp;quot; field SIP URI matches the &#039;&#039;Local Domain&#039;&#039; configured. If not accepted, the call may still be accepted by another interface&lt;br /&gt;
* &#039;&#039;&#039;H323/TLS - Gateway without Registration&lt;br /&gt;
** &#039;&#039;&#039;Federation:&#039;&#039;&#039; Turns on open federation, which means the domain part of a destination name is used to look up the remote gateway in the DNS&lt;br /&gt;
** &#039;&#039;&#039;Veriyfy Cert:&#039;&#039;&#039; If set, the remote ceritficate on an incoming call is verified against the domain part of the source name&lt;br /&gt;
&lt;br /&gt;
=== Authorization section ===&lt;br /&gt;
In the &#039;&#039;&#039;Authorization&#039;&#039;&#039; section, you can store a password for the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Password / Retype:&#039;&#039;&#039; The security of the registration can be raised by specifying a password (Password). The password must be confirmed (Retype).&lt;br /&gt;
&lt;br /&gt;
=== Alias List section ===&lt;br /&gt;
In the &#039;&#039;&#039;Alias List&#039;&#039;&#039; section, you specify the call name (H.323) and the call number (E.164) of the relevant registration. For VoIP end points, you should define the assigned direct dialling number or MSN as the E.164 address, and the name as the H.323 name. For VoIP gateways it is sufficient to define the name.&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The H.323 name.&lt;br /&gt;
* &#039;&#039;&#039;Number:&#039;&#039;&#039; The E.164 call number.&lt;br /&gt;
&lt;br /&gt;
=== Coder Preferences section ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Coder Preferences&#039;&#039;&#039; section were already described in chapter &amp;quot;[[Reference:Administration/Gateway/Interfaces#Interface .28ISDN.2C SIP .26 virtual interfaces.29|Administration/Gateway/Interfaces/Interface (physical and virtual interfaces)]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Media Properties ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Media Properties&#039;&#039;&#039; section were already described [[{{NAMESPACE}}:Gateway/Interfaces/Media_Properties | Media Properties]].&lt;br /&gt;
&lt;br /&gt;
=== H.323 Interop Tweaks section ===&lt;br /&gt;
In addition to the standard fields, several advanced settings are available in the &#039;&#039;&#039;H.323 Interop Tweaks&#039;&#039;&#039; section. They are normally not necessary and are merely used to solve compatibility problems with some PBXs:&lt;br /&gt;
* &#039;&#039;&#039;No Faststart:&#039;&#039;&#039; The H.245 faststart procedure is enabled as standard. Outgoing calls are made with faststart, incoming calls with faststart are answered with faststart.&amp;lt;br&amp;gt;A checked check box disables the H.245 faststart procedure. Outgoing calls are made without faststart, incoming calls with and without faststart are answered without faststart.&lt;br /&gt;
* &#039;&#039;&#039;No H.245 Tunneling:&#039;&#039;&#039; The H.245 tunneling procedure is enabled as standard. The voice data connection is negotiated in the TCP signalling connection*) already available. This can be advantageous in connection with NAT and firewalls.&lt;br /&gt;
A checked check box disables the H.245 tunneling procedure, meaning that a separate TCP connection is set up for this negotiation. This applies to the signalling connection leading out of the gatekeeper.&lt;br /&gt;
* &#039;&#039;&#039;Suppress HLC:&#039;&#039;&#039; A checked check box disables the transmission of HLC (High Layer Compatibility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress FTY:&#039;&#039;&#039; A checked check box disables the transmission of FTY (Facility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress Subaddress:&#039;&#039;&#039; A checked check box disables the transmission of Subaddress information elements.&lt;br /&gt;
 *) From a technical viewpoint, the H.245 protocol does not establish its own TCP connection, &lt;br /&gt;
 but shares the H.225 TCP connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SIP Interop Tweaks section ===&lt;br /&gt;
Miscellaneous interoperability options for SIP.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proposed Registration Interval&#039;&#039;&#039;&lt;br /&gt;
|Set in seconds, default is 120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Accept INVITE&#039;s from Anywhere&#039;&#039;&#039;&lt;br /&gt;
|If disabled, registered interfaces will reject INVITE&#039;s not coming from the SIP server with &amp;quot;305 Use Proxy&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enforce Sending Complete&#039;&#039;&#039;&lt;br /&gt;
|Affects handling of &amp;quot;484 Address Incomplete&amp;quot; responses. If enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is cleared. If not enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is retained and re-initiated in case of new dialing digits.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Video&#039;&#039;&#039;&lt;br /&gt;
|Removes Video Capabilities from outgoing media offer.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Early Media&#039;&#039;&#039;&lt;br /&gt;
|Ignore any SDP answer received before final connect response. (Affects only outgoing SIP calls)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Information on Error&#039;&#039;&#039;&lt;br /&gt;
|Controls interworking of Q.931 DISC message. If this option is set, DISC message is always interworked into BYE request.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Disconnect&#039;&#039;&#039;&lt;br /&gt;
|TBD.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Remote Hold Signaling&#039;&#039;&#039;&lt;br /&gt;
|Disables interworking of &amp;quot;inactive&amp;quot; into RemoteHold (affects connected SIP calls only).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Take Refer-To URI as Remote Target URI&#039;&#039;&#039;&lt;br /&gt;
|If enabled: When REFER is received and transfer is executed by the Gateway application and a new INVITE is sent, the Request-URI of this INVITE matches the URI that has been received in Refer-To header in REFER.&amp;lt;br/&amp;gt;&lt;br /&gt;
If not enabled: The Request-URI of the outgoing INVITE is created by usual means. Userpart of the Request-URI usually contains the CDPN as provided by Gateway application.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;To Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Affects only outgoing diverted calls . &#039;&#039;&#039;Called Party&#039;&#039;&#039;: If set we write CDPN into To header of outgoing INVITE (and DGPN into History-Info header). &#039;&#039;&#039;Original Called Party&#039;&#039;&#039;: If set we write the DGPN into To header of outgoing INVITE (and CDPN into Request-URI).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;From Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the local URI (From header) of outgoing calls. Applys to registered interfaces only. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as From-URI regardless of the actual calling party number. &#039;&#039;&#039;AOR with CGPN as Display&#039;&#039;&#039;: Fixed AOR is used as From-URI and calling party number is added as display string. &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Identity Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the identity header (P-Preferred-Identity, P-Asserted-Identity and Remote-Party-Id). &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as Identity-URI regardless of the actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Reliability of Provisional Responses&#039;&#039;&#039;&lt;br /&gt;
|Controls the support of PRACK (RFC-3262). &#039;&#039;&#039;Supported&#039;&#039;&#039;: Supported as optional extension. &#039;&#039;&#039;Required&#039;&#039;&#039;: Required as mandatory extension. &#039;&#039;&#039;Disabled&#039;&#039;&#039;: Hide support for PRACK extension.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Microsoft Presence Format&#039;&#039;&#039;&lt;br /&gt;
|Enables special Microsoft Presence format/scheme, only used for SIP Federation with Lync 2013.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CGPN/CDPN Mappings ==&lt;br /&gt;
A detailed description may be found in the chapter entitled &amp;quot;[[Reference:Administration/Gateway/Interfaces#CGPN.2FCDPN Mappings|Administration/Gateway/Interface/CGPN-CDPN Mappings]]&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80034</id>
		<title>Reference16r1:Gateway/GK/GW</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Gateway/GK/GW&amp;diff=80034"/>
		<updated>2026-06-24T06:16:12Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;Below is an overview of all the gateway&amp;#039;s configurable VoIP interfaces: * &amp;#039;&amp;#039;&amp;#039;Interface:&amp;#039;&amp;#039;&amp;#039; The name of the interface. Clicking this name opens a popup page, on which all settings can be made. The settings are described in more detail in the following chapter &amp;quot;Administration/Gateway/VOIP/Interface (VoIP interfaces)&amp;quot;. * &amp;#039;&amp;#039;&amp;#039;CGPN In, CDPN In, CGPN Out, CDPN Out:&amp;#039;&amp;#039;&amp;#039; Precise details on CGPN In, CDPN In, CGPN Out and CDPN Out mappings are co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is an overview of all the gateway&#039;s configurable VoIP interfaces:&lt;br /&gt;
* &#039;&#039;&#039;Interface:&#039;&#039;&#039; The name of the interface. Clicking this name opens a popup page, on which all settings can be made. The settings are described in more detail in the following chapter &amp;quot;[[#Interface_.28VoIP_Interfaces.29|Administration/Gateway/VOIP/Interface (VoIP interfaces)]]&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;CGPN In, CDPN In, CGPN Out, CDPN Out:&#039;&#039;&#039; Precise details on CGPN In, CDPN In, CGPN Out and CDPN Out mappings are contained in the chapter entitled &amp;quot;[[#CGPN.2FCDPN_Mappings|Administration/Gateway/Interfaces/CGPN-CDPN Mappings]]&amp;quot; further up in the text.&lt;br /&gt;
* &#039;&#039;&#039;Registration:&#039;&#039;&#039; If a terminal has successfully registered with a gateway, then this is indicated in this column through specification of the IP address &amp;lt;Name of the VoIP interface:Call number:IP address&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interface (VoIP Interfaces) ==&lt;br /&gt;
Clicking the relevant VoIP interface (GW1-12 &amp;lt;Name of the VoIP interface&amp;gt;) in the Interface column opens a popup page, on which the VoIP interfaces can be individually configured. Like the PBX objects, this popup page also contains standard entry fields that occur, more or less, in all VoIP interfaces.&lt;br /&gt;
&lt;br /&gt;
These standard fields are:&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The descriptive name of the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Disable:&#039;&#039;&#039; A checked check box disables the relevant VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Protocol:&#039;&#039;&#039; The protocol to be used, that is, H.323 or SIP. Depending on which protocol is used, the set-up of the entry fields changes.&lt;br /&gt;
* &#039;&#039;&#039;Mode:&#039;&#039;&#039; Describes the mode of registration. Possible registration modes are:&lt;br /&gt;
# Gateway without Registration - Logs the VoIP interface (gateway) on to the configured gatekeeper without a registration.&lt;br /&gt;
# Register as Endpoint - Registers a VoIP terminal with the configured gatekeeper.&lt;br /&gt;
# Register as Gateway - Registers a VoIP gateway with the configured gatekeeper. &lt;br /&gt;
# Gatekeeper/Registrar - Is required for managing all gatekeeper registrations on a gateway. (is only visible when running in test-mode or if a gatekeeper license is available) &lt;br /&gt;
# ENUM - Is used to register an ENUM connection with the relevant interface.&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (primary):&#039;&#039;&#039; The primary Gatekeeper IP address at which the terminal or gateway is to register via the relevant interface. Only necessary for modes 2 and 3.&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Address (secondary):&#039;&#039;&#039; The alternative gatekeeper IP address at which the terminal or gateway is to register via the relevant interface, if registration with the primary gatekeeper fails. Only necessary for modes 2 and 3 .&lt;br /&gt;
* &#039;&#039;&#039;Local Domain:&#039;&#039;&#039; Replaces the existing system/domain name (for H323 federation only).&lt;br /&gt;
* &#039;&#039;&#039;Mask:&#039;&#039;&#039; By specifying a network mask, incoming calls can be filtered. Specification of the network mask 255.255.0.0 therefore allows incoming calls on the relevant interface for terminals from the IP address range 192.168.0.0 - 192.168.255.255 .&lt;br /&gt;
* &#039;&#039;&#039;Gatekeeper Identifier:&#039;&#039;&#039; It is also sufficient to specify only the gatekeeper ID. Every gatekeeper in a network can be identified by means of its own gatekeeper ID, so that several gatekeepers can be operated in a network, with each terminal nevertheless identifying the correct gatekeeper by means of Gatekeeper Discovery (uses the multicast address 224.0.1.41).&lt;br /&gt;
* &#039;&#039;&#039;STUN SERVER:&#039;&#039;&#039; The STUN server name or IP address must be configured if this device has no public IP address while the SIP server is accessible under a public IP address. The value is given by the SIP provider or administrator (for example, stun.xten.com or 64.69.76.23). You can choose any STUN server; it does not necessarily have to correspond to the one of the SIP provider.&lt;br /&gt;
* &#039;&#039;&#039;Local Signalling Port:&#039;&#039;&#039; Signalling Port used by the Interface.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Register as Gateway/Endpoint:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; SIP Domain of the remote SIP Server to register (often equal to the SIP Proxy).&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (REGISTER,INVITE,etc) are to be sent to. Proxy can be omitted if domain part of AOR can be used as remote signaling destination and it&#039;s set at Remote Domain.&lt;br /&gt;
* &#039;&#039;&#039;SIP - Gateway without Registration:&#039;&#039;&#039; &lt;br /&gt;
** &#039;&#039;&#039;Remote Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;FROM&amp;quot; field and removes it if match. &lt;br /&gt;
** &#039;&#039;&#039;Local Domain (SIP Only):&#039;&#039;&#039; Check the Domain/IP Address on the SIP URI &amp;quot;TO&amp;quot; field and removes it if match.&lt;br /&gt;
** &#039;&#039;&#039;Proxy (SIP Only):&#039;&#039;&#039; DNS name or IP address of the SIP proxy where SIP messages (INVITE,etc) are to be sent to, this field it&#039;s mandatory.&lt;br /&gt;
** &#039;&#039;&#039;Filter Incoming Calls (SIP Only):&#039;&#039;&#039; Accept Incoming Call on this interface only if the domain part of the &amp;quot;To:&amp;quot; field SIP URI matches the &#039;&#039;Local Domain&#039;&#039; configured. If not accepted, the call may still be accepted by another interface&lt;br /&gt;
* &#039;&#039;&#039;H323/TLS - Gateway without Registration&lt;br /&gt;
** &#039;&#039;&#039;Federation:&#039;&#039;&#039; Turns on open federation, which means the domain part of a destination name is used to look up the remote gateway in the DNS&lt;br /&gt;
** &#039;&#039;&#039;Veriyfy Cert:&#039;&#039;&#039; If set, the remote ceritficate on an incoming call is verified against the domain part of the source name&lt;br /&gt;
&lt;br /&gt;
=== Authorization section ===&lt;br /&gt;
In the &#039;&#039;&#039;Authorization&#039;&#039;&#039; section, you can store a password for the VoIP interface.&lt;br /&gt;
* &#039;&#039;&#039;Password / Retype:&#039;&#039;&#039; The security of the registration can be raised by specifying a password (Password). The password must be confirmed (Retype).&lt;br /&gt;
&lt;br /&gt;
=== Alias List section ===&lt;br /&gt;
In the &#039;&#039;&#039;Alias List&#039;&#039;&#039; section, you specify the call name (H.323) and the call number (E.164) of the relevant registration. For VoIP end points, you should define the assigned direct dialling number or MSN as the E.164 address, and the name as the H.323 name. For VoIP gateways it is sufficient to define the name.&lt;br /&gt;
* &#039;&#039;&#039;Name:&#039;&#039;&#039; The H.323 name.&lt;br /&gt;
* &#039;&#039;&#039;Number:&#039;&#039;&#039; The E.164 call number.&lt;br /&gt;
&lt;br /&gt;
=== Coder Preferences section ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Coder Preferences&#039;&#039;&#039; section were already described in chapter &amp;quot;[[Reference:Administration/Gateway/Interfaces#Interface_.28ISDN.2C_SIP_.26_virtual_interfaces.29|Administration/Gateway/Interfaces/Interface (physical and virtual interfaces)]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Media Properties ===&lt;br /&gt;
The standard entry fields in the &#039;&#039;&#039;Media Properties&#039;&#039;&#039; section were already described [[{{NAMESPACE}}:Gateway/Interfaces/Media_Properties | Media Properties]].&lt;br /&gt;
&lt;br /&gt;
=== H.323 Interop Tweaks section ===&lt;br /&gt;
In addition to the standard fields, several advanced settings are available in the &#039;&#039;&#039;H.323 Interop Tweaks&#039;&#039;&#039; section. They are normally not necessary and are merely used to solve compatibility problems with some PBXs:&lt;br /&gt;
* &#039;&#039;&#039;No Faststart:&#039;&#039;&#039; The H.245 faststart procedure is enabled as standard. Outgoing calls are made with faststart, incoming calls with faststart are answered with faststart.&amp;lt;br&amp;gt;A checked check box disables the H.245 faststart procedure. Outgoing calls are made without faststart, incoming calls with and without faststart are answered without faststart.&lt;br /&gt;
* &#039;&#039;&#039;No H.245 Tunneling:&#039;&#039;&#039; The H.245 tunneling procedure is enabled as standard. The voice data connection is negotiated in the TCP signalling connection*) already available. This can be advantageous in connection with NAT and firewalls.&lt;br /&gt;
A checked check box disables the H.245 tunneling procedure, meaning that a separate TCP connection is set up for this negotiation. This applies to the signalling connection leading out of the gatekeeper.&lt;br /&gt;
* &#039;&#039;&#039;Suppress HLC:&#039;&#039;&#039; A checked check box disables the transmission of HLC (High Layer Compatibility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress FTY:&#039;&#039;&#039; A checked check box disables the transmission of FTY (Facility) information elements.&lt;br /&gt;
* &#039;&#039;&#039;Suppress Subaddress:&#039;&#039;&#039; A checked check box disables the transmission of Subaddress information elements.&lt;br /&gt;
 *) From a technical viewpoint, the H.245 protocol does not establish its own TCP connection, &lt;br /&gt;
 but shares the H.225 TCP connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SIP Interop Tweaks section ===&lt;br /&gt;
Miscellaneous interoperability options for SIP.&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proposed Registration Interval&#039;&#039;&#039;&lt;br /&gt;
|Set in seconds, default is 120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Accept INVITE&#039;s from Anywhere&#039;&#039;&#039;&lt;br /&gt;
|If disabled, registered interfaces will reject INVITE&#039;s not coming from the SIP server with &amp;quot;305 Use Proxy&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enforce Sending Complete&#039;&#039;&#039;&lt;br /&gt;
|Affects handling of &amp;quot;484 Address Incomplete&amp;quot; responses. If enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is cleared. If not enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is retained and re-initiated in case of new dialing digits.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Video&#039;&#039;&#039;&lt;br /&gt;
|Removes Video Capabilities from outgoing media offer.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Early Media&#039;&#039;&#039;&lt;br /&gt;
|Ignore any SDP answer received before final connect response. (Affects only outgoing SIP calls)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Information on Error&#039;&#039;&#039;&lt;br /&gt;
|Controls interworking of Q.931 DISC message. If this option is set, DISC message is always interworked into BYE request.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Disconnect&#039;&#039;&#039;&lt;br /&gt;
|TBD.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Remote Hold Signaling&#039;&#039;&#039;&lt;br /&gt;
|Disables interworking of &amp;quot;inactive&amp;quot; into RemoteHold (affects connected SIP calls only).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Take Refer-To URI as Remote Target URI&#039;&#039;&#039;&lt;br /&gt;
|If enabled: When REFER is received and transfer is executed by the Gateway application and a new INVITE is sent, the Request-URI of this INVITE matches the URI that has been received in Refer-To header in REFER.&amp;lt;br/&amp;gt;&lt;br /&gt;
If not enabled: The Request-URI of the outgoing INVITE is created by usual means. Userpart of the Request-URI usually contains the CDPN as provided by Gateway application.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;To Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Affects only outgoing diverted calls . &#039;&#039;&#039;Called Party&#039;&#039;&#039;: If set we write CDPN into To header of outgoing INVITE (and DGPN into History-Info header). &#039;&#039;&#039;Original Called Party&#039;&#039;&#039;: If set we write the DGPN into To header of outgoing INVITE (and CDPN into Request-URI).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;From Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the local URI (From header) of outgoing calls. Applys to registered interfaces only. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as From-URI regardless of the actual calling party number. &#039;&#039;&#039;AOR with CGPN as Display&#039;&#039;&#039;: Fixed AOR is used as From-URI and calling party number is added as display string. &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Identity Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the identity header (P-Preferred-Identity, P-Asserted-Identity and Remote-Party-Id). &#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number. &#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as Identity-URI regardless of the actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Reliability of Provisional Responses&#039;&#039;&#039;&lt;br /&gt;
|Controls the support of PRACK (RFC-3262). &#039;&#039;&#039;Supported&#039;&#039;&#039;: Supported as optional extension. &#039;&#039;&#039;Required&#039;&#039;&#039;: Required as mandatory extension. &#039;&#039;&#039;Disabled&#039;&#039;&#039;: Hide support for PRACK extension.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Microsoft Presence Format&#039;&#039;&#039;&lt;br /&gt;
|Enables special Microsoft Presence format/scheme, only used for SIP Federation with Lync 2013.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CGPN/CDPN Mappings ==&lt;br /&gt;
A detailed description may be found in the chapter entitled &amp;quot;[[Reference:Administration/Gateway/Interfaces#CGPN.2FCDPN_Mappings|Administration/Gateway/Interface/CGPN-CDPN Mappings]]&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79998</id>
		<title>Howto:Innovaphones public services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79998"/>
		<updated>2026-06-16T13:42:51Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: public ips, innovaphone ips, firewall --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* All versions&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
Some services or products use a data connection to the vendor system. Innovaphone will provide his services from the following IP-networks:  &lt;br /&gt;
&lt;br /&gt;
 46.232.228.0/26&lt;br /&gt;
 213.144.10.192/29&lt;br /&gt;
 141.95.57.16/28&lt;br /&gt;
 185.145.188.12/32 # push NRW-RZ1&lt;br /&gt;
 2a06:d840::12/128 # push NRW-RZ1&lt;br /&gt;
&lt;br /&gt;
To configure your firewall accordingly, allow those entire networks as shown above. We suggest allowing traffic on the target DNS resolution eg. push.innovaphone.com.&lt;br /&gt;
&lt;br /&gt;
=== STUN ===&lt;br /&gt;
[[Reference12r2:IP4/General/STUN|STUN Service]] for all customers&lt;br /&gt;
 stun.innovaphone.com (udp/3478)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: [http://wiki.innovaphone.com/index.php?title=Course13:IT_Advanced_2_-_07_Public_access_to_PBX_resources_%28practice%29#Media_data It is not a good idea to use innovaphone&#039;s STUN server. Although this server would yield the same results, there is no guarantee of availability. Your ISP or SIP provider&#039;s STUN should do better]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== TURN ===&lt;br /&gt;
[[Reference13r3:IP4/General/STUN#TURN Extern|TURN fallback service]] on port 443 for all customers&lt;br /&gt;
 turn-fallback.innovaphone.com (tcp/443)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This TURN server shall only be used as 443 fallback server. It is not intended to be used as your [[Reference13r3:IP4/General/STUN#TURN Servers| regular TURN server]] as it is not designed as a primary TURN server. Do not use turn.innovaphone.com either.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
[[Reference13r1:Concept Provisioning|Provisioning System]] for all devices&lt;br /&gt;
 config.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
[[Reference13r2:Concept Push Notifications for iOS and Android|Push]] for iOS, Android, Huawei and Browser Clients&lt;br /&gt;
 push.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Store ===&lt;br /&gt;
 store.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Devices/Rental ===&lt;br /&gt;
 my-app.innovaphone.com (tcp/https)&lt;br /&gt;
&lt;br /&gt;
=== NTP ===&lt;br /&gt;
[[Reference13r1:Services/NTP|NTP Service]] for all customers&lt;br /&gt;
 ntp.innovaphone.com (udp/123)&lt;br /&gt;
&lt;br /&gt;
=== Remote Control Central ID service ===&lt;br /&gt;
[[Reference16r1:Concept App Remote Control#Central ID service server| Central ID service server]]&lt;br /&gt;
 remotecontrol.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Connector for Whatsapp ===&lt;br /&gt;
[[Reference16r1:Concept App Service Connector for Whatsapp| App Connector for Whatsapp]]&lt;br /&gt;
 whatsapp.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
==Certificates==&lt;br /&gt;
innovaphone provides a public certificate download for used public keys.&lt;br /&gt;
&lt;br /&gt;
* https://download.innovaphone.com/certificates/innovaphone.pem (the current innovaphone public key which will used for example for our push service)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca.pem (all innovaphone Device Certification Authority public keys)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca-unverified.pem (all innovaphone Unverified Device Certification Authority public keys)&lt;br /&gt;
** The Unverified CA is used for non hardware devices, e.g. IPVAs, which are not shipped with an official innovaphone Device Certification Authority certificate, as innovaphone has no control over the serial number here.&lt;br /&gt;
&lt;br /&gt;
If needed, you can trust them manually or distribute them via [[Reference14r1:Concept App Service Devices#Certificates configuration|device&#039;s configuration]].&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android]]&lt;br /&gt;
* [[Concept Status innovaphone Services]]&lt;br /&gt;
* [[Reference13r1:Concept_Provisioning]]&lt;br /&gt;
* [[Howto:Update_innovaphone.com_Wildcard-Certificate_in_a_Device_Trustlist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79996</id>
		<title>Howto:Innovaphones public services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79996"/>
		<updated>2026-06-16T13:31:39Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: public ips, innovaphone ips, firewall --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* All versions&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
Some services or products use a data connection to the vendor system. Innovaphone will provide his services from the following IP-networks:  &lt;br /&gt;
&lt;br /&gt;
 46.232.228.0/26&lt;br /&gt;
 213.144.10.192/29&lt;br /&gt;
 141.95.57.16/28&lt;br /&gt;
 45.133.189.205/32 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 2a0f:ff00:2001:366::21/128 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 185.145.188.12/32 # upcoming, push NRW-RZ1&lt;br /&gt;
 2a06:d840::12/128 # upcoming, push NRW-RZ1&lt;br /&gt;
&lt;br /&gt;
To configure your firewall accordingly, allow those entire networks as shown above. We suggest allowing traffic on the target DNS resolution eg. push.innovaphone.com.&lt;br /&gt;
&lt;br /&gt;
=== STUN ===&lt;br /&gt;
[[Reference12r2:IP4/General/STUN|STUN Service]] for all customers&lt;br /&gt;
 stun.innovaphone.com (udp/3478)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: [http://wiki.innovaphone.com/index.php?title=Course13:IT_Advanced_2_-_07_Public_access_to_PBX_resources_%28practice%29#Media_data It is not a good idea to use innovaphone&#039;s STUN server. Although this server would yield the same results, there is no guarantee of availability. Your ISP or SIP provider&#039;s STUN should do better]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== TURN ===&lt;br /&gt;
[[Reference13r3:IP4/General/STUN#TURN Extern|TURN fallback service]] on port 443 for all customers&lt;br /&gt;
 turn-fallback.innovaphone.com (tcp/443)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This TURN server shall only be used as 443 fallback server. It is not intended to be used as your [[Reference13r3:IP4/General/STUN#TURN Servers| regular TURN server]] as it is not designed as a primary TURN server. Do not use turn.innovaphone.com either.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
[[Reference13r1:Concept Provisioning|Provisioning System]] for all devices&lt;br /&gt;
 config.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
[[Reference13r2:Concept Push Notifications for iOS and Android|Push]] for iOS, Android, Huawei and Browser Clients&lt;br /&gt;
 push.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Store ===&lt;br /&gt;
 store.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Devices/Rental ===&lt;br /&gt;
 my-app.innovaphone.com (tcp/https)&lt;br /&gt;
&lt;br /&gt;
=== NTP ===&lt;br /&gt;
[[Reference13r1:Services/NTP|NTP Service]] for all customers&lt;br /&gt;
 ntp.innovaphone.com (udp/123)&lt;br /&gt;
&lt;br /&gt;
=== Remote Control Central ID service ===&lt;br /&gt;
[[Reference16r1:Concept App Remote Control#Central ID service server| Central ID service server]]&lt;br /&gt;
 remotecontrol.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Connector for Whatsapp ===&lt;br /&gt;
[[Reference16r1:Concept App Service Connector for Whatsapp| App Connector for Whatsapp]]&lt;br /&gt;
 whatsapp.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
==Certificates==&lt;br /&gt;
innovaphone provides a public certificate download for used public keys.&lt;br /&gt;
&lt;br /&gt;
* https://download.innovaphone.com/certificates/innovaphone.pem (the current innovaphone public key which will used for example for our push service)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca.pem (all innovaphone Device Certification Authority public keys)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca-unverified.pem (all innovaphone Unverified Device Certification Authority public keys)&lt;br /&gt;
** The Unverified CA is used for non hardware devices, e.g. IPVAs, which are not shipped with an official innovaphone Device Certification Authority certificate, as innovaphone has no control over the serial number here.&lt;br /&gt;
&lt;br /&gt;
If needed, you can trust them manually or distribute them via [[Reference14r1:Concept App Service Devices#Certificates configuration|device&#039;s configuration]].&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android]]&lt;br /&gt;
* [[Concept Status innovaphone Services]]&lt;br /&gt;
* [[Reference13r1:Concept_Provisioning]]&lt;br /&gt;
* [[Howto:Update_innovaphone.com_Wildcard-Certificate_in_a_Device_Trustlist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79995</id>
		<title>Howto:Innovaphones public services</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Innovaphones_public_services&amp;diff=79995"/>
		<updated>2026-06-16T12:36:19Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: public ips, innovaphone ips, firewall --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* All versions&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
Some services or products use a data connection to the vendor system. Innovaphone will provide his services from the following IP-networks:  &lt;br /&gt;
&lt;br /&gt;
 46.232.228.0/26&lt;br /&gt;
 213.144.10.192/29&lt;br /&gt;
 141.95.57.16/28&lt;br /&gt;
 45.133.189.205/32 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 2a0f:ff00:2001:366::21/128 # will be removed soon, push NRW-RZ1&lt;br /&gt;
 185.145.188.12/32 # upcoming, push NRW-RZ1&lt;br /&gt;
 2a06:d840::12/128 # upcoming, push NRW-RZ1&lt;br /&gt;
&lt;br /&gt;
To configure your firewall accordingly, allow those entire networks as shown above.&lt;br /&gt;
&lt;br /&gt;
=== STUN ===&lt;br /&gt;
[[Reference12r2:IP4/General/STUN|STUN Service]] for all customers&lt;br /&gt;
 stun.innovaphone.com (udp/3478)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: [http://wiki.innovaphone.com/index.php?title=Course13:IT_Advanced_2_-_07_Public_access_to_PBX_resources_%28practice%29#Media_data It is not a good idea to use innovaphone&#039;s STUN server. Although this server would yield the same results, there is no guarantee of availability. Your ISP or SIP provider&#039;s STUN should do better]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== TURN ===&lt;br /&gt;
[[Reference13r3:IP4/General/STUN#TURN_Extern |TURN fallback service ]] on port 443 for all customers&lt;br /&gt;
 turn-fallback.innovaphone.com (tcp/443)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This TURN server shall only be used as 443 fallback server. It is not intended to be used as your [[Reference13r3:IP4/General/STUN#TURN_Servers | regular TURN server ]] as it is not designed as a primary TURN server. Do not use turn.innovaphone.com either.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Provisioning ===&lt;br /&gt;
[[Reference13r1:Concept Provisioning|Provisioning System]] for all devices&lt;br /&gt;
 config.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Push ===&lt;br /&gt;
[[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android|Push]] for iOS, Android, Huawei and Browser Clients&lt;br /&gt;
 push.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Store ===&lt;br /&gt;
 store.innovaphone.com (tcp/http/https)&lt;br /&gt;
&lt;br /&gt;
=== Devices/Rental ===&lt;br /&gt;
 my-app.innovaphone.com (tcp/https)&lt;br /&gt;
&lt;br /&gt;
=== NTP ===&lt;br /&gt;
[[Reference13r1:Services/NTP|NTP Service]] for all customers&lt;br /&gt;
 ntp.innovaphone.com (udp/123)&lt;br /&gt;
&lt;br /&gt;
=== Remote Control Central ID service ===&lt;br /&gt;
[[Reference16r1:Concept_App_Remote_Control#Central_ID_service_server| Central ID service server]]&lt;br /&gt;
 remotecontrol.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
=== Connector for Whatsapp ===&lt;br /&gt;
[[Reference16r1:Concept_App_Service_Connector_for_Whatsapp| App Connector for Whatsapp]]&lt;br /&gt;
 whatsapp.innovaphone.com (tcp/https/wss)&lt;br /&gt;
&lt;br /&gt;
==Certificates==&lt;br /&gt;
innovaphone provides a public certificate download for used public keys.&lt;br /&gt;
&lt;br /&gt;
* https://download.innovaphone.com/certificates/innovaphone.pem (the current innovaphone public key which will used for example for our push service)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca.pem (all innovaphone Device Certification Authority public keys)&lt;br /&gt;
* https://download.innovaphone.com/certificates/ca-unverified.pem (all innovaphone Unverified Device Certification Authority public keys)&lt;br /&gt;
** The Unverified CA is used for non hardware devices, e.g. IPVAs, which are not shipped with an official innovaphone Device Certification Authority certificate, as innovaphone has no control over the serial number here.&lt;br /&gt;
&lt;br /&gt;
If needed, you can trust them manually or distribute them via [[Reference14r1:Concept_App_Service_Devices#Certificates_configuration|device&#039;s configuration]].&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference13r2:Concept_Push_Notifications_for_iOS_and_Android]]&lt;br /&gt;
* [[Concept Status innovaphone Services]]&lt;br /&gt;
* [[Reference13r1:Concept_Provisioning]]&lt;br /&gt;
* [[Howto:Update_innovaphone.com_Wildcard-Certificate_in_a_Device_Trustlist]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Translations&amp;diff=79989</id>
		<title>Reference16r1:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Translations&amp;diff=79989"/>
		<updated>2026-06-15T12:24:28Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &lt;br /&gt;
 You are a translation engine. Translate the user input into {LANG}.&lt;br /&gt;
 Strictly follow all output rules:&lt;br /&gt;
 - Return ONLY the translated content. No preamble, no explanations, no surrounding text of any kind.&lt;br /&gt;
 - If the input contains HTML: preserve all tags, attributes, and structure unchanged; translate text nodes only.&lt;br /&gt;
 - Never translate attribute values (href, src, class, id, style, data-*, etc.).&lt;br /&gt;
 - Preserve proper nouns, brand names, and technical identifiers exactly as-is.&lt;br /&gt;
 - Preserve whitespace, line breaks, and formatting exactly.&lt;br /&gt;
 - Maintain the original tone and register (formal/informal).&lt;br /&gt;
 - If the input is already in {LANG}, return it unchanged.&lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
;Temperature&lt;br /&gt;
:Define the parameter &amp;quot;temperature&amp;quot; in the LLM request. (Default 0.3)&lt;br /&gt;
&lt;br /&gt;
;Max. Tokens&lt;br /&gt;
:Define the parameter &amp;quot;max_tokens&amp;quot; in the LLM request. (Default 65536)&lt;br /&gt;
&lt;br /&gt;
;Enable Thinking&lt;br /&gt;
:Define the parameter &amp;quot;chat_template_kwargs.enable_thinking&amp;quot; in the LLM request. (Default false)&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Translations&amp;diff=79988</id>
		<title>Reference16r1:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Translations&amp;diff=79988"/>
		<updated>2026-06-15T12:23:47Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
This interface connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, or LM Studio.                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:Depends on the operator of the server. No data is sent to third parties.&lt;br /&gt;
;Cost model&lt;br /&gt;
:Depends on the operator of the inference server.&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* Synchronous HTTP flow - a translation request is sent and the response is returned immediately&lt;br /&gt;
* Outgoing HTTPS request to the configured server&lt;br /&gt;
* The available models are queried via &amp;lt;code&amp;gt;GET /v1/models&amp;lt;/code&amp;gt; in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Optional performance options, authentication options, and the system prompt can be configured in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; &lt;br /&gt;
* The system prompt uses &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder for the ISO target language code&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79953</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79953"/>
		<updated>2026-06-09T08:08:52Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Custom LLM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &lt;br /&gt;
 You are a translation engine. Translate the user input into {LANG}.&lt;br /&gt;
 Strictly follow all output rules:&lt;br /&gt;
 - Return ONLY the translated content. No preamble, no explanations, no surrounding text of any kind.&lt;br /&gt;
 - If the input contains HTML: preserve all tags, attributes, and structure unchanged; translate text nodes only.&lt;br /&gt;
 - Never translate attribute values (href, src, class, id, style, data-*, etc.).&lt;br /&gt;
 - Preserve proper nouns, brand names, and technical identifiers exactly as-is.&lt;br /&gt;
 - Preserve whitespace, line breaks, and formatting exactly.&lt;br /&gt;
 - Maintain the original tone and register (formal/informal).&lt;br /&gt;
 - If the input is already in {LANG}, return it unchanged.&lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
;Temperature&lt;br /&gt;
:Define the parameter &amp;quot;temperature&amp;quot; in the LLM request. (Default 0.3)&lt;br /&gt;
&lt;br /&gt;
;Max. Tokens&lt;br /&gt;
:Define the parameter &amp;quot;max_tokens&amp;quot; in the LLM request. (Default 65536)&lt;br /&gt;
&lt;br /&gt;
;Enable Thinking&lt;br /&gt;
:Define the parameter &amp;quot;chat_template_kwargs.enable_thinking&amp;quot; in the LLM request. (Default false)&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79952</id>
		<title>Reference17:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79952"/>
		<updated>2026-06-09T07:57:45Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Technical Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
This interface connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, or LM Studio.                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:Depends on the operator of the server. No data is sent to third parties.&lt;br /&gt;
;Cost model&lt;br /&gt;
:Depends on the operator of the inference server.&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* Synchronous HTTP flow - a translation request is sent and the response is returned immediately&lt;br /&gt;
* Outgoing HTTPS request to the configured server&lt;br /&gt;
* The available models are queried via &amp;lt;code&amp;gt;GET /v1/models&amp;lt;/code&amp;gt; in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Optional performance options, authentication options, and the system prompt can be configured in the [[Reference17:Apps/PbxManager/App Translations|settings plugin]]&lt;br /&gt;
* Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; &lt;br /&gt;
* The system prompt uses &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder for the ISO target language code&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79913</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79913"/>
		<updated>2026-06-02T11:48:47Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Custom LLM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &lt;br /&gt;
 You are a translation engine. Translate the user input into {LANG}.&lt;br /&gt;
 Strictly follow all output rules:&lt;br /&gt;
 - Return ONLY the translated content. No preamble, no explanations, no surrounding text of any kind.&lt;br /&gt;
 - If the input contains HTML: preserve all tags, attributes, and structure unchanged; translate text nodes only.&lt;br /&gt;
 - Never translate attribute values (href, src, class, id, style, data-*, etc.).&lt;br /&gt;
 - Preserve proper nouns, brand names, and technical identifiers exactly as-is.&lt;br /&gt;
 - Preserve whitespace, line breaks, and formatting exactly.&lt;br /&gt;
 - Maintain the original tone and register (formal/informal).&lt;br /&gt;
 - If the input is already in {LANG}, return it unchanged.&lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79912</id>
		<title>Reference17:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79912"/>
		<updated>2026-06-02T10:23:12Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* EU - eTranslation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
This interface connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, or LM Studio.                                                                                                                                        &lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:Depends on the operator of the server. No data is sent to third parties.&lt;br /&gt;
;Cost model&lt;br /&gt;
:Depends on the operator of the inference server.&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* Synchronous HTTP flow - a translation request is sent and the response is returned immediately&lt;br /&gt;
* Outgoing HTTPS request to the configured server&lt;br /&gt;
* The available models are queried via &amp;lt;code&amp;gt;GET /v1/models&amp;lt;/code&amp;gt; in the settings plugin&lt;br /&gt;
* Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; with an editable system prompt&lt;br /&gt;
* The system prompt uses &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder for the ISO target language code&lt;br /&gt;
* An optional Bearer token can be configured for servers that require authentication&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79911</id>
		<title>Reference17:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79911"/>
		<updated>2026-06-02T10:11:41Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. For cloud services (DeepL, eTranslation) you need your own account and credentials. For Custom LLM, a self-hosted OpenAI API-compatible inference server is used instead.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79910</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79910"/>
		<updated>2026-06-02T10:09:05Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* DeepL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &amp;lt;code&amp;gt;You are a translation assistant. Translate the following text to {LANG}. Return only the translated text, with no explanations or additional content.&amp;lt;/code&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79909</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79909"/>
		<updated>2026-06-02T09:50:50Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Custom LLM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwhise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model and interact with the endpoint &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &amp;lt;code&amp;gt;You are a translation assistant. Translate the following text to {LANG}. Return only the translated text, with no explanations or additional content.&amp;lt;/code&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79908</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79908"/>
		<updated>2026-06-02T09:49:13Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Translations Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
Select the active translation backend.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwhise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &amp;lt;code&amp;gt;You are a translation assistant. Translate the following text to {LANG}. Return only the translated text, with no explanations or additional content.&amp;lt;/code&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note:&#039;&#039;&#039; Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; to the configured host. The model receives a system prompt instructing it to translate the input text to the target language and return only the translated result.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79907</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79907"/>
		<updated>2026-06-02T09:44:46Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Custom LLM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
You have to configure the current active translations service.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwhise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Token&lt;br /&gt;
:Optional Bearer token sent as &amp;lt;code&amp;gt;Authorization: Bearer {token}&amp;lt;/code&amp;gt; with every request to the inference server, including the model list query. Leave empty if the server does not require authentication.   &lt;br /&gt;
&lt;br /&gt;
;System Prompt&lt;br /&gt;
:The system prompt sent to the model with every translation request. Use &amp;lt;code&amp;gt;{LANG}&amp;lt;/code&amp;gt; as a placeholder - it is replaced at runtime with the ISO target language code (e.g. &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EN-GB&amp;lt;/code&amp;gt;).&lt;br /&gt;
:If left empty, the following default prompt is used: &amp;lt;code&amp;gt;You are a translation assistant. Translate the following text to {LANG}. Return only the translated text, with no explanations or additional content.&amp;lt;/code&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note:&#039;&#039;&#039; Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; to the configured host. The model receives a system prompt instructing it to translate the input text to the target language and return only the translated result.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79906</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79906"/>
		<updated>2026-06-02T09:21:13Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* eTranslation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
You have to configure the current active translations service.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwhise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Custom LLM ===&lt;br /&gt;
Connects to any OpenAI API-compatible server, such as [https://ollama.com Ollama], vLLM, LM Studio, or a self-hosted model.&lt;br /&gt;
&lt;br /&gt;
;Hostname&lt;br /&gt;
:The base URL of the server. The protocol prefix &amp;lt;code&amp;gt;https://&amp;lt;/code&amp;gt; is assumed if omitted.&lt;br /&gt;
:Example: &amp;lt;code&amp;gt;https://ollama.example.com&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ollama.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
:Once a hostname is entered, the plugin automatically queries &amp;lt;code&amp;gt;{hostname}/v1/models&amp;lt;/code&amp;gt; and populates the &#039;&#039;Model&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
;Model&lt;br /&gt;
:Dropdown populated automatically from the models available on the configured host. Select the model to be used for translation requests.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note:&#039;&#039;&#039; Translation requests are sent as &amp;lt;code&amp;gt;POST /v1/chat/completions&amp;lt;/code&amp;gt; to the configured host. The model receives a system prompt instructing it to translate the input text to the target language and return only the translated result.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79905</id>
		<title>Reference17:Apps/PbxManager/App Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Translations&amp;diff=79905"/>
		<updated>2026-06-02T09:11:16Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* European eTranslation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With the translations PBX-Manager plugin, the needed app object can be created and configured. &lt;br /&gt;
In addition, the app object can be assigned to specific config templates, if any exist.&lt;br /&gt;
&lt;br /&gt;
== Add an app object == &lt;br /&gt;
&lt;br /&gt;
;Name&lt;br /&gt;
:The &#039;&#039;name&#039;&#039; displayed for the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;SIP&lt;br /&gt;
:The &#039;&#039;sip&#039;&#039; from the app object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config Templates&lt;br /&gt;
:Enabled config templates where the App should be available.&lt;br /&gt;
:If config templates exist, they will be listed with a checkbox.&lt;br /&gt;
:The app object will be assigned to the config templates if a checkbox is checked.&amp;lt;br&amp;gt;&lt;br /&gt;
:&#039;&#039;&#039;Be Aware:&#039;&#039;&#039; Every user who should be able to use the translation service needs to have it assigned (by using a config template, for example).&lt;br /&gt;
&lt;br /&gt;
=== Translations Service ===&lt;br /&gt;
You have to configure the current active translations service.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
Specific https://www.deepl.com configuration&lt;br /&gt;
&lt;br /&gt;
;URL&lt;br /&gt;
:The URL API Endpoint for the translation backend. &lt;br /&gt;
: If the field is empty, which is the default, the API endpoint will be selected automatically depending on the type of the key. If key ends with &amp;quot;:fx&amp;quot; the URL &amp;lt;code&amp;gt;https://api-free.deepl.com&amp;lt;/code&amp;gt; is used, otherwhise &amp;lt;code&amp;gt;https://api.deepl.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;API-Key&lt;br /&gt;
:The secret &#039;&#039;api-key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== eTranslation ===&lt;br /&gt;
Specific https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en configuration&lt;br /&gt;
&lt;br /&gt;
;Application Name&lt;br /&gt;
:The secret &#039;&#039;Application Name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Password&lt;br /&gt;
:The secret &#039;&#039;Password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App Service Translations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79894</id>
		<title>Howto16r1:Firmware Upgrade V15r1 V16r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79894"/>
		<updated>2026-05-28T13:51:06Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Changes visible to the end customers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 16r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 16r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v16 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 15r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AP Upgrade to Image 140037 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140037. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* 16r1 introduces the feature of [[Reference16r1:Concept_Reconnect_Calls | Reconnect Calls for Seamless Handover &amp;amp; Roaming]]. As a result, calls will not be dropped on network interruptions or PBX reboots. Instead users receive visual (MyApps or phone display) and audio (in-band tone) feedback and the call is reconnected automatically.&lt;br /&gt;
* Chat App: The option for users to choose whether to send a chat message using ENTER or SHIFT+ENTER has been removed. Messages can now only be sent using CTRL+ENTER without pressing the send button.&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for Microsoft 365 ===&lt;br /&gt;
If you plan to use the new &#039;&#039;&#039;Contact Search&#039;&#039;&#039; feature of the Connector for Microsoft 365, you need to perform two manual Steps:&lt;br /&gt;
# Create the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object by using the Settings template&lt;br /&gt;
# Assign the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object to every user who should be able to use the new Contact Search feature. (Of cause, you can use a template for that)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For a more detailed guide, please refer to the how-to article: [[Howto16r1:Configure Contact Search by Connector for Microsoft365#Creating the PBX app object using the PBX Manager Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Remote Control ===&lt;br /&gt;
In order to use the Admin Configuration Panel of the Settings App – AP Remote Control, it is necessary to grant access to the &#039;&#039;&#039;admin&#039;&#039;&#039; API, available in the App tab of the Remote Control App object.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
For badge counts to work, the Working Manager app object must have &#039;&#039;&#039;Websocket&#039;&#039;&#039; and &#039;&#039;&#039;PbxSignal&#039;&#039;&#039; enabled.&lt;br /&gt;
For the Connect integration of the Working app, &#039;&#039;&#039;Websocket&#039;&#039;&#039;, &#039;&#039;&#039;Services&#039;&#039;&#039; and &#039;&#039;&#039;connect&#039;&#039;&#039;(in the Apps tab) must be enabled in the Working User app.&lt;br /&gt;
&lt;br /&gt;
=== Switchboard ===&lt;br /&gt;
For the Connect Integration (Call Notes) to work, the Switchboard App must have the &#039;&#039;&#039;Services&#039;&#039;&#039; (App-tab) and &#039;&#039;&#039;connect&#039;&#039;&#039; or &#039;&#039;&#039;messages&#039;&#039;&#039; (Apps-tab) enabled (the name depends when the PBX was installed).&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
* Projects requires &#039;&#039;&#039;App platform version 140029&#039;&#039;&#039; or higher, so updating the App Platform before Projects is recommended. &amp;lt;br /&amp;gt;The Store will prohibit the update if the App Plattform does not have the minimum required version.&lt;br /&gt;
* For some extra admin-functionalities the &#039;&#039;&#039;Projects App Object needs to have an admin mode&#039;&#039;&#039; (App-tab). &amp;lt;br /&amp;gt;Easiest way to set this new mode is to the open the Projects App via the Projects Plugin Settings App and to re-apply it (click the OK-button). The same plugin can also be used to distribute this mode via the Config Templates.&lt;br /&gt;
* The &#039;&#039;&#039;App Platform requires the correct Time and a Timezone&#039;&#039;&#039; set under AP Manager/Settings/General. &amp;lt;br /&amp;gt;This is needed for some automatic cleanup of deleted items and automatic task status updates (done around 00:00h on the due date).&lt;br /&gt;
&lt;br /&gt;
=== For legacy support only: Change TLS Profile ===&lt;br /&gt;
The &#039;&#039;Normal&#039;&#039; profile has been updated to allow only TLS 1.3 and TLS 1.2. This setting is compatible with all supported firmware versions. So you don&#039;t need to do any changes.&lt;br /&gt;
However if you need older TLS versions for compatibility with legacy devices, consider changing the TLS profile to &#039;&#039;Legacy&#039;&#039;. In that case please see [[Reference16r1:IP4/General/TLS]] for details.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
; App Charts: [[Reference16r1:Concept_App_Charts]]&lt;br /&gt;
; App Polls: [[Reference16r1:Concept App Polls]]&lt;br /&gt;
; App MQTT Broker: [[Reference16r1:Concept_App_MQTT_Broker]]&lt;br /&gt;
; App Service Conference Scaler: [[Reference16r1:Concept_App_Service_Conference_Scaler]]&lt;br /&gt;
; App Service Conference Transcriptions: [[Reference16r1:Concept_App_Service_Conference_Transcriptions]]&lt;br /&gt;
; App Service Transcriptions: [[Reference16r1:Concept_App_Service_Transcriptions]]&lt;br /&gt;
; App Service Documents: [[Reference16r1:Concept_App_Service_Documents]]&lt;br /&gt;
; App Service Connector for Whatsapp: [[Reference16r1:Concept_App_Service_Connector_for_Whatsapp]]&lt;br /&gt;
; App Service IP: [[Reference16r1:Concept App Service IP]]&lt;br /&gt;
&lt;br /&gt;
== New environment for App Platform ==&lt;br /&gt;
The new [[Reference16r1:Concept_innovaphone_App_Platform_Container|App Platform Container]] provides an Docker container. This container offers a ready-to-use environment for myApps applications and the innovaphone PBX.&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* IP110A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* IP240A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* CA on CF card feature&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto15r1:Firmware_Upgrade_V14r2_V15r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79893</id>
		<title>Howto16r1:Firmware Upgrade V15r1 V16r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Firmware_Upgrade_V15r1_V16r1&amp;diff=79893"/>
		<updated>2026-05-28T13:46:45Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Changes visible to the end customers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 16r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 16r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, you&#039;ll need to regenerate the license file for v16 in https://portal.innovaphone.com/ and load into the system before upgrade (The system needs to have the SSC up to date).&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 15r1 service release. Create backups before you start and store them on an external location&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AP Upgrade to Image 140037 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140037. After that you can go ahead.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade Sequence ===&lt;br /&gt;
In systems of multiple units, it is important to update the tree from top to bottom. In other words, update the master unit first, and then the machines at the lower levels. If you&#039;re using a DevicesApp update job that updates the entire system at once, you don&#039;t need to do anything here.&lt;br /&gt;
&lt;br /&gt;
=== TechAssist Upgrade Helper ===&lt;br /&gt;
* Before you start, make sure that all TechAssist tests (you will receive the required tests in the last update in the previous major version) labelled &amp;lt;code&amp;gt;Pre Upgrade: xy&amp;lt;/code&amp;gt; are positive, if available&lt;br /&gt;
* When you are finished, make sure that all TechAssist tests (you will receive new tests with the upgrade) are positive&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* 16r1 introduces the feature of [[Reference16r1:Concept_Reconnect_Calls | Reconnect Calls for Seamless Handover &amp;amp; Roaming]]. As a result, calls will not be dropped on network interruptions or PBX reboots. Instead users receive visual (MyApps or phone display) and audio (in-band tone) feedback and the call is reconnected automatically.&lt;br /&gt;
* Chat App: The option in ChatApp that allowed users to choose whether to send a message using ENTER or SHIFT+ENTER has been removed. Messages can now only be sent using CTRL+ENTER without pressing the send button.&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Connector for Microsoft 365 ===&lt;br /&gt;
If you plan to use the new &#039;&#039;&#039;Contact Search&#039;&#039;&#039; feature of the Connector for Microsoft 365, you need to perform two manual Steps:&lt;br /&gt;
# Create the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object by using the Settings template&lt;br /&gt;
# Assign the &#039;&#039;&#039;microsoft365-api&#039;&#039;&#039; app object to every user who should be able to use the new Contact Search feature. (Of cause, you can use a template for that)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For a more detailed guide, please refer to the how-to article: [[Howto16r1:Configure Contact Search by Connector for Microsoft365#Creating the PBX app object using the PBX Manager Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Remote Control ===&lt;br /&gt;
In order to use the Admin Configuration Panel of the Settings App – AP Remote Control, it is necessary to grant access to the &#039;&#039;&#039;admin&#039;&#039;&#039; API, available in the App tab of the Remote Control App object.&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
For badge counts to work, the Working Manager app object must have &#039;&#039;&#039;Websocket&#039;&#039;&#039; and &#039;&#039;&#039;PbxSignal&#039;&#039;&#039; enabled.&lt;br /&gt;
For the Connect integration of the Working app, &#039;&#039;&#039;Websocket&#039;&#039;&#039;, &#039;&#039;&#039;Services&#039;&#039;&#039; and &#039;&#039;&#039;connect&#039;&#039;&#039;(in the Apps tab) must be enabled in the Working User app.&lt;br /&gt;
&lt;br /&gt;
=== Switchboard ===&lt;br /&gt;
For the Connect Integration (Call Notes) to work, the Switchboard App must have the &#039;&#039;&#039;Services&#039;&#039;&#039; (App-tab) and &#039;&#039;&#039;connect&#039;&#039;&#039; or &#039;&#039;&#039;messages&#039;&#039;&#039; (Apps-tab) enabled (the name depends when the PBX was installed).&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
* Projects requires &#039;&#039;&#039;App platform version 140029&#039;&#039;&#039; or higher, so updating the App Platform before Projects is recommended. &amp;lt;br /&amp;gt;The Store will prohibit the update if the App Plattform does not have the minimum required version.&lt;br /&gt;
* For some extra admin-functionalities the &#039;&#039;&#039;Projects App Object needs to have an admin mode&#039;&#039;&#039; (App-tab). &amp;lt;br /&amp;gt;Easiest way to set this new mode is to the open the Projects App via the Projects Plugin Settings App and to re-apply it (click the OK-button). The same plugin can also be used to distribute this mode via the Config Templates.&lt;br /&gt;
* The &#039;&#039;&#039;App Platform requires the correct Time and a Timezone&#039;&#039;&#039; set under AP Manager/Settings/General. &amp;lt;br /&amp;gt;This is needed for some automatic cleanup of deleted items and automatic task status updates (done around 00:00h on the due date).&lt;br /&gt;
&lt;br /&gt;
=== For legacy support only: Change TLS Profile ===&lt;br /&gt;
The &#039;&#039;Normal&#039;&#039; profile has been updated to allow only TLS 1.3 and TLS 1.2. This setting is compatible with all supported firmware versions. So you don&#039;t need to do any changes.&lt;br /&gt;
However if you need older TLS versions for compatibility with legacy devices, consider changing the TLS profile to &#039;&#039;Legacy&#039;&#039;. In that case please see [[Reference16r1:IP4/General/TLS]] for details.&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the upgrade. The installation description of new apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
; App Charts: [[Reference16r1:Concept_App_Charts]]&lt;br /&gt;
; App Polls: [[Reference16r1:Concept App Polls]]&lt;br /&gt;
; App MQTT Broker: [[Reference16r1:Concept_App_MQTT_Broker]]&lt;br /&gt;
; App Service Conference Scaler: [[Reference16r1:Concept_App_Service_Conference_Scaler]]&lt;br /&gt;
; App Service Conference Transcriptions: [[Reference16r1:Concept_App_Service_Conference_Transcriptions]]&lt;br /&gt;
; App Service Transcriptions: [[Reference16r1:Concept_App_Service_Transcriptions]]&lt;br /&gt;
; App Service Documents: [[Reference16r1:Concept_App_Service_Documents]]&lt;br /&gt;
; App Service Connector for Whatsapp: [[Reference16r1:Concept_App_Service_Connector_for_Whatsapp]]&lt;br /&gt;
; App Service IP: [[Reference16r1:Concept App Service IP]]&lt;br /&gt;
&lt;br /&gt;
== New environment for App Platform ==&lt;br /&gt;
The new [[Reference16r1:Concept_innovaphone_App_Platform_Container|App Platform Container]] provides an Docker container. This container offers a ready-to-use environment for myApps applications and the innovaphone PBX.&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included.&lt;br /&gt;
&lt;br /&gt;
* IP110A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* IP240A (can still be used with 15r1 firmware on current PBX versions)&lt;br /&gt;
* CA on CF card feature&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Nothing&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto15r1:Firmware_Upgrade_V14r2_V15r1]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79889</id>
		<title>Reference17:Concept App Service Translations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Translations&amp;diff=79889"/>
		<updated>2026-05-27T11:20:17Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Translations against the backend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the translations app is to provide an interface for other apps to translate user content on-the-fly. So other apps can integrate the translation service via the [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user translated texts.&lt;br /&gt;
&lt;br /&gt;
The service serves as a proxy and integrates a corresponding backend. This means that you need your own account at the external translations service and can configure your credentials in the Settings App.&lt;br /&gt;
&lt;br /&gt;
== Supported translation services ==&lt;br /&gt;
You can configure multiple translation backends and switch between them.&lt;br /&gt;
&lt;br /&gt;
=== DeepL ===&lt;br /&gt;
This interface uses the https:///www.deepl.com translation API.&lt;br /&gt;
&lt;br /&gt;
This interface is used as the default interface. you dont must provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. A custom API-URL is only for a local version with the same API interface.&lt;br /&gt;
&lt;br /&gt;
;Privacy&lt;br /&gt;
:API Free: https://www.deepl.com/de/privacy#section_12&lt;br /&gt;
:API Pro: https://www.deepl.com/de/privacy#section_5&lt;br /&gt;
;Cost model and Pricing&lt;br /&gt;
:Pay per character (To save costs, the app service offers a cache to avoid multiple translations)&lt;br /&gt;
:https://www.deepl.com/de/pro#developer&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
&lt;br /&gt;
* The DeepL API is a synchronous HTTP flow. This means that we request a translation and get an instant response with the translation.&lt;br /&gt;
* Outgoing HTTP(S) request to the DeepL API&lt;br /&gt;
* If you not override the URL, it is used HTTPS only&lt;br /&gt;
&lt;br /&gt;
=== EU - eTranslation ===&lt;br /&gt;
This interface uses the EU service eTranslation.&lt;br /&gt;
&lt;br /&gt;
European Commission’s free and secure AI language tools: https://translation.ec.europa.eu/tools-and-resources/ai-translation-and-language-tools_en&lt;br /&gt;
&lt;br /&gt;
Technical Documentation: https://language-tools.ec.europa.eu/dev-corner/etranslation/rest-v2/text&lt;br /&gt;
&lt;br /&gt;
==== Technical Concept ====&lt;br /&gt;
* The EU-eTranslation uses an asynchronous HTTP flow with webhooks to deliver processed translations&lt;br /&gt;
* Translation flow&lt;br /&gt;
*# On every app startup &lt;br /&gt;
*## a dynamic user / password combination is created, which will be used for later secure incoming webhooks&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;lt;/code&amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://23bcf2fd:19ccf70b-028c-e7a8-94eb-1ad7db91d4c8@apps.slu.de/slu.de/translations/webhook-basicauth&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# Outgoing HTTPS request to the eTranslation Service. The translation job will be queued. As additional information in the job, a callback webhook URL with a username and password will be placed.&lt;br /&gt;
*# If the processing is finished, a webhook to the app is delivered via HTTPS&lt;br /&gt;
*# The job result will be processed and delivered back to the user that has requested the translation&lt;br /&gt;
==== Limitations ====&lt;br /&gt;
* 50 concurrent translation requests&lt;br /&gt;
* 5.000 characters per translation&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
No license needed&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown.&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Translations&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version and click on install&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Translations&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as the display name &#039;&#039;(all characters allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: Translations, SIP: translations&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App (the app is needed at every user object from any user who wants to use the translation API)&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Translation - Client ==&lt;br /&gt;
There is no view/app that the user can explicitly open. The service runs in the background and has no UI and can be integrated by other apps. In order for the user to have access to the translation service, their user object must have access to the app object of the translations app.&lt;br /&gt;
&lt;br /&gt;
The client side of the app service receives requests from all other apps via the local JavaScript API and sends them to the service. The result of the request is returned to the original app via the local JavaScript API&lt;br /&gt;
&lt;br /&gt;
== Translation - App Service ==&lt;br /&gt;
The App Service performs tasks in the following areas:&lt;br /&gt;
* Language recognition&lt;br /&gt;
* Caching&lt;br /&gt;
* Translations against the backend (deepl.com)&lt;br /&gt;
&lt;br /&gt;
=== Language recognition ===&lt;br /&gt;
An offline API is offered to recognize the language used in a string. This recognition is also used for translations to avoid unnecessary translations (e.g. EN to EN translations are prevented). This payload will not be sent to any backend service, thus avoiding unnecessary costs. A few features exist which should make sure, a recognized language is only considered, if there is enough confidence:&lt;br /&gt;
* Strings shorter than 6 words are skipped, since the chance for false positives are relatively high&lt;br /&gt;
* Strings in which there are not enough word matches to be confident for any language will be skipped, also because of high chances for false positives&lt;br /&gt;
* Strings that are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: cs, de, en-gb, es, fr, it, nl, pl, pt-pt, ro, ru, sl, tr&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
To save costs, all translations are cached in the App Services database. If a string is translated multiple times, only the first translation is carried out by the backend, and the translated version is saved in the cache. A second translation is therefore free of charge and performs better.&lt;br /&gt;
&lt;br /&gt;
=== Translations against the backend ===&lt;br /&gt;
Translation requests that cannot be handled by the local cache are forwarded to the configured translation backend. After successful translation, the translated version is kept in the cache for future requests.&lt;br /&gt;
&lt;br /&gt;
The list of supported languages depends on the supported languages of the used [https://developers.deepl.com/docs/resources/supported-languages#target-languages service provider]. It will be read from the service provider each time the Translations App Service starts.&lt;br /&gt;
&lt;br /&gt;
=== Charts Statistics ===&lt;br /&gt;
The app service will provide telemetry data to the integrated Charts app service.&lt;br /&gt;
&lt;br /&gt;
;requestTranslate&lt;br /&gt;
:Translation requests (default) to the App Service&lt;br /&gt;
;requestTranslateAll&lt;br /&gt;
:TranslationAll requests to the App Service&lt;br /&gt;
;requestWebhookBasic&lt;br /&gt;
:Webhooks from external translations backend with legacy BasicAuth to the App Service&lt;br /&gt;
;requestWebhook&lt;br /&gt;
:Webhooks from external translations backend to the App Service&lt;br /&gt;
;DetectLanguagePreventTranslation&lt;br /&gt;
:Amount of translation requests that are not processed because language detection detected same languages&lt;br /&gt;
;CacheAdd&lt;br /&gt;
:New translation payload is stored in the cache&lt;br /&gt;
;CacheHit&lt;br /&gt;
:Translation request is solved by existing cache entry&lt;br /&gt;
;DeepL&lt;br /&gt;
:External backend request&lt;br /&gt;
;eTranslation&lt;br /&gt;
:External backend request&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
To troubleshoot this App Service, you need the traceflags &#039;&#039;App&#039;&#039;, &#039;&#039;Database&#039;&#039;, &#039;&#039;HTTP-Client&#039;&#039; in your App instance.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [https://sdk.innovaphone.com/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm SDK Documentation - Translation API]&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Translations]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:How_to_IPxx13&amp;diff=79888</id>
		<title>Howto:How to IPxx13</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:How_to_IPxx13&amp;diff=79888"/>
		<updated>2026-05-27T09:42:12Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* SSD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Howto]]&lt;br /&gt;
[[Category:Concept IPxx13]]&lt;br /&gt;
&amp;lt;!-- Keywords: ip0013, ip6013, ipxx13, m2, m2 ssd --&amp;gt;&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* IP0013&lt;br /&gt;
* IP6013&lt;br /&gt;
* V13+&lt;br /&gt;
&lt;br /&gt;
== Brief ==&lt;br /&gt;
&lt;br /&gt;
=== IP0013 ===&lt;br /&gt;
* VoIP-PBX and routing gateway including reverse proxy and SBC functionalities&lt;br /&gt;
* Orderno.: 01-00013-001&lt;br /&gt;
&lt;br /&gt;
=== IP6013 ===&lt;br /&gt;
* VoIP-PBX and routing gateway for four ISDN-S2M interfaces plus Reverse Proxy and SBC functionalities&lt;br /&gt;
* Orderno.: 01-06013-001&lt;br /&gt;
&lt;br /&gt;
== SSD ==&lt;br /&gt;
&lt;br /&gt;
IPxx13 owns two internal slots for &#039;&#039;&#039;M.2 SSD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Slot interface is &#039;&#039;&#039;NVMe&#039;&#039;&#039; - [https://en.wikipedia.org/wiki/NVM_Express non volatile memory express].&lt;br /&gt;
&lt;br /&gt;
Slot formfactor is M.2 2242 M-Key - dimensioning 22mm*42mm.&lt;br /&gt;
&lt;br /&gt;
Maximum power consumption per M.2 SSD is 2.5W.&lt;br /&gt;
&lt;br /&gt;
SSD has to be plugged in outer slot named &#039;&#039;&#039;SSD0&#039;&#039;&#039; on the PCB. &amp;lt;u&amp;gt;Use of secondary inner slot SSD1 is not supported.&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[image:xx13_ssd.png]]&lt;br /&gt;
&lt;br /&gt;
innovaphone offers and supports:&lt;br /&gt;
* M.2 SSD 1 TB with order no 03-00010-031&lt;br /&gt;
* M.2 SSD 512 GB with order no 03-00010-017&lt;br /&gt;
&lt;br /&gt;
No technical support is provided for models other than those offered by innovaphone.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Note: &#039;&#039;&#039;These information &amp;lt;u&amp;gt;DO NOT APPLY&amp;lt;/u&amp;gt; to IPxx11 and IP11xx based mSATA SSDs!&#039;&#039;&#039; For information to those devices, refer to [[Howto:Tested mSata modules|this article]].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power supply ==&lt;br /&gt;
&lt;br /&gt;
The devices mandatorily require Power over Ethernet+ supply according to IEEE 802.3at, Class 4 (PoE+) for operation.&lt;br /&gt;
&lt;br /&gt;
Currently, innovaphone offers no POE+ injector.&lt;br /&gt;
&lt;br /&gt;
According to customer feedback, the following PoE+ injectors that meet the performance requirements of IPxx13 are used in projects:&lt;br /&gt;
* [https://docs.rs-online.com/c557/A700000010094578.pdf Edimax GP-103IT]&lt;br /&gt;
* [https://ww1.microchip.com/downloads/aemDocuments/documents/POE/ProductDocuments/DataSheets/PD-9001GR-Data-Sheet.pdf Microchip PD-9001GR/AT]&lt;br /&gt;
* LANCOM POE++ injector (type unknown)&lt;br /&gt;
Please note that this information are subject to change and have not been verified by innovaphone.&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
Available in [https://store.innovaphone.com/release/download.htm official release store]&lt;br /&gt;
&lt;br /&gt;
===IP0013===&lt;br /&gt;
Following firmware versions are available for the IP0013 gateway itself:&lt;br /&gt;
* V13r2: available via release store since V13r2sr10, build no 136337&lt;br /&gt;
&lt;br /&gt;
===IP6013===&lt;br /&gt;
Following firmware versions are available for the IP6013 gateway itself:&lt;br /&gt;
* V13r1: available via release store since V13r1sr25, build no 132894&lt;br /&gt;
* V13r2: starting with 13r2final, build no 136094&lt;br /&gt;
&lt;br /&gt;
=== Application Platform ===&lt;br /&gt;
The device hosts an 64-bit-ARM-processor which requires use of 64bit-architecture application platform. &lt;br /&gt;
&lt;br /&gt;
Respective arm64-AP is available for 13r1 and 13r2 in offical release store.&lt;br /&gt;
&lt;br /&gt;
== Use cases ==&lt;br /&gt;
IP0013 and IP6013 host 150 software conference channels for audio conferencing (since 13r3sr4, before 60).&lt;br /&gt;
&lt;br /&gt;
IP6013 additionally hosts 60 hardware digital signal processors for support of PCM traffic via PRI interfaces, audio faxes and audio conferencing.&lt;br /&gt;
&lt;br /&gt;
Cumulating hardware and software conference channels at IP6013 into a single room is not supported.&lt;br /&gt;
&lt;br /&gt;
Use of features such as PBX-operation, PRI- and fax traffic, audio/video conferencing and Application Sharing influence the CPU load.&lt;br /&gt;
&lt;br /&gt;
Exceeding the maximum CPU limit may lead to device outage. &lt;br /&gt;
&lt;br /&gt;
innovaphone supports following use cases:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;All-in-one-box&#039;&#039;&#039;&lt;br /&gt;
* operation of PBX-functionality&lt;br /&gt;
* IP0013: for conferencing use SCNF interface&lt;br /&gt;
* IP6013: use HW-DSPs for PCM-Audio and Fax only, for conferencing use CONF &#039;&#039;&#039;or&#039;&#039;&#039; SCNF interface only&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Gateway only&#039;&#039;&#039;&lt;br /&gt;
* operation as gateway only &#039;&#039;&#039;without activated PBX functionality and no AP installed&#039;&#039;&#039;&lt;br /&gt;
* IP0013: use SCNF for conferencing&lt;br /&gt;
* IP6013: use PRI-interfaces and HW-DSPs for S2M-Audio and Fax and SCNF for conferencing, &amp;lt;br /&amp;gt;&#039;&#039;&#039;or&#039;&#039;&#039; in case of no PRI/FAX traffic, both CONF and SCNF can be used for conferencing&lt;br /&gt;
&lt;br /&gt;
[[Howto:How to implement large PBXs|Herefore mentioned basic conditions]] apply at any time for all kind of configurations and usecases.&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
* IP6013: FAX interface will provide audio-fax capabilities starting with 13r1sr26&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Reverse-Proxy&amp;diff=79870</id>
		<title>Reference16r1:Services/Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Reverse-Proxy&amp;diff=79870"/>
		<updated>2026-05-19T14:44:36Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* General Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Reverse Proxy]]&lt;br /&gt;
[[Category:Concept Reverse Proxy]]&lt;br /&gt;
The reverse proxy is used to forward H.323, SIP, LDAP, HTTP and SMTP requests it receives to other hosts, based on system information like gatekeeper name host name, path or domain.&lt;br /&gt;
This way it can be controlled which services may be accessed thru the reverse proxy.&lt;br /&gt;
A reverse proxy may be located at the boundary of an private and a public network, or inside the private network, if the respective ports are forwarded to it by the NAT Router/Firewall.&lt;br /&gt;
It can be even configured on the same device as the PBX itself. In this case the other services on the device should use non-standard ports, so that the reverse proxy can receive the requests on the standard port and forward them locally to the non-standard ports.&lt;br /&gt;
&lt;br /&gt;
== General Parameters ==&lt;br /&gt;
&lt;br /&gt;
;No IPv4: Turn off IPv4 for the reverse proxy function&lt;br /&gt;
;No IPv6: Turn off IPv6 for the reverse proxy function&lt;br /&gt;
;H.323/TCP, H.323/TLS: Ports for incoming H.323 TCP or TLS Connections. Use 1720 and 1300 for the standard ports.&lt;br /&gt;
;SIP/TCP, SIP/TLS: Ports for incoming SIP TCP or TLS Connections. Use 5060 and 5061 for the standard ports.&lt;br /&gt;
;LDAP, LDAPs: Ports for incoming LDAP TCP or TLS Connections. Use 389 and 636 for the Standard ports.&lt;br /&gt;
;HTTP, HTTPS:  Ports for incoming HTTP TCP or TLS Connections. Use 80 and 443 for the Standard ports.&lt;br /&gt;
;SMTP, SMTPS: Ports for incoming SMTP TCP or TLS Connections. Use 25 and 587 for the Standard ports.&lt;br /&gt;
;Log Forwarded Requests: activate protocol dependent logging for successfully forwarded / accepted requests&lt;br /&gt;
;Log Rejected Requests: activate protocol dependent logging for rejected / non-accepted requests&lt;br /&gt;
;Blacklist Expiration: Time in minutes after which an entry put in the blacklist automatically, will be removed from the blacklist.&lt;br /&gt;
;Suspicious Requests/min: Threshold to put an address into the blacklist&lt;br /&gt;
;Public NAT router address: Required for SIP if RP is behind NAT. External SIP clients will receive this value in Route header of SIP messages. You can configure DNS name or IP address and port here.&amp;lt;br&amp;gt;If not configured, RP writes it&#039;s own local IP address and port into Route header of SIP messages. This works only if RP has a public local IP address.&lt;br /&gt;
&lt;br /&gt;
== Hosts ==&lt;br /&gt;
&lt;br /&gt;
List of configured hosts. Click on the host Name to edit or delete. Use new to add new host&lt;br /&gt;
&lt;br /&gt;
;Out&lt;br /&gt;
:Destination IP-Address (IPv4 or IPv6) for this rule, following by the plain text port&lt;br /&gt;
:Destination DNS name: must start with &#039;&#039;&#039;@&#039;&#039;&#039; and is limited to 15 chars. For longer names, you can use a DNS suffix (see below).&lt;br /&gt;
;TLS&lt;br /&gt;
:Port for encrypted traffic&lt;br /&gt;
;Check Certificate&lt;br /&gt;
:If the Check Certificate checkmark is set, for the internal connection TLS is used only if the received certificate matches the user name within the protocol. This way a host receiving a request through the Reverse Proxy using TLS can assume that the connection was authenticated using a valid certificate, which matches the user.&lt;br /&gt;
;App Login&lt;br /&gt;
:Experimental feature to allow access only if a myPBX session has been previously authenticated. Not supported for myApps.&lt;br /&gt;
;Default&lt;br /&gt;
:This rule will be used if only the Domain without a path or file in the URI was requested.  The empty path is then replaced by the specified URL when the request is forwarded (e.g. an entry &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;&amp;lt;host&amp;gt;/web/index.htm&#039;&#039; with the &#039;&#039;Default&#039;&#039; check-mark ticked will match requests with no path and the request is forwarded with the path set to &#039;&#039;/web/index.htm&#039;&#039;). Note that also, an implicit rule is created that forwards all requests for files in and beneath the folder where the default document is in (in the example rule, requests to all files under &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;&amp;lt;host&amp;gt;/web&#039;&#039; will be forwarded)&lt;br /&gt;
;MTLS:&lt;br /&gt;
:Request MTLS on incoming connections. The requesting client has to provide the TLS Server Name on the incoming TLS connection. The Server Name is used to match to the host. If the checkmark is set, MTLS is requested then. If no Server Name is provided or no valid client certificate a connection for this host is rejected. The name od the received and validated certificate is forwarded as X-Remote-Cert HTTP header.&lt;br /&gt;
;Network&lt;br /&gt;
:&#039;&#039;adddr:network&#039;&#039; to restrict a configured protocol to certain networks&lt;br /&gt;
&lt;br /&gt;
=== SMTP ===&lt;br /&gt;
The host is searched for using different criteria based on the incoming socket.&lt;br /&gt;
&lt;br /&gt;
The criteria are searched in the order given and the first match wins.&lt;br /&gt;
&lt;br /&gt;
;TLS: the SNI of the TLS handshake&lt;br /&gt;
;EHLO: the client hostname send inside the client EHLO SMTP protocol message&lt;br /&gt;
;AUTH: the username of an AUTH PLAIN login. The whole username is matched and if no match is found, the domain part after an @ sign if present.&lt;br /&gt;
;RCPT-TO: the recipient mail address. The whole mail address is matched and if no match is found, the domain part.&lt;br /&gt;
&lt;br /&gt;
==== STARTTLS ====&lt;br /&gt;
&lt;br /&gt;
* If the EHLO message is already suitable to detect the host, STARTTLS is handled by the server behind the RP and port forwarding must be done to the non TLS port in this case.&lt;br /&gt;
* Otherwise the RP itself handles the STARTTLS handshake. It then doesn&#039;t matter if you internally forward to the non TLS port or the TLS port but STARTTLS won&#039;t be done anymore in any case.&lt;br /&gt;
&lt;br /&gt;
== DNS Suffixes ==&lt;br /&gt;
&lt;br /&gt;
If you want to forward requests to internal DNS names instead of IP addresses and such an internal DNS name is longer than 15 chars, you must use DNS suffixes to reference it.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Id: a unique id which is used as reference&lt;br /&gt;
;Suffix: a suffix which is used as replacement of #Id&lt;br /&gt;
&lt;br /&gt;
If you want to use such a suffix inside &#039;&#039;&#039;Out&#039;&#039;&#039; of a host, you must write it like this: &lt;br /&gt;
&#039;&#039;&#039;@host1.#1&#039;&#039;&#039; -&amp;gt; this will be expanded to &#039;&#039;&#039;host1.example.com&#039;&#039;&#039;, if the suffix with Id 1 has the value example.com&lt;br /&gt;
&lt;br /&gt;
== Counter ==&lt;br /&gt;
&lt;br /&gt;
Current top ten address with suspicious requests&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
&lt;br /&gt;
Blacklist/Whitelist addresses&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Reverse-Proxy&amp;diff=79863</id>
		<title>Reference16r1:Services/Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Reverse-Proxy&amp;diff=79863"/>
		<updated>2026-05-19T13:24:51Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* General Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Reverse Proxy]]&lt;br /&gt;
[[Category:Concept Reverse Proxy]]&lt;br /&gt;
The reverse proxy is used to forward H.323, SIP, LDAP, HTTP and SMTP requests it receives to other hosts, based on system information like gatekeeper name host name, path or domain.&lt;br /&gt;
This way it can be controlled which services may be accessed thru the reverse proxy.&lt;br /&gt;
A reverse proxy may be located at the boundary of an private and a public network, or inside the private network, if the respective ports are forwarded to it by the NAT Router/Firewall.&lt;br /&gt;
It can be even configured on the same device as the PBX itself. In this case the other services on the device should use non-standard ports, so that the reverse proxy can receive the requests on the standard port and forward them locally to the non-standard ports.&lt;br /&gt;
&lt;br /&gt;
== General Parameters ==&lt;br /&gt;
&lt;br /&gt;
;No IPv4: Turn off IPv4 for the reverse proxy function&lt;br /&gt;
;No IPv6: Turn off IPv6 for the reverse proxy function&lt;br /&gt;
;H.323/TCP, H.323/TLS: Ports for incoming H.323 TCP or TLS Connections. Use 1720 and 1300 for the standard ports.&lt;br /&gt;
;SIP/TCP, SIP/TLS: Ports for incoming SIP TCP or TLS Connections. Use 5060 and 5061 for the standard ports.&lt;br /&gt;
;LDAP, LDAPs: Ports for incoming LDAP TCP or TLS Connections. Use 389 and 636 for the Standard ports.&lt;br /&gt;
;HTTP, HTTPS:  Ports for incoming HTTP TCP or TLS Connections. Use 80 and 443 for the Standard ports.&lt;br /&gt;
;SMTP, SMTPS: Ports for incoming SMTP TCP or TLS Connections. Use 25 and 587 for the Standard ports.&lt;br /&gt;
;Log Forwarded Requests: activate protocol dependent logging for successfully forwarded / accepted requests&lt;br /&gt;
;Log Rejected Requests: activate protocol dependent logging for rejected / non-accepted requests&lt;br /&gt;
;Blacklist Expiration: Time in minutes after which an entry put in the blacklist automatically, will be removed from the blacklist.&lt;br /&gt;
;Suspicious Requests/min: Threshold to put an address into the blacklist: Whether a request is flagged as suspicious depends on the following factors, all of them must be met.&lt;br /&gt;
:* System uptime &amp;gt; 300 seconds (prevents false positives immediately after boot)&lt;br /&gt;
:* Connection duration &amp;lt; 4 seconds (the connection was closed very quickly)&lt;br /&gt;
:* The destination closed the connection, not the client itself&lt;br /&gt;
:* HTTP version is not 1.0&lt;br /&gt;
:* HTTP-Content-Length is set to another value than -1 (a body was announced)  Translated with DeepL.com (free version)&lt;br /&gt;
;Public NAT router address: Required for SIP if RP is behind NAT. External SIP clients will receive this value in Route header of SIP messages. You can configure DNS name or IP address and port here.&amp;lt;br&amp;gt;If not configured, RP writes it&#039;s own local IP address and port into Route header of SIP messages. This works only if RP has a public local IP address.&lt;br /&gt;
&lt;br /&gt;
== Hosts ==&lt;br /&gt;
&lt;br /&gt;
List of configured hosts. Click on the host Name to edit or delete. Use new to add new host&lt;br /&gt;
&lt;br /&gt;
;Out&lt;br /&gt;
:Destination IP-Address (IPv4 or IPv6) for this rule, following by the plain text port&lt;br /&gt;
:Destination DNS name: must start with &#039;&#039;&#039;@&#039;&#039;&#039; and is limited to 15 chars. For longer names, you can use a DNS suffix (see below).&lt;br /&gt;
;TLS&lt;br /&gt;
:Port for encrypted traffic&lt;br /&gt;
;Check Certificate&lt;br /&gt;
:If the Check Certificate checkmark is set, for the internal connection TLS is used only if the received certificate matches the user name within the protocol. This way a host receiving a request through the Reverse Proxy using TLS can assume that the connection was authenticated using a valid certificate, which matches the user.&lt;br /&gt;
;App Login&lt;br /&gt;
:Experimental feature to allow access only if a myPBX session has been previously authenticated. Not supported for myApps.&lt;br /&gt;
;Default&lt;br /&gt;
:This rule will be used if only the Domain without a path or file in the URI was requested.  The empty path is then replaced by the specified URL when the request is forwarded (e.g. an entry &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;&amp;lt;host&amp;gt;/web/index.htm&#039;&#039; with the &#039;&#039;Default&#039;&#039; check-mark ticked will match requests with no path and the request is forwarded with the path set to &#039;&#039;/web/index.htm&#039;&#039;). Note that also, an implicit rule is created that forwards all requests for files in and beneath the folder where the default document is in (in the example rule, requests to all files under &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;&amp;lt;host&amp;gt;/web&#039;&#039; will be forwarded)&lt;br /&gt;
;MTLS:&lt;br /&gt;
:Request MTLS on incoming connections. The requesting client has to provide the TLS Server Name on the incoming TLS connection. The Server Name is used to match to the host. If the checkmark is set, MTLS is requested then. If no Server Name is provided or no valid client certificate a connection for this host is rejected. The name od the received and validated certificate is forwarded as X-Remote-Cert HTTP header.&lt;br /&gt;
;Network&lt;br /&gt;
:&#039;&#039;adddr:network&#039;&#039; to restrict a configured protocol to certain networks&lt;br /&gt;
&lt;br /&gt;
=== SMTP ===&lt;br /&gt;
The host is searched for using different criteria based on the incoming socket.&lt;br /&gt;
&lt;br /&gt;
The criteria are searched in the order given and the first match wins.&lt;br /&gt;
&lt;br /&gt;
;TLS: the SNI of the TLS handshake&lt;br /&gt;
;EHLO: the client hostname send inside the client EHLO SMTP protocol message&lt;br /&gt;
;AUTH: the username of an AUTH PLAIN login. The whole username is matched and if no match is found, the domain part after an @ sign if present.&lt;br /&gt;
;RCPT-TO: the recipient mail address. The whole mail address is matched and if no match is found, the domain part.&lt;br /&gt;
&lt;br /&gt;
==== STARTTLS ====&lt;br /&gt;
&lt;br /&gt;
* If the EHLO message is already suitable to detect the host, STARTTLS is handled by the server behind the RP and port forwarding must be done to the non TLS port in this case.&lt;br /&gt;
* Otherwise the RP itself handles the STARTTLS handshake. It then doesn&#039;t matter if you internally forward to the non TLS port or the TLS port but STARTTLS won&#039;t be done anymore in any case.&lt;br /&gt;
&lt;br /&gt;
== DNS Suffixes ==&lt;br /&gt;
&lt;br /&gt;
If you want to forward requests to internal DNS names instead of IP addresses and such an internal DNS name is longer than 15 chars, you must use DNS suffixes to reference it.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Id: a unique id which is used as reference&lt;br /&gt;
;Suffix: a suffix which is used as replacement of #Id&lt;br /&gt;
&lt;br /&gt;
If you want to use such a suffix inside &#039;&#039;&#039;Out&#039;&#039;&#039; of a host, you must write it like this: &lt;br /&gt;
&#039;&#039;&#039;@host1.#1&#039;&#039;&#039; -&amp;gt; this will be expanded to &#039;&#039;&#039;host1.example.com&#039;&#039;&#039;, if the suffix with Id 1 has the value example.com&lt;br /&gt;
&lt;br /&gt;
== Counter ==&lt;br /&gt;
&lt;br /&gt;
Current top ten address with suspicious requests&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
&lt;br /&gt;
Blacklist/Whitelist addresses&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Reverse-Proxy&amp;diff=79859</id>
		<title>Reference16r1:Services/Reverse-Proxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Reverse-Proxy&amp;diff=79859"/>
		<updated>2026-05-19T13:17:22Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;Reverse Proxy Category:Concept Reverse Proxy The reverse proxy is used to forward H.323, SIP, LDAP, HTTP and SMTP requests it receives to other hosts, based on system information like gatekeeper name host name, path or domain. This way it can be controlled which services may be accessed thru the reverse proxy. A reverse proxy may be located at the boundary of an private and a public network, or inside the private network, if the respective ports...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Reverse Proxy]]&lt;br /&gt;
[[Category:Concept Reverse Proxy]]&lt;br /&gt;
The reverse proxy is used to forward H.323, SIP, LDAP, HTTP and SMTP requests it receives to other hosts, based on system information like gatekeeper name host name, path or domain.&lt;br /&gt;
This way it can be controlled which services may be accessed thru the reverse proxy.&lt;br /&gt;
A reverse proxy may be located at the boundary of an private and a public network, or inside the private network, if the respective ports are forwarded to it by the NAT Router/Firewall.&lt;br /&gt;
It can be even configured on the same device as the PBX itself. In this case the other services on the device should use non-standard ports, so that the reverse proxy can receive the requests on the standard port and forward them locally to the non-standard ports.&lt;br /&gt;
&lt;br /&gt;
== General Parameters ==&lt;br /&gt;
&lt;br /&gt;
;No IPv4: Turn off IPv4 for the reverse proxy function&lt;br /&gt;
;No IPv6: Turn off IPv6 for the reverse proxy function&lt;br /&gt;
;H.323/TCP, H.323/TLS: Ports for incoming H.323 TCP or TLS Connections. Use 1720 and 1300 for the standard ports.&lt;br /&gt;
;SIP/TCP, SIP/TLS: Ports for incoming SIP TCP or TLS Connections. Use 5060 and 5061 for the standard ports.&lt;br /&gt;
;LDAP, LDAPs: Ports for incoming LDAP TCP or TLS Connections. Use 389 and 636 for the Standard ports.&lt;br /&gt;
;HTTP, HTTPS:  Ports for incoming HTTP TCP or TLS Connections. Use 80 and 443 for the Standard ports.&lt;br /&gt;
;SMTP, SMTPS: Ports for incoming SMTP TCP or TLS Connections. Use 25 and 587 for the Standard ports.&lt;br /&gt;
;Log Forwarded Requests: activate protocol dependent logging for successfully forwarded / accepted requests&lt;br /&gt;
;Log Rejected Requests: activate protocol dependent logging for rejected / non-accepted requests&lt;br /&gt;
;Blacklist Expiration: Time in minutes after which an entry put in the blacklist automatically, will be removed from the blacklist.&lt;br /&gt;
;Suspicious Requests/min: Threshold to put an address into the blacklist&lt;br /&gt;
;Public NAT router address: Required for SIP if RP is behind NAT. External SIP clients will receive this value in Route header of SIP messages. You can configure DNS name or IP address and port here.&amp;lt;br&amp;gt;If not configured, RP writes it&#039;s own local IP address and port into Route header of SIP messages. This works only if RP has a public local IP address.&lt;br /&gt;
&lt;br /&gt;
== Hosts ==&lt;br /&gt;
&lt;br /&gt;
List of configured hosts. Click on the host Name to edit or delete. Use new to add new host&lt;br /&gt;
&lt;br /&gt;
;Out&lt;br /&gt;
:Destination IP-Address (IPv4 or IPv6) for this rule, following by the plain text port&lt;br /&gt;
:Destination DNS name: must start with &#039;&#039;&#039;@&#039;&#039;&#039; and is limited to 15 chars. For longer names, you can use a DNS suffix (see below).&lt;br /&gt;
;TLS&lt;br /&gt;
:Port for encrypted traffic&lt;br /&gt;
;Check Certificate&lt;br /&gt;
:If the Check Certificate checkmark is set, for the internal connection TLS is used only if the received certificate matches the user name within the protocol. This way a host receiving a request through the Reverse Proxy using TLS can assume that the connection was authenticated using a valid certificate, which matches the user.&lt;br /&gt;
;App Login&lt;br /&gt;
:Experimental feature to allow access only if a myPBX session has been previously authenticated. Not supported for myApps.&lt;br /&gt;
;Default&lt;br /&gt;
:This rule will be used if only the Domain without a path or file in the URI was requested.  The empty path is then replaced by the specified URL when the request is forwarded (e.g. an entry &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;&amp;lt;host&amp;gt;/web/index.htm&#039;&#039; with the &#039;&#039;Default&#039;&#039; check-mark ticked will match requests with no path and the request is forwarded with the path set to &#039;&#039;/web/index.htm&#039;&#039;). Note that also, an implicit rule is created that forwards all requests for files in and beneath the folder where the default document is in (in the example rule, requests to all files under &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;&amp;lt;host&amp;gt;/web&#039;&#039; will be forwarded)&lt;br /&gt;
;MTLS:&lt;br /&gt;
:Request MTLS on incoming connections. The requesting client has to provide the TLS Server Name on the incoming TLS connection. The Server Name is used to match to the host. If the checkmark is set, MTLS is requested then. If no Server Name is provided or no valid client certificate a connection for this host is rejected. The name od the received and validated certificate is forwarded as X-Remote-Cert HTTP header.&lt;br /&gt;
;Network&lt;br /&gt;
:&#039;&#039;adddr:network&#039;&#039; to restrict a configured protocol to certain networks&lt;br /&gt;
&lt;br /&gt;
=== SMTP ===&lt;br /&gt;
The host is searched for using different criteria based on the incoming socket.&lt;br /&gt;
&lt;br /&gt;
The criteria are searched in the order given and the first match wins.&lt;br /&gt;
&lt;br /&gt;
;TLS: the SNI of the TLS handshake&lt;br /&gt;
;EHLO: the client hostname send inside the client EHLO SMTP protocol message&lt;br /&gt;
;AUTH: the username of an AUTH PLAIN login. The whole username is matched and if no match is found, the domain part after an @ sign if present.&lt;br /&gt;
;RCPT-TO: the recipient mail address. The whole mail address is matched and if no match is found, the domain part.&lt;br /&gt;
&lt;br /&gt;
==== STARTTLS ====&lt;br /&gt;
&lt;br /&gt;
* If the EHLO message is already suitable to detect the host, STARTTLS is handled by the server behind the RP and port forwarding must be done to the non TLS port in this case.&lt;br /&gt;
* Otherwise the RP itself handles the STARTTLS handshake. It then doesn&#039;t matter if you internally forward to the non TLS port or the TLS port but STARTTLS won&#039;t be done anymore in any case.&lt;br /&gt;
&lt;br /&gt;
== DNS Suffixes ==&lt;br /&gt;
&lt;br /&gt;
If you want to forward requests to internal DNS names instead of IP addresses and such an internal DNS name is longer than 15 chars, you must use DNS suffixes to reference it.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Id: a unique id which is used as reference&lt;br /&gt;
;Suffix: a suffix which is used as replacement of #Id&lt;br /&gt;
&lt;br /&gt;
If you want to use such a suffix inside &#039;&#039;&#039;Out&#039;&#039;&#039; of a host, you must write it like this: &lt;br /&gt;
&#039;&#039;&#039;@host1.#1&#039;&#039;&#039; -&amp;gt; this will be expanded to &#039;&#039;&#039;host1.example.com&#039;&#039;&#039;, if the suffix with Id 1 has the value example.com&lt;br /&gt;
&lt;br /&gt;
== Counter ==&lt;br /&gt;
&lt;br /&gt;
Current top ten address with suspicious requests&lt;br /&gt;
&lt;br /&gt;
== Addresses ==&lt;br /&gt;
&lt;br /&gt;
Blacklist/Whitelist addresses&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Recordings&amp;diff=79853</id>
		<title>Reference15r1:Concept App Service Recordings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Recordings&amp;diff=79853"/>
		<updated>2026-05-19T09:41:29Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Scheduled deletion of old recordings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept App Service Recordings]]&lt;br /&gt;
[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Recordings is an application running on the App platform which allows capturing the audio streams during a telephone call.&lt;br /&gt;
The user&#039;s phone can be configured to send bidirectional audio streams to the Recordings App and store them into the database.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware V15r1&lt;br /&gt;
* Recordings Apps&lt;br /&gt;
* App(innovaphone-recorder) licenses (per User)&lt;br /&gt;
* Device with PCAP Recording Interface:&lt;br /&gt;
** innovaphone deskphones&lt;br /&gt;
** innovaphone SoftphoneApp&lt;br /&gt;
** innovaphone gateway interfaces&lt;br /&gt;
* ReportsApp&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Recordings ===&lt;br /&gt;
[[Image: Usrrecord.png|/Usrrecord.png|usrrecord.png/]]&lt;br /&gt;
&lt;br /&gt;
User version of the App allow you to:&lt;br /&gt;
* Access to the user specific records&lt;br /&gt;
* Access to the user specific logs&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Search for user specific recordings&lt;br /&gt;
* Play, Listen or Download the recording as a .zip file which contains the .WAV file and a .PDF with the call information, the activity protocol and the notes&lt;br /&gt;
* Protect against deleting or delete a recording&lt;br /&gt;
&lt;br /&gt;
=== Recordings Admin ===&lt;br /&gt;
[[Image:Adminrecord.png|/Adminrecord.png|adminrecord.png/]]&lt;br /&gt;
&lt;br /&gt;
Admin version of the app allow you to:&lt;br /&gt;
* Access to all records&lt;br /&gt;
* Access to all logs&lt;br /&gt;
* Download the activity protocol&lt;br /&gt;
* Search for recordings&lt;br /&gt;
* Play, Listen or Download a recording as a .zip file which contains the .WAV file and a .PDF with the call information, the activity protocol and the notes&lt;br /&gt;
* Protect against deletion or delete a recording&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Set up the records auto deletion retention time in days&lt;br /&gt;
* Set the PBX name&lt;br /&gt;
* Set the CryptKey to encrypt the .pcap files in the database&lt;br /&gt;
* Set the WebDAV credentials for the Record-to-URL&lt;br /&gt;
* Set specific trace levels&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* Download the Recordings App via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Recordings App on the App Platform Manager.&lt;br /&gt;
* Create a new PBX Recordings APP-Object with the PBX Manager Plugin.&lt;br /&gt;
* Create a new PBX Recordings Admin APP-Object with the PBX Manager Plugin.&lt;br /&gt;
* Assign Recordings Admin App to authorized (admin) users, which will be allowed to open the Admin UI of the Recordings App.&lt;br /&gt;
* Assign Recordings App to users who will use the Recordings App.&lt;br /&gt;
* Start Recordings Admin App, open the menu (upright) and configure&lt;br /&gt;
** Delete recordings after (days) (mandatory - default is 30 days)&lt;br /&gt;
** PBX name (mandatory)&lt;br /&gt;
** CryptKey (optional)&lt;br /&gt;
** WebDav user &amp;amp; WebDav password (both optional)&lt;br /&gt;
* assign Record to (URL) to recording devices/objects in format&lt;br /&gt;
: &amp;lt;code&amp;gt;http://&amp;lt;/code&amp;gt;&#039;&#039;ap.domain.tld&#039;&#039;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&#039;&#039;domain.tld&#039;&#039;&amp;lt;code&amp;gt;/recordings/Files&amp;lt;/code&amp;gt;&lt;br /&gt;
:on deskphones, softphones or gateway interfaces.&lt;br /&gt;
:On innovaphone deskphones, enable recording via Phone/User-X/Recording by setting Mode to transparent and Recorder to HTTP Server.&lt;br /&gt;
:On innovaphone softphones, recordings config is only visible, if the user has the appropriate app(innovaphone-recorder) license.&lt;br /&gt;
&lt;br /&gt;
=== PBX Manager Plugin ===&lt;br /&gt;
&lt;br /&gt;
With the Recordings PBX Manager Plugin, an App Object can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
==== Deletion of recordings ====&lt;br /&gt;
In the PBX Manager plugin, it can be configured how a deletion of a recording is processed. There are 3 modes selectable: &amp;quot;Recoverable&amp;quot;, &amp;quot;Permanent&amp;quot; and &amp;quot;Denied&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
If &amp;quot;Recoverable&amp;quot; is selected, the users attached to this app object will transfer a recording to the recycle bin upon a delete operation, otherwise the recordings will be permanently deleted.&lt;br /&gt;
If &amp;quot;Denied&amp;quot; is selected, users are not able to delete a recording.&lt;br /&gt;
&lt;br /&gt;
==== Access List ====&lt;br /&gt;
Unlike Recordings Admin App, which lists recordings of all users, Recordings App for users limits the listing of recordings to those made by the using user himself.&lt;br /&gt;
&lt;br /&gt;
A possibility to extend the listing of the recordings to other extensions/users is provided by the Access List. In the Access List, additional extension can be defined, which will be listed to the Users of the App. This way the Recordings App Service can be accessed via different App Objects, with different Access Lists.&lt;br /&gt;
&lt;br /&gt;
This way scenarios, like sharing recordings between team members or supervisor access to recordings of call agents are possible.&amp;lt;br /&amp;gt;&lt;br /&gt;
For the configuration, see : [[Howto15r1:RecordingsApp#Access_list_configuration_through_the_Recordings_Plugin]]&lt;br /&gt;
&lt;br /&gt;
== Functions / Features ==&lt;br /&gt;
=== Download recording ===&lt;br /&gt;
&lt;br /&gt;
Once a recording is converted to .wav format, it can be downloaded. This is done in a .zip archive containing&lt;br /&gt;
* the wave audio file&lt;br /&gt;
* a .pdf file containing&lt;br /&gt;
** the call information&lt;br /&gt;
** the activity protocol&lt;br /&gt;
** the notes&lt;br /&gt;
&lt;br /&gt;
=== Download Action log ===&lt;br /&gt;
After clicking on &amp;quot;Action log&amp;quot; in RecordingsAdmin, it can be downloaded. This is done in a .zip archive containing a .pdf file with the performed actions for all recordings&lt;br /&gt;
* action_play (recording has been played)&lt;br /&gt;
* action_download (recording has been downloaded)&lt;br /&gt;
* action_delete (recording has been deleted)&lt;br /&gt;
* action permanent (recording has been protected against deletion)&lt;br /&gt;
* action_volatile (protection against deletion has been deactivated)&lt;br /&gt;
* action_timeout (recording has been deleted due to the scheduled deletion config)&lt;br /&gt;
&lt;br /&gt;
=== WebDav Access ===&lt;br /&gt;
WebDav access allows accessing the recordings database to download recordings in the original stored mode (pcap format). Clients such as WinSCP can be used for this purpose. In order to enable WebDav access credentials&lt;br /&gt;
(username, password) must be configured in the RecordingsAdmin gui.&lt;br /&gt;
&lt;br /&gt;
In conjunction with the [[#Scheduled deletion of old recordings|scheduled deletion of old recordings]], this can control the size of the application database used.&lt;br /&gt;
&lt;br /&gt;
Note: When webdav access credentials are configured, the recording itself must be configured to use these credentials as well. &lt;br /&gt;
For information on how to configure authentication for the recording clients, see [[Howto15r1:RecordingsApp#Configuring WebDav credentials in RecordingsAdmin|the respective documentation]].&lt;br /&gt;
&lt;br /&gt;
=== Encrypted Recordings ===&lt;br /&gt;
Recordings can be stored encrypted when in the Recordings Admin App in the settings tab a crypt key is configured. Encryption happens as long as a crypt key is configured, if it is deleted&lt;br /&gt;
then the next recordings are stored unencrypted. The crypt key is linked to the recording, so if the user changes this key the previous key must be remembered to access previously stored recordings with that key.&lt;br /&gt;
&lt;br /&gt;
=== 4 Eyes Access ===&lt;br /&gt;
This is an access mode where a user can only access the recordings when a &amp;quot;supervisor&amp;quot; is present and gives permission. The supervisor for access permission is configured in the recordings pbxmanager plugin. There, a dropdown list&lt;br /&gt;
&amp;quot;Monitor&amp;quot; consisting of all the users on the pbx is given to select the supervisor. If a supervisor is configured the users Recordings App, upon start, contacts the supervisor and asks for permission. &lt;br /&gt;
&lt;br /&gt;
Note: The supervisor must be present during the whole user sessions. If the supervisor closes his Recordings App, all permissions given to the users are revoked&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
To each recording textual notes can be added. Pressing the &amp;quot;Note&amp;quot; button on the recording entry opens a window beneath the entry. Each user with access to a specific recording is also allowed to see the notes for this recording.&lt;br /&gt;
&lt;br /&gt;
=== Watermark ===&lt;br /&gt;
In order to guarantee the validity of a recording a watermark can be added. To enable watermarking it must be selected in the recordings pbxmanager plugin. Recordings that existed in the database prior to enabling the watermarking will also be marked. The validity of a recording can then be checked in the recordings admin app by pressing the &amp;quot;verify&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
=== Scheduled deletion of old recordings ===&lt;br /&gt;
You can configure a time period between &#039;&#039;1 and 11000 days&#039;&#039; (in maximum round about 30 years), after which recordings are automatically removed. You can enter &#039;&#039;0 days&#039;&#039; here to disable the scheduled deletion. The background deletion process will be triggered 24 hours after the initial app start-up.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The deletion will remove the database entry as well as the audio file from the file system completely, so no recovery will be possible.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Call Information ===&lt;br /&gt;
The call information are retrieved from App Service &amp;quot;Reports&amp;quot;. It requires an installed and running App Service &amp;quot;Reports&amp;quot;. &amp;quot;Reports&amp;quot; does not &lt;br /&gt;
need own licenses to be run with recordings. With this method, it is possible to provide detailed call flow information for each recording.&lt;br /&gt;
&lt;br /&gt;
=== Call Recording Storage ===&lt;br /&gt;
If a 60 second Call with Codec G.711 is recorded, it will take approx. 1.5 MegaByte memory.&lt;br /&gt;
&lt;br /&gt;
=== Licensing ===&lt;br /&gt;
An appropriate license &#039;&#039;App(innovaphone-recorder)&#039;&#039; must be installed on the PBX to enable Recordings App functionality for specified users.&lt;br /&gt;
&lt;br /&gt;
The Recorder App License can be assigned directly to a specific User Object or via a Config Template.&lt;br /&gt;
&lt;br /&gt;
 The recordings for users without an assigned Recorder App License will be unrecoverable deleted after a 30 day grace period.&lt;br /&gt;
 If the TTL has been configured in RecordingsAdmin to be less than 30 days, the grace period is also shortened accordingly.&lt;br /&gt;
&lt;br /&gt;
=== Recording on Special Interfaces ===&lt;br /&gt;
* Trunk Interface/Gateway&lt;br /&gt;
The Trunk Interface acts as a substitute for the user&#039;s phone. For outgoing calls the call initiator is the owner of the recording and for him a license is required. With incoming calls, the first user answering the call owns the recording and a license for this user is required.&lt;br /&gt;
* Waiting Queue&lt;br /&gt;
The user answering the call is the owner, a license for this user is required.&lt;br /&gt;
&lt;br /&gt;
== Upgrade from V13r3, V14r1 or V14r2 to V15r1 Recordings App ==&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
A V15r1 Recordings App can not be used in the V13r3, V14r1 or V14r2 PBX and App Platform environment.&lt;br /&gt;
=== License Changes ===&lt;br /&gt;
Licensing is the same as version 14r2&lt;br /&gt;
=== Database Conversion ===&lt;br /&gt;
Databases from previous versions (13r3,14r1,14r2) will be converted automatically&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Recordings App Service ===&lt;br /&gt;
The App Service for Recordings App provides a log output on the App instance, after the Diagnostics option &amp;quot;App&amp;quot; is activated for the selected instance.&lt;br /&gt;
&lt;br /&gt;
Additional Trace Level Options for the App Service are configurable via Recordings Admin App. These settings are available via an additional Menu in the upper right corner of the Recordings Admin UI:&lt;br /&gt;
*Recording - PCAP interface related traces, useful on issues with IP-Phone and Interface Media transmission from Endpoint to the App Service&lt;br /&gt;
*Call Information - traces related to the CDR information&lt;br /&gt;
*Conversion - traces for conversion process from VoIP codecs to WAV&lt;br /&gt;
*License - traces for on licensing issues&lt;br /&gt;
*GUI - traces related to the user interface of the Recordings App&lt;br /&gt;
*Connections - traces related to connections between RecordingsApp and PBX&lt;br /&gt;
&lt;br /&gt;
The name of the Master PBX must be configured via the Recordings Admin App, otherwise a message &#039;&#039;PBX Name missing&#039;&#039; will be displayed.&lt;br /&gt;
&lt;br /&gt;
=== PBX Configuration ===&lt;br /&gt;
*WebSocket connection from App Object to the Recordings App should show &#039;&#039;connected&#039;&#039;&lt;br /&gt;
*A correct configuration of the CDR interface is required for transmission of metadata to the App Service &amp;quot;Reports&amp;quot;&lt;br /&gt;
** WebSocket connection from App Object Reports should show &#039;&#039;connected&#039;&#039;&lt;br /&gt;
**In case the connection between recordings and App Service &amp;quot;Reports&amp;quot; is not successful, a red &amp;quot;broken link&amp;quot; and the message &amp;quot;Still initializing&amp;quot; is shown on top of the RecordingsAdmin and an entry in the event log will be added.&lt;br /&gt;
&lt;br /&gt;
=== PCAP Recording Interfaces ===&lt;br /&gt;
*Check URL for PCAP Recording provided on the IP-Phone or VoIP-Interface of a VoIP Gateway&lt;br /&gt;
*A Trace with enabled HTTP-Client option should show a successful HTTP PUT Request towards URL of the Recordings Service PCAP interface (e.g. &amp;lt;code&amp;gt;HTTPCLIENT WEBDAV_FILE_HTTP.2: PUT &amp;lt;nowiki&amp;gt;http://ap.company.com/company.com/recordings/Files/f9e5956e47d460010630009033302ab1-009033302ab1-11--username.pcap&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[Howto15r1:RecordingsApp|HowtoV15r1: Recordings App configuration]]&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
=== Destination number is not displayed correctly when overlap dialing is used ===&lt;br /&gt;
&lt;br /&gt;
If overlap dialing is used on the hardwarephone, the destination number is only displayed in the RecordingApp with the first digit dialed instead of the full number. The SoftphoneApp does not dial using overlap dialing, therefore is not affected by this problem.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Workaround: Configure an enblock timeout of e.g. 3 seconds in the Phone/User[1-6] -&amp;gt; &#039;&#039;Enblock Dialing Timeout [s]&#039;&#039; at the hardwarephone for the corresponding user.&lt;br /&gt;
&lt;br /&gt;
=== WebDav Access to Recordings not possible with newer Versions of WinSCP ===&lt;br /&gt;
When using newer versions of WinSCP, authentication to the WebDAV directory of recordings fails.&lt;br /&gt;
Workaround: An older version of WinSCP must be used. The last working version is WinSCP V6.3.7.&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Template:Click&amp;diff=79836</id>
		<title>Template:Click</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Template:Click&amp;diff=79836"/>
		<updated>2026-05-15T13:23:42Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;position: relative; width: {{{width}}}; height: {{{height}}}; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; top: 0px; left: 0px; font-size: 100px; overflow: hidden; line-height: 100px; z-index: 3;&amp;quot;&amp;gt;[[{{{link}}}|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; top: 0px; left: 0px; z-index: 2;&amp;quot;&amp;gt;[[Image:{{{image}}}|{{{width}}}|{{{link}}}]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Usage:&#039;&#039;&#039; &amp;lt;nowiki&amp;gt;{{Click | image=myimage.png | link=PageName | width=10px | height=10px}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template attempts to superimpose an invisible link on an image, such that clicking on the image does &#039;&#039;not&#039;&#039; take you to the image description page (normal behaviour).&lt;br /&gt;
&lt;br /&gt;
It&#039;s useful for small icons/logos which are representative of an article, and which a user might click on expecting to be taken to that article. Here we are using it on the [[Main Page]] for example. It&#039;s use should minimised because of the following problems.&lt;br /&gt;
&lt;br /&gt;
==== Problems ====&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t work in text-only browsers, and in screen readers for the disabled, and possibly other situations.  The technique of using CSS to change page content also completely breaks an article&#039;s web accessibility by contravening a WAI priority-one checkpoint.[http://www.w3.org/TR/WAI-WEBCONTENT/#tech-order-style-sheets]&lt;br /&gt;
&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Template:Click Template:Click on wikipedia] where we got this from.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Help:Navigation_bar&amp;diff=79835</id>
		<title>Help:Navigation bar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Help:Navigation_bar&amp;diff=79835"/>
		<updated>2026-05-15T13:23:04Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;navigation bar&#039;&#039;&#039; provides links to the most important locations in the wiki and supplies site administrators with a place to add a persistent collection of links. For instance, most wikis will link to their main page and some useful tools.&lt;br /&gt;
&lt;br /&gt;
Under the default skin, the navigation bar appears to the left along with the search bar and toolbox, but the placement varies between skins.&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
The contents of the navigation bar can be edited using the &amp;lt;tt&amp;gt;&#039;&#039;&#039;[[MediaWiki:Sidebar]]&#039;&#039;&#039;&amp;lt;/tt&amp;gt; message page. To access this page, enter &amp;quot;MediaWiki:Sidebar&amp;quot; into the &amp;quot;search&amp;quot; box and click &#039;&#039;Go&#039;&#039;. As of MediaWiki 1.9.0, the default page will not appear to exist; this is normal.  Click &amp;quot;create this page&amp;quot; to edit the navigation bar the first time.&lt;br /&gt;
&lt;br /&gt;
The format of this message is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** Special:Recentchanges|Recent changes&lt;br /&gt;
** forums-url|Forums&lt;br /&gt;
** http://www.mediawiki.org|MediaWiki home&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This snippet demonstrates the various formats available for use.&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
&lt;br /&gt;
The navigation bar can be split into sections, each with a heading of its own. The heading for each section is taken from the first-level list element (in the example above, &amp;quot;navigation&amp;quot;, for instance). &lt;br /&gt;
&lt;br /&gt;
If this text corresponds to the name of a system message, i.e. a page with that title exists in the MediaWiki namespace, then the text of the message is used as a label, otherwise the title is used as-is.&lt;br /&gt;
&lt;br /&gt;
Example: if you put &amp;lt;code&amp;gt;&amp;lt;a href=&amp;quot;somewhere&amp;quot;&amp;gt;navigation&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; into your wiki&#039;s navigation you get a link to the page somewhere instead of just plain text. Of course, headings can be plain text if you prefer.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
The second-level list elements each correspond to a link on the navigation bar, where the format is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;** &#039;&#039;target&#039;&#039;|&#039;&#039;label&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The link target does not depend on the interface language set in the preferences, while the link label &#039;&#039;can&#039;&#039; be made to depend on that, and taken from the database or the language file:&lt;br /&gt;
&lt;br /&gt;
*If the MediaWiki page with the name &#039;&#039;target&#039;&#039; exists then the contents of that MediaWiki page is taken as link target (internal, interwiki, or external).&lt;br /&gt;
*Else, if there is a default message in the site language with ID equal to &#039;&#039;target&#039;&#039;, that message is taken as link target.&lt;br /&gt;
*Else, &#039;&#039;target&#039;&#039; itself is taken as link target (this does not work for some external links, notably those with &amp;quot;&amp;amp;&amp;quot; in it; use the first method instead: make a page in the MediaWiki namespace).&lt;br /&gt;
&lt;br /&gt;
*In the case of existence of the MediaWiki page with the name &#039;&#039;label&#039;&#039; (followed by &#039;&#039;/interface_language_code&#039;&#039; if the interface language set in the preferences is not the default) then the contents of that MediaWiki page is taken as link label.&lt;br /&gt;
*Else, if there is a default message in the interface language with ID equal to &#039;&#039;label&#039;&#039;, that message is taken as link label.&lt;br /&gt;
*Else, &#039;&#039;label&#039;&#039; itself is taken as link label.&lt;br /&gt;
&lt;br /&gt;
In the example above, [[Main Page]] contains the name of the main page, e.g. [[Main Page]], and so both the target and caption are expanded to that text. However, [[Special:Recent changes]] does not exist, so in the case of the example, the label text for the second item is used as-is. This has the disadvantage that the preference setting of the interface language does not work for such a label.&lt;br /&gt;
&lt;br /&gt;
The third element references Forums-url, which will contain the full external URL for the &amp;quot;forums&amp;quot;, while using a plain label. Item four demonstrates direct linking to an external source.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
==== Unable to edit ====&lt;br /&gt;
&lt;br /&gt;
The usual cause for being unable to edit the page is having insufficient permissions to do so. Since the page is in the MediaWiki namespace, permission to edit the user interface text is required. By default, this is available to all sysops, but may be customised on your wiki installation.&lt;br /&gt;
&lt;br /&gt;
==== Changes not showing up on all pages ====&lt;br /&gt;
&lt;br /&gt;
MediaWiki performs aggressive caching at various levels, which often causes the navigation bar to persist after changes. [[Help:Purge|Purging the cache]] of affected pages should correct the situation. To perform a mass-purge of all caches at once, [http://www.mysql.org/doc/refman/5.0/en/truncate.html truncate] the &amp;lt;tt&amp;gt;&#039;&#039;&#039;objectcache&#039;&#039;&#039;&amp;lt;/tt&amp;gt; table in your database or [http://www.freebsd.org/cgi/man.cgi?query=touch touch] the &amp;lt;tt&amp;gt;&#039;&#039;&#039;LocalSettings.php&#039;&#039;&#039;&amp;lt;/tt&amp;gt; file (you may have to do both).&lt;br /&gt;
&lt;br /&gt;
==== Lowercase links ====&lt;br /&gt;
&lt;br /&gt;
If your links are not being capitalised as intended, trying adding spaces around the bar character, eg&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;* http://www.example.com/download.php?file=44555 | Download&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Help|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Template:Click&amp;diff=79834</id>
		<title>Template:Click</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Template:Click&amp;diff=79834"/>
		<updated>2026-05-15T13:22:23Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;position: relative; width: {{{width}}}; height: {{{height}}}; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; top: 0px; left: 0px; font-size: 100px; overflow: hidden; line-height: 100px; z-index: 3;&amp;quot;&amp;gt;[[{{{link}}}|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: absolute; top: 0px; left: 0px; z-index: 2;&amp;quot;&amp;gt;[[Image:{{{image}}}|{{{width}}}|{{{link}}}]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Usage:&#039;&#039;&#039; &amp;lt;nowiki&amp;gt;{{Click | image=myimage.png | link=PageName | width=10px | height=10px}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This template attempts to superimpose an invisible link on an image, such that clicking on the image does &#039;&#039;not&#039;&#039; take you to the image description page (normal behaviour).&lt;br /&gt;
&lt;br /&gt;
It&#039;s useful for small icons/logos which are representative of an article, and which a user might click on expecting to be taken to that article. Here we are using it on the [[Main Page]] for example. It&#039;s use should minimised because of the following problems.&lt;br /&gt;
&lt;br /&gt;
==== Problems ====&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t work in text-only browsers, and in screen readers for the disabled, and possibly other situations.  The technique of using [[w:CSS|CSS]] to change page content also completely breaks an article&#039;s [[w:web accessibility|web accessibility]] by contravening a [[w:WAI|WAI]] priority-one checkpoint.[http://www.w3.org/TR/WAI-WEBCONTENT/#tech-order-style-sheets] &lt;br /&gt;
&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Template:Click Template:Click on wikipedia] where we got this from.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Help:Copying&amp;diff=79833</id>
		<title>Help:Copying</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Help:Copying&amp;diff=79833"/>
		<updated>2026-05-15T13:20:59Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can obtain a copy of the help system in this wiki for local use in your own wiki following these steps:&lt;br /&gt;
&lt;br /&gt;
* Step one: In a separate browser window, navigate to [[Special:Export]].&lt;br /&gt;
* Step two: You will see an open textbox asking you for a list of pages to export.&lt;br /&gt;
* Step three: Copy the list below and paste it into that textbox. This is a generally useful set, making the resulting help structure in your wiki look almost identical to the one here.&lt;br /&gt;
&lt;br /&gt;
 [[Help:Contents]]&lt;br /&gt;
 [[Help:Navigation]]&lt;br /&gt;
 [[Help:Searching]]&lt;br /&gt;
 [[Help:Tracking_changes]]&lt;br /&gt;
 [[Help:Editing_pages]]&lt;br /&gt;
 [[Help:Starting_a_new_page]]&lt;br /&gt;
 [[Help:Formatting]]&lt;br /&gt;
 [[Help:Links]]&lt;br /&gt;
 [[Help:Categories]]&lt;br /&gt;
 [[Help:Images]]&lt;br /&gt;
 [[Help:Templates]]&lt;br /&gt;
 [[Help:Tables]]&lt;br /&gt;
 [[Help:Variables]]&lt;br /&gt;
 [[Help:Managing_files]]&lt;br /&gt;
 [[Help:Preferences]]&lt;br /&gt;
 [[Help:Skins]]&lt;br /&gt;
 [[Help:Namespaces]]&lt;br /&gt;
 [[Help:Interwiki_linking]]&lt;br /&gt;
 [[Category:Help]]&lt;br /&gt;
 [[Template:Meta]]&lt;br /&gt;
 [[Template:Admin_tip]]&lt;br /&gt;
 [[Template:Prettytable]]&lt;br /&gt;
 [[Template:Hl2]]&lt;br /&gt;
 [[Template:Hl3]]&lt;br /&gt;
 [[Template:Thankyou]]&lt;br /&gt;
 [[:Image:Example.jpg]]&lt;br /&gt;
 [[:Image:Geographylogo.png]] &lt;br /&gt;
&lt;br /&gt;
Sysops only:&lt;br /&gt;
 [[Template:Click]]&lt;br /&gt;
 [[Template:Languages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Step four: Make sure the box &amp;quot;Include only the current revision, not the full history&amp;quot; is CHECKED.&lt;br /&gt;
* Step five: Click the &#039;Export&#039; button.&lt;br /&gt;
* Step six: Save the file to your desktop or other convenient location you&#039;ll remember.&lt;br /&gt;
* Step seven: Navigate to Special:Import on YOUR wiki. (You must be logged in as Admin/Sysop level to do this.)&lt;br /&gt;
* Step eight: Browse for the file you saved, and click &#039;Upload&#039;.&lt;br /&gt;
&lt;br /&gt;
For the images this only copies the image descriptions. You need also to upload them on your wiki. Although not complete, at least this gets you started on a decent help system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated copying==&lt;br /&gt;
&lt;br /&gt;
If you use pywikipedia, there is a script to automate the copying at http://mediawiki-tools.cvs.sourceforge.net/mediawiki-tools/pywikipedia/mirrorhelp.py, which copies all pages in the help namespace along with templates and images directly referenced by those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Help|Copying]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Help:Navigation&amp;diff=79832</id>
		<title>Help:Navigation</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Help:Navigation&amp;diff=79832"/>
		<updated>2026-05-15T13:20:40Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Toolbox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you look at a page in MediaWiki, you&#039;ll find three main navigation elements: The sidebar on the left gives you access to important pages in the Wiki like recent changes or file upload. At the top of the page are the links which belong to the page currently displayed: its associated discussion page, the version history, and - most notably - the edit link. In the top right corner you&#039;ll find, as an anonymous user, the link to create an account and login (they are on the same page). As a logged-in user you have a collection of personal links, like the one to your user page or your preferences.&lt;br /&gt;
 &lt;br /&gt;
== Sidebar ==&lt;br /&gt;
[[Image:M-en-sidebar.png|framed|right|Example sidebar, shown on the left of the page]]&lt;br /&gt;
The sidebar is displayed on the left edge of the page below the site logo (if using the default MonoBook skin). This sidebar gives you access to important pages in the Wiki like recent changes or file upload.&lt;br /&gt;
&lt;br /&gt;
=== Navigation    ===&lt;br /&gt;
A click on the logo brings you back to the start page of the wiki. The links take you to important pages in the wiki, they can be configured by site administrators of the individual wikis&lt;br /&gt;
&lt;br /&gt;
{{Admin tip|tip=You can customize the links in the navigation section via [[Special:Allmessages]]. Or create a menu on your own in [[MediaWiki:Sidebar]].}}&lt;br /&gt;
&lt;br /&gt;
=== Toolbox ===&lt;br /&gt;
The toolbox contains a selection of links which change depending on what type of page you are viewing.&lt;br /&gt;
&lt;br /&gt;
On all pages (except special pages):&lt;br /&gt;
* &#039;&#039;What links here&#039;&#039; takes you to a special page that lists the pages on this wiki which contain a link to the current page. This is helpful when you are looking for pages of related information. The &#039;&#039;What links here&#039;&#039; information can also be useful when you are refactoring wiki pages and need to check whether links to this page are still relevant after changes in the current page.&lt;br /&gt;
* The &#039;&#039;Related changes&#039;&#039; tool lists all recent changes in the pages linked to from the current page. Recent changes to all relevant template pages are included in the resulting page list. The &amp;quot;Hide minor edits&amp;quot; option that can be set in the user [[Help:Preferences|preferences]] applies, among other things, to &#039;&#039;Related Changes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On all pages (including special pages):&lt;br /&gt;
* &#039;&#039;Upload file&#039;&#039; displays a special page that allows logged-in users to upload images and other files to the wiki. Uploaded files can be linked-from or embedded-in wiki pages. Uploading files, viewing files on the server, including them in wiki pages and managing the uploaded files is discussed in the [[Help:Managing files|managing files]] section of this manual. This is not displayed if file uploading has been disabled or not enabled in the first place.&lt;br /&gt;
{{Admin tip|tip=To enable file uploading someone with access to the MediaWiki installation files needs to edit the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and uncomment or add the option &amp;lt;code&amp;gt;$wgEnableUploads = true;&amp;lt;/code&amp;gt;. Uploaded files will be stored in the images folder specified by the &amp;lt;code&amp;gt;$wgUploadPath&amp;lt;/code&amp;gt; variable in the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;. This directory must be writable if file uploads is enabled. The [http://www.mediawiki.org/wiki/Manual:LocalSettings.php#Upload_location upload location] and [http://www.mediawiki.org/wiki/Manual:LocalSettings.php#Image_uploads image uploads] settings are described in more detail on the MetaWiki [http://www.mediawiki.org/wiki/Manual:LocalSettings.php LocalSettings.php] page.}}&lt;br /&gt;
* The &#039;&#039;Special pages&#039;&#039; tool lists the MediaWiki special pages. In MediaWiki terminology, a special page is one that presents information about the Wiki and/or allows access to administration activities for the wiki. For example, a list of users registered with the wiki, statistics about the wiki such as the number of pages and number of page edits, system logs, a list of orphaned pages, and so on. These special pages are commonly generated when the special page is loaded rather than being stored in the wiki database.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The function and use of the default special pages can be found in the special pages section of this manual.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Page Tabs ==&lt;br /&gt;
[[Image:M-en-pagetabs.png|framed|right|Default page tabs at the top of the page]]&lt;br /&gt;
The page tabs are displayed at the top of the article to the right of the site logo (if using the default MonoBook skin). These tabs allow you to perform actions or view pages that are related to the current article. The available default actions include: viewing, editing, and discussing the current article. The specific tabs displayed on your pages depend on whether or not you are logged into the wiki and whether you have sysop (administrator) privileges on the wiki. On special pages only the namespace tab is displayed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Default for all users&lt;br /&gt;
: &#039;&#039;[[Help:Namespaces|namespace]]&#039;&#039; (article, help, special page, template, user page etc.)&lt;br /&gt;
: &#039;&#039;discussion&#039;&#039;&lt;br /&gt;
: &#039;&#039;edit&#039;&#039; (may be view source if anonymous editing is enabled, the page is in the MediaWiki namespace or the page is protected)&lt;br /&gt;
: &#039;&#039;history&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Extra tabs for logged in users:&lt;br /&gt;
: &#039;&#039;move&#039;&#039;&lt;br /&gt;
: &#039;&#039;watch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Extra tabs for sysops:&lt;br /&gt;
: &#039;&#039;protect&#039;&#039;&lt;br /&gt;
: &#039;&#039;delete&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Extra tabs may be added, or some taken away, by wiki administrators using JavaScript or adding extensions so these may be different depending on which wiki you are using.&lt;br /&gt;
&lt;br /&gt;
== User Links ==&lt;br /&gt;
[[Image:M-en-userlinks.png|framed|right|Default user links at the top right of the page]]&lt;br /&gt;
The user links are displayed at the top far right of the article (if using the default MonoBook skin). These tabs allow the logged-in user to view and edit their user page and wiki preferences. Additionally, the user links allow the user to quickly access their contributions to the wiki and logout.&lt;br /&gt;
&lt;br /&gt;
For anonymous users the user links is replaced by a link to the wiki login page or, if enabled, a link to your ip address and your ip address&#039;s talk page.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&amp;lt;username&amp;gt;&#039;&#039; &lt;br /&gt;
*: This links to your user page which is where you can put information about yourself, store bits of information you want to remember or whatever else you fancy.&lt;br /&gt;
* &#039;&#039;my talk&#039;&#039;&lt;br /&gt;
*: This links to your discussion page, where people can leave messages for you.&lt;br /&gt;
* &#039;&#039;preferences&#039;&#039;&lt;br /&gt;
*: Allows you to change your personal site preferences.&lt;br /&gt;
* &#039;&#039;my watchlist&#039;&#039;&lt;br /&gt;
*: A list of all pages that you are watching.  Pages can be added to this list by clicking &#039;watch&#039; at the top of the page.&lt;br /&gt;
* &#039;&#039;my contributions&#039;&#039;&lt;br /&gt;
*: A list of all contributions you have made to the wiki.&lt;br /&gt;
* &#039;&#039;log out&#039;&#039;&lt;br /&gt;
*: Click this link to log out of the wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Help|Navigation]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Help:Navigation&amp;diff=79831</id>
		<title>Help:Navigation</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Help:Navigation&amp;diff=79831"/>
		<updated>2026-05-15T13:20:11Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Navigation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you look at a page in MediaWiki, you&#039;ll find three main navigation elements: The sidebar on the left gives you access to important pages in the Wiki like recent changes or file upload. At the top of the page are the links which belong to the page currently displayed: its associated discussion page, the version history, and - most notably - the edit link. In the top right corner you&#039;ll find, as an anonymous user, the link to create an account and login (they are on the same page). As a logged-in user you have a collection of personal links, like the one to your user page or your preferences.&lt;br /&gt;
 &lt;br /&gt;
== Sidebar ==&lt;br /&gt;
[[Image:M-en-sidebar.png|framed|right|Example sidebar, shown on the left of the page]]&lt;br /&gt;
The sidebar is displayed on the left edge of the page below the site logo (if using the default MonoBook skin). This sidebar gives you access to important pages in the Wiki like recent changes or file upload.&lt;br /&gt;
&lt;br /&gt;
=== Navigation    ===&lt;br /&gt;
A click on the logo brings you back to the start page of the wiki. The links take you to important pages in the wiki, they can be configured by site administrators of the individual wikis&lt;br /&gt;
&lt;br /&gt;
{{Admin tip|tip=You can customize the links in the navigation section via [[Special:Allmessages]]. Or create a menu on your own in [[MediaWiki:Sidebar]].}}&lt;br /&gt;
&lt;br /&gt;
=== Toolbox ===&lt;br /&gt;
The toolbox contains a selection of links which change depending on what type of page you are viewing.&lt;br /&gt;
&lt;br /&gt;
On all pages (except special pages):&lt;br /&gt;
* &#039;&#039;What links here&#039;&#039; takes you to a special page that lists the pages on this wiki which contain a link to the current page. This is helpful when you are looking for pages of related information. The &#039;&#039;What links here&#039;&#039; information can also be useful when you are refactoring wiki pages and need to check whether links to this page are still relevant after changes in the current page.&lt;br /&gt;
* The &#039;&#039;Related changes&#039;&#039; tool lists all recent changes in the pages linked to from the current page. Recent changes to all relevant template pages are included in the resulting page list. The &amp;quot;Hide minor edits&amp;quot; option that can be set in the user [[Help:Preferences|preferences]] applies, among other things, to &#039;&#039;Related Changes&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On all pages (including special pages):&lt;br /&gt;
* &#039;&#039;Upload file&#039;&#039; displays a special page that allows logged-in users to upload images and other files to the wiki. Uploaded files can be linked-from or embedded-in wiki pages. Uploading files, viewing files on the server, including them in wiki pages and managing the uploaded files is discussed in the [[Help:Managing files|managing files]] section of this manual. This is not displayed if file uploading has been disabled or not enabled in the first place.&lt;br /&gt;
{{Admin tip|tip=To enable file uploading someone with access to the MediaWiki installation files needs to edit the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file and uncomment or add the option &amp;lt;code&amp;gt;$wgEnableUploads = true;&amp;lt;/code&amp;gt;. Uploaded files will be stored in the images folder specified by the &amp;lt;code&amp;gt;$wgUploadPath&amp;lt;/code&amp;gt; variable in the &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;. This directory must be writable if file uploads is enabled. The [http://www.mediawiki.org/wiki/Manual:LocalSettings.php#Upload_location upload location] and [http://www.mediawiki.org/wiki/Manual:LocalSettings.php#Image_uploads image uploads] settings are described in more detail on the MetaWiki [http://www.mediawiki.org/wiki/Manual:LocalSettings.php LocalSettings.php] page.}}&lt;br /&gt;
* The &#039;&#039;Special pages&#039;&#039; tool lists the MediaWiki special pages. In MediaWiki terminology, a special page is one that presents information about the Wiki and/or allows access to administration activities for the wiki. For example, a list of users registered with the wiki, statistics about the wiki such as the number of pages and number of page edits, system logs, a list of orphaned pages, and so on. These special pages are commonly generated when the special page is loaded rather than being stored in the wiki database.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;The function and use of the default special pages can be found in the [[Help:Special pages|special pages]] section of this manual.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Page Tabs ==&lt;br /&gt;
[[Image:M-en-pagetabs.png|framed|right|Default page tabs at the top of the page]]&lt;br /&gt;
The page tabs are displayed at the top of the article to the right of the site logo (if using the default MonoBook skin). These tabs allow you to perform actions or view pages that are related to the current article. The available default actions include: viewing, editing, and discussing the current article. The specific tabs displayed on your pages depend on whether or not you are logged into the wiki and whether you have sysop (administrator) privileges on the wiki. On special pages only the namespace tab is displayed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Default for all users&lt;br /&gt;
: &#039;&#039;[[Help:Namespaces|namespace]]&#039;&#039; (article, help, special page, template, user page etc.)&lt;br /&gt;
: &#039;&#039;discussion&#039;&#039;&lt;br /&gt;
: &#039;&#039;edit&#039;&#039; (may be view source if anonymous editing is enabled, the page is in the MediaWiki namespace or the page is protected)&lt;br /&gt;
: &#039;&#039;history&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Extra tabs for logged in users:&lt;br /&gt;
: &#039;&#039;move&#039;&#039;&lt;br /&gt;
: &#039;&#039;watch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Extra tabs for sysops:&lt;br /&gt;
: &#039;&#039;protect&#039;&#039;&lt;br /&gt;
: &#039;&#039;delete&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Extra tabs may be added, or some taken away, by wiki administrators using JavaScript or adding extensions so these may be different depending on which wiki you are using.&lt;br /&gt;
&lt;br /&gt;
== User Links ==&lt;br /&gt;
[[Image:M-en-userlinks.png|framed|right|Default user links at the top right of the page]]&lt;br /&gt;
The user links are displayed at the top far right of the article (if using the default MonoBook skin). These tabs allow the logged-in user to view and edit their user page and wiki preferences. Additionally, the user links allow the user to quickly access their contributions to the wiki and logout.&lt;br /&gt;
&lt;br /&gt;
For anonymous users the user links is replaced by a link to the wiki login page or, if enabled, a link to your ip address and your ip address&#039;s talk page.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&amp;lt;username&amp;gt;&#039;&#039; &lt;br /&gt;
*: This links to your user page which is where you can put information about yourself, store bits of information you want to remember or whatever else you fancy.&lt;br /&gt;
* &#039;&#039;my talk&#039;&#039;&lt;br /&gt;
*: This links to your discussion page, where people can leave messages for you.&lt;br /&gt;
* &#039;&#039;preferences&#039;&#039;&lt;br /&gt;
*: Allows you to change your personal site preferences.&lt;br /&gt;
* &#039;&#039;my watchlist&#039;&#039;&lt;br /&gt;
*: A list of all pages that you are watching.  Pages can be added to this list by clicking &#039;watch&#039; at the top of the page.&lt;br /&gt;
* &#039;&#039;my contributions&#039;&#039;&lt;br /&gt;
*: A list of all contributions you have made to the wiki.&lt;br /&gt;
* &#039;&#039;log out&#039;&#039;&lt;br /&gt;
*: Click this link to log out of the wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Help|Navigation]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
</feed>