<?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-05-14T08:09:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=79806</id>
		<title>Reference16r1:Concept Innovaphone Virtual Appliance (IPVA)</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Innovaphone_Virtual_Appliance_(IPVA)&amp;diff=79806"/>
		<updated>2026-05-11T17:06:16Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Proxmox VE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--ipva virtual virtuell va--&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*V16r1&lt;br /&gt;
*innovaphone Virtual Appliance&lt;br /&gt;
*Intel/AMD CPUs&lt;br /&gt;
* Virtualization platforms&lt;br /&gt;
**VMware&lt;br /&gt;
*** Workstation&lt;br /&gt;
*** Player&lt;br /&gt;
*** vSphere 4 - 8&lt;br /&gt;
*** ESXi 6 - 8&lt;br /&gt;
**Microsoft Hyper-V ([[{{NAMESPACE}}:Concept IPVA On Hyper-V|Concept IPVA On Hyper-V]])&lt;br /&gt;
*** Windows 8.1&lt;br /&gt;
*** Windows 10&lt;br /&gt;
*** Windows Server 2012 R2&lt;br /&gt;
*** Windows Server 2016 CTP4&lt;br /&gt;
**Linux based Hypervisors with [https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine KVM] and [https://en.wikipedia.org/wiki/QEMU QEMU] support&lt;br /&gt;
*** Proxmox VE 8.0 / 8.1 / 9.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer: Manufacturers/versions of VM platforms other than those specified here have not been tested, so use at your own risk.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Disclaimer 2: We occasionally encounter customers experiencing unusual issues related to OpenStack. OpenStack is not officially supported, and such issues are not analyzed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
The innovaphone Virtual Appliance (IPVA) is a virtual machine to be run on a virtualization platform.&lt;br /&gt;
&lt;br /&gt;
The IPVA is a software-only solution. It appears and behaves like an innovaphone &amp;quot;hard-box&amp;quot; without physical resources such as hardware DSP or ISDN interface.&lt;br /&gt;
&lt;br /&gt;
==Package Overview==&lt;br /&gt;
We supply an OVF (&#039;&#039;&#039;O&#039;&#039;&#039;pen &#039;&#039;&#039;V&#039;&#039;&#039;irtualization &#039;&#039;&#039;F&#039;&#039;&#039;ormat) import or - depending on the virtualization platform - a suitable variant.&lt;br /&gt;
OVF is an open standard that contains several files in one package. The .ovf file is therefore an archive that contains all the necessary files.&lt;br /&gt;
&lt;br /&gt;
=== Sample VMware ===&lt;br /&gt;
;ipva-ovf.zip:&lt;br /&gt;
The compressed archive &#039;&#039;ipva-ovf.zip&#039;&#039; contains the file ipva.ova. A deployment of ipva.ova will result in a set of 5 files - the file names may differ from the following list:&lt;br /&gt;
*ipva.vmx: The virtual machine configuration file&lt;br /&gt;
*hd-boot.vmdk: The virtual boot disk on IDE 0:0&lt;br /&gt;
*hd-cf.vmdk: The disk for emulation of a Compact Flash card on IDE 0:1&lt;br /&gt;
*hd-flash.vmdk: The disk for emulation of flash memory on IDE 1:0&lt;br /&gt;
*hd-dump.vmdk: The disk serving as a store for a crash dump on IDE 1:1&lt;br /&gt;
&lt;br /&gt;
;ipva.bin:&lt;br /&gt;
The file &#039;&#039;ipva.bin&#039;&#039; is the firmware file, which is only needed for update purposes.&lt;br /&gt;
&lt;br /&gt;
== Virtualization platforms ==&lt;br /&gt;
&lt;br /&gt;
===VMware Player / VMware Workstation===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Copy the file ipva.ova to e.g. your desktop and Double-click on ipva.ova.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===VMware vSphere===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
*Import ipva.ova by means of &#039;&#039;&#039;File/Deploy OVF-Template...&#039;&#039;&#039; (de: &#039;&#039;&#039;Datei/OFV-Vorlage bereitstellen...&#039;&#039;&#039;) and follow instructions.&lt;br /&gt;
*Edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Microsoft Hyper-V===&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
* Use the UI Wizard to Import a new machine&lt;br /&gt;
* Browse to the directory where the downloaded package was extracted to. Browse to the subdirectory Virtual Machines and click Ok&lt;br /&gt;
* Select &#039;&#039;Copy the Virtual Machine&#039;&#039; as &#039;&#039;Import Type&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Proxmox VE===&lt;br /&gt;
==== Settings ====&lt;br /&gt;
* Processors: 1 socket, 1 core&lt;br /&gt;
* Bios: SeaBIOS&lt;br /&gt;
* Machine: i440fx&lt;br /&gt;
&lt;br /&gt;
==== Import new Machine ====&lt;br /&gt;
Import the &amp;quot;ova&amp;quot; file to your storage which is enabled for the type &amp;quot;import&amp;quot;. After that you can select the created template an create new machines from it with the button &amp;quot;Import&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Before you start up the VM in the UI you have to adjust the following configuration options:&lt;br /&gt;
** Hardware -&amp;gt; Processors: Adjust &amp;quot;Extra Cpu Flags&amp;quot; -&amp;gt; &amp;quot;aes&amp;quot; if required&lt;br /&gt;
** Hardware -&amp;gt; SCSI Controller: Change Model to &amp;quot;VirtIO SCSI Single&amp;quot;&lt;br /&gt;
** Hardware -&amp;gt; Network Device (net0 / net1): Change Model to &amp;quot;VirtIO (paravirtualized)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===Network Configuration===&lt;br /&gt;
The IPVA is preconfigured a DHCP client. You will see the current IP-Address in the console-screen of the VM. If there&#039;s in no case a DHCP server available for the 1st-time configuration, you can set your IP-Configuration in the console.&lt;br /&gt;
&lt;br /&gt;
 config change IP0 ETH0 /addr 192.168.0.10 /mask 255.255.255.0&lt;br /&gt;
 config change IP0 RT0 /gateway 192.168.0.1&lt;br /&gt;
 config change DHCP0 /mode off&lt;br /&gt;
 config write&lt;br /&gt;
 reset&lt;br /&gt;
&lt;br /&gt;
====MAC/serial number====&lt;br /&gt;
Take care that you use a MAC address which is supported by my.innovaphone, see [[Reference:My_Innovaphone#IPVA_MAC_exists]].&lt;br /&gt;
&lt;br /&gt;
===AES Hardware Acceleration===&lt;br /&gt;
It may be beneficial to activate hardware acceleration for AES operations.&lt;br /&gt;
Whether hardware acceleration is activated can be checked with the command &amp;lt;code&amp;gt;!mod cmd CPU cpu-info&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;flags&amp;quot; attribute must contain &amp;quot;aesni&amp;quot;&lt;br /&gt;
* The &amp;quot;act-features&amp;quot; attribute must contain &amp;quot;has_aesni&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
 &amp;lt;info&amp;gt;&lt;br /&gt;
   &amp;lt;cpu &lt;br /&gt;
     vendor=&amp;quot;GenuineIntel&amp;quot; &lt;br /&gt;
     signature=&amp;quot;0x906e9&amp;quot;&lt;br /&gt;
     brand=&amp;quot;Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz&amp;quot; &lt;br /&gt;
     ...     &lt;br /&gt;
     flags=&amp;quot;sse3 pclmulqdq ssse3 sse4_1 sse4_2 &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;aesni&amp;lt;/span&amp;gt; xsave xsaveopt osxsave avx f16c rdrand fpu mmx fxsr sse sse2 avx2&amp;quot; &lt;br /&gt;
     act-features=&amp;quot;&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;has_aesni&amp;lt;/span&amp;gt; has_avx has_vaesni has_vpclmulqdq&amp;quot; srtp-mips=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Large IPVA with 512 MiB Flash==&lt;br /&gt;
In some scenarios the standard 64 MiB flash memory is not enough to store all user data. It is possible to manually enlarge the flash memory of an IPVA up to 512 MiB.&lt;br /&gt;
&lt;br /&gt;
You have to change the settings of the virtual machine and format the flash. You cannot do it with an already configured machine, because you will lose all your configuration!&lt;br /&gt;
&lt;br /&gt;
# shutdown the IPVA&lt;br /&gt;
# increase the RAM to 3.072 MiB&lt;br /&gt;
# increase the size of &#039;&#039;&#039;IDE1:0&#039;&#039;&#039; to 512 MiB or recreate it&lt;br /&gt;
# power up the IPVA&lt;br /&gt;
# format the flash: &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 reset all&amp;lt;/code&amp;gt;&lt;br /&gt;
# reboot the IPVA: &amp;lt;code&amp;gt;!reset&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check the free space with the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt;. You will see a big amount of available segments&lt;br /&gt;
&lt;br /&gt;
 segments=675, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 1k avail 63k owned 64k (segments 1) maximum 517056k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 8079&amp;lt;/span&amp;gt;, configured 8079)&lt;br /&gt;
 VARS - used 23k avail 16k owned 192k (segments 3) maximum 640k (segments 10, configured 10)&lt;br /&gt;
&lt;br /&gt;
But please keep in mind, the more data is saved, the longer it takes to reboot and load the UI in the [[{{NAMESPACE}}:PBX/Objects|PBX/Objects]] area.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Support procedures are commonly identical to the ones known from innovaphones&#039; physical appliances. Except for:&lt;br /&gt;
*&#039;&#039;&#039;Post-Mortem Logs&#039;&#039;&#039; A post-mortem log must be retrieved by clicking on &#039;&#039;Maintenance/Diagnostics/Tracing/&#039;&#039;&#039;trace(crash-dump)&#039;&#039;&#039;&#039;&#039; (alternatively: http://a.b.c.d/crash_dump.txt).&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
&lt;br /&gt;
=== Maximal 3.072 MiB RAM ===&lt;br /&gt;
Because the IPVA has no [https://en.wikipedia.org/wiki/Virtual_memory virtual memory management], it will use only the first linear 3 GiB of RAM. But please keep in mind, that the flash content will be stored 3-times (Flashmanager, Flashdirectory, PBX) in RAM at startup.&lt;br /&gt;
=== Restored IPVA may not run ===&lt;br /&gt;
We have seen issues where an IPVA which had been backed up using one of the available backup tools for VMWare do not start up properly when they have been restored. &lt;br /&gt;
&lt;br /&gt;
We strongly suggest to not rely on VMWare backup mechanism but instead to use the standard innovaphone backup scheme (that is, save the configuration on a regular basis).&lt;br /&gt;
&lt;br /&gt;
==== How to run a restored backup that fails to start ====&lt;br /&gt;
Here is the procedure to run an IPVA from an IPVA if the restored virtual machine does not boot up properly:&lt;br /&gt;
&lt;br /&gt;
* restore the backed up V10 IPVA&lt;br /&gt;
* create a new, empty V11r1 IPVA (you will need this merely to copy the boot disk from)&lt;br /&gt;
*replace the boot disk of the failing V10 IPVA by the boot disk of the fresh V11r1 IPVA (see [[#How To Replace The Boot Disk On vSphere.3F| How To Replace The Boot Disk On vSphere]] for details)&lt;br /&gt;
* start the restored and fixed V10 IPVA (it should run fine now)&lt;br /&gt;
* downgrade this V10 IPVA to desired V10 firmware&lt;br /&gt;
* remove the fresh V11r1 IPVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some Customer who are running Fw v12r1 (up to sr6) with ESXi 6.0 and VEEAM 9 reported that after a backup with VEEAM 9, the restored IPVA was not starting. &lt;br /&gt;
At this point, there is no possibility to solve this problem. The only workaround in that case is to delete the machine, reinstall a new one, and restore a configuration saved before.&lt;br /&gt;
&lt;br /&gt;
If you did not run into the problem yet, for prevention, we recommend to replace the Boot disk of your working IPVA.vmx with one of the IPVA.ova. Please follow the steps below (be aware that this will upgrade the firmware on the IPVA to 12r2, due to the fact that actually, IPVA.ova is only available from version 12r2):&lt;br /&gt;
&lt;br /&gt;
1. Remove the Boot disk of the virtual machine (vmx)(is normaly the first one).&amp;lt;br&amp;gt;&lt;br /&gt;
* Power off the VM&lt;br /&gt;
* Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Remove&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;OK&#039;&#039; to save your changes.&lt;br /&gt;
&lt;br /&gt;
2. Add the Boot disk of the ova virtual machine to the vmx one.&lt;br /&gt;
* Identify the size of the boot disk of the ova virtual machine (will be needed on the step when navigating to boot disk)&lt;br /&gt;
* On the powered off VM, Select the Virtual Machine &amp;gt; Settings.&lt;br /&gt;
* On the Hardware tab, select the virtual hard disk and click &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
* Select Use “an existing virtual disk” then click &#039;&#039;Next&#039;&#039;.&lt;br /&gt;
* Navigate to the boot disk of the ova Virtual machine then click &#039;&#039;next&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;Finish&#039;&#039;.&lt;br /&gt;
Now the vmx virtual machine should have the Fw version 12r2.&lt;br /&gt;
&lt;br /&gt;
The .ova version will be available also in V12r1 sr7&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on Citrix Cloud Platform ===&lt;br /&gt;
Reportedly, the Citrix cloud platform - although based on VMware - cannot run the IPVA.  Amongst other issues, the platform does not allow 4 virtual disks, which are required for the IPVA.&lt;br /&gt;
&lt;br /&gt;
=== IPVA does not run on VCloud Air ===&lt;br /&gt;
VCloud Air apparently does not support the timekeeping mechanism required by the IPVA.&lt;br /&gt;
&lt;br /&gt;
[[User:Ckl|ckl]] 15:50, 30 November 2016 (CET) We have seen the IPVA v12r2 running on vCloud Air. Use the ova import.&lt;br /&gt;
&lt;br /&gt;
=== IPVA on ESX 6.5 ===&lt;br /&gt;
We have reports that the IPVA does not run properly on ESX 6.5.  The IPVA boots up properly but the clock does not run.  Running the .ova based variation available in v12r2 fixed the issue or edit the file ipva.vmx according to [[#What Can I Do In Case Of Boot-Problem: perf-counter not enabled.21| What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
=== Administration: Avoid &#039;reboot&#039; Command. Use &#039;reset&#039; Command ===&lt;br /&gt;
Alwas use the &#039;reset&#039; command to restart an IPVA. &lt;br /&gt;
The &#039;reboot&#039; command makes sense only on physical applicances, where its purpose is to deploy a new bootcode by means of a forced watchdog trap. The resulting post-reboot state will be as if an unsolicited trap/crash had occurred.&lt;br /&gt;
&lt;br /&gt;
=== Voice Quality Issues ===&lt;br /&gt;
When dealing with media streams (e.g. for announcements), the IPVA needs to fulfil real-time processing requirements, for example to process RTP packets in a timely fashion.  To do so, the IPVA relies on the capabilities of the virtualization platform it runs on. &lt;br /&gt;
&lt;br /&gt;
It is therefore important to configure the platform so that it supports real-time applications best. If you experience voice quality or latency issues, consider &lt;br /&gt;
* to make sure that all of the IPVAs memory is &#039;&#039;reserved&#039;&#039; to the IPVA (&#039;&#039;Latency Sensitivity&#039;&#039; set to &#039;&#039;High&#039;&#039;)&lt;br /&gt;
* to guarantee exclusive PCPU access&lt;br /&gt;
This helps to reduce CPU halt/wake-up states.&lt;br /&gt;
&lt;br /&gt;
===Additional vCPUs may cause problems===&lt;br /&gt;
The Multi-Core functionality of version 13r2 is a beta functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
===Can The emulated compact-flash disk size be increased?===&lt;br /&gt;
Yes, from within the &#039;&#039;Edit Virtual Machine&#039;&#039; dialog. Doing so just increases the size of the virtual harddisk. The emulated compact-flash must be formatted afterwards and accordingly to benefit from the increased size. That step can be administrated from &#039;&#039;Administration/Compact Flash/Format&#039;&#039;. Note: A recommendation for an upper size limit is not given. Please note: The compact-flash disk is not the flash which store LDAP and VARS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vSphere / vSphere Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. At first backup all of your files from CF card&amp;lt;br&amp;gt;&lt;br /&gt;
2. Shutdown the corresponding IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
3. Choose &amp;quot;Properties&amp;quot; of the IPVA&amp;lt;br&amp;gt;&lt;br /&gt;
4. Delete &amp;quot;Harddrive 2&amp;quot; (Hardrive file xxx/xxx_1.vmdk)&amp;lt;br&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 hd-boot.vmdk  &amp;gt; xxx.vmdk&lt;br /&gt;
 hd-cf.vmdk    &amp;gt; xxx_1.vmdk&lt;br /&gt;
 hd-flash.vmdk &amp;gt; xxx_2.vmdk&lt;br /&gt;
 hd-dump.vmdk  &amp;gt; xxx_3.vmdk&lt;br /&gt;
&lt;br /&gt;
5. Create new harddrive&amp;lt;br&amp;gt;&lt;br /&gt;
6. Configure the required size&amp;lt;br&amp;gt;&lt;br /&gt;
7. As &amp;quot;Node of virtual device&amp;quot; select &amp;quot;IDE(0:1)&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
8. Start the IPVA.&amp;lt;br&amp;gt;&lt;br /&gt;
9. &amp;quot;Format&amp;quot; the CF Card and &amp;quot;mount&amp;quot; it (General/Compact-Flash/General)&lt;br /&gt;
===What Is the minimum size of the emulated flash storage?===&lt;br /&gt;
The VMDK-File hd-flash.vmdk is allocated with 100 MB, because VMWare can not handle smaller virtual disks.&lt;br /&gt;
&lt;br /&gt;
===What Is The Size Of the Flash Directory on the IPVA?===&lt;br /&gt;
As noted above, the virtual flash memory on the IPVA is defaulted to a size of 64MB. Most of the flash is used by the &#039;&#039;flash directory&#039;&#039; (FLASHDIR0) which amongst other things provides storage for PBX objects.&lt;br /&gt;
&lt;br /&gt;
The size of the flash directory depends on the available RAM. The maximum of 900 segments á 64KB, i.e. ~56MB, is available if 192MB or more RAM is available. If less RAM is available, the size of the flash directory is decreased accordingly.  For this reason, it is unsafe to reduce RAM size in a given IPVA, as the flash directory size may be decreased so that objects from the flash directory get lost.&lt;br /&gt;
&lt;br /&gt;
The easiest method to see how much flash directory space is available is to investigate the boot trace. For the standard configuration of 64MB the respective trace output is going to look as follows and informs about a size of 14MB:&lt;br /&gt;
 &lt;br /&gt;
 0:0000:081:4 - start flashdir FLASHDIR0&lt;br /&gt;
 0:0000:081:4 - fdir: segments=901-&amp;gt;224(14.0MB)&lt;br /&gt;
&lt;br /&gt;
{{Limit_Virtual_IPVA_Flash}}&lt;br /&gt;
&lt;br /&gt;
===How much RAM is required per IPVA instance?===&lt;br /&gt;
Since 12r2sr27/13r1sr5 the downloadable virtual appliance comes preconfigured with 256 MiB RAM. This amount is seen as a good trade-off for the majority of all installations. The IPVA need the amount of used flash 3-times at startup. The RAM-size can be administrated by VMware-means.&lt;br /&gt;
&lt;br /&gt;
===What is the maximum amount of RAM?===&lt;br /&gt;
The maximum meaningful RAM setting is 3GB. Memory space beyond that limit will be left unused. Assigning more than 3GB to an IPVA instance doesn&#039;t provide any benefit.&lt;br /&gt;
&lt;br /&gt;
===Why does &#039;&#039;General/Info/DRAM&#039;&#039; show less than the configured memory?===&lt;br /&gt;
Not all of the configured memory is available to the IPVA. E.g. a bit of memory is occupied by the VMM&amp;lt;ref&amp;gt;Virtual Machine Monitor: A component belonging to the virtualization platform&amp;lt;/ref&amp;gt;. The indicator &#039;&#039;General/Info/DRAM&#039;&#039; displays the memory available to the IPVA and is truncated down to a whole number. A boot-trace reveals a bit more about IPVA-available memory as shown in the following excerpt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
0:0000:030:4 - Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz&lt;br /&gt;
0:0000:030:4 - mem(64946176)=61.93MB ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===What about Open VM Tools / VMware Tools?===&lt;br /&gt;
Tools like this are not supported / integrated because it is not needed. The Virtual Appliance provides his own operating system, and we don&#039;t need any of the VM-Tools features in our guest.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of A Checksum Boot Error?===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checksum wrong! Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-crc-wrong.jpg|center|thumb|200px|ipva-crc-wrong.jpg/|ipva-crc-wrong.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Replace the boot harddisk by a fresh one. The boot harddisk is the 1st hd(originally named &#039;&#039;hd-boot.vmdk&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur on a system crash while a firmware update is taking place.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;NIC unavailable!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NIC unavailable!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:ipva-nic-unavailable.jpg|center|thumb|200px|ipva-nic-unavailable.jpg/|ipva-nic-unavailable.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
*Power-off the IPVA&lt;br /&gt;
*Administrate by VMware means: Ensure the correct/expected type of network interface controller(NIC) is going to be offered by the hypervisor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The IPVA offers driver support for:&lt;br /&gt;
*AMD NIC: Am79C970A PCnet-PCI II Single-Chip Full-Duplex Ethernet Controller&lt;br /&gt;
**a.k.a &#039;&#039;PCNet32&#039;&#039;&lt;br /&gt;
**a.k.a &#039;&#039;Vlance&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMD-NIC is kind of default. However, the NIC type may be overriden manually and accordingly within the configuration file ipva.vmx as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ethernet0.virtualDev = &amp;quot;vlance&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This problem may occur after a VMware re-configuration of the network settings.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;perf-counter not enabled!&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
perfcounter-not enabled!!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:screenshot-ipva-perfcounter-nok.jpg|center|thumb|200px|screenshot-ipva-perfcounter-nok.jpg/|screenshot-ipva-perfcounter-nok.jpg/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by an OVA-import of the IPVA. The appliance&#039;s configuration file &#039;&#039;ipva.vmx&#039;&#039; requires a VMware proprietary configuration line that&#039;s not specifiable within an OVA-file. &lt;br /&gt;
&lt;br /&gt;
The IPVA utilizes a VMware proprietary mechanism for its internal timekeeping&amp;lt;ref&amp;gt;Timekeeping in Virtual Machines http://www.vmware.com/pdf/vmware_timekeeping.pdf&amp;lt;/ref&amp;gt;. That mechanism is only available after adding the following line to the configuration file &#039;&#039;ipva.vmx&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
monitor_control.pseudo_perfctr = TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If that line is not present, the hypervisor is going to throw a CPU exception. Hint: In vSphere a VMX-file can be edited under &#039;&#039;&#039;Edit Settings/Options/Advanced/General/Configuration Parameters&#039;&#039;&#039;&amp;lt;ref&amp;gt;vmware Labs - How to edit vmx file in ESXi vSphere: https://www.youtube.com/watch?v=ICICoq-maB0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remarks&#039;&#039;&#039;&lt;br /&gt;
*The vmx file should be edited after the installation of the IPVA.&lt;br /&gt;
*The vmx file should NOT be edited with Text editor (use vSphere as shown above)&lt;br /&gt;
*To our knowledge, a converter is always necessary for the installation with vmx.&lt;br /&gt;
&lt;br /&gt;
===What Can I Do In Case Of Boot-Problem: &#039;&#039;Loading failed for image=IPVA    BIN&#039;&#039;===&lt;br /&gt;
This paragraph applies, if you experience the following start-up problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symptom&#039;&#039;&#039;&lt;br /&gt;
*the IPVA doesn&#039;t start properly&lt;br /&gt;
*the console displays&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Loading failed for image=IPVA    BIN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Image:Ipva-fw-load-failed.png|center|thumb|200px|ipva-fw-load-failed.png/|ipva-fw-load-failed.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
This problem is likely caused by a calculation fault within the boot-code. &lt;br /&gt;
*The solution requires a replacement of the boot disk hd-boot.vmdk. &lt;br /&gt;
**Download an IPVA package from on 11r2 sr22.&lt;br /&gt;
**Replace the 1st disk with the one from the downloaded package&lt;br /&gt;
&lt;br /&gt;
===Are Additional vCPUs useful?===&lt;br /&gt;
The Multi-Core functionality is an experimental functionality. Additional virtual CPUs(vCPUs) should not be utilized in production environments.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Licenses|Reference15r1:Licenses]]&lt;br /&gt;
* [[Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance]]&lt;br /&gt;
* [[Howto:A_rough_estimate_of_IPVA_Performance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept15r1|{{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=79779</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=79779"/>
		<updated>2026-05-05T12:59:33Z</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. 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;
== 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=79775</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=79775"/>
		<updated>2026-05-05T06:13:58Z</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. 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;
&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;
&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;
== 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=79774</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=79774"/>
		<updated>2026-05-05T06:13:00Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Supported translation services */&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;
&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;amp;lt;code&amp;amp;gt;23bcf2fd / 19ccf70b-028c-e7a8-94eb-1ad7db91d4c8&amp;amp;lt;/code&amp;amp;gt;&lt;br /&gt;
*## the own app url is generated from the current environment&lt;br /&gt;
*### Example: &amp;amp;lt;code&amp;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;amp;lt;/code&amp;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;
&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;
== 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=79773</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=79773"/>
		<updated>2026-05-05T05:52:51Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Language recognition */&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;
=== 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;
== 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;
== 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=79772</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=79772"/>
		<updated>2026-05-05T05:51:20Z</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. 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;
=== 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;
== 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, es, fr, it, nl, pl, 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;
== 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=79771</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=79771"/>
		<updated>2026-05-04T15:02:43Z</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. 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;
&lt;br /&gt;
==== deepl.com ====&lt;br /&gt;
This interface is used as default interface if you dont provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]].&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;
=== Custom backends ===&lt;br /&gt;
You are able to provide your own translation backend by configuring an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. For this, it is important that your backend act in the same way as the deepl.com interface.&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. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&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, for example &#039;&#039;&#039;&amp;quot;v15&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&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 display name &#039;&#039;(all character 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.&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
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 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 in which are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: de, en-gb, fr&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;
== 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=79767</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=79767"/>
		<updated>2026-05-04T13:26:19Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;Apps Category:Concept App Service Translations == Applies To ==   * innovaphone from version 14r2  == Overview == 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/15r1/web1/com.innovaphone.translation/com.innovaphone.translation.htm local JavaScript API] in the client and thus offer the user tran...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Translations]]&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone from version 14r2&lt;br /&gt;
&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.&lt;br /&gt;
So other apps can integrate the translation service via the [https://sdk.innovaphone.com/15r1/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 API key in the PBX Manager for this app service.&lt;br /&gt;
&lt;br /&gt;
=== deepl.com ===&lt;br /&gt;
This is interface is used as default interface if you dont provide an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]].&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;
=== Custom backends ===&lt;br /&gt;
You are able to provide your own translation backend by configuring an &#039;&#039;API-URL&#039;&#039; in the [[Reference16r1:Apps/PbxManager/App Translations|Settings]]. For this, it is important that your backend act in the same way as the deepl.com interface.&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. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&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, for example &#039;&#039;&#039;&amp;quot;v15&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&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 display name &#039;&#039;(all character 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.&lt;br /&gt;
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.&amp;lt;br&amp;gt;&lt;br /&gt;
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 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 in which are more than one language with a nearly similar amount of word matches will be skipped&lt;br /&gt;
&lt;br /&gt;
Supported languages: de, en-gb, fr&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;
== 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=79766</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=79766"/>
		<updated>2026-05-04T13:25:53Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Add an app object */&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;
=== European 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=Reference17:Apps/PbxManager/App_Translations&amp;diff=79765</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=79765"/>
		<updated>2026-05-04T13:21:25Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;With the translations PBX-Manager plugin, the needed app object can be created and configured.  In addition, the app object can be assigned to specific config templates, if any exist.  == Add an app object ==   ;Name :The &amp;#039;&amp;#039;name&amp;#039;&amp;#039; displayed for the app object which must be unique.  ;SIP :The &amp;#039;&amp;#039;sip&amp;#039;&amp;#039; from the app object which must be unique.  ;URL :The URL API Endpoint for the translation backend.  : If the field is empty, which is the default, the API endpoint will be se...&amp;quot;&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;
;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; for the translation backend (currently deepl.com).&lt;br /&gt;
&lt;br /&gt;
&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;
==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:Overview&amp;diff=79746</id>
		<title>Reference17:Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Overview&amp;diff=79746"/>
		<updated>2026-05-04T07:06:52Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;__NOTOC__ = Overview = &amp;lt;div id=&amp;quot;version_overview&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;!-- edit picture: * overwrite https://wiki.innovaphone.com/images/c/c4/16r1_guide.jpg * update maps via extension inno_version_overview --&amp;gt; We work continuously on our documentation. If you are missing something, please give us a short note to [mailto:presales@innovaphone.com presales@innovaphone.com]  = Reference Articles = {{Special:Prefixindex/Reference17:}}  = HowTo Articles = {{Special:Prefixindex/Howto17:}}...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Overview =&lt;br /&gt;
&amp;lt;div id=&amp;quot;version_overview&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- edit picture:&lt;br /&gt;
* overwrite https://wiki.innovaphone.com/images/c/c4/16r1_guide.jpg&lt;br /&gt;
* update maps via extension inno_version_overview&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
We work continuously on our documentation. If you are missing something, please give us a short note to [mailto:presales@innovaphone.com presales@innovaphone.com]&lt;br /&gt;
&lt;br /&gt;
= Reference Articles =&lt;br /&gt;
{{Special:Prefixindex/Reference17:}}&lt;br /&gt;
&lt;br /&gt;
= HowTo Articles =&lt;br /&gt;
{{Special:Prefixindex/Howto17:}}&lt;br /&gt;
&lt;br /&gt;
= HowTo MyApps Cloud Articles =&lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;all&amp;quot; hideroot=on&amp;gt;MyApps_Cloud&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
* [[Howto17:Firmware_Upgrade_V16r1_V17]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Install_Contact_Widget_App&amp;diff=79719</id>
		<title>Howto15r1:Install Contact Widget App</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Install_Contact_Widget_App&amp;diff=79719"/>
		<updated>2026-04-29T07:52:12Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: connect, install, set up, --&amp;gt;&lt;br /&gt;
This article explains all the necessary steps to install the Contact Widget App and to configure a sidebar widget.&lt;br /&gt;
&lt;br /&gt;
== General Consideration ==&lt;br /&gt;
The Contact Widgets App is new in firmware V14r1.&lt;br /&gt;
Also new in V14r1 is the “AP app installer” plugin in the PBX manager.&lt;br /&gt;
This guide is written for a 14r1 PBX and a 14r1 AP(App Platform) and the use of the app installer plugin. Installation is also possible from the AP itself, but is not covered in this wiki.&lt;br /&gt;
For all older versions, please upgrade first to V14r1 latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the AP app installer plugin. In the right pane, the App Store will be shown.&lt;br /&gt;
* Choose All Apps&lt;br /&gt;
* Click in innovaphone AG &lt;br /&gt;
* Scroll down to the Contact Widgets App and click on it&lt;br /&gt;
* Select the proper firmware version&lt;br /&gt;
* Click on Install and accept the terms of use and continue with a click op install&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Refresh the view of the PBX manager to show the new installed AP widgets &#039;&#039;(Hint: close and open the PBX manager)&#039;&#039;&lt;br /&gt;
* Click on the AP widget and click Add an App&lt;br /&gt;
* Enter the name of the Widget Object e.g. Widget and the SIP widget and enter the PBX name&lt;br /&gt;
* Tick in Licenses Video if you want to enable Video calls in the Widgets &#039;&#039;(Hint: A port license will also be consumed by the PBX app object used by the Contact Widget App)&#039;&#039;&lt;br /&gt;
* You can enter the maximum amount of acquired Widget Licenses that this Object is allowed to consume. This License enables and advertisement free version of the widgets&lt;br /&gt;
* Tick the appropriate template for the User(s) that will use the Contact Widget App&lt;br /&gt;
[[image:WidgetObjectAdd.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click OK to save the settings and a green checkmark will be shown&lt;br /&gt;
[[image:WidgetObjectAddOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
You have set the &amp;quot;Advanced Chat App&amp;quot; in &amp;quot;PBX/Config/General&amp;quot; to &amp;quot;old-chat-app&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Add the Contact Widget App to your myApps homescreen ==&lt;br /&gt;
&lt;br /&gt;
* Add the Contact Widget App to your myApps homescreen, by clicking on the All Apps icon at the right bottom, search for the Contact Widget App and click on the home symbol of the Contact Widget App.&lt;br /&gt;
[[image:ContactWidgetAppHome.PNG]]&lt;br /&gt;
&lt;br /&gt;
* On your myApps homescreen open the Contact Widget App.&lt;br /&gt;
[[image:WidgetApp.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure a sidebar widget ==&lt;br /&gt;
In the Contact Widget App you have the option to add a widget from the type Sidebar and/or Cardset. In this wiki section, we will only show how to add the widget of type sidebar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:CWopenNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Choose your preferred Website widget and add by clicking on the button  “create new sidebar”&lt;br /&gt;
&lt;br /&gt;
A new Sidebar widget has been created with the default name “New Sidebar Widget” &lt;br /&gt;
[[image:NewSideBarWidget.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the pencil icon next to the name to change the name to an appropriate name.&lt;br /&gt;
* In the notes field, you can add some additional notes. It might make sense to add the URL of the website where this widget will be used.&lt;br /&gt;
[[image:SalesSideBarNotes.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure the general widget settings ==&lt;br /&gt;
* Configure the other settings in the section, Appearance (Position, Color, etc.)&lt;br /&gt;
* Configure a standard location address&lt;br /&gt;
* Click on the ? symbol for tooltips and consult the [https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets Concept_Contact_Widgets] for further details and options.&lt;br /&gt;
&lt;br /&gt;
Once all desired fields are filled out, don’t forget to click on the SAVE button in the top right.&lt;br /&gt;
&lt;br /&gt;
Every change/edit will show an orange rectangle around the save button. &lt;br /&gt;
The change(s) needs to be saved and will be immediately visible once the widget code is implemented on your website&lt;br /&gt;
[[image:SidebarSettingOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add agents to the widget ==&lt;br /&gt;
Next step is to add one or more agents to the widget to handle the incoming calls and to be shown in the widget on your website.&lt;br /&gt;
* Click on the “Agents” button to the right from settings.&lt;br /&gt;
[[image:SidebarAgents.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the “+ Add Agent” button&lt;br /&gt;
* Add the Agent&#039;s SIP-ID or click on the search icon to find and add an agent. Enter additional address and information if this differs from the settings field.&lt;br /&gt;
* Select how the agent can be contacted, Voice, Video, Chat and optional a link to a website with opening hours or calendar website etc.&lt;br /&gt;
* Select the type of status how the agents&#039; availability should be shown.&lt;br /&gt;
[[image:SidebarAgentsNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
Once all the details are filled out, &lt;br /&gt;
* click save again&lt;br /&gt;
[[image:SidebarAgentsOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can add multiple Agents to the Widget as you like.&lt;br /&gt;
&lt;br /&gt;
==Copy source code to website ==&lt;br /&gt;
Next step, you can copy the website widget code from this widget and implement it on your website. &lt;br /&gt;
* Click on the “Code” button. &lt;br /&gt;
[[image:CodeButton.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Download or copy the code from the pop-up window.&lt;br /&gt;
[[image:CodeFile.PNG]]&lt;br /&gt;
&lt;br /&gt;
For test purpose, you can save the code as HTML file on your local PC and open it.&lt;br /&gt;
&lt;br /&gt;
A blank website including the widget will be shown and can be tested.&lt;br /&gt;
&lt;br /&gt;
[[image:SidebarWidget.PNG]]   [https://00094-apps.innovaphone.com/benelux.innovaphone.com/files/UI/Web/Sales_Sidebar_Widget.html&amp;amp;fileskey=T7N!7kRnXgirz_!t Widget-example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Integrate this code on your website, and you are ready to go and use the widget on your website.&lt;br /&gt;
&lt;br /&gt;
==Known Issues ==&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets Concept_Contact_Widgets]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)&amp;amp;mobileaction=toggle_view_mobile Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Install_Contact_Widget_App&amp;diff=79718</id>
		<title>Howto16r1:Install Contact Widget App</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Install_Contact_Widget_App&amp;diff=79718"/>
		<updated>2026-04-29T07:51:44Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: connect, install, set up, --&amp;gt;&lt;br /&gt;
This article explains all the necessary steps to install the Contact Widget App and to configure a sidebar widget.&lt;br /&gt;
&lt;br /&gt;
== General Consideration ==&lt;br /&gt;
The Contact Widgets App is new in firmware V14r1.&lt;br /&gt;
Also new in V14r1 is the “AP app installer” plugin in the PBX manager.&lt;br /&gt;
This guide is written for a 14r1 PBX and a 14r1 AP(App Platform) and the use of the app installer plugin. Installation is also possible from the AP itself, but is not covered in this wiki.&lt;br /&gt;
For all older versions, please upgrade first to V14r1 latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the AP app installer plugin. In the right pane, the App Store will be shown.&lt;br /&gt;
* Choose All Apps&lt;br /&gt;
* Click in innovaphone AG &lt;br /&gt;
* Scroll down to the Contact Widgets App and click on it&lt;br /&gt;
* Select the proper firmware version&lt;br /&gt;
* Click on Install and accept the terms of use and continue with a click op install&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Refresh the view of the PBX manager to show the new installed AP widgets &#039;&#039;(Hint: close and open the PBX manager)&#039;&#039;&lt;br /&gt;
* Click on the AP widget and click Add an App&lt;br /&gt;
* Enter the name of the Widget Object e.g. Widget and the SIP widget and enter the PBX name&lt;br /&gt;
* Tick in Licenses Video if you want to enable Video calls in the Widgets &#039;&#039;(Hint: A port license will also be consumed by the PBX app object used by the Contact Widget App)&#039;&#039;&lt;br /&gt;
* You can enter the maximum amount of acquired Widget Licenses that this Object is allowed to consume. This License enables and advertisement free version of the widgets&lt;br /&gt;
* Tick the appropriate template for the User(s) that will use the Contact Widget App&lt;br /&gt;
[[image:WidgetObjectAdd.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click OK to save the settings and a green checkmark will be shown&lt;br /&gt;
[[image:WidgetObjectAddOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add the Contact Widget App to your myApps homescreen ==&lt;br /&gt;
&lt;br /&gt;
* Add the Contact Widget App to your myApps homescreen, by clicking on the All Apps icon at the right bottom, search for the Contact Widget App and click on the home symbol of the Contact Widget App.&lt;br /&gt;
[[image:ContactWidgetAppHome.PNG]]&lt;br /&gt;
&lt;br /&gt;
* On your myApps homescreen open the Contact Widget App.&lt;br /&gt;
[[image:WidgetApp.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure a sidebar widget ==&lt;br /&gt;
In the Contact Widget App you have the option to add a widget from the type Sidebar and/or Cardset. In this wiki section, we will only show how to add the widget of type sidebar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:CWopenNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Choose your preferred Website widget and add by clicking on the button  “create new sidebar”&lt;br /&gt;
&lt;br /&gt;
A new Sidebar widget has been created with the default name “New Sidebar Widget” &lt;br /&gt;
[[image:NewSideBarWidget.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the pencil icon next to the name to change the name to an appropriate name.&lt;br /&gt;
* In the notes field, you can add some additional notes. It might make sense to add the URL of the website where this widget will be used.&lt;br /&gt;
[[image:SalesSideBarNotes.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure the general widget settings ==&lt;br /&gt;
* Configure the other settings in the section, Appearance (Position, Color, etc.)&lt;br /&gt;
* Configure a standard location address&lt;br /&gt;
* Click on the ? symbol for tooltips and consult the [https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Contact_Widgets Concept_Contact_Widgets] for further details and options.&lt;br /&gt;
&lt;br /&gt;
Once all desired fields are filled out, don’t forget to click on the SAVE button in the top right.&lt;br /&gt;
&lt;br /&gt;
Every change/edit will show an orange rectangle around the save button. &lt;br /&gt;
The change(s) needs to be saved and will be immediately visible once the widget code is implemented on your website&lt;br /&gt;
[[image:SidebarSettingOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add agents to the widget ==&lt;br /&gt;
Next step is to add one or more agents to the widget to handle the incoming calls and to be shown in the widget on your website.&lt;br /&gt;
* Click on the “Agents” button to the right from settings.&lt;br /&gt;
[[image:SidebarAgents.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the “+ Add Agent” button&lt;br /&gt;
* Add the Agent&#039;s SIP-ID or click on the search icon to find and add an agent. Enter additional address and information if this differs from the settings field.&lt;br /&gt;
* Select how the agent can be contacted, Voice, Video, Chat and optional a link to a website with opening hours or calendar website etc.&lt;br /&gt;
* Select the type of status how the agents&#039; availability should be shown.&lt;br /&gt;
[[image:SidebarAgentsNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
Once all the details are filled out, &lt;br /&gt;
* click save again&lt;br /&gt;
[[image:SidebarAgentsOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can add multiple Agents to the Widget as you like.&lt;br /&gt;
&lt;br /&gt;
==Copy source code to website ==&lt;br /&gt;
Next step, you can copy the website widget code from this widget and implement it on your website. &lt;br /&gt;
* Click on the “Code” button. &lt;br /&gt;
[[image:CodeButton.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Download or copy the code from the pop-up window.&lt;br /&gt;
[[image:CodeFile.PNG]]&lt;br /&gt;
&lt;br /&gt;
For test purpose, you can save the code as HTML file on your local PC and open it.&lt;br /&gt;
&lt;br /&gt;
A blank website including the widget will be shown and can be tested.&lt;br /&gt;
&lt;br /&gt;
[[image:SidebarWidget.PNG]]   [https://00094-apps.innovaphone.com/benelux.innovaphone.com/files/UI/Web/Sales_Sidebar_Widget.html&amp;amp;fileskey=T7N!7kRnXgirz_!t Widget-example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Integrate this code on your website, and you are ready to go and use the widget on your website.&lt;br /&gt;
&lt;br /&gt;
==Known Issues ==&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Contact_Widgets Concept_Contact_Widgets]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)&amp;amp;mobileaction=toggle_view_mobile Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Contact_Widgets&amp;diff=79717</id>
		<title>Reference16r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Contact_Widgets&amp;diff=79717"/>
		<updated>2026-04-29T07:51:21Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Conference]]&lt;br /&gt;
&lt;br /&gt;
= Applies To =&lt;br /&gt;
* innovaphone PBX from version 14r1&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware Version 14r1&lt;br /&gt;
* One &#039;&#039;&#039;Port License&#039;&#039;&#039; is used by the app service to establish a VoIP registration at the PBX&lt;br /&gt;
* &#039;&#039;&#039;Video License&#039;&#039;&#039; (optional) is required to establish video connections [*]&lt;br /&gt;
* &#039;&#039;&#039;Widget License&#039;&#039;&#039; (optional) is required to remove any &#039;innovaphone&#039; branding from the Widget UI&lt;br /&gt;
&lt;br /&gt;
[*] &#039;&#039;&#039;UC License&#039;&#039;&#039; can also be used since it includes a &#039;&#039;&#039;Video License&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is an element that can be added to a website. It offers to website visitors a way to get in contact with agents (e.g. help-desk). Website visitors can start chat sessions (asking questions, getting answers) or can start voice or even video calls.&lt;br /&gt;
&lt;br /&gt;
An nice example for a &amp;quot;Sidebar Widget&amp;quot; can be viewed [https://www.innovaphone.com/de/ip-telefonie/innovaphone-pbx.html here].&amp;lt;br&amp;gt;&lt;br /&gt;
When you have opened this website the Sidebar Widget comes slowly into view on the right side.&lt;br /&gt;
&lt;br /&gt;
Example of a Business-Cards-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Cardset-widget.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of a Sidebar-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Sidebar-Widget.png]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
[[File:Concept-widgets-overview.png|thumb|Overview]]&lt;br /&gt;
The central part of the new Widgets-Concept is the &#039;&#039;&#039;Contact-Widgets-App&#039;&#039;&#039;.&lt;br /&gt;
The Contact Widgets App is installed on the innovaphone Application Platform and it allows a PBX user to define Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Contact Widgets can be integrated in a Website to offer easy ways to website users to contact &#039;&#039;&#039;Agents&#039;&#039;&#039;. Agents are PBX users meant to communicate with external clients.&amp;lt;br&amp;gt;&lt;br /&gt;
There are 2 fundamental types of Contact Widgets:&lt;br /&gt;
* &#039;&#039;&#039;Sidebar Widgets&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Business Cards Widgets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Sidebar Widget appears one side of the website trying to take as less space as possible. The website visitor can expand the Sidebar Widget if interested.&amp;lt;br&amp;gt;&lt;br /&gt;
A Business Cards Widget appears as integrated part of the website content, offering one (or more) contacts in form of ordinary business cards.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
For non experienced technicians have a look at [[Howto16r1:Install_Contact_Widget_App#Installation]] and follow the installation steps mentioned in the how-to article.&lt;br /&gt;
&lt;br /&gt;
Others:&lt;br /&gt;
* Download the &#039;Contact Widgets App&#039; via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Widgets App on the Manager. We recommend to use no capital letters and no special characters (also not such as space).&lt;br /&gt;
* Create a new PBX Object with the PBX Manager Plugin. (*)&lt;br /&gt;
* Assign App to authorized (admin) users, which will be allowed to create/change/delete Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Experts:&lt;br /&gt;
(*) You can also create the PBX Object manually:&amp;lt;br&amp;gt;&lt;br /&gt;
* Create a new object of type &amp;quot;App&amp;quot;.&lt;br /&gt;
* Give it a &amp;quot;Long Name&amp;quot; (&amp;quot;Contact Widgets&amp;quot;) and a Name (&amp;quot;widgets&amp;quot;) same as the instance-name.&lt;br /&gt;
* Give it a password, same as the instance password.&lt;br /&gt;
* On the &amp;quot;App&amp;quot; tab configure URL to App Service on App Platform (&amp;quot;http://&amp;lt;ipaddress-or-dnsname&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-widgets&amp;quot;).&lt;br /&gt;
* Activate option &amp;quot;Websocket&amp;quot;&lt;br /&gt;
* Grant access to APIs: &amp;quot;PbxSignal&amp;quot; (mandatory), &amp;quot;Admin&amp;quot; (optional) and &amp;quot;PbxApi&amp;quot; (mandatory)&lt;br /&gt;
&lt;br /&gt;
= Using the Contact Widgets App =&lt;br /&gt;
Click on one of the buttons (depending on what type of widget you want to create):&lt;br /&gt;
* [+ Add new sidebar widget]&lt;br /&gt;
* [+ Add new business cards widget]&lt;br /&gt;
A new (empty) widget is displayed. You can give the widget a name by clicking the pen-symbol. The widget name helps to identify widgets as soon the number of widgets starts to grow.&amp;lt;br&amp;gt;&lt;br /&gt;
You can expand and collaps widgets by clicking the header of each widget.&lt;br /&gt;
[[Image:Widget-code-new-widget.png|thumb|New Widget]]&lt;br /&gt;
&lt;br /&gt;
== Creating a new Widget ==&lt;br /&gt;
&lt;br /&gt;
New Widget features and options&lt;br /&gt;
&lt;br /&gt;
*You can add the main contact details for this widget&lt;br /&gt;
*Select the default language&lt;br /&gt;
*Set your prefered font settings *&lt;br /&gt;
*Change the colour settings *&lt;br /&gt;
*Change the margin settings *&lt;br /&gt;
*z-index&lt;br /&gt;
*Options Require license (when this checkbox is ticked, this widget will consume 1 license of type: Service(innovaphone-widgets) and the widget will be shown without advertisement)&lt;br /&gt;
(* By default, the Widget will use the default website font, colour and margin settings. Change can be needed depending on the website settings)&lt;br /&gt;
[[Image:Widget-new-widget-features.png|thumb|Widget Features]]&lt;br /&gt;
&lt;br /&gt;
== Adding Agent to Widget ==&lt;br /&gt;
You can add and remove Agents to a Widget. Agents can be contacted by external website visitors.&amp;lt;br&amp;gt;&lt;br /&gt;
New agents are added by clicking the [+] button inside the agents container.&lt;br /&gt;
[[File:Adding-new-agents.png|thumb|Adding agents]]&lt;br /&gt;
A dialog opens where you can define the agent. It all starts with the agent&#039;s &#039;SIP-ID&#039;. That&#039;s the dialable PBX user address. You can use the search function to find a PBX user by name.&lt;br /&gt;
&lt;br /&gt;
There are several (optional) attributes you can set for an agent, like &#039;Display name&#039;, &#039;Phone number&#039;, &#039;Email address&#039; and &#039;Picture&#039;. A picture can be placed by drag &amp;amp; drop or can be selected from local disk by clicking the placeholder rectangle.&lt;br /&gt;
&lt;br /&gt;
Finally you can define the ways of communication the agent is available for:&lt;br /&gt;
* Voice-only calls&lt;br /&gt;
* Video calls (including voice)&lt;br /&gt;
* Chat&lt;br /&gt;
* Email&lt;br /&gt;
&lt;br /&gt;
For a Business-Cards-Widget the order of agents could be relevant. You can change the order of agents in the Widgets-App by easy drag &amp;amp; drop using the mouse.&lt;br /&gt;
&lt;br /&gt;
Each widget gets a unique ID (uuid) assigned on its initial creation. This uuid is used to identify the widget when it is integrated into a website.&lt;br /&gt;
&lt;br /&gt;
In case of a sidebar widget, the agent&#039;s card will be displayed by default depending on its status(availability) unless you checked &amp;quot;Always show widget&amp;quot; under the sidebar settings.&lt;br /&gt;
&lt;br /&gt;
In case of a business cards widget, the agent card will always be shown, but its availability is depending on its status.&lt;br /&gt;
&lt;br /&gt;
The following settings are possible:&lt;br /&gt;
* Presence*: Display/availability of the card based on the presence status of the agent. Presence available (green), Presence unavailable, busy (red). Usage: Normal agent based on availability.&lt;br /&gt;
* Always online: Permanent display/availability of the card regardless of its presence or busy status. Usage: Multiple consecutive calls to the same destination, an agent with multiple line configuration, a group or waiting queue.&lt;br /&gt;
* Boolean*: Display of the card depending on the true status of a Boolean object.  Usage: Agent, group or waiting queues based on boolean settings.&lt;br /&gt;
* Inactive: Agent card is permanently in the status unavailable (red). Usage: Showing the agent in a business cards widget, but limit the access to the agent for a longer period. (holiday, sick-leave or other reasons)&lt;br /&gt;
&#039;&#039;&#039;Important!&#039;&#039;&#039;: Presence and boolean status are dependent on the visibility configured on all the monitored objects, eg. agent user objects and monitored boolean objects. The boolean object must have the visibility option &amp;quot;calls&amp;quot; checked before adding the boolean to the widget!&lt;br /&gt;
&lt;br /&gt;
= Integrating Widgets into Website =&lt;br /&gt;
Now it is the website admin&#039;s turn to integrate the widget into the website.&amp;lt;br&amp;gt;&lt;br /&gt;
To do this, click the [Code] button in the Widgets App at that widget you want to include. A popup appears showing a handful of code lines (HTML and Javascript).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Widget-code-popup.png|thumb|Code Popup]]&lt;br /&gt;
You can &#039;&#039;copy&#039;&#039; the code lines into clipboard by clicking the [Copy] button.&amp;lt;br&amp;gt;&lt;br /&gt;
You can &#039;&#039;paste&#039;&#039; the code lines from clipboard into your website code.&amp;lt;br&amp;gt;&lt;br /&gt;
There&#039;s also a [Download] button. When clicking this button a small HTML file is saved on your local computer. This HTML file can be opened in a browser to preview the widget and test the widget&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
== Content-Security-Policy ==&lt;br /&gt;
If the website uses Content-Security-Policy (CSP) it could be necessary to add entries to config sections &#039;default-src&#039; and &#039;img-src&#039;.&lt;br /&gt;
* The Widget opens a secure websocket connection (wss:)&lt;br /&gt;
* The Widget loads images via Data-URL (data:).&lt;br /&gt;
* The Widget uses Mail-Links (mailto:).&lt;br /&gt;
* The Widget uses Tel-Links (tel:).&lt;br /&gt;
  &amp;lt;meta&lt;br /&gt;
    http-equiv=&amp;quot;Content-Security-Policy&amp;quot; content=&amp;quot;&lt;br /&gt;
      default-src &#039;self&#039; &#039;&#039;&#039;wss://*.innovaphone.com&#039;&#039;&#039;; child-src &#039;self&#039; &#039;&#039;&#039;mailto:&#039;&#039;&#039; &#039;&#039;&#039;tel:&#039;&#039;&#039;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
  /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= After Integration =&lt;br /&gt;
Once your widget is live on the website you can still change and update the widget in the Widgets-App. You can update the list of agents or change any other attribute. As soon as you click the widget&#039;s [Save] button any open widget instance in a web browser will update immmediately. No need for the website administrator to update the code.&lt;br /&gt;
&lt;br /&gt;
= Widget-API — Protocol between Website Widget and App Service =&lt;br /&gt;
Basically, this section does not matter. To create and use widgets, knowledge about the protocol is not required.&amp;lt;br&amp;gt;&lt;br /&gt;
All who are interested in technical details are welcome to read on.&lt;br /&gt;
&lt;br /&gt;
== Loading the Widget ==&lt;br /&gt;
&lt;br /&gt;
When a widget is loaded in the browser window of the website visitor, a websocket connection is opened to the app service on the innovaphone Application Platform. Once the websocket connection is established it goes like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;Start&amp;quot;,&amp;quot;uuid&amp;quot;:&amp;quot;fadc5da4cae94bfc9434d9957ea08ccb&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Session&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Visitenkarten&amp;quot;,&amp;quot;lang&amp;quot;:&amp;quot;de&amp;quot;,&amp;quot;strings&amp;quot;:{...}}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Columbia&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:1}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;}&lt;br /&gt;
[7] {&amp;quot;mt&amp;quot;:&amp;quot;IceConfig&amp;quot;,&amp;quot;stun&amp;quot;:&amp;quot;stun.innovaphone.com&amp;quot;,&amp;quot;turn&amp;quot;:&amp;quot;turn.innovaphone.com&amp;quot;}&lt;br /&gt;
[8] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[9] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[10] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[11] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] The &amp;quot;Start&amp;quot; request is sent with the unique id of the widget.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] The app service sends the &amp;quot;Session&amp;quot; response providing the widget&#039;s display-name and other parameters.&amp;lt;br&amp;gt;&lt;br /&gt;
[3]-[6] The app service sends &amp;quot;Info&amp;quot; messages for all configured agents. Each &amp;quot;Info&amp;quot; message triggers a &amp;quot;GetPicture&amp;quot; request to get a picture of the agent.&amp;lt;br&amp;gt;&lt;br /&gt;
[7] The app service sends &amp;quot;IceConfig&amp;quot; providing the STUN and TURN config required for media calls.&amp;lt;br&amp;gt;&lt;br /&gt;
[8]-[9] The app service sends &amp;quot;Picture&amp;quot; messages for all agents.&amp;lt;br&amp;gt;&lt;br /&gt;
[10]-[11] The presence of an agent may change over time. Presence updates are provided with &amp;quot;Info&amp;quot; messages.&lt;br /&gt;
&lt;br /&gt;
== Initiating a call ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;CreateCall&amp;quot;,&amp;quot;dest&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Mein Name&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Channels&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;PROPOSAL&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;alerting&amp;quot;}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;connected&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;SELECT&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;ClearCall&amp;quot;}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;terminated&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;CreatCall&amp;quot; message sets the target of the call (&#039;dest&#039;) and the own display name (&#039;dn&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
[2] &amp;quot;Channels&amp;quot; message provides the media offer for this call. Complete SDP offer is provided.&amp;lt;br&amp;gt;&lt;br /&gt;
[3] &amp;quot;CallInfo&amp;quot; is received giving information about the call&#039;s current state.&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Next &amp;quot;CallInfo&amp;quot; is received telling the call was answered and deliviering the remote side&#039;s media answer.&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Web site user terminates the call.&amp;lt;br&amp;gt;&lt;br /&gt;
[6] The final &amp;quot;CallInfo&amp;quot; message is received.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Known issues and limitations =&lt;br /&gt;
* The widgets are not multi-instance capable. Multiple widgets on one and the same website are not possible. Every subpage on the website can have its own widget.&lt;br /&gt;
* We have seen some cases where an existing web widget from other software did have a negative impact on our widget on the website. Rearranging the widget in the HTML code might help.&lt;br /&gt;
* The number of Agents in a single Sidebar or Business Cards is limited by the length of the sidebar/business card configuration. Just over 100 agents will normally not be a problem. From V15r1sr4 onwards a config check has been built in to prevent too lengthy configurations, so this version is recommended for sidebars and business cards with plenty of agents.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&amp;lt;big&amp;gt;If an issue can be reproduced&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Web visitor in a browser.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The myApps web uses the logging facilities provided by the browser it runs in (i.e. JavaScript function &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt;).  In most browser this is available as &#039;&#039;Console&#039;&#039; after pressing F12.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*The called agent working with myApps client.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[Reference16r1:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Troubleshooting AP Services on the AP.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs]]&lt;br /&gt;
&lt;br /&gt;
Go to the AP Manager and select the App instance from the Contact Widgets App. &lt;br /&gt;
Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|none|AP-Diagnostics]]&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|none|AP-Diagnostics-Logging]]&lt;br /&gt;
= Related Articles =&lt;br /&gt;
[[Howto16r1:Install_Contact_Widget_App|Howto16r1:Install_Contact_Widget_App]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79716</id>
		<title>Reference15r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79716"/>
		<updated>2026-04-29T07:50:53Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Conference]]&lt;br /&gt;
&lt;br /&gt;
= Applies To =&lt;br /&gt;
* innovaphone PBX from version 14r1&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware Version 14r1&lt;br /&gt;
* One &#039;&#039;&#039;Port License&#039;&#039;&#039; is used by the app service to establish a VoIP registration at the PBX&lt;br /&gt;
* &#039;&#039;&#039;Video License&#039;&#039;&#039; (optional) is required to establish video connections [*]&lt;br /&gt;
* &#039;&#039;&#039;Widget License&#039;&#039;&#039; (optional) is required to remove any &#039;innovaphone&#039; branding from the Widget UI&lt;br /&gt;
&lt;br /&gt;
[*] &#039;&#039;&#039;UC License&#039;&#039;&#039; can also be used since it includes a &#039;&#039;&#039;Video License&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is an element that can be added to a website. It offers to website visitors a way to get in contact with agents (e.g. help-desk). Website visitors can start chat sessions (asking questions, getting answers) or can start voice or even video calls.&lt;br /&gt;
&lt;br /&gt;
An nice example for a &amp;quot;Sidebar Widget&amp;quot; can be viewed [https://www.innovaphone.com/de/ip-telefonie/innovaphone-pbx.html here].&amp;lt;br&amp;gt;&lt;br /&gt;
When you have opened this website the Sidebar Widget comes slowly into view on the right side.&lt;br /&gt;
&lt;br /&gt;
Example of a Business-Cards-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Cardset-widget.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of a Sidebar-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Sidebar-Widget.png]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
[[File:Concept-widgets-overview.png|thumb|Overview]]&lt;br /&gt;
The central part of the new Widgets-Concept is the &#039;&#039;&#039;Contact-Widgets-App&#039;&#039;&#039;.&lt;br /&gt;
The Contact Widgets App is installed on the innovaphone Application Platform and it allows a PBX user to define Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Contact Widgets can be integrated in a Website to offer easy ways to website users to contact &#039;&#039;&#039;Agents&#039;&#039;&#039;. Agents are PBX users meant to communicate with external clients.&amp;lt;br&amp;gt;&lt;br /&gt;
There are 2 fundamental types of Contact Widgets:&lt;br /&gt;
* &#039;&#039;&#039;Sidebar Widgets&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Business Cards Widgets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Sidebar Widget appears one side of the website trying to take as less space as possible. The website visitor can expand the Sidebar Widget if interested.&amp;lt;br&amp;gt;&lt;br /&gt;
A Business Cards Widget appears as integrated part of the website content, offering one (or more) contacts in form of ordinary business cards.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
For non experienced technicians have a look at [[Howto15r1:Install_Contact_Widget_App#Installation]] and follow the installation steps mentioned in the how-to article.&lt;br /&gt;
&lt;br /&gt;
Others:&lt;br /&gt;
* Download the &#039;Contact Widgets App&#039; via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Widgets App on the Manager. We recommend to use no capital letters and no special characters (also not such as space).&lt;br /&gt;
* Create a new PBX Object with the PBX Manager Plugin. (*)&lt;br /&gt;
* Assign App to authorized (admin) users, which will be allowed to create/change/delete Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Experts:&lt;br /&gt;
(*) You can also create the PBX Object manually:&amp;lt;br&amp;gt;&lt;br /&gt;
* Create a new object of type &amp;quot;App&amp;quot;.&lt;br /&gt;
* Give it a &amp;quot;Long Name&amp;quot; (&amp;quot;Contact Widgets&amp;quot;) and a Name (&amp;quot;widgets&amp;quot;) same as the instance-name.&lt;br /&gt;
* Give it a password, same as the instance password.&lt;br /&gt;
* On the &amp;quot;App&amp;quot; tab configure URL to App Service on App Platform (&amp;quot;http://&amp;lt;ipaddress-or-dnsname&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-widgets&amp;quot;).&lt;br /&gt;
* Activate option &amp;quot;Websocket&amp;quot;&lt;br /&gt;
* Grant access to APIs: &amp;quot;PbxSignal&amp;quot; (mandatory), &amp;quot;Admin&amp;quot; (optional) and &amp;quot;PbxApi&amp;quot; (mandatory)&lt;br /&gt;
&lt;br /&gt;
You have set the &amp;quot;Advanced Chat App&amp;quot; in &amp;quot;PBX/Config/General&amp;quot; to &amp;quot;old-chat-app&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Using the Contact Widgets App =&lt;br /&gt;
Click on one of the buttons (depending on what type of widget you want to create):&lt;br /&gt;
* [+ Add new sidebar widget]&lt;br /&gt;
* [+ Add new business cards widget]&lt;br /&gt;
A new (empty) widget is displayed. You can give the widget a name by clicking the pen-symbol. The widget name helps to identify widgets as soon the number of widgets starts to grow.&amp;lt;br&amp;gt;&lt;br /&gt;
You can expand and collaps widgets by clicking the header of each widget.&lt;br /&gt;
[[Image:Widget-code-new-widget.png|thumb|New Widget]]&lt;br /&gt;
&lt;br /&gt;
== Creating a new Widget ==&lt;br /&gt;
&lt;br /&gt;
New Widget features and options&lt;br /&gt;
&lt;br /&gt;
*You can add the main contact details for this widget&lt;br /&gt;
*Select the default language&lt;br /&gt;
*Set your prefered font settings *&lt;br /&gt;
*Change the colour settings *&lt;br /&gt;
*Change the margin settings *&lt;br /&gt;
*z-index&lt;br /&gt;
*Options Require license (when this checkbox is ticked, this widget will consume 1 license of type: Service(innovaphone-widgets) and the widget will be shown without advertisement)&lt;br /&gt;
(* By default, the Widget will use the default website font, colour and margin settings. Change can be needed depending on the website settings)&lt;br /&gt;
[[Image:Widget-new-widget-features.png|thumb|Widget Features]]&lt;br /&gt;
&lt;br /&gt;
== Adding Agent to Widget ==&lt;br /&gt;
You can add and remove Agents to a Widget. Agents can be contacted by external website visitors.&amp;lt;br&amp;gt;&lt;br /&gt;
New agents are added by clicking the [+] button inside the agents container.&lt;br /&gt;
[[File:Adding-new-agents.png|thumb|Adding agents]]&lt;br /&gt;
A dialog opens where you can define the agent. It all starts with the agent&#039;s &#039;SIP-ID&#039;. That&#039;s the dialable PBX user address. You can use the search function to find a PBX user by name.&lt;br /&gt;
&lt;br /&gt;
There are several (optional) attributes you can set for an agent, like &#039;Display name&#039;, &#039;Phone number&#039;, &#039;Email address&#039; and &#039;Picture&#039;. A picture can be placed by drag &amp;amp; drop or can be selected from local disk by clicking the placeholder rectangle.&lt;br /&gt;
&lt;br /&gt;
Finally you can define the ways of communication the agent is available for:&lt;br /&gt;
* Voice-only calls&lt;br /&gt;
* Video calls (including voice)&lt;br /&gt;
* Chat&lt;br /&gt;
* Email&lt;br /&gt;
&lt;br /&gt;
For a Business-Cards-Widget the order of agents could be relevant. You can change the order of agents in the Widgets-App by easy drag &amp;amp; drop using the mouse.&lt;br /&gt;
&lt;br /&gt;
Each widget gets a unique ID (uuid) assigned on its initial creation. This uuid is used to identify the widget when it is integrated into a website.&lt;br /&gt;
&lt;br /&gt;
In case of a sidebar widget, the agent&#039;s card will be displayed by default depending on its status(availability) unless you checked &amp;quot;Always show widget&amp;quot; under the sidebar settings.&lt;br /&gt;
&lt;br /&gt;
In case of a business cards widget, the agent card will always be shown, but its availability is depending on its status.&lt;br /&gt;
&lt;br /&gt;
The following settings are possible:&lt;br /&gt;
* Presence*: Display/availability of the card based on the presence status of the agent. Presence available (green), Presence unavailable, busy (red). Usage: Normal agent based on availability.&lt;br /&gt;
* Always online: Permanent display/availability of the card regardless of its presence or busy status. Usage: Multiple consecutive calls to the same destination, an agent with multiple line configuration, a group or waiting queue.&lt;br /&gt;
* Boolean*: Display of the card depending on the true status of a Boolean object.  Usage: Agent, group or waiting queues based on boolean settings.&lt;br /&gt;
* Inactive: Agent card is permanently in the status unavailable (red). Usage: Showing the agent in a business cards widget, but limit the access to the agent for a longer period. (holiday, sick-leave or other reasons)&lt;br /&gt;
&#039;&#039;&#039;Important!&#039;&#039;&#039;: Presence and boolean status are dependent on the visibility configured on all the monitored objects, eg. agent user objects and monitored boolean objects. The boolean object must have the visibility option &amp;quot;calls&amp;quot; checked before adding the boolean to the widget!&lt;br /&gt;
&lt;br /&gt;
= Integrating Widgets into Website =&lt;br /&gt;
Now it is the website admin&#039;s turn to integrate the widget into the website.&amp;lt;br&amp;gt;&lt;br /&gt;
To do this, click the [Code] button in the Widgets App at that widget you want to include. A popup appears showing a handful of code lines (HTML and Javascript).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Widget-code-popup.png|thumb|Code Popup]]&lt;br /&gt;
You can &#039;&#039;copy&#039;&#039; the code lines into clipboard by clicking the [Copy] button.&amp;lt;br&amp;gt;&lt;br /&gt;
You can &#039;&#039;paste&#039;&#039; the code lines from clipboard into your website code.&amp;lt;br&amp;gt;&lt;br /&gt;
There&#039;s also a [Download] button. When clicking this button a small HTML file is saved on your local computer. This HTML file can be opened in a browser to preview the widget and test the widget&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
== Content-Security-Policy ==&lt;br /&gt;
If the website uses Content-Security-Policy (CSP) it could be necessary to add entries to config sections &#039;default-src&#039; and &#039;img-src&#039;.&lt;br /&gt;
* The Widget opens a secure websocket connection (wss:)&lt;br /&gt;
* The Widget loads images via Data-URL (data:).&lt;br /&gt;
* The Widget uses Mail-Links (mailto:).&lt;br /&gt;
* The Widget uses Tel-Links (tel:).&lt;br /&gt;
  &amp;lt;meta&lt;br /&gt;
    http-equiv=&amp;quot;Content-Security-Policy&amp;quot; content=&amp;quot;&lt;br /&gt;
      default-src &#039;self&#039; &#039;&#039;&#039;wss://*.innovaphone.com&#039;&#039;&#039;; child-src &#039;self&#039; &#039;&#039;&#039;mailto:&#039;&#039;&#039; &#039;&#039;&#039;tel:&#039;&#039;&#039;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
  /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= After Integration =&lt;br /&gt;
Once your widget is live on the website you can still change and update the widget in the Widgets-App. You can update the list of agents or change any other attribute. As soon as you click the widget&#039;s [Save] button any open widget instance in a web browser will update immmediately. No need for the website administrator to update the code.&lt;br /&gt;
&lt;br /&gt;
= Widget-API — Protocol between Website Widget and App Service =&lt;br /&gt;
Basically, this section does not matter. To create and use widgets, knowledge about the protocol is not required.&amp;lt;br&amp;gt;&lt;br /&gt;
All who are interested in technical details are welcome to read on.&lt;br /&gt;
&lt;br /&gt;
== Loading the Widget ==&lt;br /&gt;
&lt;br /&gt;
When a widget is loaded in the browser window of the website visitor, a websocket connection is opened to the app service on the innovaphone Application Platform. Once the websocket connection is established it goes like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;Start&amp;quot;,&amp;quot;uuid&amp;quot;:&amp;quot;fadc5da4cae94bfc9434d9957ea08ccb&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Session&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Visitenkarten&amp;quot;,&amp;quot;lang&amp;quot;:&amp;quot;de&amp;quot;,&amp;quot;strings&amp;quot;:{...}}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Columbia&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:1}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;}&lt;br /&gt;
[7] {&amp;quot;mt&amp;quot;:&amp;quot;IceConfig&amp;quot;,&amp;quot;stun&amp;quot;:&amp;quot;stun.innovaphone.com&amp;quot;,&amp;quot;turn&amp;quot;:&amp;quot;turn.innovaphone.com&amp;quot;}&lt;br /&gt;
[8] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[9] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[10] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[11] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] The &amp;quot;Start&amp;quot; request is sent with the unique id of the widget.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] The app service sends the &amp;quot;Session&amp;quot; response providing the widget&#039;s display-name and other parameters.&amp;lt;br&amp;gt;&lt;br /&gt;
[3]-[6] The app service sends &amp;quot;Info&amp;quot; messages for all configured agents. Each &amp;quot;Info&amp;quot; message triggers a &amp;quot;GetPicture&amp;quot; request to get a picture of the agent.&amp;lt;br&amp;gt;&lt;br /&gt;
[7] The app service sends &amp;quot;IceConfig&amp;quot; providing the STUN and TURN config required for media calls.&amp;lt;br&amp;gt;&lt;br /&gt;
[8]-[9] The app service sends &amp;quot;Picture&amp;quot; messages for all agents.&amp;lt;br&amp;gt;&lt;br /&gt;
[10]-[11] The presence of an agent may change over time. Presence updates are provided with &amp;quot;Info&amp;quot; messages.&lt;br /&gt;
&lt;br /&gt;
== Initiating a call ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;CreateCall&amp;quot;,&amp;quot;dest&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Mein Name&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Channels&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;PROPOSAL&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;alerting&amp;quot;}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;connected&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;SELECT&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;ClearCall&amp;quot;}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;terminated&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;CreatCall&amp;quot; message sets the target of the call (&#039;dest&#039;) and the own display name (&#039;dn&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
[2] &amp;quot;Channels&amp;quot; message provides the media offer for this call. Complete SDP offer is provided.&amp;lt;br&amp;gt;&lt;br /&gt;
[3] &amp;quot;CallInfo&amp;quot; is received giving information about the call&#039;s current state.&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Next &amp;quot;CallInfo&amp;quot; is received telling the call was answered and deliviering the remote side&#039;s media answer.&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Web site user terminates the call.&amp;lt;br&amp;gt;&lt;br /&gt;
[6] The final &amp;quot;CallInfo&amp;quot; message is received.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Known issues and limitations =&lt;br /&gt;
* The widgets are not multi-instance capable. Multiple widgets on one and the same website are not possible. Every subpage on the website can have its own widget.&lt;br /&gt;
* We have seen some cases where an existing web widget from other software did have a negative impact on our widget on the website. Rearranging the widget in the HTML code might help.&lt;br /&gt;
* The number of Agents in a single Sidebar or Business Cards is limited by the length of the sidebar/business card configuration. Just over 100 agents will normally not be a problem. From V15r1sr4 onwards a config check has been built in to prevent too lengthy configurations, so this version is recommended for sidebars and business cards with plenty of agents.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&amp;lt;big&amp;gt;If an issue can be reproduced&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Web visitor in a browser.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The myApps web uses the logging facilities provided by the browser it runs in (i.e. JavaScript function &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt;).  In most browser this is available as &#039;&#039;Console&#039;&#039; after pressing F12.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*The called agent working with myApps client.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[Reference15r1:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Troubleshooting AP Services on the AP.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs]]&lt;br /&gt;
&lt;br /&gt;
Go to the AP Manager and select the App instance from the Contact Widgets App. &lt;br /&gt;
Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|none|AP-Diagnostics]]&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|none|AP-Diagnostics-Logging]]&lt;br /&gt;
= Related Articles =&lt;br /&gt;
[[Howto15r1:Install_Contact_Widget_App|Howto15r1:Install_Contact_Widget_App]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79715</id>
		<title>Reference15r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79715"/>
		<updated>2026-04-29T07:50:24Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Related Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Conference]]&lt;br /&gt;
&lt;br /&gt;
= Applies To =&lt;br /&gt;
* innovaphone PBX from version 14r1&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware Version 14r1&lt;br /&gt;
* One &#039;&#039;&#039;Port License&#039;&#039;&#039; is used by the app service to establish a VoIP registration at the PBX&lt;br /&gt;
* &#039;&#039;&#039;Video License&#039;&#039;&#039; (optional) is required to establish video connections [*]&lt;br /&gt;
* &#039;&#039;&#039;Widget License&#039;&#039;&#039; (optional) is required to remove any &#039;innovaphone&#039; branding from the Widget UI&lt;br /&gt;
&lt;br /&gt;
[*] &#039;&#039;&#039;UC License&#039;&#039;&#039; can also be used since it includes a &#039;&#039;&#039;Video License&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is an element that can be added to a website. It offers to website visitors a way to get in contact with agents (e.g. help-desk). Website visitors can start chat sessions (asking questions, getting answers) or can start voice or even video calls.&lt;br /&gt;
&lt;br /&gt;
An nice example for a &amp;quot;Sidebar Widget&amp;quot; can be viewed [https://www.innovaphone.com/de/ip-telefonie/innovaphone-pbx.html here].&amp;lt;br&amp;gt;&lt;br /&gt;
When you have opened this website the Sidebar Widget comes slowly into view on the right side.&lt;br /&gt;
&lt;br /&gt;
Example of a Business-Cards-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Cardset-widget.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of a Sidebar-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Sidebar-Widget.png]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
[[File:Concept-widgets-overview.png|thumb|Overview]]&lt;br /&gt;
The central part of the new Widgets-Concept is the &#039;&#039;&#039;Contact-Widgets-App&#039;&#039;&#039;.&lt;br /&gt;
The Contact Widgets App is installed on the innovaphone Application Platform and it allows a PBX user to define Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Contact Widgets can be integrated in a Website to offer easy ways to website users to contact &#039;&#039;&#039;Agents&#039;&#039;&#039;. Agents are PBX users meant to communicate with external clients.&amp;lt;br&amp;gt;&lt;br /&gt;
There are 2 fundamental types of Contact Widgets:&lt;br /&gt;
* &#039;&#039;&#039;Sidebar Widgets&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Business Cards Widgets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Sidebar Widget appears one side of the website trying to take as less space as possible. The website visitor can expand the Sidebar Widget if interested.&amp;lt;br&amp;gt;&lt;br /&gt;
A Business Cards Widget appears as integrated part of the website content, offering one (or more) contacts in form of ordinary business cards.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
For non experienced technicians have a look at [[Howto14r1:Install_Contact_Widget_App#Installation]] and follow the installation steps mentioned in the how-to article.&lt;br /&gt;
&lt;br /&gt;
Others:&lt;br /&gt;
* Download the &#039;Contact Widgets App&#039; via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Widgets App on the Manager. We recommend to use no capital letters and no special characters (also not such as space).&lt;br /&gt;
* Create a new PBX Object with the PBX Manager Plugin. (*)&lt;br /&gt;
* Assign App to authorized (admin) users, which will be allowed to create/change/delete Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Experts:&lt;br /&gt;
(*) You can also create the PBX Object manually:&amp;lt;br&amp;gt;&lt;br /&gt;
* Create a new object of type &amp;quot;App&amp;quot;.&lt;br /&gt;
* Give it a &amp;quot;Long Name&amp;quot; (&amp;quot;Contact Widgets&amp;quot;) and a Name (&amp;quot;widgets&amp;quot;) same as the instance-name.&lt;br /&gt;
* Give it a password, same as the instance password.&lt;br /&gt;
* On the &amp;quot;App&amp;quot; tab configure URL to App Service on App Platform (&amp;quot;http://&amp;lt;ipaddress-or-dnsname&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-widgets&amp;quot;).&lt;br /&gt;
* Activate option &amp;quot;Websocket&amp;quot;&lt;br /&gt;
* Grant access to APIs: &amp;quot;PbxSignal&amp;quot; (mandatory), &amp;quot;Admin&amp;quot; (optional) and &amp;quot;PbxApi&amp;quot; (mandatory)&lt;br /&gt;
&lt;br /&gt;
You have set the &amp;quot;Advanced Chat App&amp;quot; in &amp;quot;PBX/Config/General&amp;quot; to &amp;quot;old-chat-app&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Using the Contact Widgets App =&lt;br /&gt;
Click on one of the buttons (depending on what type of widget you want to create):&lt;br /&gt;
* [+ Add new sidebar widget]&lt;br /&gt;
* [+ Add new business cards widget]&lt;br /&gt;
A new (empty) widget is displayed. You can give the widget a name by clicking the pen-symbol. The widget name helps to identify widgets as soon the number of widgets starts to grow.&amp;lt;br&amp;gt;&lt;br /&gt;
You can expand and collaps widgets by clicking the header of each widget.&lt;br /&gt;
[[Image:Widget-code-new-widget.png|thumb|New Widget]]&lt;br /&gt;
&lt;br /&gt;
== Creating a new Widget ==&lt;br /&gt;
&lt;br /&gt;
New Widget features and options&lt;br /&gt;
&lt;br /&gt;
*You can add the main contact details for this widget&lt;br /&gt;
*Select the default language&lt;br /&gt;
*Set your prefered font settings *&lt;br /&gt;
*Change the colour settings *&lt;br /&gt;
*Change the margin settings *&lt;br /&gt;
*z-index&lt;br /&gt;
*Options Require license (when this checkbox is ticked, this widget will consume 1 license of type: Service(innovaphone-widgets) and the widget will be shown without advertisement)&lt;br /&gt;
(* By default, the Widget will use the default website font, colour and margin settings. Change can be needed depending on the website settings)&lt;br /&gt;
[[Image:Widget-new-widget-features.png|thumb|Widget Features]]&lt;br /&gt;
&lt;br /&gt;
== Adding Agent to Widget ==&lt;br /&gt;
You can add and remove Agents to a Widget. Agents can be contacted by external website visitors.&amp;lt;br&amp;gt;&lt;br /&gt;
New agents are added by clicking the [+] button inside the agents container.&lt;br /&gt;
[[File:Adding-new-agents.png|thumb|Adding agents]]&lt;br /&gt;
A dialog opens where you can define the agent. It all starts with the agent&#039;s &#039;SIP-ID&#039;. That&#039;s the dialable PBX user address. You can use the search function to find a PBX user by name.&lt;br /&gt;
&lt;br /&gt;
There are several (optional) attributes you can set for an agent, like &#039;Display name&#039;, &#039;Phone number&#039;, &#039;Email address&#039; and &#039;Picture&#039;. A picture can be placed by drag &amp;amp; drop or can be selected from local disk by clicking the placeholder rectangle.&lt;br /&gt;
&lt;br /&gt;
Finally you can define the ways of communication the agent is available for:&lt;br /&gt;
* Voice-only calls&lt;br /&gt;
* Video calls (including voice)&lt;br /&gt;
* Chat&lt;br /&gt;
* Email&lt;br /&gt;
&lt;br /&gt;
For a Business-Cards-Widget the order of agents could be relevant. You can change the order of agents in the Widgets-App by easy drag &amp;amp; drop using the mouse.&lt;br /&gt;
&lt;br /&gt;
Each widget gets a unique ID (uuid) assigned on its initial creation. This uuid is used to identify the widget when it is integrated into a website.&lt;br /&gt;
&lt;br /&gt;
In case of a sidebar widget, the agent&#039;s card will be displayed by default depending on its status(availability) unless you checked &amp;quot;Always show widget&amp;quot; under the sidebar settings.&lt;br /&gt;
&lt;br /&gt;
In case of a business cards widget, the agent card will always be shown, but its availability is depending on its status.&lt;br /&gt;
&lt;br /&gt;
The following settings are possible:&lt;br /&gt;
* Presence*: Display/availability of the card based on the presence status of the agent. Presence available (green), Presence unavailable, busy (red). Usage: Normal agent based on availability.&lt;br /&gt;
* Always online: Permanent display/availability of the card regardless of its presence or busy status. Usage: Multiple consecutive calls to the same destination, an agent with multiple line configuration, a group or waiting queue.&lt;br /&gt;
* Boolean*: Display of the card depending on the true status of a Boolean object.  Usage: Agent, group or waiting queues based on boolean settings.&lt;br /&gt;
* Inactive: Agent card is permanently in the status unavailable (red). Usage: Showing the agent in a business cards widget, but limit the access to the agent for a longer period. (holiday, sick-leave or other reasons)&lt;br /&gt;
&#039;&#039;&#039;Important!&#039;&#039;&#039;: Presence and boolean status are dependent on the visibility configured on all the monitored objects, eg. agent user objects and monitored boolean objects. The boolean object must have the visibility option &amp;quot;calls&amp;quot; checked before adding the boolean to the widget!&lt;br /&gt;
&lt;br /&gt;
= Integrating Widgets into Website =&lt;br /&gt;
Now it is the website admin&#039;s turn to integrate the widget into the website.&amp;lt;br&amp;gt;&lt;br /&gt;
To do this, click the [Code] button in the Widgets App at that widget you want to include. A popup appears showing a handful of code lines (HTML and Javascript).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Widget-code-popup.png|thumb|Code Popup]]&lt;br /&gt;
You can &#039;&#039;copy&#039;&#039; the code lines into clipboard by clicking the [Copy] button.&amp;lt;br&amp;gt;&lt;br /&gt;
You can &#039;&#039;paste&#039;&#039; the code lines from clipboard into your website code.&amp;lt;br&amp;gt;&lt;br /&gt;
There&#039;s also a [Download] button. When clicking this button a small HTML file is saved on your local computer. This HTML file can be opened in a browser to preview the widget and test the widget&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
== Content-Security-Policy ==&lt;br /&gt;
If the website uses Content-Security-Policy (CSP) it could be necessary to add entries to config sections &#039;default-src&#039; and &#039;img-src&#039;.&lt;br /&gt;
* The Widget opens a secure websocket connection (wss:)&lt;br /&gt;
* The Widget loads images via Data-URL (data:).&lt;br /&gt;
* The Widget uses Mail-Links (mailto:).&lt;br /&gt;
* The Widget uses Tel-Links (tel:).&lt;br /&gt;
  &amp;lt;meta&lt;br /&gt;
    http-equiv=&amp;quot;Content-Security-Policy&amp;quot; content=&amp;quot;&lt;br /&gt;
      default-src &#039;self&#039; &#039;&#039;&#039;wss://*.innovaphone.com&#039;&#039;&#039;; child-src &#039;self&#039; &#039;&#039;&#039;mailto:&#039;&#039;&#039; &#039;&#039;&#039;tel:&#039;&#039;&#039;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
  /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= After Integration =&lt;br /&gt;
Once your widget is live on the website you can still change and update the widget in the Widgets-App. You can update the list of agents or change any other attribute. As soon as you click the widget&#039;s [Save] button any open widget instance in a web browser will update immmediately. No need for the website administrator to update the code.&lt;br /&gt;
&lt;br /&gt;
= Widget-API — Protocol between Website Widget and App Service =&lt;br /&gt;
Basically, this section does not matter. To create and use widgets, knowledge about the protocol is not required.&amp;lt;br&amp;gt;&lt;br /&gt;
All who are interested in technical details are welcome to read on.&lt;br /&gt;
&lt;br /&gt;
== Loading the Widget ==&lt;br /&gt;
&lt;br /&gt;
When a widget is loaded in the browser window of the website visitor, a websocket connection is opened to the app service on the innovaphone Application Platform. Once the websocket connection is established it goes like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;Start&amp;quot;,&amp;quot;uuid&amp;quot;:&amp;quot;fadc5da4cae94bfc9434d9957ea08ccb&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Session&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Visitenkarten&amp;quot;,&amp;quot;lang&amp;quot;:&amp;quot;de&amp;quot;,&amp;quot;strings&amp;quot;:{...}}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Columbia&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:1}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;}&lt;br /&gt;
[7] {&amp;quot;mt&amp;quot;:&amp;quot;IceConfig&amp;quot;,&amp;quot;stun&amp;quot;:&amp;quot;stun.innovaphone.com&amp;quot;,&amp;quot;turn&amp;quot;:&amp;quot;turn.innovaphone.com&amp;quot;}&lt;br /&gt;
[8] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[9] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[10] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[11] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] The &amp;quot;Start&amp;quot; request is sent with the unique id of the widget.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] The app service sends the &amp;quot;Session&amp;quot; response providing the widget&#039;s display-name and other parameters.&amp;lt;br&amp;gt;&lt;br /&gt;
[3]-[6] The app service sends &amp;quot;Info&amp;quot; messages for all configured agents. Each &amp;quot;Info&amp;quot; message triggers a &amp;quot;GetPicture&amp;quot; request to get a picture of the agent.&amp;lt;br&amp;gt;&lt;br /&gt;
[7] The app service sends &amp;quot;IceConfig&amp;quot; providing the STUN and TURN config required for media calls.&amp;lt;br&amp;gt;&lt;br /&gt;
[8]-[9] The app service sends &amp;quot;Picture&amp;quot; messages for all agents.&amp;lt;br&amp;gt;&lt;br /&gt;
[10]-[11] The presence of an agent may change over time. Presence updates are provided with &amp;quot;Info&amp;quot; messages.&lt;br /&gt;
&lt;br /&gt;
== Initiating a call ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;CreateCall&amp;quot;,&amp;quot;dest&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Mein Name&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Channels&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;PROPOSAL&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;alerting&amp;quot;}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;connected&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;SELECT&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;ClearCall&amp;quot;}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;terminated&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;CreatCall&amp;quot; message sets the target of the call (&#039;dest&#039;) and the own display name (&#039;dn&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
[2] &amp;quot;Channels&amp;quot; message provides the media offer for this call. Complete SDP offer is provided.&amp;lt;br&amp;gt;&lt;br /&gt;
[3] &amp;quot;CallInfo&amp;quot; is received giving information about the call&#039;s current state.&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Next &amp;quot;CallInfo&amp;quot; is received telling the call was answered and deliviering the remote side&#039;s media answer.&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Web site user terminates the call.&amp;lt;br&amp;gt;&lt;br /&gt;
[6] The final &amp;quot;CallInfo&amp;quot; message is received.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Known issues and limitations =&lt;br /&gt;
* The widgets are not multi-instance capable. Multiple widgets on one and the same website are not possible. Every subpage on the website can have its own widget.&lt;br /&gt;
* We have seen some cases where an existing web widget from other software did have a negative impact on our widget on the website. Rearranging the widget in the HTML code might help.&lt;br /&gt;
* The number of Agents in a single Sidebar or Business Cards is limited by the length of the sidebar/business card configuration. Just over 100 agents will normally not be a problem. From V15r1sr4 onwards a config check has been built in to prevent too lengthy configurations, so this version is recommended for sidebars and business cards with plenty of agents.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&amp;lt;big&amp;gt;If an issue can be reproduced&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Web visitor in a browser.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The myApps web uses the logging facilities provided by the browser it runs in (i.e. JavaScript function &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt;).  In most browser this is available as &#039;&#039;Console&#039;&#039; after pressing F12.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*The called agent working with myApps client.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[Reference14r1:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Troubleshooting AP Services on the AP.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs]]&lt;br /&gt;
&lt;br /&gt;
Go to the AP Manager and select the App instance from the Contact Widgets App. &lt;br /&gt;
Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|none|AP-Diagnostics]]&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|none|AP-Diagnostics-Logging]]&lt;br /&gt;
= Related Articles =&lt;br /&gt;
[[Howto15r1:Install_Contact_Widget_App|Howto14r1:Install_Contact_Widget_App]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Install_Contact_Widget_App&amp;diff=79714</id>
		<title>Howto15r1:Install Contact Widget App</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Install_Contact_Widget_App&amp;diff=79714"/>
		<updated>2026-04-29T07:46:21Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: connect, install, set up, --&amp;gt;&lt;br /&gt;
This article explains all the necessary steps to install the Contact Widget App and to configure a sidebar widget.&lt;br /&gt;
&lt;br /&gt;
== General Consideration ==&lt;br /&gt;
The Contact Widgets App is new in firmware V14r1.&lt;br /&gt;
Also new in V14r1 is the “AP app installer” plugin in the PBX manager.&lt;br /&gt;
This guide is written for a 14r1 PBX and a 14r1 AP(App Platform) and the use of the app installer plugin. Installation is also possible from the AP itself, but is not covered in this wiki.&lt;br /&gt;
For all older versions, please upgrade first to V14r1 latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the AP app installer plugin. In the right pane, the App Store will be shown.&lt;br /&gt;
* Choose All Apps&lt;br /&gt;
* Click in innovaphone AG &lt;br /&gt;
* Scroll down to the Contact Widgets App and click on it&lt;br /&gt;
* Select the proper firmware version&lt;br /&gt;
* Click on Install and accept the terms of use and continue with a click op install&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Refresh the view of the PBX manager to show the new installed AP widgets &#039;&#039;(Hint: close and open the PBX manager)&#039;&#039;&lt;br /&gt;
* Click on the AP widget and click Add an App&lt;br /&gt;
* Enter the name of the Widget Object e.g. Widget and the SIP widget and enter the PBX name&lt;br /&gt;
* Tick in Licenses Video if you want to enable Video calls in the Widgets &#039;&#039;(Hint: A port license will also be consumed by the PBX app object used by the Contact Widget App)&#039;&#039;&lt;br /&gt;
* You can enter the maximum amount of acquired Widget Licenses that this Object is allowed to consume. This License enables and advertisement free version of the widgets&lt;br /&gt;
* Tick the appropriate template for the User(s) that will use the Contact Widget App&lt;br /&gt;
[[image:WidgetObjectAdd.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click OK to save the settings and a green checkmark will be shown&lt;br /&gt;
[[image:WidgetObjectAddOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
You have set the &amp;quot;Advanced Chat App&amp;quot; in &amp;quot;PBX/Config/General&amp;quot; to &amp;quot;old-chat-app&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Add the Contact Widget App to your myApps homescreen ==&lt;br /&gt;
&lt;br /&gt;
* Add the Contact Widget App to your myApps homescreen, by clicking on the All Apps icon at the right bottom, search for the Contact Widget App and click on the home symbol of the Contact Widget App.&lt;br /&gt;
[[image:ContactWidgetAppHome.PNG]]&lt;br /&gt;
&lt;br /&gt;
* On your myApps homescreen open the Contact Widget App.&lt;br /&gt;
[[image:WidgetApp.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure a sidebar widget ==&lt;br /&gt;
In the Contact Widget App you have the option to add a widget from the type Sidebar and/or Cardset. In this wiki section, we will only show how to add the widget of type sidebar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:CWopenNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Choose your preferred Website widget and add by clicking on the button  “create new sidebar”&lt;br /&gt;
&lt;br /&gt;
A new Sidebar widget has been created with the default name “New Sidebar Widget” &lt;br /&gt;
[[image:NewSideBarWidget.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the pencil icon next to the name to change the name to an appropriate name.&lt;br /&gt;
* In the notes field, you can add some additional notes. It might make sense to add the URL of the website where this widget will be used.&lt;br /&gt;
[[image:SalesSideBarNotes.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure the general widget settings ==&lt;br /&gt;
* Configure the other settings in the section, Appearance (Position, Color, etc.)&lt;br /&gt;
* Configure a standard location address&lt;br /&gt;
* Click on the ? symbol for tooltips and consult the [https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets Concept_Contact_Widgets] for further details and options.&lt;br /&gt;
&lt;br /&gt;
Once all desired fields are filled out, don’t forget to click on the SAVE button in the top right.&lt;br /&gt;
&lt;br /&gt;
Every change/edit will show an orange rectangle around the save button. &lt;br /&gt;
The change(s) needs to be saved and will be immediately visible once the widget code is implemented on your website&lt;br /&gt;
[[image:SidebarSettingOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add agents to the widget ==&lt;br /&gt;
Next step is to add one or more agents to the widget to handle the incoming calls and to be shown in the widget on your website.&lt;br /&gt;
* Click on the “Agents” button to the right from settings.&lt;br /&gt;
[[image:SidebarAgents.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the “+ Add Agent” button&lt;br /&gt;
* Add the Agent&#039;s SIP-ID or click on the search icon to find and add an agent. Enter additional address and information if this differs from the settings field.&lt;br /&gt;
* Select how the agent can be contacted, Voice, Video, Chat and optional a link to a website with opening hours or calendar website etc.&lt;br /&gt;
* Select the type of status how the agents&#039; availability should be shown.&lt;br /&gt;
[[image:SidebarAgentsNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
Once all the details are filled out, &lt;br /&gt;
* click save again&lt;br /&gt;
[[image:SidebarAgentsOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can add multiple Agents to the Widget as you like.&lt;br /&gt;
&lt;br /&gt;
==Copy source code to website ==&lt;br /&gt;
Next step, you can copy the website widget code from this widget and implement it on your website. &lt;br /&gt;
* Click on the “Code” button. &lt;br /&gt;
[[image:CodeButton.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Download or copy the code from the pop-up window.&lt;br /&gt;
[[image:CodeFile.PNG]]&lt;br /&gt;
&lt;br /&gt;
For test purpose, you can save the code as HTML file on your local PC and open it.&lt;br /&gt;
&lt;br /&gt;
A blank website including the widget will be shown and can be tested.&lt;br /&gt;
&lt;br /&gt;
[[image:SidebarWidget.PNG]]   [https://00094-apps.innovaphone.com/benelux.innovaphone.com/files/UI/Web/Sales_Sidebar_Widget.html&amp;amp;fileskey=T7N!7kRnXgirz_!t Widget-example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Integrate this code on your website, and you are ready to go and use the widget on your website.&lt;br /&gt;
&lt;br /&gt;
==Known Issues ==&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets Concept_Contact_Widgets]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)&amp;amp;mobileaction=toggle_view_mobile Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Install_Contact_Widget_App&amp;diff=79713</id>
		<title>Howto16r1:Install Contact Widget App</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Install_Contact_Widget_App&amp;diff=79713"/>
		<updated>2026-04-29T07:45:44Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;&amp;lt;!-- Keywords: connect, install, set up, --&amp;gt; This article explains all the necessary steps to install the Contact Widget App and to configure a sidebar widget.  == General Consideration == The Contact Widgets App is new in firmware V14r1. Also new in V14r1 is the “AP app installer” plugin in the PBX manager. This guide is written for a 14r1 PBX and a 14r1 AP(App Platform) and the use of the app installer plugin. Installation is also possible from the AP itself, but i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: connect, install, set up, --&amp;gt;&lt;br /&gt;
This article explains all the necessary steps to install the Contact Widget App and to configure a sidebar widget.&lt;br /&gt;
&lt;br /&gt;
== General Consideration ==&lt;br /&gt;
The Contact Widgets App is new in firmware V14r1.&lt;br /&gt;
Also new in V14r1 is the “AP app installer” plugin in the PBX manager.&lt;br /&gt;
This guide is written for a 14r1 PBX and a 14r1 AP(App Platform) and the use of the app installer plugin. Installation is also possible from the AP itself, but is not covered in this wiki.&lt;br /&gt;
For all older versions, please upgrade first to V14r1 latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the AP app installer plugin. In the right pane, the App Store will be shown.&lt;br /&gt;
* Choose All Apps&lt;br /&gt;
* Click in innovaphone AG &lt;br /&gt;
* Scroll down to the Contact Widgets App and click on it&lt;br /&gt;
* Select the proper firmware version&lt;br /&gt;
* Click on Install and accept the terms of use and continue with a click op install&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Refresh the view of the PBX manager to show the new installed AP widgets &#039;&#039;(Hint: close and open the PBX manager)&#039;&#039;&lt;br /&gt;
* Click on the AP widget and click Add an App&lt;br /&gt;
* Enter the name of the Widget Object e.g. Widget and the SIP widget and enter the PBX name&lt;br /&gt;
* Tick in Licenses Video if you want to enable Video calls in the Widgets &#039;&#039;(Hint: A port license will also be consumed by the PBX app object used by the Contact Widget App)&#039;&#039;&lt;br /&gt;
* You can enter the maximum amount of acquired Widget Licenses that this Object is allowed to consume. This License enables and advertisement free version of the widgets&lt;br /&gt;
* Tick the appropriate template for the User(s) that will use the Contact Widget App&lt;br /&gt;
[[image:WidgetObjectAdd.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click OK to save the settings and a green checkmark will be shown&lt;br /&gt;
[[image:WidgetObjectAddOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add the Contact Widget App to your myApps homescreen ==&lt;br /&gt;
&lt;br /&gt;
* Add the Contact Widget App to your myApps homescreen, by clicking on the All Apps icon at the right bottom, search for the Contact Widget App and click on the home symbol of the Contact Widget App.&lt;br /&gt;
[[image:ContactWidgetAppHome.PNG]]&lt;br /&gt;
&lt;br /&gt;
* On your myApps homescreen open the Contact Widget App.&lt;br /&gt;
[[image:WidgetApp.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure a sidebar widget ==&lt;br /&gt;
In the Contact Widget App you have the option to add a widget from the type Sidebar and/or Cardset. In this wiki section, we will only show how to add the widget of type sidebar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:CWopenNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Choose your preferred Website widget and add by clicking on the button  “create new sidebar”&lt;br /&gt;
&lt;br /&gt;
A new Sidebar widget has been created with the default name “New Sidebar Widget” &lt;br /&gt;
[[image:NewSideBarWidget.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the pencil icon next to the name to change the name to an appropriate name.&lt;br /&gt;
* In the notes field, you can add some additional notes. It might make sense to add the URL of the website where this widget will be used.&lt;br /&gt;
[[image:SalesSideBarNotes.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure the general widget settings ==&lt;br /&gt;
* Configure the other settings in the section, Appearance (Position, Color, etc.)&lt;br /&gt;
* Configure a standard location address&lt;br /&gt;
* Click on the ? symbol for tooltips and consult the [https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets Concept_Contact_Widgets] for further details and options.&lt;br /&gt;
&lt;br /&gt;
Once all desired fields are filled out, don’t forget to click on the SAVE button in the top right.&lt;br /&gt;
&lt;br /&gt;
Every change/edit will show an orange rectangle around the save button. &lt;br /&gt;
The change(s) needs to be saved and will be immediately visible once the widget code is implemented on your website&lt;br /&gt;
[[image:SidebarSettingOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add agents to the widget ==&lt;br /&gt;
Next step is to add one or more agents to the widget to handle the incoming calls and to be shown in the widget on your website.&lt;br /&gt;
* Click on the “Agents” button to the right from settings.&lt;br /&gt;
[[image:SidebarAgents.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the “+ Add Agent” button&lt;br /&gt;
* Add the Agent&#039;s SIP-ID or click on the search icon to find and add an agent. Enter additional address and information if this differs from the settings field.&lt;br /&gt;
* Select how the agent can be contacted, Voice, Video, Chat and optional a link to a website with opening hours or calendar website etc.&lt;br /&gt;
* Select the type of status how the agents&#039; availability should be shown.&lt;br /&gt;
[[image:SidebarAgentsNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
Once all the details are filled out, &lt;br /&gt;
* click save again&lt;br /&gt;
[[image:SidebarAgentsOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can add multiple Agents to the Widget as you like.&lt;br /&gt;
&lt;br /&gt;
==Copy source code to website ==&lt;br /&gt;
Next step, you can copy the website widget code from this widget and implement it on your website. &lt;br /&gt;
* Click on the “Code” button. &lt;br /&gt;
[[image:CodeButton.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Download or copy the code from the pop-up window.&lt;br /&gt;
[[image:CodeFile.PNG]]&lt;br /&gt;
&lt;br /&gt;
For test purpose, you can save the code as HTML file on your local PC and open it.&lt;br /&gt;
&lt;br /&gt;
A blank website including the widget will be shown and can be tested.&lt;br /&gt;
&lt;br /&gt;
[[image:SidebarWidget.PNG]]   [https://00094-apps.innovaphone.com/benelux.innovaphone.com/files/UI/Web/Sales_Sidebar_Widget.html&amp;amp;fileskey=T7N!7kRnXgirz_!t Widget-example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Integrate this code on your website, and you are ready to go and use the widget on your website.&lt;br /&gt;
&lt;br /&gt;
==Known Issues ==&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets Concept_Contact_Widgets]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)&amp;amp;mobileaction=toggle_view_mobile Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Install_Contact_Widget_App&amp;diff=79712</id>
		<title>Howto15r1:Install Contact Widget App</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Install_Contact_Widget_App&amp;diff=79712"/>
		<updated>2026-04-29T07:45:30Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;&amp;lt;!-- Keywords: connect, install, set up, --&amp;gt; This article explains all the necessary steps to install the Contact Widget App and to configure a sidebar widget.  == General Consideration == The Contact Widgets App is new in firmware V14r1. Also new in V14r1 is the “AP app installer” plugin in the PBX manager. This guide is written for a 14r1 PBX and a 14r1 AP(App Platform) and the use of the app installer plugin. Installation is also possible from the AP itself, but i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: connect, install, set up, --&amp;gt;&lt;br /&gt;
This article explains all the necessary steps to install the Contact Widget App and to configure a sidebar widget.&lt;br /&gt;
&lt;br /&gt;
== General Consideration ==&lt;br /&gt;
The Contact Widgets App is new in firmware V14r1.&lt;br /&gt;
Also new in V14r1 is the “AP app installer” plugin in the PBX manager.&lt;br /&gt;
This guide is written for a 14r1 PBX and a 14r1 AP(App Platform) and the use of the app installer plugin. Installation is also possible from the AP itself, but is not covered in this wiki.&lt;br /&gt;
For all older versions, please upgrade first to V14r1 latest firmware.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Go to the PBX manager and open the AP app installer plugin. In the right pane, the App Store will be shown.&lt;br /&gt;
* Choose All Apps&lt;br /&gt;
* Click in innovaphone AG &lt;br /&gt;
* Scroll down to the Contact Widgets App and click on it&lt;br /&gt;
* Select the proper firmware version&lt;br /&gt;
* Click on Install and accept the terms of use and continue with a click op install&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Refresh the view of the PBX manager to show the new installed AP widgets &#039;&#039;(Hint: close and open the PBX manager)&#039;&#039;&lt;br /&gt;
* Click on the AP widget and click Add an App&lt;br /&gt;
* Enter the name of the Widget Object e.g. Widget and the SIP widget and enter the PBX name&lt;br /&gt;
* Tick in Licenses Video if you want to enable Video calls in the Widgets &#039;&#039;(Hint: A port license will also be consumed by the PBX app object used by the Contact Widget App)&#039;&#039;&lt;br /&gt;
* You can enter the maximum amount of acquired Widget Licenses that this Object is allowed to consume. This License enables and advertisement free version of the widgets&lt;br /&gt;
* Tick the appropriate template for the User(s) that will use the Contact Widget App&lt;br /&gt;
[[image:WidgetObjectAdd.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click OK to save the settings and a green checkmark will be shown&lt;br /&gt;
[[image:WidgetObjectAddOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add the Contact Widget App to your myApps homescreen ==&lt;br /&gt;
&lt;br /&gt;
* Add the Contact Widget App to your myApps homescreen, by clicking on the All Apps icon at the right bottom, search for the Contact Widget App and click on the home symbol of the Contact Widget App.&lt;br /&gt;
[[image:ContactWidgetAppHome.PNG]]&lt;br /&gt;
&lt;br /&gt;
* On your myApps homescreen open the Contact Widget App.&lt;br /&gt;
[[image:WidgetApp.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure a sidebar widget ==&lt;br /&gt;
In the Contact Widget App you have the option to add a widget from the type Sidebar and/or Cardset. In this wiki section, we will only show how to add the widget of type sidebar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:CWopenNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Choose your preferred Website widget and add by clicking on the button  “create new sidebar”&lt;br /&gt;
&lt;br /&gt;
A new Sidebar widget has been created with the default name “New Sidebar Widget” &lt;br /&gt;
[[image:NewSideBarWidget.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the pencil icon next to the name to change the name to an appropriate name.&lt;br /&gt;
* In the notes field, you can add some additional notes. It might make sense to add the URL of the website where this widget will be used.&lt;br /&gt;
[[image:SalesSideBarNotes.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Configure the general widget settings ==&lt;br /&gt;
* Configure the other settings in the section, Appearance (Position, Color, etc.)&lt;br /&gt;
* Configure a standard location address&lt;br /&gt;
* Click on the ? symbol for tooltips and consult the [https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets Concept_Contact_Widgets] for further details and options.&lt;br /&gt;
&lt;br /&gt;
Once all desired fields are filled out, don’t forget to click on the SAVE button in the top right.&lt;br /&gt;
&lt;br /&gt;
Every change/edit will show an orange rectangle around the save button. &lt;br /&gt;
The change(s) needs to be saved and will be immediately visible once the widget code is implemented on your website&lt;br /&gt;
[[image:SidebarSettingOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Add agents to the widget ==&lt;br /&gt;
Next step is to add one or more agents to the widget to handle the incoming calls and to be shown in the widget on your website.&lt;br /&gt;
* Click on the “Agents” button to the right from settings.&lt;br /&gt;
[[image:SidebarAgents.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Click on the “+ Add Agent” button&lt;br /&gt;
* Add the Agent&#039;s SIP-ID or click on the search icon to find and add an agent. Enter additional address and information if this differs from the settings field.&lt;br /&gt;
* Select how the agent can be contacted, Voice, Video, Chat and optional a link to a website with opening hours or calendar website etc.&lt;br /&gt;
* Select the type of status how the agents&#039; availability should be shown.&lt;br /&gt;
[[image:SidebarAgentsNEW.PNG]]&lt;br /&gt;
&lt;br /&gt;
Once all the details are filled out, &lt;br /&gt;
* click save again&lt;br /&gt;
[[image:SidebarAgentsOK.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can add multiple Agents to the Widget as you like.&lt;br /&gt;
&lt;br /&gt;
==Copy source code to website ==&lt;br /&gt;
Next step, you can copy the website widget code from this widget and implement it on your website. &lt;br /&gt;
* Click on the “Code” button. &lt;br /&gt;
[[image:CodeButton.PNG]]&lt;br /&gt;
&lt;br /&gt;
* Download or copy the code from the pop-up window.&lt;br /&gt;
[[image:CodeFile.PNG]]&lt;br /&gt;
&lt;br /&gt;
For test purpose, you can save the code as HTML file on your local PC and open it.&lt;br /&gt;
&lt;br /&gt;
A blank website including the widget will be shown and can be tested.&lt;br /&gt;
&lt;br /&gt;
[[image:SidebarWidget.PNG]]   [https://00094-apps.innovaphone.com/benelux.innovaphone.com/files/UI/Web/Sales_Sidebar_Widget.html&amp;amp;fileskey=T7N!7kRnXgirz_!t Widget-example]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Integrate this code on your website, and you are ready to go and use the widget on your website.&lt;br /&gt;
&lt;br /&gt;
==Known Issues ==&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets Concept_Contact_Widgets]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title=Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)&amp;amp;mobileaction=toggle_view_mobile Howto:Install_the_innovaphone_Call-Me-Button_Widgets_(en)]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79711</id>
		<title>Reference15r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79711"/>
		<updated>2026-04-29T07:44:57Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Conference]]&lt;br /&gt;
&lt;br /&gt;
= Applies To =&lt;br /&gt;
* innovaphone PBX from version 14r1&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware Version 14r1&lt;br /&gt;
* One &#039;&#039;&#039;Port License&#039;&#039;&#039; is used by the app service to establish a VoIP registration at the PBX&lt;br /&gt;
* &#039;&#039;&#039;Video License&#039;&#039;&#039; (optional) is required to establish video connections [*]&lt;br /&gt;
* &#039;&#039;&#039;Widget License&#039;&#039;&#039; (optional) is required to remove any &#039;innovaphone&#039; branding from the Widget UI&lt;br /&gt;
&lt;br /&gt;
[*] &#039;&#039;&#039;UC License&#039;&#039;&#039; can also be used since it includes a &#039;&#039;&#039;Video License&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is an element that can be added to a website. It offers to website visitors a way to get in contact with agents (e.g. help-desk). Website visitors can start chat sessions (asking questions, getting answers) or can start voice or even video calls.&lt;br /&gt;
&lt;br /&gt;
An nice example for a &amp;quot;Sidebar Widget&amp;quot; can be viewed [https://www.innovaphone.com/de/ip-telefonie/innovaphone-pbx.html here].&amp;lt;br&amp;gt;&lt;br /&gt;
When you have opened this website the Sidebar Widget comes slowly into view on the right side.&lt;br /&gt;
&lt;br /&gt;
Example of a Business-Cards-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Cardset-widget.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of a Sidebar-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Sidebar-Widget.png]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
[[File:Concept-widgets-overview.png|thumb|Overview]]&lt;br /&gt;
The central part of the new Widgets-Concept is the &#039;&#039;&#039;Contact-Widgets-App&#039;&#039;&#039;.&lt;br /&gt;
The Contact Widgets App is installed on the innovaphone Application Platform and it allows a PBX user to define Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Contact Widgets can be integrated in a Website to offer easy ways to website users to contact &#039;&#039;&#039;Agents&#039;&#039;&#039;. Agents are PBX users meant to communicate with external clients.&amp;lt;br&amp;gt;&lt;br /&gt;
There are 2 fundamental types of Contact Widgets:&lt;br /&gt;
* &#039;&#039;&#039;Sidebar Widgets&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Business Cards Widgets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Sidebar Widget appears one side of the website trying to take as less space as possible. The website visitor can expand the Sidebar Widget if interested.&amp;lt;br&amp;gt;&lt;br /&gt;
A Business Cards Widget appears as integrated part of the website content, offering one (or more) contacts in form of ordinary business cards.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
For non experienced technicians have a look at [[Howto14r1:Install_Contact_Widget_App#Installation]] and follow the installation steps mentioned in the how-to article.&lt;br /&gt;
&lt;br /&gt;
Others:&lt;br /&gt;
* Download the &#039;Contact Widgets App&#039; via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Widgets App on the Manager. We recommend to use no capital letters and no special characters (also not such as space).&lt;br /&gt;
* Create a new PBX Object with the PBX Manager Plugin. (*)&lt;br /&gt;
* Assign App to authorized (admin) users, which will be allowed to create/change/delete Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Experts:&lt;br /&gt;
(*) You can also create the PBX Object manually:&amp;lt;br&amp;gt;&lt;br /&gt;
* Create a new object of type &amp;quot;App&amp;quot;.&lt;br /&gt;
* Give it a &amp;quot;Long Name&amp;quot; (&amp;quot;Contact Widgets&amp;quot;) and a Name (&amp;quot;widgets&amp;quot;) same as the instance-name.&lt;br /&gt;
* Give it a password, same as the instance password.&lt;br /&gt;
* On the &amp;quot;App&amp;quot; tab configure URL to App Service on App Platform (&amp;quot;http://&amp;lt;ipaddress-or-dnsname&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-widgets&amp;quot;).&lt;br /&gt;
* Activate option &amp;quot;Websocket&amp;quot;&lt;br /&gt;
* Grant access to APIs: &amp;quot;PbxSignal&amp;quot; (mandatory), &amp;quot;Admin&amp;quot; (optional) and &amp;quot;PbxApi&amp;quot; (mandatory)&lt;br /&gt;
&lt;br /&gt;
You have set the &amp;quot;Advanced Chat App&amp;quot; in &amp;quot;PBX/Config/General&amp;quot; to &amp;quot;old-chat-app&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Using the Contact Widgets App =&lt;br /&gt;
Click on one of the buttons (depending on what type of widget you want to create):&lt;br /&gt;
* [+ Add new sidebar widget]&lt;br /&gt;
* [+ Add new business cards widget]&lt;br /&gt;
A new (empty) widget is displayed. You can give the widget a name by clicking the pen-symbol. The widget name helps to identify widgets as soon the number of widgets starts to grow.&amp;lt;br&amp;gt;&lt;br /&gt;
You can expand and collaps widgets by clicking the header of each widget.&lt;br /&gt;
[[Image:Widget-code-new-widget.png|thumb|New Widget]]&lt;br /&gt;
&lt;br /&gt;
== Creating a new Widget ==&lt;br /&gt;
&lt;br /&gt;
New Widget features and options&lt;br /&gt;
&lt;br /&gt;
*You can add the main contact details for this widget&lt;br /&gt;
*Select the default language&lt;br /&gt;
*Set your prefered font settings *&lt;br /&gt;
*Change the colour settings *&lt;br /&gt;
*Change the margin settings *&lt;br /&gt;
*z-index&lt;br /&gt;
*Options Require license (when this checkbox is ticked, this widget will consume 1 license of type: Service(innovaphone-widgets) and the widget will be shown without advertisement)&lt;br /&gt;
(* By default, the Widget will use the default website font, colour and margin settings. Change can be needed depending on the website settings)&lt;br /&gt;
[[Image:Widget-new-widget-features.png|thumb|Widget Features]]&lt;br /&gt;
&lt;br /&gt;
== Adding Agent to Widget ==&lt;br /&gt;
You can add and remove Agents to a Widget. Agents can be contacted by external website visitors.&amp;lt;br&amp;gt;&lt;br /&gt;
New agents are added by clicking the [+] button inside the agents container.&lt;br /&gt;
[[File:Adding-new-agents.png|thumb|Adding agents]]&lt;br /&gt;
A dialog opens where you can define the agent. It all starts with the agent&#039;s &#039;SIP-ID&#039;. That&#039;s the dialable PBX user address. You can use the search function to find a PBX user by name.&lt;br /&gt;
&lt;br /&gt;
There are several (optional) attributes you can set for an agent, like &#039;Display name&#039;, &#039;Phone number&#039;, &#039;Email address&#039; and &#039;Picture&#039;. A picture can be placed by drag &amp;amp; drop or can be selected from local disk by clicking the placeholder rectangle.&lt;br /&gt;
&lt;br /&gt;
Finally you can define the ways of communication the agent is available for:&lt;br /&gt;
* Voice-only calls&lt;br /&gt;
* Video calls (including voice)&lt;br /&gt;
* Chat&lt;br /&gt;
* Email&lt;br /&gt;
&lt;br /&gt;
For a Business-Cards-Widget the order of agents could be relevant. You can change the order of agents in the Widgets-App by easy drag &amp;amp; drop using the mouse.&lt;br /&gt;
&lt;br /&gt;
Each widget gets a unique ID (uuid) assigned on its initial creation. This uuid is used to identify the widget when it is integrated into a website.&lt;br /&gt;
&lt;br /&gt;
In case of a sidebar widget, the agent&#039;s card will be displayed by default depending on its status(availability) unless you checked &amp;quot;Always show widget&amp;quot; under the sidebar settings.&lt;br /&gt;
&lt;br /&gt;
In case of a business cards widget, the agent card will always be shown, but its availability is depending on its status.&lt;br /&gt;
&lt;br /&gt;
The following settings are possible:&lt;br /&gt;
* Presence*: Display/availability of the card based on the presence status of the agent. Presence available (green), Presence unavailable, busy (red). Usage: Normal agent based on availability.&lt;br /&gt;
* Always online: Permanent display/availability of the card regardless of its presence or busy status. Usage: Multiple consecutive calls to the same destination, an agent with multiple line configuration, a group or waiting queue.&lt;br /&gt;
* Boolean*: Display of the card depending on the true status of a Boolean object.  Usage: Agent, group or waiting queues based on boolean settings.&lt;br /&gt;
* Inactive: Agent card is permanently in the status unavailable (red). Usage: Showing the agent in a business cards widget, but limit the access to the agent for a longer period. (holiday, sick-leave or other reasons)&lt;br /&gt;
&#039;&#039;&#039;Important!&#039;&#039;&#039;: Presence and boolean status are dependent on the visibility configured on all the monitored objects, eg. agent user objects and monitored boolean objects. The boolean object must have the visibility option &amp;quot;calls&amp;quot; checked before adding the boolean to the widget!&lt;br /&gt;
&lt;br /&gt;
= Integrating Widgets into Website =&lt;br /&gt;
Now it is the website admin&#039;s turn to integrate the widget into the website.&amp;lt;br&amp;gt;&lt;br /&gt;
To do this, click the [Code] button in the Widgets App at that widget you want to include. A popup appears showing a handful of code lines (HTML and Javascript).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Widget-code-popup.png|thumb|Code Popup]]&lt;br /&gt;
You can &#039;&#039;copy&#039;&#039; the code lines into clipboard by clicking the [Copy] button.&amp;lt;br&amp;gt;&lt;br /&gt;
You can &#039;&#039;paste&#039;&#039; the code lines from clipboard into your website code.&amp;lt;br&amp;gt;&lt;br /&gt;
There&#039;s also a [Download] button. When clicking this button a small HTML file is saved on your local computer. This HTML file can be opened in a browser to preview the widget and test the widget&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
== Content-Security-Policy ==&lt;br /&gt;
If the website uses Content-Security-Policy (CSP) it could be necessary to add entries to config sections &#039;default-src&#039; and &#039;img-src&#039;.&lt;br /&gt;
* The Widget opens a secure websocket connection (wss:)&lt;br /&gt;
* The Widget loads images via Data-URL (data:).&lt;br /&gt;
* The Widget uses Mail-Links (mailto:).&lt;br /&gt;
* The Widget uses Tel-Links (tel:).&lt;br /&gt;
  &amp;lt;meta&lt;br /&gt;
    http-equiv=&amp;quot;Content-Security-Policy&amp;quot; content=&amp;quot;&lt;br /&gt;
      default-src &#039;self&#039; &#039;&#039;&#039;wss://*.innovaphone.com&#039;&#039;&#039;; child-src &#039;self&#039; &#039;&#039;&#039;mailto:&#039;&#039;&#039; &#039;&#039;&#039;tel:&#039;&#039;&#039;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
  /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= After Integration =&lt;br /&gt;
Once your widget is live on the website you can still change and update the widget in the Widgets-App. You can update the list of agents or change any other attribute. As soon as you click the widget&#039;s [Save] button any open widget instance in a web browser will update immmediately. No need for the website administrator to update the code.&lt;br /&gt;
&lt;br /&gt;
= Widget-API — Protocol between Website Widget and App Service =&lt;br /&gt;
Basically, this section does not matter. To create and use widgets, knowledge about the protocol is not required.&amp;lt;br&amp;gt;&lt;br /&gt;
All who are interested in technical details are welcome to read on.&lt;br /&gt;
&lt;br /&gt;
== Loading the Widget ==&lt;br /&gt;
&lt;br /&gt;
When a widget is loaded in the browser window of the website visitor, a websocket connection is opened to the app service on the innovaphone Application Platform. Once the websocket connection is established it goes like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;Start&amp;quot;,&amp;quot;uuid&amp;quot;:&amp;quot;fadc5da4cae94bfc9434d9957ea08ccb&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Session&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Visitenkarten&amp;quot;,&amp;quot;lang&amp;quot;:&amp;quot;de&amp;quot;,&amp;quot;strings&amp;quot;:{...}}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Columbia&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:1}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;}&lt;br /&gt;
[7] {&amp;quot;mt&amp;quot;:&amp;quot;IceConfig&amp;quot;,&amp;quot;stun&amp;quot;:&amp;quot;stun.innovaphone.com&amp;quot;,&amp;quot;turn&amp;quot;:&amp;quot;turn.innovaphone.com&amp;quot;}&lt;br /&gt;
[8] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[9] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[10] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[11] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] The &amp;quot;Start&amp;quot; request is sent with the unique id of the widget.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] The app service sends the &amp;quot;Session&amp;quot; response providing the widget&#039;s display-name and other parameters.&amp;lt;br&amp;gt;&lt;br /&gt;
[3]-[6] The app service sends &amp;quot;Info&amp;quot; messages for all configured agents. Each &amp;quot;Info&amp;quot; message triggers a &amp;quot;GetPicture&amp;quot; request to get a picture of the agent.&amp;lt;br&amp;gt;&lt;br /&gt;
[7] The app service sends &amp;quot;IceConfig&amp;quot; providing the STUN and TURN config required for media calls.&amp;lt;br&amp;gt;&lt;br /&gt;
[8]-[9] The app service sends &amp;quot;Picture&amp;quot; messages for all agents.&amp;lt;br&amp;gt;&lt;br /&gt;
[10]-[11] The presence of an agent may change over time. Presence updates are provided with &amp;quot;Info&amp;quot; messages.&lt;br /&gt;
&lt;br /&gt;
== Initiating a call ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;CreateCall&amp;quot;,&amp;quot;dest&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Mein Name&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Channels&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;PROPOSAL&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;alerting&amp;quot;}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;connected&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;SELECT&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;ClearCall&amp;quot;}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;terminated&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;CreatCall&amp;quot; message sets the target of the call (&#039;dest&#039;) and the own display name (&#039;dn&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
[2] &amp;quot;Channels&amp;quot; message provides the media offer for this call. Complete SDP offer is provided.&amp;lt;br&amp;gt;&lt;br /&gt;
[3] &amp;quot;CallInfo&amp;quot; is received giving information about the call&#039;s current state.&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Next &amp;quot;CallInfo&amp;quot; is received telling the call was answered and deliviering the remote side&#039;s media answer.&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Web site user terminates the call.&amp;lt;br&amp;gt;&lt;br /&gt;
[6] The final &amp;quot;CallInfo&amp;quot; message is received.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Known issues and limitations =&lt;br /&gt;
* The widgets are not multi-instance capable. Multiple widgets on one and the same website are not possible. Every subpage on the website can have its own widget.&lt;br /&gt;
* We have seen some cases where an existing web widget from other software did have a negative impact on our widget on the website. Rearranging the widget in the HTML code might help.&lt;br /&gt;
* The number of Agents in a single Sidebar or Business Cards is limited by the length of the sidebar/business card configuration. Just over 100 agents will normally not be a problem. From V15r1sr4 onwards a config check has been built in to prevent too lengthy configurations, so this version is recommended for sidebars and business cards with plenty of agents.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&amp;lt;big&amp;gt;If an issue can be reproduced&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Web visitor in a browser.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The myApps web uses the logging facilities provided by the browser it runs in (i.e. JavaScript function &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt;).  In most browser this is available as &#039;&#039;Console&#039;&#039; after pressing F12.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*The called agent working with myApps client.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[Reference14r1:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Troubleshooting AP Services on the AP.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs]]&lt;br /&gt;
&lt;br /&gt;
Go to the AP Manager and select the App instance from the Contact Widgets App. &lt;br /&gt;
Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|none|AP-Diagnostics]]&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|none|AP-Diagnostics-Logging]]&lt;br /&gt;
= Related Articles =&lt;br /&gt;
[[Howto14r1:Install_Contact_Widget_App|Howto14r1:Install_Contact_Widget_App]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Contact_Widgets&amp;diff=79709</id>
		<title>Reference16r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_Contact_Widgets&amp;diff=79709"/>
		<updated>2026-04-29T07:41:24Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;Conference  = Applies To = * innovaphone PBX from version 14r1 * innovaphone Application Platform  = Requirements = * innovaphone PBX * innovaphone Application Platform * Firmware Version 14r1 * One &amp;#039;&amp;#039;&amp;#039;Port License&amp;#039;&amp;#039;&amp;#039; is used by the app service to establish a VoIP registration at the PBX * &amp;#039;&amp;#039;&amp;#039;Video License&amp;#039;&amp;#039;&amp;#039; (optional) is required to establish video connections [*] * &amp;#039;&amp;#039;&amp;#039;Widget License&amp;#039;&amp;#039;&amp;#039; (optional) is required to remove any &amp;#039;innovaphone&amp;#039; branding fr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Conference]]&lt;br /&gt;
&lt;br /&gt;
= Applies To =&lt;br /&gt;
* innovaphone PBX from version 14r1&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware Version 14r1&lt;br /&gt;
* One &#039;&#039;&#039;Port License&#039;&#039;&#039; is used by the app service to establish a VoIP registration at the PBX&lt;br /&gt;
* &#039;&#039;&#039;Video License&#039;&#039;&#039; (optional) is required to establish video connections [*]&lt;br /&gt;
* &#039;&#039;&#039;Widget License&#039;&#039;&#039; (optional) is required to remove any &#039;innovaphone&#039; branding from the Widget UI&lt;br /&gt;
&lt;br /&gt;
[*] &#039;&#039;&#039;UC License&#039;&#039;&#039; can also be used since it includes a &#039;&#039;&#039;Video License&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is an element that can be added to a website. It offers to website visitors a way to get in contact with agents (e.g. help-desk). Website visitors can start chat sessions (asking questions, getting answers) or can start voice or even video calls.&lt;br /&gt;
&lt;br /&gt;
An nice example for a &amp;quot;Sidebar Widget&amp;quot; can be viewed [https://www.innovaphone.com/de/ip-telefonie/innovaphone-pbx.html here].&amp;lt;br&amp;gt;&lt;br /&gt;
When you have opened this website the Sidebar Widget comes slowly into view on the right side.&lt;br /&gt;
&lt;br /&gt;
Example of a Business-Cards-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Cardset-widget.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of a Sidebar-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Sidebar-Widget.png]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
[[File:Concept-widgets-overview.png|thumb|Overview]]&lt;br /&gt;
The central part of the new Widgets-Concept is the &#039;&#039;&#039;Contact-Widgets-App&#039;&#039;&#039;.&lt;br /&gt;
The Contact Widgets App is installed on the innovaphone Application Platform and it allows a PBX user to define Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Contact Widgets can be integrated in a Website to offer easy ways to website users to contact &#039;&#039;&#039;Agents&#039;&#039;&#039;. Agents are PBX users meant to communicate with external clients.&amp;lt;br&amp;gt;&lt;br /&gt;
There are 2 fundamental types of Contact Widgets:&lt;br /&gt;
* &#039;&#039;&#039;Sidebar Widgets&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Business Cards Widgets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Sidebar Widget appears one side of the website trying to take as less space as possible. The website visitor can expand the Sidebar Widget if interested.&amp;lt;br&amp;gt;&lt;br /&gt;
A Business Cards Widget appears as integrated part of the website content, offering one (or more) contacts in form of ordinary business cards.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
For non experienced technicians have a look at [[Howto14r1:Install_Contact_Widget_App#Installation]] and follow the installation steps mentioned in the how-to article.&lt;br /&gt;
&lt;br /&gt;
Others:&lt;br /&gt;
* Download the &#039;Contact Widgets App&#039; via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Widgets App on the Manager. We recommend to use no capital letters and no special characters (also not such as space).&lt;br /&gt;
* Create a new PBX Object with the PBX Manager Plugin. (*)&lt;br /&gt;
* Assign App to authorized (admin) users, which will be allowed to create/change/delete Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Experts:&lt;br /&gt;
(*) You can also create the PBX Object manually:&amp;lt;br&amp;gt;&lt;br /&gt;
* Create a new object of type &amp;quot;App&amp;quot;.&lt;br /&gt;
* Give it a &amp;quot;Long Name&amp;quot; (&amp;quot;Contact Widgets&amp;quot;) and a Name (&amp;quot;widgets&amp;quot;) same as the instance-name.&lt;br /&gt;
* Give it a password, same as the instance password.&lt;br /&gt;
* On the &amp;quot;App&amp;quot; tab configure URL to App Service on App Platform (&amp;quot;http://&amp;lt;ipaddress-or-dnsname&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-widgets&amp;quot;).&lt;br /&gt;
* Activate option &amp;quot;Websocket&amp;quot;&lt;br /&gt;
* Grant access to APIs: &amp;quot;PbxSignal&amp;quot; (mandatory), &amp;quot;Admin&amp;quot; (optional) and &amp;quot;PbxApi&amp;quot; (mandatory)&lt;br /&gt;
&lt;br /&gt;
= Using the Contact Widgets App =&lt;br /&gt;
Click on one of the buttons (depending on what type of widget you want to create):&lt;br /&gt;
* [+ Add new sidebar widget]&lt;br /&gt;
* [+ Add new business cards widget]&lt;br /&gt;
A new (empty) widget is displayed. You can give the widget a name by clicking the pen-symbol. The widget name helps to identify widgets as soon the number of widgets starts to grow.&amp;lt;br&amp;gt;&lt;br /&gt;
You can expand and collaps widgets by clicking the header of each widget.&lt;br /&gt;
[[Image:Widget-code-new-widget.png|thumb|New Widget]]&lt;br /&gt;
&lt;br /&gt;
== Creating a new Widget ==&lt;br /&gt;
&lt;br /&gt;
New Widget features and options&lt;br /&gt;
&lt;br /&gt;
*You can add the main contact details for this widget&lt;br /&gt;
*Select the default language&lt;br /&gt;
*Set your prefered font settings *&lt;br /&gt;
*Change the colour settings *&lt;br /&gt;
*Change the margin settings *&lt;br /&gt;
*z-index&lt;br /&gt;
*Options Require license (when this checkbox is ticked, this widget will consume 1 license of type: Service(innovaphone-widgets) and the widget will be shown without advertisement)&lt;br /&gt;
(* By default, the Widget will use the default website font, colour and margin settings. Change can be needed depending on the website settings)&lt;br /&gt;
[[Image:Widget-new-widget-features.png|thumb|Widget Features]]&lt;br /&gt;
&lt;br /&gt;
== Adding Agent to Widget ==&lt;br /&gt;
You can add and remove Agents to a Widget. Agents can be contacted by external website visitors.&amp;lt;br&amp;gt;&lt;br /&gt;
New agents are added by clicking the [+] button inside the agents container.&lt;br /&gt;
[[File:Adding-new-agents.png|thumb|Adding agents]]&lt;br /&gt;
A dialog opens where you can define the agent. It all starts with the agent&#039;s &#039;SIP-ID&#039;. That&#039;s the dialable PBX user address. You can use the search function to find a PBX user by name.&lt;br /&gt;
&lt;br /&gt;
There are several (optional) attributes you can set for an agent, like &#039;Display name&#039;, &#039;Phone number&#039;, &#039;Email address&#039; and &#039;Picture&#039;. A picture can be placed by drag &amp;amp; drop or can be selected from local disk by clicking the placeholder rectangle.&lt;br /&gt;
&lt;br /&gt;
Finally you can define the ways of communication the agent is available for:&lt;br /&gt;
* Voice-only calls&lt;br /&gt;
* Video calls (including voice)&lt;br /&gt;
* Chat&lt;br /&gt;
* Email&lt;br /&gt;
&lt;br /&gt;
For a Business-Cards-Widget the order of agents could be relevant. You can change the order of agents in the Widgets-App by easy drag &amp;amp; drop using the mouse.&lt;br /&gt;
&lt;br /&gt;
Each widget gets a unique ID (uuid) assigned on its initial creation. This uuid is used to identify the widget when it is integrated into a website.&lt;br /&gt;
&lt;br /&gt;
In case of a sidebar widget, the agent&#039;s card will be displayed by default depending on its status(availability) unless you checked &amp;quot;Always show widget&amp;quot; under the sidebar settings.&lt;br /&gt;
&lt;br /&gt;
In case of a business cards widget, the agent card will always be shown, but its availability is depending on its status.&lt;br /&gt;
&lt;br /&gt;
The following settings are possible:&lt;br /&gt;
* Presence*: Display/availability of the card based on the presence status of the agent. Presence available (green), Presence unavailable, busy (red). Usage: Normal agent based on availability.&lt;br /&gt;
* Always online: Permanent display/availability of the card regardless of its presence or busy status. Usage: Multiple consecutive calls to the same destination, an agent with multiple line configuration, a group or waiting queue.&lt;br /&gt;
* Boolean*: Display of the card depending on the true status of a Boolean object.  Usage: Agent, group or waiting queues based on boolean settings.&lt;br /&gt;
* Inactive: Agent card is permanently in the status unavailable (red). Usage: Showing the agent in a business cards widget, but limit the access to the agent for a longer period. (holiday, sick-leave or other reasons)&lt;br /&gt;
&#039;&#039;&#039;Important!&#039;&#039;&#039;: Presence and boolean status are dependent on the visibility configured on all the monitored objects, eg. agent user objects and monitored boolean objects. The boolean object must have the visibility option &amp;quot;calls&amp;quot; checked before adding the boolean to the widget!&lt;br /&gt;
&lt;br /&gt;
= Integrating Widgets into Website =&lt;br /&gt;
Now it is the website admin&#039;s turn to integrate the widget into the website.&amp;lt;br&amp;gt;&lt;br /&gt;
To do this, click the [Code] button in the Widgets App at that widget you want to include. A popup appears showing a handful of code lines (HTML and Javascript).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Widget-code-popup.png|thumb|Code Popup]]&lt;br /&gt;
You can &#039;&#039;copy&#039;&#039; the code lines into clipboard by clicking the [Copy] button.&amp;lt;br&amp;gt;&lt;br /&gt;
You can &#039;&#039;paste&#039;&#039; the code lines from clipboard into your website code.&amp;lt;br&amp;gt;&lt;br /&gt;
There&#039;s also a [Download] button. When clicking this button a small HTML file is saved on your local computer. This HTML file can be opened in a browser to preview the widget and test the widget&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
== Content-Security-Policy ==&lt;br /&gt;
If the website uses Content-Security-Policy (CSP) it could be necessary to add entries to config sections &#039;default-src&#039; and &#039;img-src&#039;.&lt;br /&gt;
* The Widget opens a secure websocket connection (wss:)&lt;br /&gt;
* The Widget loads images via Data-URL (data:).&lt;br /&gt;
* The Widget uses Mail-Links (mailto:).&lt;br /&gt;
* The Widget uses Tel-Links (tel:).&lt;br /&gt;
  &amp;lt;meta&lt;br /&gt;
    http-equiv=&amp;quot;Content-Security-Policy&amp;quot; content=&amp;quot;&lt;br /&gt;
      default-src &#039;self&#039; &#039;&#039;&#039;wss://*.innovaphone.com&#039;&#039;&#039;; child-src &#039;self&#039; &#039;&#039;&#039;mailto:&#039;&#039;&#039; &#039;&#039;&#039;tel:&#039;&#039;&#039;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
  /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= After Integration =&lt;br /&gt;
Once your widget is live on the website you can still change and update the widget in the Widgets-App. You can update the list of agents or change any other attribute. As soon as you click the widget&#039;s [Save] button any open widget instance in a web browser will update immmediately. No need for the website administrator to update the code.&lt;br /&gt;
&lt;br /&gt;
= Widget-API — Protocol between Website Widget and App Service =&lt;br /&gt;
Basically, this section does not matter. To create and use widgets, knowledge about the protocol is not required.&amp;lt;br&amp;gt;&lt;br /&gt;
All who are interested in technical details are welcome to read on.&lt;br /&gt;
&lt;br /&gt;
== Loading the Widget ==&lt;br /&gt;
&lt;br /&gt;
When a widget is loaded in the browser window of the website visitor, a websocket connection is opened to the app service on the innovaphone Application Platform. Once the websocket connection is established it goes like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;Start&amp;quot;,&amp;quot;uuid&amp;quot;:&amp;quot;fadc5da4cae94bfc9434d9957ea08ccb&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Session&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Visitenkarten&amp;quot;,&amp;quot;lang&amp;quot;:&amp;quot;de&amp;quot;,&amp;quot;strings&amp;quot;:{...}}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Columbia&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:1}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;}&lt;br /&gt;
[7] {&amp;quot;mt&amp;quot;:&amp;quot;IceConfig&amp;quot;,&amp;quot;stun&amp;quot;:&amp;quot;stun.innovaphone.com&amp;quot;,&amp;quot;turn&amp;quot;:&amp;quot;turn.innovaphone.com&amp;quot;}&lt;br /&gt;
[8] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[9] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[10] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[11] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] The &amp;quot;Start&amp;quot; request is sent with the unique id of the widget.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] The app service sends the &amp;quot;Session&amp;quot; response providing the widget&#039;s display-name and other parameters.&amp;lt;br&amp;gt;&lt;br /&gt;
[3]-[6] The app service sends &amp;quot;Info&amp;quot; messages for all configured agents. Each &amp;quot;Info&amp;quot; message triggers a &amp;quot;GetPicture&amp;quot; request to get a picture of the agent.&amp;lt;br&amp;gt;&lt;br /&gt;
[7] The app service sends &amp;quot;IceConfig&amp;quot; providing the STUN and TURN config required for media calls.&amp;lt;br&amp;gt;&lt;br /&gt;
[8]-[9] The app service sends &amp;quot;Picture&amp;quot; messages for all agents.&amp;lt;br&amp;gt;&lt;br /&gt;
[10]-[11] The presence of an agent may change over time. Presence updates are provided with &amp;quot;Info&amp;quot; messages.&lt;br /&gt;
&lt;br /&gt;
== Initiating a call ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;CreateCall&amp;quot;,&amp;quot;dest&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Mein Name&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Channels&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;PROPOSAL&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;alerting&amp;quot;}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;connected&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;SELECT&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;ClearCall&amp;quot;}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;terminated&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;CreatCall&amp;quot; message sets the target of the call (&#039;dest&#039;) and the own display name (&#039;dn&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
[2] &amp;quot;Channels&amp;quot; message provides the media offer for this call. Complete SDP offer is provided.&amp;lt;br&amp;gt;&lt;br /&gt;
[3] &amp;quot;CallInfo&amp;quot; is received giving information about the call&#039;s current state.&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Next &amp;quot;CallInfo&amp;quot; is received telling the call was answered and deliviering the remote side&#039;s media answer.&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Web site user terminates the call.&amp;lt;br&amp;gt;&lt;br /&gt;
[6] The final &amp;quot;CallInfo&amp;quot; message is received.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Known issues and limitations =&lt;br /&gt;
* The widgets are not multi-instance capable. Multiple widgets on one and the same website are not possible. Every subpage on the website can have its own widget.&lt;br /&gt;
* We have seen some cases where an existing web widget from other software did have a negative impact on our widget on the website. Rearranging the widget in the HTML code might help.&lt;br /&gt;
* The number of Agents in a single Sidebar or Business Cards is limited by the length of the sidebar/business card configuration. Just over 100 agents will normally not be a problem. From V15r1sr4 onwards a config check has been built in to prevent too lengthy configurations, so this version is recommended for sidebars and business cards with plenty of agents.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&amp;lt;big&amp;gt;If an issue can be reproduced&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Web visitor in a browser.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The myApps web uses the logging facilities provided by the browser it runs in (i.e. JavaScript function &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt;).  In most browser this is available as &#039;&#039;Console&#039;&#039; after pressing F12.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*The called agent working with myApps client.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[Reference14r1:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Troubleshooting AP Services on the AP.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs]]&lt;br /&gt;
&lt;br /&gt;
Go to the AP Manager and select the App instance from the Contact Widgets App. &lt;br /&gt;
Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|none|AP-Diagnostics]]&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|none|AP-Diagnostics-Logging]]&lt;br /&gt;
= Related Articles =&lt;br /&gt;
[[Howto14r1:Install_Contact_Widget_App|Howto14r1:Install_Contact_Widget_App]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79708</id>
		<title>Reference15r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Contact_Widgets&amp;diff=79708"/>
		<updated>2026-04-29T07:41:10Z</updated>

		<summary type="html">&lt;p&gt;Slu: Created page with &amp;quot;Conference  = Applies To = * innovaphone PBX from version 14r1 * innovaphone Application Platform  = Requirements = * innovaphone PBX * innovaphone Application Platform * Firmware Version 14r1 * One &amp;#039;&amp;#039;&amp;#039;Port License&amp;#039;&amp;#039;&amp;#039; is used by the app service to establish a VoIP registration at the PBX * &amp;#039;&amp;#039;&amp;#039;Video License&amp;#039;&amp;#039;&amp;#039; (optional) is required to establish video connections [*] * &amp;#039;&amp;#039;&amp;#039;Widget License&amp;#039;&amp;#039;&amp;#039; (optional) is required to remove any &amp;#039;innovaphone&amp;#039; branding fr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Conference]]&lt;br /&gt;
&lt;br /&gt;
= Applies To =&lt;br /&gt;
* innovaphone PBX from version 14r1&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware Version 14r1&lt;br /&gt;
* One &#039;&#039;&#039;Port License&#039;&#039;&#039; is used by the app service to establish a VoIP registration at the PBX&lt;br /&gt;
* &#039;&#039;&#039;Video License&#039;&#039;&#039; (optional) is required to establish video connections [*]&lt;br /&gt;
* &#039;&#039;&#039;Widget License&#039;&#039;&#039; (optional) is required to remove any &#039;innovaphone&#039; branding from the Widget UI&lt;br /&gt;
&lt;br /&gt;
[*] &#039;&#039;&#039;UC License&#039;&#039;&#039; can also be used since it includes a &#039;&#039;&#039;Video License&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is an element that can be added to a website. It offers to website visitors a way to get in contact with agents (e.g. help-desk). Website visitors can start chat sessions (asking questions, getting answers) or can start voice or even video calls.&lt;br /&gt;
&lt;br /&gt;
An nice example for a &amp;quot;Sidebar Widget&amp;quot; can be viewed [https://www.innovaphone.com/de/ip-telefonie/innovaphone-pbx.html here].&amp;lt;br&amp;gt;&lt;br /&gt;
When you have opened this website the Sidebar Widget comes slowly into view on the right side.&lt;br /&gt;
&lt;br /&gt;
Example of a Business-Cards-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Cardset-widget.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of a Sidebar-Widget:&lt;br /&gt;
&lt;br /&gt;
[[File:Sidebar-Widget.png]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
[[File:Concept-widgets-overview.png|thumb|Overview]]&lt;br /&gt;
The central part of the new Widgets-Concept is the &#039;&#039;&#039;Contact-Widgets-App&#039;&#039;&#039;.&lt;br /&gt;
The Contact Widgets App is installed on the innovaphone Application Platform and it allows a PBX user to define Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Contact Widgets can be integrated in a Website to offer easy ways to website users to contact &#039;&#039;&#039;Agents&#039;&#039;&#039;. Agents are PBX users meant to communicate with external clients.&amp;lt;br&amp;gt;&lt;br /&gt;
There are 2 fundamental types of Contact Widgets:&lt;br /&gt;
* &#039;&#039;&#039;Sidebar Widgets&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Business Cards Widgets&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A Sidebar Widget appears one side of the website trying to take as less space as possible. The website visitor can expand the Sidebar Widget if interested.&amp;lt;br&amp;gt;&lt;br /&gt;
A Business Cards Widget appears as integrated part of the website content, offering one (or more) contacts in form of ordinary business cards.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
For non experienced technicians have a look at [[Howto14r1:Install_Contact_Widget_App#Installation]] and follow the installation steps mentioned in the how-to article.&lt;br /&gt;
&lt;br /&gt;
Others:&lt;br /&gt;
* Download the &#039;Contact Widgets App&#039; via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Widgets App on the Manager. We recommend to use no capital letters and no special characters (also not such as space).&lt;br /&gt;
* Create a new PBX Object with the PBX Manager Plugin. (*)&lt;br /&gt;
* Assign App to authorized (admin) users, which will be allowed to create/change/delete Contact Widgets.&lt;br /&gt;
&lt;br /&gt;
Experts:&lt;br /&gt;
(*) You can also create the PBX Object manually:&amp;lt;br&amp;gt;&lt;br /&gt;
* Create a new object of type &amp;quot;App&amp;quot;.&lt;br /&gt;
* Give it a &amp;quot;Long Name&amp;quot; (&amp;quot;Contact Widgets&amp;quot;) and a Name (&amp;quot;widgets&amp;quot;) same as the instance-name.&lt;br /&gt;
* Give it a password, same as the instance password.&lt;br /&gt;
* On the &amp;quot;App&amp;quot; tab configure URL to App Service on App Platform (&amp;quot;http://&amp;lt;ipaddress-or-dnsname&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-widgets&amp;quot;).&lt;br /&gt;
* Activate option &amp;quot;Websocket&amp;quot;&lt;br /&gt;
* Grant access to APIs: &amp;quot;PbxSignal&amp;quot; (mandatory), &amp;quot;Admin&amp;quot; (optional) and &amp;quot;PbxApi&amp;quot; (mandatory)&lt;br /&gt;
&lt;br /&gt;
= Using the Contact Widgets App =&lt;br /&gt;
Click on one of the buttons (depending on what type of widget you want to create):&lt;br /&gt;
* [+ Add new sidebar widget]&lt;br /&gt;
* [+ Add new business cards widget]&lt;br /&gt;
A new (empty) widget is displayed. You can give the widget a name by clicking the pen-symbol. The widget name helps to identify widgets as soon the number of widgets starts to grow.&amp;lt;br&amp;gt;&lt;br /&gt;
You can expand and collaps widgets by clicking the header of each widget.&lt;br /&gt;
[[Image:Widget-code-new-widget.png|thumb|New Widget]]&lt;br /&gt;
&lt;br /&gt;
== Creating a new Widget ==&lt;br /&gt;
&lt;br /&gt;
New Widget features and options&lt;br /&gt;
&lt;br /&gt;
*You can add the main contact details for this widget&lt;br /&gt;
*Select the default language&lt;br /&gt;
*Set your prefered font settings *&lt;br /&gt;
*Change the colour settings *&lt;br /&gt;
*Change the margin settings *&lt;br /&gt;
*z-index&lt;br /&gt;
*Options Require license (when this checkbox is ticked, this widget will consume 1 license of type: Service(innovaphone-widgets) and the widget will be shown without advertisement)&lt;br /&gt;
(* By default, the Widget will use the default website font, colour and margin settings. Change can be needed depending on the website settings)&lt;br /&gt;
[[Image:Widget-new-widget-features.png|thumb|Widget Features]]&lt;br /&gt;
&lt;br /&gt;
== Adding Agent to Widget ==&lt;br /&gt;
You can add and remove Agents to a Widget. Agents can be contacted by external website visitors.&amp;lt;br&amp;gt;&lt;br /&gt;
New agents are added by clicking the [+] button inside the agents container.&lt;br /&gt;
[[File:Adding-new-agents.png|thumb|Adding agents]]&lt;br /&gt;
A dialog opens where you can define the agent. It all starts with the agent&#039;s &#039;SIP-ID&#039;. That&#039;s the dialable PBX user address. You can use the search function to find a PBX user by name.&lt;br /&gt;
&lt;br /&gt;
There are several (optional) attributes you can set for an agent, like &#039;Display name&#039;, &#039;Phone number&#039;, &#039;Email address&#039; and &#039;Picture&#039;. A picture can be placed by drag &amp;amp; drop or can be selected from local disk by clicking the placeholder rectangle.&lt;br /&gt;
&lt;br /&gt;
Finally you can define the ways of communication the agent is available for:&lt;br /&gt;
* Voice-only calls&lt;br /&gt;
* Video calls (including voice)&lt;br /&gt;
* Chat&lt;br /&gt;
* Email&lt;br /&gt;
&lt;br /&gt;
For a Business-Cards-Widget the order of agents could be relevant. You can change the order of agents in the Widgets-App by easy drag &amp;amp; drop using the mouse.&lt;br /&gt;
&lt;br /&gt;
Each widget gets a unique ID (uuid) assigned on its initial creation. This uuid is used to identify the widget when it is integrated into a website.&lt;br /&gt;
&lt;br /&gt;
In case of a sidebar widget, the agent&#039;s card will be displayed by default depending on its status(availability) unless you checked &amp;quot;Always show widget&amp;quot; under the sidebar settings.&lt;br /&gt;
&lt;br /&gt;
In case of a business cards widget, the agent card will always be shown, but its availability is depending on its status.&lt;br /&gt;
&lt;br /&gt;
The following settings are possible:&lt;br /&gt;
* Presence*: Display/availability of the card based on the presence status of the agent. Presence available (green), Presence unavailable, busy (red). Usage: Normal agent based on availability.&lt;br /&gt;
* Always online: Permanent display/availability of the card regardless of its presence or busy status. Usage: Multiple consecutive calls to the same destination, an agent with multiple line configuration, a group or waiting queue.&lt;br /&gt;
* Boolean*: Display of the card depending on the true status of a Boolean object.  Usage: Agent, group or waiting queues based on boolean settings.&lt;br /&gt;
* Inactive: Agent card is permanently in the status unavailable (red). Usage: Showing the agent in a business cards widget, but limit the access to the agent for a longer period. (holiday, sick-leave or other reasons)&lt;br /&gt;
&#039;&#039;&#039;Important!&#039;&#039;&#039;: Presence and boolean status are dependent on the visibility configured on all the monitored objects, eg. agent user objects and monitored boolean objects. The boolean object must have the visibility option &amp;quot;calls&amp;quot; checked before adding the boolean to the widget!&lt;br /&gt;
&lt;br /&gt;
= Integrating Widgets into Website =&lt;br /&gt;
Now it is the website admin&#039;s turn to integrate the widget into the website.&amp;lt;br&amp;gt;&lt;br /&gt;
To do this, click the [Code] button in the Widgets App at that widget you want to include. A popup appears showing a handful of code lines (HTML and Javascript).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Widget-code-popup.png|thumb|Code Popup]]&lt;br /&gt;
You can &#039;&#039;copy&#039;&#039; the code lines into clipboard by clicking the [Copy] button.&amp;lt;br&amp;gt;&lt;br /&gt;
You can &#039;&#039;paste&#039;&#039; the code lines from clipboard into your website code.&amp;lt;br&amp;gt;&lt;br /&gt;
There&#039;s also a [Download] button. When clicking this button a small HTML file is saved on your local computer. This HTML file can be opened in a browser to preview the widget and test the widget&#039;s functionality.&lt;br /&gt;
&lt;br /&gt;
== Content-Security-Policy ==&lt;br /&gt;
If the website uses Content-Security-Policy (CSP) it could be necessary to add entries to config sections &#039;default-src&#039; and &#039;img-src&#039;.&lt;br /&gt;
* The Widget opens a secure websocket connection (wss:)&lt;br /&gt;
* The Widget loads images via Data-URL (data:).&lt;br /&gt;
* The Widget uses Mail-Links (mailto:).&lt;br /&gt;
* The Widget uses Tel-Links (tel:).&lt;br /&gt;
  &amp;lt;meta&lt;br /&gt;
    http-equiv=&amp;quot;Content-Security-Policy&amp;quot; content=&amp;quot;&lt;br /&gt;
      default-src &#039;self&#039; &#039;&#039;&#039;wss://*.innovaphone.com&#039;&#039;&#039;; child-src &#039;self&#039; &#039;&#039;&#039;mailto:&#039;&#039;&#039; &#039;&#039;&#039;tel:&#039;&#039;&#039;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
  /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= After Integration =&lt;br /&gt;
Once your widget is live on the website you can still change and update the widget in the Widgets-App. You can update the list of agents or change any other attribute. As soon as you click the widget&#039;s [Save] button any open widget instance in a web browser will update immmediately. No need for the website administrator to update the code.&lt;br /&gt;
&lt;br /&gt;
= Widget-API — Protocol between Website Widget and App Service =&lt;br /&gt;
Basically, this section does not matter. To create and use widgets, knowledge about the protocol is not required.&amp;lt;br&amp;gt;&lt;br /&gt;
All who are interested in technical details are welcome to read on.&lt;br /&gt;
&lt;br /&gt;
== Loading the Widget ==&lt;br /&gt;
&lt;br /&gt;
When a widget is loaded in the browser window of the website visitor, a websocket connection is opened to the app service on the innovaphone Application Platform. Once the websocket connection is established it goes like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;Start&amp;quot;,&amp;quot;uuid&amp;quot;:&amp;quot;fadc5da4cae94bfc9434d9957ea08ccb&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Session&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Visitenkarten&amp;quot;,&amp;quot;lang&amp;quot;:&amp;quot;de&amp;quot;,&amp;quot;strings&amp;quot;:{...}}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Columbia&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:1}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;GetPicture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;}&lt;br /&gt;
[7] {&amp;quot;mt&amp;quot;:&amp;quot;IceConfig&amp;quot;,&amp;quot;stun&amp;quot;:&amp;quot;stun.innovaphone.com&amp;quot;,&amp;quot;turn&amp;quot;:&amp;quot;turn.innovaphone.com&amp;quot;}&lt;br /&gt;
[8] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[9] {&amp;quot;mt&amp;quot;:&amp;quot;Picture&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;columbia&amp;quot;,&amp;quot;url&amp;quot;:&amp;quot;data:image/jpeg;base64...&amp;quot;}&lt;br /&gt;
[10] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;offline&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
[11] {&amp;quot;mt&amp;quot;:&amp;quot;Info&amp;quot;,&amp;quot;id&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Atlantis&amp;quot;,&amp;quot;department&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;phonenumber&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;email&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;company&amp;quot;:{},&amp;quot;presence&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;media&amp;quot;:[&amp;quot;voice&amp;quot;,&amp;quot;video&amp;quot;,&amp;quot;email&amp;quot;,&amp;quot;chat&amp;quot;],&amp;quot;order&amp;quot;:0}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] The &amp;quot;Start&amp;quot; request is sent with the unique id of the widget.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] The app service sends the &amp;quot;Session&amp;quot; response providing the widget&#039;s display-name and other parameters.&amp;lt;br&amp;gt;&lt;br /&gt;
[3]-[6] The app service sends &amp;quot;Info&amp;quot; messages for all configured agents. Each &amp;quot;Info&amp;quot; message triggers a &amp;quot;GetPicture&amp;quot; request to get a picture of the agent.&amp;lt;br&amp;gt;&lt;br /&gt;
[7] The app service sends &amp;quot;IceConfig&amp;quot; providing the STUN and TURN config required for media calls.&amp;lt;br&amp;gt;&lt;br /&gt;
[8]-[9] The app service sends &amp;quot;Picture&amp;quot; messages for all agents.&amp;lt;br&amp;gt;&lt;br /&gt;
[10]-[11] The presence of an agent may change over time. Presence updates are provided with &amp;quot;Info&amp;quot; messages.&lt;br /&gt;
&lt;br /&gt;
== Initiating a call ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[1] {&amp;quot;mt&amp;quot;:&amp;quot;CreateCall&amp;quot;,&amp;quot;dest&amp;quot;:&amp;quot;atlantis&amp;quot;,&amp;quot;dn&amp;quot;:&amp;quot;Mein Name&amp;quot;}&lt;br /&gt;
[2] {&amp;quot;mt&amp;quot;:&amp;quot;Channels&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;PROPOSAL&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[3] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;alerting&amp;quot;}&lt;br /&gt;
[4] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;connected&amp;quot;,&amp;quot;cmd&amp;quot;:&amp;quot;SELECT&amp;quot;,&amp;quot;sdp&amp;quot;:&amp;quot;...&amp;quot;}&lt;br /&gt;
[5] {&amp;quot;mt&amp;quot;:&amp;quot;ClearCall&amp;quot;}&lt;br /&gt;
[6] {&amp;quot;mt&amp;quot;:&amp;quot;CallInfo&amp;quot;,&amp;quot;state&amp;quot;:&amp;quot;terminated&amp;quot;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[1] &amp;quot;CreatCall&amp;quot; message sets the target of the call (&#039;dest&#039;) and the own display name (&#039;dn&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
[2] &amp;quot;Channels&amp;quot; message provides the media offer for this call. Complete SDP offer is provided.&amp;lt;br&amp;gt;&lt;br /&gt;
[3] &amp;quot;CallInfo&amp;quot; is received giving information about the call&#039;s current state.&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Next &amp;quot;CallInfo&amp;quot; is received telling the call was answered and deliviering the remote side&#039;s media answer.&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Web site user terminates the call.&amp;lt;br&amp;gt;&lt;br /&gt;
[6] The final &amp;quot;CallInfo&amp;quot; message is received.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Known issues and limitations =&lt;br /&gt;
* The widgets are not multi-instance capable. Multiple widgets on one and the same website are not possible. Every subpage on the website can have its own widget.&lt;br /&gt;
* We have seen some cases where an existing web widget from other software did have a negative impact on our widget on the website. Rearranging the widget in the HTML code might help.&lt;br /&gt;
* The number of Agents in a single Sidebar or Business Cards is limited by the length of the sidebar/business card configuration. Just over 100 agents will normally not be a problem. From V15r1sr4 onwards a config check has been built in to prevent too lengthy configurations, so this version is recommended for sidebars and business cards with plenty of agents.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&amp;lt;big&amp;gt;If an issue can be reproduced&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Web visitor in a browser.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The myApps web uses the logging facilities provided by the browser it runs in (i.e. JavaScript function &amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt;).  In most browser this is available as &#039;&#039;Console&#039;&#039; after pressing F12.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*The called agent working with myApps client.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[Reference14r1:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*Troubleshooting AP Services on the AP.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Courseware:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs]]&lt;br /&gt;
&lt;br /&gt;
Go to the AP Manager and select the App instance from the Contact Widgets App. &lt;br /&gt;
Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|none|AP-Diagnostics]]&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|none|AP-Diagnostics-Logging]]&lt;br /&gt;
= Related Articles =&lt;br /&gt;
[[Howto14r1:Install_Contact_Widget_App|Howto14r1:Install_Contact_Widget_App]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Configure_OAuth2_E-Mail&amp;diff=79696</id>
		<title>Howto16r1:Configure OAuth2 E-Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Configure_OAuth2_E-Mail&amp;diff=79696"/>
		<updated>2026-04-28T12:12:21Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The innovaphone PBX and apps can be configured to send E-Mails for various subjects and purposes. Major E-Mail providers intent to discontinue the username/password authentication schemes in favour of OAuth2. PBX and Apps version 16r1 does support OAuth2 authentication for SMTP. Here is a step by step guide how to set up OAuth2 support in Microsoft 365 through the Azure Portal and how to set it up on a Google Gmail account in the Google Cloud Console.&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
Most of the large email providers offer the possibility to define an app that is allowed to gain access of a certain scope like SMTP. &amp;lt;br&amp;gt;&lt;br /&gt;
It assigns a Client ID / Client Secret.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Authorization for sending from the mail account needs to be given one time either:&amp;lt;br&amp;gt;&lt;br /&gt;
* By providing resource owner username/password. Sending this to the token endpoint results in an access token and long term refresh token.&lt;br /&gt;
* By interactive authorization via a popup dialogue that is loaded from the authorization endpoint. After the credentials are verified, the dialogue redirects to the redirect URI with an authorization code that is traded to an access token and refresh token.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The access token is sent for authentication in SMTP. It needs regular refresh, which will be done automatically.&lt;br /&gt;
&lt;br /&gt;
=== Modes ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Exchange&#039;&#039;&#039;: Microsoft, with interactive authorization&lt;br /&gt;
* &#039;&#039;&#039;Microsoft 365&#039;&#039;&#039;: Microsoft, without interactive authorization (Resource owner and password has to be filled)&lt;br /&gt;
* &#039;&#039;&#039;Gmail&#039;&#039;&#039;: Google, with interactive authorization&lt;br /&gt;
* &#039;&#039;&#039;Google Service Account&#039;&#039;&#039;:  Google, without interactive authorization (Client e-mail, Private Key ID and Private Key of the service account must be provided)&lt;br /&gt;
* &#039;&#039;&#039;Client secret post&#039;&#039;&#039;: Generic configuration where all parameters of the client secret post OAuth2 flow can be set.&lt;br /&gt;
* &#039;&#039;&#039;Private key jwt&#039;&#039;&#039;: Generic configuration where all parameters of the private key jwt OAuth2 flow can be set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example Redirect URIs ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-pbx.domain.com/OAUTH2-CLIENT/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Reporting&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/reporting/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Fax&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/fax/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Users&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/usersapp/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Connect&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/domain.com/messages/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;AP Manager&#039;&#039;&#039;: &amp;lt;nowiki&amp;gt;https://example-ap.domain.com/manager/auth.htm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Microsoft 365 ==&lt;br /&gt;
=== Azure Portal ===&lt;br /&gt;
Log in to Microsoft Azure Portal (https://portal.azure.com) and go to Microsoft Entra ID.&lt;br /&gt;
[[File:AzureMicrosoftEntraID.png|none|thumb|600x600px|/AzureMicrosoftEntraID.png|/AzureMicrosoftEntraID.png]]&lt;br /&gt;
Add a new app registration to create client credentials.&lt;br /&gt;
[[File:AzureAddAppRegistration.png|none|thumb|600x600px|/AzureAddAppRegistration.png|/AzureAddAppRegistration.png]]&lt;br /&gt;
Register the application and maybe already fill in the redirect URI for Web based application type to path OAUTH2-CLIENT/auth.htm at the PBX.&lt;br /&gt;
[[File:AzureRegisterAnApplication.png|none|thumb|600x600px|/AzureRegisterAnApplication.png|/AzureRegisterAnApplication.png]]&lt;br /&gt;
App registration is complete. Client ID and tenant needs to be configured at the PBX and every app that will be sending e-mails.&lt;br /&gt;
[[File:AzureApp.png|none|thumb|600x600px|/AzureApp.png|/AzureApp.png]]&lt;br /&gt;
Create a client secret. Note that expiry is limited to no longer than 2 years. The client secret must be renewed before expiry and the new secret configured and interactive authorisation carried out again to ensure continuous operation.&lt;br /&gt;
[[File:AzureAddClientSecret.png|none|thumb|600x600px|/AzureAddClientSecret.png|/AzureAddClientSecret.png]]&lt;br /&gt;
Copy the client secret. It also needs to be configured at the PBX and every app that will be sending e-mails.&lt;br /&gt;
[[File:AzureCopyClientSecret.png|none|thumb|600x600px|/AzureCopyClientSecret.png|/AzureCopyClientSecret.png]]&lt;br /&gt;
Add permissions located in APIs my organization uses.&lt;br /&gt;
[[File:AzureAddApiPermissionMyOrganization.png|none|thumb|600x600px|/AzureAddApiPermissionMyOrganization.png|/AzureAddApiPermissionMyOrganization.png]]&lt;br /&gt;
More precisely located in Office 365 Exchange Online.&lt;br /&gt;
[[File:AzureAddApiPermissionExchange.png|none|thumb|600x600px|/AzureAddApiPermissionExchange.png|/AzureAddApiPermissionExchange.png]]&lt;br /&gt;
And there in the application permissions.&lt;br /&gt;
[[File:AzureAddApiExchangeApplication.png|none|thumb|600x600px|/AzureAddApiExchangeApplication.png|/AzureAddApiExchangeApplication.png]]&lt;br /&gt;
Namely SMTP Mail.Send.&lt;br /&gt;
[[File:AzureAddApiSendMailAsUser.png|none|thumb|600x600px|/AzureAddApiSendMailAsUser.png|/AzureAddApiSendMailAsUser.png]]&lt;br /&gt;
Grant admin permission for Mail.Send.&lt;br /&gt;
[[File:AzureGrantApiPermissions.png|none|thumb|600x600px|/AzureGrantApiPermissions.png|/AzureGrantApiPermissions.png]]&lt;br /&gt;
API permissions are now granted.&lt;br /&gt;
[[File:AzureApiPermissionsGranted.png|none|thumb|600x600px|/AzureApiPermissionsGranted.png|/AzureApiPermissionsGranted.png]]&lt;br /&gt;
Tell all redirect URIs that the PBX and the apps will be using during interactive authorization.&lt;br /&gt;
[[File:AzureRedirectUris.png|none|thumb|600x600px|/AzureRedirectUris.png|/AzureRedirectUris.png]]&lt;br /&gt;
Allow public client flows of OAuth2. Resource Owner Password Credentials Flow has the advantage that it doesn&#039;t need interactive authorization.&lt;br /&gt;
[[File:AzureAllowPublicClientFlows.png|none|thumb|600x600px|/AzureAllowPublicClientFlows.png|/AzureAllowPublicClientFlows.png]]&lt;br /&gt;
&lt;br /&gt;
=== Microsoft 365 admin center ===&lt;br /&gt;
Log in to the Microsoft 365 admin center (https://admin.cloud.microsoft).&lt;br /&gt;
[[File:MS365AdminCenter.png|none|thumb|600x600px|/MS365AdminCenter.png|/MS365AdminCenter.png]]&lt;br /&gt;
Make sure that Microsoft 365 licenses are assigned to your user.&lt;br /&gt;
[[File:MS365UserLicenses.png|none|thumb|600x600px|/MS365UserLicenses.png|/MS365UserLicenses.png]]&lt;br /&gt;
Set your user active.&lt;br /&gt;
[[File:MS365ActiveUsers.png|none|thumb|600x600px|/MS365ActiveUsers.png|/MS365ActiveUsers.png]]&lt;br /&gt;
Locate the Mail tab of your user.&lt;br /&gt;
[[File:MS365UserEMail.png|none|thumb|600x600px|/MS365UserEMail.png|/MS365UserEMail.png]]&lt;br /&gt;
Allow authenticated SMTP.&lt;br /&gt;
[[File:MS365AuthenticatedSMTP.png|none|thumb|600x600px|/MS365AuthenticatedSMTP.png|/MS365AuthenticatedSMTP.png]]&lt;br /&gt;
&lt;br /&gt;
=== Exchange admin center ===&lt;br /&gt;
Login to the Exchange admin center (https://admin.exchange.microsoft.com).&lt;br /&gt;
[[File:ExchangeAdminCenter.png|none|thumb|600x600px|/ExchangeAdminCenter.png|/ExchangeAdminCenter.png]]&lt;br /&gt;
Remove deactivation of the SMTP AUTH protocol.&lt;br /&gt;
[[File:ExchangeRemoveDeavtivatedOAuth2.png|none|thumb|600x600px|/ExchangeRemoveDeavtivatedOAuth2.png|/ExchangeRemoveDeavtivatedOAuth2.png]]&lt;br /&gt;
&lt;br /&gt;
=== PBX Example configuration === &lt;br /&gt;
With this Microsoft setup the OAuth2 configuration for the resource owner password credentials flow can be filled in as follows. &lt;br /&gt;
[[File:OAuth2ResourceOwnerPasswordCredentials.png|none|thumb|600x600px|/OAuth2ResourceOwnerPasswordCredentials.png|/OAuth2ResourceOwnerPasswordCredentials.png]]&lt;br /&gt;
For interactive authorization this is the OAuth2 configuration. Authorize e-mail access one time and send a test mail to verify everything went well.&lt;br /&gt;
[[File:OAuth2InteractiveAuthorization.png|none|thumb|600x600px|/OAuth2InteractiveAuthorization.png|/OAuth2InteractiveAuthorization.png]]&lt;br /&gt;
&lt;br /&gt;
== Gmail ==&lt;br /&gt;
=== Preparations === &lt;br /&gt;
Login to the Google Cloud Console (https://console.cloud.google.com), select a project, New project.&lt;br /&gt;
[[File:GoogleSelectProject.png|none|thumb|600x600px|/GoogleSelectProject.png|/GoogleSelectProject.png]]&lt;br /&gt;
Create the project.&lt;br /&gt;
[[File:GoogleCreateProject.png|none|thumb|600x600px|/GoogleCreateProject.png|/GoogleCreateProject.png]]&lt;br /&gt;
Client credentials will be created in this project.&lt;br /&gt;
[[File:GoogleProjectCreated.png|none|thumb|600x600px|/GoogleProjectCreated.png|/GoogleProjectCreated.png]]&lt;br /&gt;
From the library specify the APIs needed to access.&lt;br /&gt;
[[File:GoogleApisServicesFromLibrary.png|none|thumb|600x600px|/GoogleApisServicesFromLibrary.png|/GoogleApisServicesFromLibrary.png]]&lt;br /&gt;
These are in the Gmail API.&lt;br /&gt;
[[File:GoogleApisServicesApiLibrary.png|none|thumb|600x600px|/GoogleApisServicesApiLibrary.png|/GoogleApisServicesApiLibrary.png]]&lt;br /&gt;
Choose the Gmail API and enable it.&lt;br /&gt;
[[File:GoogleGmailApis.png|none|thumb|600x600px|/GoogleGmailApis.png|/GoogleGmailApis.png]]&lt;br /&gt;
Credentials need to be created.&lt;br /&gt;
[[File:GoogleGmailApiAdded.png|none|thumb|600x600px|/GoogleGmailApiAdded.png|/GoogleGmailApiAdded.png]]&lt;br /&gt;
Invoke the help me choose wizard.&lt;br /&gt;
[[File:GoogleCreateCredentialsHelpMeChoose.png|none|thumb|600x600px|/GoogleCreateCredentialsHelpMeChoose.png|/GoogleCreateCredentialsHelpMeChoose.png]]&lt;br /&gt;
User data access is needed.&lt;br /&gt;
[[File:GoogleCredentialsUserData.png|none|thumb|600x600px|/GoogleCredentialsUserData.png|/GoogleCredentialsUserData.png]]&lt;br /&gt;
Configure the consent screen of the interactive authorization.&lt;br /&gt;
[[File:GoogleOAuthConsentScreen.png|none|thumb|600x600px|/GoogleOAuthConsentScreen.png|/GoogleOAuthConsentScreen.png]]&lt;br /&gt;
Specify the permissions that need to be authorized by the user.&lt;br /&gt;
[[File:GoogleOAuthScopes.png|none|thumb|600x600px|/GoogleOAuthScopes.png|/GoogleOAuthScopes.png]]&lt;br /&gt;
Its mail.google.com in general.&lt;br /&gt;
[[File:GoogleScopeMailGoogleCom.png|none|thumb|600x600px|/GoogleScopeMailGoogleCom.png|/GoogleScopeMailGoogleCom.png]]&lt;br /&gt;
And its to send email on the users behalf.&lt;br /&gt;
[[File:GoogleScopeAuthGmailSend.png|none|thumb|600x600px|/GoogleScopeAuthGmailSend.png|/GoogleScopeAuthGmailSend.png]]&lt;br /&gt;
These are the scopes needed.&lt;br /&gt;
[[File:GoogleScopes.png|none|thumb|600x600px|/GoogleScopes.png|/GoogleScopes.png]]&lt;br /&gt;
Ask client credentials for Web type application.&lt;br /&gt;
[[File:GoogleOAuthClientID.png|none|thumb|600x600px|/GoogleOAuthClientID.png|/GoogleOAuthClientID.png]]&lt;br /&gt;
Tell all redirect URIs that the PBX and the apps will be using during interactive authorization.&lt;br /&gt;
[[File:GoogleRedirectURIs.png|none|thumb|600x600px|/GoogleRedirectURIs.png|/GoogleRedirectURIs.png]]&lt;br /&gt;
Download the credentials. This json file contains all information for OAuth2 configuration.&lt;br /&gt;
[[File:GoogleClientCredentialsDownload.png|none|thumb|600x600px|/GoogleClientCredentialsDownload.png|/GoogleClientCredentialsDownload.png]]&lt;br /&gt;
Customize the OAuth consent screen&lt;br /&gt;
[[File:GoogleOAuthConsentScreenSettings.png|none|thumb|600x600px|/GoogleOAuthConsentScreenSettings.png|/GoogleOAuthConsentScreenSettings.png]]&lt;br /&gt;
Start the customization wizard.&lt;br /&gt;
[[File:GoogleConsentScreenWizard.png|none|thumb|600x600px|/GoogleConsentScreenWizard.png|/GoogleConsentScreenWizard.png]]&lt;br /&gt;
Choose which users may authorize.&lt;br /&gt;
[[File:GoogleAudienceExternal.png|none|thumb|600x600px|/GoogleAudienceExternal.png|/GoogleAudienceExternal.png]]&lt;br /&gt;
Google workspace users may choose internal audience. Users not in Google workspace proceed with external.&lt;br /&gt;
[[File:GoogleContactInformation.png|none|thumb|600x600px|/GoogleContactInformation.png|/GoogleContactInformation.png]]&lt;br /&gt;
Add a test user.&lt;br /&gt;
[[File:GoogleTestUserAdded.png|none|thumb|600x600px|/GoogleTestUserAdded.png|/GoogleTestUserAdded.png]]&lt;br /&gt;
&lt;br /&gt;
=== PBX Example configuration === &lt;br /&gt;
The OAuth2 parameters can be filled in with the information from the json file downloaded above. Authorize e-mail access one time and send a test mail to verify everything went well.&lt;br /&gt;
[[File:OAuth2InteractiveGmail.png|none|thumb|600x600px|/OAuth2InteractiveGmail.png|/OAuth2InteractiveGmail.png]]&lt;br /&gt;
&lt;br /&gt;
== Generic ==&lt;br /&gt;
&lt;br /&gt;
For other e-mail providers the client secret post OAuth2 flow may be configured in a generic way. Details need to be supplied by the e-mail provider.&lt;br /&gt;
&lt;br /&gt;
For the Microsoft 365 setup above it would be as follows with Token endpoint &#039;&#039;&amp;lt;nowiki&amp;gt;https://login.microsoftonline.com/af326a34-169c-469e-946b-1ef57925306b/oauth2/v2.0/token&amp;lt;/nowiki&amp;gt;&#039;&#039; Authorization URL &#039;&#039;&amp;lt;nowiki&amp;gt;https://login.microsoftonline.com/af326a34-169c-469e-946b-1ef57925306b/oauth2/v2.0/authorize?scope=https://outlook.office.com/SMTP.Send&amp;lt;/nowiki&amp;gt; offline_access&#039;&#039; The configuration appends &#039;&#039;&amp;amp;response_type=code&amp;amp;prompt=consent&amp;amp;login_hint=...&amp;amp;redirect_uri=...&amp;amp;client_id=...&#039;&#039; automatically.[[File:OAuth2ClientSecretPost.png|none|thumb|600x600px|/OAuth2ClientSecretPost.png|/OAuth2ClientSecretPost.png]]&lt;br /&gt;
For the Gmail example above the generic confguration would be like this with Token endpoint &#039;&#039;&amp;lt;nowiki&amp;gt;https://oauth2.googleapis.com/token&amp;lt;/nowiki&amp;gt;&#039;&#039; Authorization URL &#039;&#039;&amp;lt;nowiki&amp;gt;https://accounts.google.com/o/oauth2/auth?access_type=offline&amp;amp;scope=https://mail.google.com/&amp;lt;/nowiki&amp;gt;&#039;&#039; The configuration appends &#039;&#039;&amp;amp;response_type=code&amp;amp;prompt=consent&amp;amp;login_hint=...&amp;amp;redirect_uri=...&amp;amp;client_id=...&#039;&#039; automatically.&lt;br /&gt;
[[File:OAith2ClientSecretPostGmail.png|none|thumb|600x600px|/OAith2ClientSecretPostGmail.png|/OAith2ClientSecretPostGmail.png]]&lt;br /&gt;
The private key jwt OAuth2 flow can be configured generically as well.[[File:OAuth2PrivateKeyJWT.png|none|thumb|600x600px|/OAuth2PrivateKeyJWT.png|/OAuth2PrivateKeyJWT.png]]&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference16r1:PBX/Config/Authentication]]&lt;br /&gt;
* [[Reference16r1:Apps/PbxManager/Email]]&lt;br /&gt;
* [[Reference16r1:Concept App Connect#E-Mail configuration]]&lt;br /&gt;
* [[Reference16r1:Concept App Service Fax#Mail Configuration (SMTP_Server)]]&lt;br /&gt;
* [[Reference16r1:Concept App Service Reports#Configuration]]&lt;br /&gt;
* [[Reference16r1:Concept App Service Users#Users Admin App (innovaphone-usersadmin)]]&lt;br /&gt;
* [[Reference16r1:Concept App Platform#SMTP]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto16r1:Conferences,_Resources_and_Licenses&amp;diff=79695</id>
		<title>Howto16r1:Conferences, Resources and Licenses</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto16r1:Conferences,_Resources_and_Licenses&amp;diff=79695"/>
		<updated>2026-04-28T12:11:47Z</updated>

		<summary type="html">&lt;p&gt;Slu: &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 innovaphone devices supporting a &#039;&#039;CONF&#039;&#039; or &#039;&#039;SCNF&#039;&#039; interface and hence &#039;&#039;Conference Channels&#039;&#039; (as shown in the devices home-page).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: Konferenzen, Lizenzen, 3PTY, 3er Konferenz 3erkonferenz, multi-party conference, mehrfachkonferenz, conferencing, conferences, conference scaler --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
Performing conferencing on a [[Reference10:Gateway/Interfaces#Conferencing interface .28CONF.29| &#039;&#039;CONF or SCNF&#039;&#039; interface]] consumes both resources and licenses. Here is an overview of which and how much. &lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
First let us have a look at the overall scheme:&lt;br /&gt;
&lt;br /&gt;
[[Image:Conferences_Ressources_and_Licenses_-_Scheme2_G722.png|conferences_ressources_and_licenses_-_scheme2_g722.png/|conferences_ressources_and_licenses_-_scheme2_g722.png/]]&lt;br /&gt;
&lt;br /&gt;
==== Coder channels ====&lt;br /&gt;
Both the &#039;&#039;CONF&#039;&#039; and &#039;&#039;SCNF&#039;&#039; interface provides the mixing of 8KHz G711 PCM audio channels. &lt;br /&gt;
&lt;br /&gt;
If a call is done towards a CONF interface, it will allocate a &#039;&#039;Coder channel&#039;&#039; from the DSP coder channel bank for processing of the audio from the VoIP codec (e.g. G.711, G.722, OPUS) to PCM audio. &lt;br /&gt;
&lt;br /&gt;
The SCNF supports G.711a/u and G.722 coder. No &#039;&#039;Coder channel&#039;&#039; needs to be allocated for a call.&lt;br /&gt;
&lt;br /&gt;
==== (Soft) Conference Channels ====&lt;br /&gt;
Each call to a CONF interface consumes one of the &#039;&#039;Conference Channels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Each call to an SCNF interface consumes one of the &#039;&#039;Soft Conference Channels&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Channels license ====&lt;br /&gt;
&lt;br /&gt;
In addition to that, a call to either the CONF or SCNF requires a &#039;&#039;Channel&#039;&#039; license. This license can be obtained from the PBX if the  &#039;&#039;PBX Channels licenses&#039;&#039; switch in the PBX [[Reference13r1:PBX/Objects/Conference| &#039;&#039;Conference&#039;&#039; object]] is activated (if the call comes through such an object) or the &#039;&#039;Obtain Channels lic on outgoing call&#039;&#039; check-mark is ticked in a [[Reference13r1:PBX/Objects/Gateway| PBX &#039;&#039;Gateway&#039;&#039; object]] (if the call comes through such an object).  For this, &#039;&#039;PBX Channels licenses&#039;&#039; must be installed on the PBX.&lt;br /&gt;
&lt;br /&gt;
This is the recommended configuration.  However, the &#039;&#039;Channel&#039;&#039; license can also be obtained locally from the gateway where the CONF/SCNF is located on. All innovaphone gateways have a number of &#039;&#039;Channel&#039;&#039; licenses built-in. The number of licenses available is equal to the number of &#039;&#039;Coder&#039;&#039; channels the box supports.  If no license is sent along with the call to the CONF or SCNF interface, the interface will try to obtain one from the pool of built-in licenses. This can save you some cost.  However, be aware that these licenses (as well as the corresponding &#039;&#039;Channel&#039;&#039; coders) are also required for calls through the ISDN BRI/PRI interfaces or for audio fax calls. Calls to CONF/SCNF interfaces which consume local &#039;&#039;Channel&#039;&#039; licenses may inhibit such calls therefor. &lt;br /&gt;
&lt;br /&gt;
The PBX-Channels License has order no. 02-00020-007 according to chapter &amp;quot;3.5 PBX Channels license&amp;quot; in the [https://www.innovaphone.com/content/downloads/innovaphone-Licensing%20Guidelines-V13r2-EN.pdf innovaphone license guide]. &lt;br /&gt;
&lt;br /&gt;
The [[Reference13r1:PBX/Config/General#License Status|status of the PBX Licenses]] shows assigned PBX-Channel licenses:&lt;br /&gt;
&lt;br /&gt;
[[Image:Conferences,_Ressources_and_Licenses_-_pbx-channel_license_01.png|conferences,_ressources_and_licenses_-_pbx-channel_license_01.png/|conferences,_ressources_and_licenses_-_pbx-channel_license_01.png/]]&lt;br /&gt;
&lt;br /&gt;
==== Port license ====&lt;br /&gt;
The registration of the CONF and/or SCNF to the PBX Conference object does not require a Port license.&lt;br /&gt;
&lt;br /&gt;
Although this is not directly related to the CONF or SCNF interface, please note that a single &#039;&#039;Port&#039;&#039; license is required if any of the rooms defined in a PBX &#039;&#039;Conference&#039;&#039; object is accessed using the conference web access (from 13r3).&lt;br /&gt;
&lt;br /&gt;
==== CPU usage ====&lt;br /&gt;
For a calculation of CPU usage see [[Howto:V13_Firmware_Upgrade_V13r2_V13r3#Conferences]].&lt;br /&gt;
&lt;br /&gt;
===Example Scenarios===&lt;br /&gt;
&lt;br /&gt;
====Conference on hardware gateway with local ISDN====&lt;br /&gt;
Let us assume we have a conference running on a CONF interface with one PSTN and 3 VoIP participants.  In this case, we have &lt;br /&gt;
&lt;br /&gt;
{| border=1 &lt;br /&gt;
| ||Caller || DSP Coder Channel ||  Conference Channel || PBX Channel License&lt;br /&gt;
|-&lt;br /&gt;
| ||1 PSTN || 1 (CONF) + 1 (ISDN) **|| 1  ||  1 &lt;br /&gt;
|-&lt;br /&gt;
| ||3 VoIP || 3|| 3 || 3 &lt;br /&gt;
|-&lt;br /&gt;
| Total || 4 || 5 || 4 || 4&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt;: {{FIXME|reason=do we need only one or would this require &#039;&#039;enable PCM&#039;&#039;?}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at an IP411, it supports the following resources:&lt;br /&gt;
&lt;br /&gt;
[[Image:Conferences,_Ressources_and_Licenses_-_example_gateway_channels_IP411.png|conferences,_ressources_and_licenses_-_example_gateway_channels_ip411.png/|conferences,_ressources_and_licenses_-_example_gateway_channels_ip411.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We can see that our sample scenario will not work on an IP411 as there are no &#039;&#039;Conference Channels&#039;&#039; available.  However, if we change the scenario so that an SCNF is used instead of a CONF, it would look as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=1 &lt;br /&gt;
| ||Caller || DSP Coder Channel ||  Soft Conference Channel || PBX Channel License&lt;br /&gt;
|-&lt;br /&gt;
| ||1 PSTN || 1 (ISDN) **|| 1  ||  1 &lt;br /&gt;
|-&lt;br /&gt;
| ||3 VoIP || 3|| 3 || 3 &lt;br /&gt;
|-&lt;br /&gt;
| Total || 4 || 4 || 4 || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This will work on an IP411.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3PTY Conferencing ===&lt;br /&gt;
3-way conferencing is special as it is usually implemented internally in the innovaphone IP phones.  That is, each user of an innovaphone IP phone (except the IP61) has internal conferencing resources built-in to allow for a 3-way conference.  No external &#039;&#039;CONF/SCNF&#039;&#039; interface is needed.&lt;br /&gt;
&lt;br /&gt;
However, on innovaphone DECT phones, no internal conferencing resource is present and hence no internal 3PTY is possible.  The DECT system can thus be [[Reference9:3pty conference on DECT phones|configured to use an external conferencing resource]] for 3PTY.  In this case, the rules above apply.&lt;br /&gt;
&lt;br /&gt;
=== Conference Scaler ===&lt;br /&gt;
With 16r1 we introduce a new App &amp;quot;Conference Scaler&amp;quot;, with the Conference Scaler it is possible to cluster multiple SCNF Interfaces into one registering Endpoint at a conference Object, for more please refer to [[Reference16r1:Concept App Service Conference Scaler| &#039;&#039;the concept article&#039;&#039;]] &lt;br /&gt;
&lt;br /&gt;
==== Ressource consideration ====&lt;br /&gt;
===== Conference Channels =====&lt;br /&gt;
If using the conference scaler and multiple interfaces you need to take into account to be sure how much conference channels are actually used, even if they are not be seen.&lt;br /&gt;
Let&#039;s have a look what happens for each room inside a Conference object that uses the conference scaler:&lt;br /&gt;
&lt;br /&gt;
* As soon as a room has been opened on more than one interface (this will be the case when having at least 2 participants), the audio is only transmitted between the Interface and the locally connected participants&lt;br /&gt;
** To share audio between interfaces, the conference scaler will allocate a RTP Port on both interfaces&lt;br /&gt;
** This Socket will be exchanged between both interfaces, so that both interfaces know where to connect to&lt;br /&gt;
** Now, as both interfaces have the needed information, both interfaces will join to the other Interface as an &amp;quot;invisible&amp;quot; participant, taking up one more extra conference channel on both interfaces&lt;br /&gt;
* As we have learned in the concept article, the conference scaler will allocate one random interface as primary interface, this Primary interface will then be used to connect all used interfaces and mixing the audio. Let&#039;s go through this with our already existing scenario:&lt;br /&gt;
** Now we have two participants on two interfaces which are connected together ( and the conference scaler has already selected Interface 1 as the primary interface in the beginning of the conference call)&lt;br /&gt;
** Another participant joins the conference call, therefore this room will also be opened at interface 3&lt;br /&gt;
** As Interface 1 is the primary Interface, interface 3 will join the conference room ONLY at interface 1, taking up another conference channel as &amp;quot;invisible&amp;quot; participant (Interface 3 does not need to join interface 2 because the audio from interface 2 is already transmitted to interface 1, our primary interface)&lt;br /&gt;
** Interface 1 will also join interface 3 as &amp;quot;invisible&amp;quot; participant, taking up one conference channel on interface 3&lt;br /&gt;
* Now we have 2 Interfaces connected to interface 1 and interface 1 is connected to 2 interfaces as participant&lt;br /&gt;
* This is the flow for every conference room you are using at that conference object, for the next room the conference scaler might select Interface 3 as primary interface, in this case he will join both interfaces as participant and vice versa (also taking up conference channels here as well) - but only if this conference call has at least these 3 participants (as the interfaces will be used in a round robin manner)&lt;br /&gt;
* The primary inertface will now receive audio from both interfaces, which will be the mixed audio from both interfaces, and distributes it to the other interfaces + it&#039;s own audio mixed together&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Room 1 it will look like this:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Interface 1 (Primary Interface)&lt;br /&gt;
!Interface 2&lt;br /&gt;
!Interface 3&lt;br /&gt;
|-&lt;br /&gt;
|Participant 1&lt;br /&gt;
|Participant 2&lt;br /&gt;
|Participant 3&lt;br /&gt;
|-&lt;br /&gt;
|Interface 2 (&amp;quot;invisbile participant&amp;quot;)&lt;br /&gt;
|Interface 1 (&amp;quot;invisbile participant&amp;quot;)&lt;br /&gt;
|Interface 1 (&amp;quot;invisbile participant&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|Interface 3 (&amp;quot;invisbile participant&amp;quot;)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Reference9:Concept myPBX]]&lt;br /&gt;
* [[Reference10:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
* [[Reference9:3pty conference on DECT phones]]&lt;br /&gt;
* [[Reference10:Gateway/Interfaces#Conferencing_interface_.28CONF.29]]&lt;br /&gt;
* [[Howto:How_to_implement_large_PBXs#Technical_data_and_recommended_number_of_users_supported]], lists DSP and CONF resources for the different gateway platforms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Concept Conference]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:PBX/Config/Authentication&amp;diff=79694</id>
		<title>Reference16r1:PBX/Config/Authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:PBX/Config/Authentication&amp;diff=79694"/>
		<updated>2026-04-28T12:10:04Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept_OAuth2]]&lt;br /&gt;
[[Category:Concept_myApps]]&lt;br /&gt;
The authentication for myApps and myPBX is configured on this page. &lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
== Authentication ==&lt;br /&gt;
* &#039;&#039;&#039;Two-factor authentication&#039;&#039;&#039; Requires users to additionally approve their logins using an existing session or by clicking a link sent via email. (myApps only)&lt;br /&gt;
* &#039;&#039;&#039;Authentication type&#039;&#039;&#039; (myApps and myPBX)&lt;br /&gt;
** &#039;&#039;&#039;PBX only&#039;&#039;&#039; Login is allowed with PBX user password only.&lt;br /&gt;
** &#039;&#039;&#039;Netlogon only&#039;&#039;&#039; Login is allowed with Windows password only.&lt;br /&gt;
** &#039;&#039;&#039;PBX and Netlogon&#039;&#039;&#039; Login is allowed with both PBX user password and Windows password.&lt;br /&gt;
** &#039;&#039;&#039;OAuth2 only&#039;&#039;&#039; Login is allowed with OpenID/OAuth2 only. (myApps only)&lt;br /&gt;
** &#039;&#039;&#039;PBX and OAuth2&#039;&#039;&#039; Login is allowed with both PBX user password and OpenId/OAuth2. (myApps only)&lt;br /&gt;
* &#039;&#039;&#039;OAuth2 provider name&#039;&#039;&#039; A user friendly name of the OAuth2 provider that shall be displayed on the login form, e.g. &amp;quot;Windows&amp;quot; or &amp;quot;Active Directory&amp;quot;. (myApps only)&lt;br /&gt;
* &#039;&#039;&#039;OAuth2 domain&#039;&#039;&#039; This configuration is needed, if the OAuth2 user domain does not match the PBX domain. If a domain is configured, users of that domain will be treated like members of the PBX domain.&lt;br /&gt;
** Example: No domain configured. user@example.com -&amp;gt; user@example.com&lt;br /&gt;
** Example: example.com configured. user@example.com -&amp;gt; user&lt;br /&gt;
&lt;br /&gt;
== Email verification ==&lt;br /&gt;
An email account that is used by the PBX for sending mails. It is used for:&lt;br /&gt;
* Sending verification emails for two-factor authentication.&lt;br /&gt;
* Emails from the voicemail object.&lt;br /&gt;
Configuration:&lt;br /&gt;
* &#039;&#039;&#039;SMTP server&#039;&#039;&#039; The IP address or DNS name of the SMTP server.&lt;br /&gt;
* &#039;&#039;&#039;Client host name&#039;&#039;&#039; The hostname or IP address for the EHLO message. Optional, defaulting to 127.0.0.1.&lt;br /&gt;
* &#039;&#039;&#039;Sender name&#039;&#039;&#039; A readable name that is used as the sender of the emails.&lt;br /&gt;
* &#039;&#039;&#039;Email address&#039;&#039;&#039; The email address for sending mails.&lt;br /&gt;
* &#039;&#039;&#039;Username&#039;&#039;&#039; The username of the email account.&lt;br /&gt;
* &#039;&#039;&#039;Password&#039;&#039;&#039; The password of the email account.&lt;br /&gt;
* &#039;&#039;&#039;OAuth2&#039;&#039;&#039; Alternatively OAuth2 credentials to authenticate for e-mail sending. See [[Howto16r1:Configure_OAuth2_E-Mail]].&lt;br /&gt;
* &#039;&#039;&#039;Verification link&#039;&#039;&#039; The link that is used for accepting or rejecting sessions. Configure &amp;lt;code&amp;gt;https://PBX-IP-or-DNS-name/PBX0/session.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test&#039;&#039;&#039; Here you can send a test mail using the configured account.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
[[Reference16r1:Concept OAuth2 Windows Authentication]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto16r1:Configure_OAuth2_E-Mail]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Logging&amp;diff=79693</id>
		<title>Reference16r1:Services/Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Services/Logging&amp;diff=79693"/>
		<updated>2026-04-28T12:09:46Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Log Server ==&lt;br /&gt;
External &#039;&#039;&#039;logging&#039;&#039;&#039; is disabled by default (Off). You can still view log messages in real time (see [[Reference7:Administration/Diagnostics/Logging|Logging]]), but messages are not stored or sent to an external destination.&lt;br /&gt;
&lt;br /&gt;
Available &#039;&#039;Type&#039;&#039;s:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Off:&#039;&#039;&#039;&lt;br /&gt;
| Logging is disabled.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;TCP:&#039;&#039;&#039;&lt;br /&gt;
| The device transmits the syslog entries using a TCP connection.&lt;br /&gt;
* In the &#039;&#039;&#039;Address&#039;&#039;&#039; field, the remote IP-address is entered.&lt;br /&gt;
* In the &#039;&#039;&#039;Port&#039;&#039;&#039; field, the remote port is specified.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;SYSLOG:&#039;&#039;&#039;&lt;br /&gt;
| The syslog entries are transmitted to a syslog recipient (also referred to as syslogd, syslog server or syslog daemon).&lt;br /&gt;
* In the &#039;&#039;&#039;Address&#039;&#039;&#039; field, the IP-address of the syslogd server is entered.&lt;br /&gt;
* In the &#039;&#039;&#039;Class&#039;&#039;&#039; field, the syslog message class for the syslog entries sent is entered. The class is a numeric value between 0 and 7, it will be used as &#039;&#039;Facility&#039;&#039; (0 =&amp;gt; local0, ... 7 =&amp;gt; local7).  The &#039;&#039;Severity&#039;&#039; field will always be 6 (informational).  See [http://de.wikipedia.org/wiki/Syslog wikipedia.org/wiki/Syslog] for details.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;HTTP:&#039;&#039;&#039;&lt;br /&gt;
| The syslog entries are transferred to a web server. Each individual syslog entry is transferred to the server as an individual request. &lt;br /&gt;
* In the &#039;&#039;&#039;Address&#039;&#039;&#039; field, the IP-address of remote server is entered.&lt;br /&gt;
* In the &#039;&#039;&#039;Path&#039;&#039;&#039; field, the relative URL to be used in the HTTP request is entered.&lt;br /&gt;
* The Method field selects the method used to send the request. There are 3 formats available:&lt;br /&gt;
{|&lt;br /&gt;
| Format || Request Type || URI  || Description&lt;br /&gt;
|-&lt;br /&gt;
| Standard || POST || &#039;&#039;hardwired&#039;&#039; || This should be used to forward log messages to another innovaphone device, e.g. to store it on a central CF card&lt;br /&gt;
|-&lt;br /&gt;
| External(POST) || POST || as defined in the Path field || This is identical to the &#039;&#039;Standard&#039;&#039; method, except that you may specifiy the URI to be used&lt;br /&gt;
|-&lt;br /&gt;
| External(GET) || GET || as defined in the Path field || The log message will be coded into GET &#039;&#039;form data&#039;&#039; (a.k.a. &#039;&#039;query args&#039;&#039;). This method is compatible to the method used in firmware versions 5.01 and 6.&lt;br /&gt;
|}&lt;br /&gt;
For more information on HTTP request formatting, see [[Reference7:HTTP Request Message Format]].&lt;br /&gt;
&lt;br /&gt;
If the addressed Web server requires authentication, an &#039;&#039;Authenticated URL&#039;&#039; has to be configured on the [[Reference:Configuration/General/HTTP-Client|HTTP-Client]] Page. The &#039;&#039;URL&#039;&#039; constructed by the logger is shown right next to the &#039;&#039;Path&#039;&#039; field. It must be entered in exactly this format on the [[Reference:Configuration/General/HTTP-Client|HTTP-Client]] Page. The device has to be restarted after the &#039;&#039;Authenticated URL&#039;&#039; has been set. &lt;br /&gt;
|-  &lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;LOCAL:&#039;&#039;&#039;&lt;br /&gt;
| The syslog entries are saved to [[Reference:Administration/Diagnostics/CF|the local CF card]] into the &#039;&#039;&#039;/log&#039;&#039;&#039; directory, e.g. &#039;&#039;&#039;\\&#039;&#039;ipaddr&#039;&#039;\drive\CF0\log&#039;&#039;&#039;.  Log files named &#039;&#039;&#039;LOG0.&#039;&#039;n&#039;&#039;&#039;&#039;&#039; are created, where &#039;&#039;&#039;&#039;&#039;n&#039;&#039;&#039;&#039;&#039; goes from 0 to 3. The next log file is created when either the &#039;&#039;&#039;Max File Size&#039;&#039;&#039; is reached or the &#039;&#039;&#039;Backup Time&#039;&#039;&#039; has passed.  &#039;&#039;&#039;LOG0.0&#039;&#039;&#039; is the newest log file always.&lt;br /&gt;
&lt;br /&gt;
To concentrate all syslog messages to a single CF card, you would use the &#039;&#039;&#039;HTTP Log Server Type&#039;&#039;&#039; in all but one boxes with &#039;&#039;&#039;Method&#039;&#039;&#039; set to &#039;&#039;&#039;Standard&#039;&#039;&#039;.  &#039;&#039;&#039;Address&#039;&#039;&#039; must be set to the IP-address of the single box that has the CF card used for log message storage. &#039;&#039;&#039;Port&#039;&#039;&#039; must be set to  the port configured for the [[Reference:Configuration/General/HTTP-Server|HTTP-Server]] of this box.  &lt;br /&gt;
&lt;br /&gt;
|-  &lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;LOCAL-AP:&#039;&#039;&#039;&lt;br /&gt;
|The logs are transmitted to the local Linux application platform. Logs are stored under \\AP-IP\webdav\log\ and alarms under \\AP-IP\webdav\alarm\&lt;br /&gt;
|-  &lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;REMOTE-AP:&#039;&#039;&#039;&lt;br /&gt;
|The logs are transmitted to a remote Linux application platform. Store path is the same as under LOCAL-AP.&lt;br /&gt;
* In the Address  field, you enter the IP address of the remote Linux application platform.&lt;br /&gt;
* In the Port field, you specify the port to which the connection is set up.&lt;br /&gt;
Remark: Don&#039;t forget to enable access to \\AP-IP\ap\log.fcgi as [[Reference10:Concept_Linux_Application_Platform#Use_as_Log_or_Alarm_Server | required for use of LinAP as logserver]].&lt;br /&gt;
|-  &lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;REMOTE-AP-S:&#039;&#039;&#039;&lt;br /&gt;
|Same as REMOTE-AP, just a secure transmission is used.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A second server may be configured as &#039;&#039;&#039;Log Server Shadow&#039;&#039;&#039; receiving the same records as the first server.&lt;br /&gt;
&lt;br /&gt;
== Alarm and Event Handling ==&lt;br /&gt;
Alarm and event forwarding is configured independently from the handling of log messages.&lt;br /&gt;
&lt;br /&gt;
If no &#039;&#039;&#039;Forward Server&#039;&#039;&#039; is configured in the &#039;&#039;&#039;Alarm and Event Forward Server&#039;&#039;&#039; area, alarms and events are stored locally as specified in the &#039;&#039;&#039;Local Alarm and Event Queues&#039;&#039;&#039; area below.  Otherwise, alarms and events are additionally forwarded to the external server using HTTP requests. Each individual alarm or event entry is transferred to the server as an individual request.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;SYSLOG&amp;lt;/code&amp;gt; option is only available on Gateway devices. Phones should use HTTP to forward alarm/events to an innovaphone gateway which may forward the collected events to a syslog server. &lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;Address&#039;&#039;&#039; is used to set the IP-address of an external HTTP server that will receive the forwarded alarms and events.&lt;br /&gt;
* The &#039;&#039;&#039;Port&#039;&#039;&#039; defines the TCP port the HTTP request is sent to.&lt;br /&gt;
* The &#039;&#039;&#039;Method&#039;&#039;&#039; selects the method used to send the the requests. The same methods as for the &#039;&#039;&#039;Log Server&#039;&#039;&#039; are available here. (only on gateways)&lt;br /&gt;
&lt;br /&gt;
To collect all alarms and events in a single device card, you would use the &#039;&#039;&#039;Standard Method&#039;&#039;&#039; in all but one boxes. &#039;&#039;&#039;Address&#039;&#039;&#039; must be set to the IP-address of the central box. &#039;&#039;&#039;Port&#039;&#039;&#039; must be set to the port configured for the [[{{NAMESPACE}}:Configuration/General/HTTP-Server|HTTP-Server]] of this box.&amp;lt;br/&amp;gt;&lt;br /&gt;
The collected alarms and events may further be forwarded to one or two SYSLOG server(s) as XML-encoded records. &lt;br /&gt;
This is achieved by configuring a &#039;&#039;&#039;Forward Server&#039;&#039;&#039; with &#039;&#039;&#039;Method&#039;&#039;&#039; SYSLOG, the server address under &#039;&#039;&#039;Address&#039;&#039;&#039; and the SYSLOG-Class under &#039;&#039;&#039;Class&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Local Alarm and Event Queues&#039;&#039;&#039; area allows you to control the number of events and alarms that are kept in memory and stored in non-volatile memory during restarts.&lt;br /&gt;
&lt;br /&gt;
== Alarms and Errors as Email ==&lt;br /&gt;
Definition of email target to send alarms and errors as email to.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Sender Address&#039;&#039;&#039;: email adress of sender&lt;br /&gt;
* &#039;&#039;&#039;Senders&#039; Name&#039;&#039;&#039;: alias of sender name&lt;br /&gt;
* &#039;&#039;&#039;Recipient Address&#039;&#039;&#039;: email adress of recipient&lt;br /&gt;
* &#039;&#039;&#039;Recipients&#039; Name&#039;&#039;&#039;: alias of recipient name&lt;br /&gt;
* &#039;&#039;&#039;Email Server Address&#039;&#039;&#039;: ip-adress or DNS name of smtp email server. TLS will be supported automatically, if demanded by the server. &lt;br /&gt;
* &#039;&#039;&#039;User&#039;&#039;&#039;: user account at email server&lt;br /&gt;
* &#039;&#039;&#039;Password&#039;&#039;&#039;: user password at email server&lt;br /&gt;
* &#039;&#039;&#039;OAuth2&#039;&#039;&#039;: Alternatively OAuth2 credentials to authenticate for e-mail sending. See [[Howto16r1:Configure_OAuth2_E-Mail]].&lt;br /&gt;
&lt;br /&gt;
== Handling of incoming Alarms/Events ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Authenticate:&#039;&#039;&#039;&lt;br /&gt;
| When enabled request HTTP Authentication for the incoming HTTP Alarms/Events messages. You must configure in the sender the HTTP credentials to be able to deliver the Alarms/Events. &lt;br /&gt;
|-&lt;br /&gt;
{|&lt;br /&gt;
== Local Alarm and Event Queues ==&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Memory Queue Entries:&#039;&#039;&#039;&lt;br /&gt;
| Maximum number of faults and alarms to hold in volatile memory (DRAM)(Default:100).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Persistent Queue Entries:&#039;&#039;&#039;&lt;br /&gt;
| Maximum number of faults and alarms to keep in flash memory (Default:50).&lt;br /&gt;
|-&lt;br /&gt;
{|&lt;br /&gt;
&lt;br /&gt;
== Catch trace on Event ==&lt;br /&gt;
&lt;br /&gt;
Event codes (up to 4 different) may be configured, on which the tracing is stopped. The event codes can be copied from actual events displayed on Maintenance/Events. Hexadecimal values was converted and stored as Decimal values.&lt;br /&gt;
&lt;br /&gt;
After the event has happend the trace was stopped, the trace can be read which hopefully contains what caused the event.&lt;br /&gt;
&lt;br /&gt;
You can restart the logfile by emptying the [[{{NAMESPACE}}:Maintenance/Diagnostics/Tracing |buffer]].&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_IP270&amp;diff=79691</id>
		<title>Reference16r1:Concept IP270</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_IP270&amp;diff=79691"/>
		<updated>2026-04-28T12:07:03Z</updated>

		<summary type="html">&lt;p&gt;Slu: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&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=79690</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=79690"/>
		<updated>2026-04-28T12:06:40Z</updated>

		<summary type="html">&lt;p&gt;Slu: &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;
* &#039;&#039;Nothing&#039;&#039;&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 Conference Scaler: [[Reference16r1:Concept Conference Scaler App]]&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=Reference16r1:Concept_App_Service_Projects&amp;diff=79689</id>
		<title>Reference16r1:Concept App Service Projects</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Projects&amp;diff=79689"/>
		<updated>2026-04-28T12:05:41Z</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 Projects]]&lt;br /&gt;
&amp;lt;!-- Project Management Sprints Backlog Tasks Templates --&amp;gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
The App Service Projects provides useful functionality to manage projects. It is built-on an hierarchical structure of areas, projects, backlog, sprints and tasks.&lt;br /&gt;
Projects uses the Connect Api to post messages automatically at specified events, e.g. task status updates, and integrates the Connect App window to allow user posts.&lt;br /&gt;
&lt;br /&gt;
== New V16r1 features ==&lt;br /&gt;
&lt;br /&gt;
= General Information =&lt;br /&gt;
== Projects items ==&lt;br /&gt;
Projects items consist of description, status and responsible person like project owner, sprint manager or task handler. &lt;br /&gt;
&lt;br /&gt;
=== Areas ===&lt;br /&gt;
The highest level items on the hierarchical structure of projects. E.g. to combine all projects of a department.&lt;br /&gt;
&amp;lt;br&amp;gt;User access rights to the whole area including all lower level items are defined during area definition. Three access levels are provided: public, user group specific or private areas.&lt;br /&gt;
&amp;lt;br&amp;gt;User groups are defined in the PBX. Protected areas and all their lower level items are invisible for unauthorized users. &lt;br /&gt;
&amp;lt;br&amp;gt;Areas may be defined as zones in Connect.&lt;br /&gt;
&lt;br /&gt;
=== Projects ===&lt;br /&gt;
A project consists of its description, status, the owner information and the area it belongs too. Projects may be filtered on area, project owner and/or attribute.&lt;br /&gt;
Projects typically contain several sprints and backlog entries.&lt;br /&gt;
Project tiles provides information about their sprints, backlog entries and tasks and a progress bar estimated on the story points of closed tasks / the story points of all tasks.&lt;br /&gt;
&lt;br /&gt;
=== Backlog ===&lt;br /&gt;
Container for any tasks and ideas to a project which are not in work yet. Backlog entries may be filtered on area, project, backlog entry handler and/or attribute.&lt;br /&gt;
&lt;br /&gt;
=== Sprints ===&lt;br /&gt;
&lt;br /&gt;
Sprints specify closed units of work which are subdivided typically in several tasks.&lt;br /&gt;
Sprint tiles provides information about their tasks and a progress bar estimated on the story points of closed tasks / the story points of all tasks.&lt;br /&gt;
A sprint consists of its description, status, the manager information and the project it belongs too. Sprints may be filtered on area, project, sprint manager and/or attribute.&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
Tasks are small units of work which are mostly handled by one person. &lt;br /&gt;
A task consists of its description, status, the handler information and the sprint it belongs too. Tasks may be filtered on area, project, sprint, task handler and/or attribute.&lt;br /&gt;
&lt;br /&gt;
== Other items and Projects users ==&lt;br /&gt;
&lt;br /&gt;
=== Attributes ===&lt;br /&gt;
Attributes are free defined, area independent flags. They may be assigned to all item types except areas. Attributes may be used as filter criteria.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
To define sprint and task templates for specific workflows. &lt;br /&gt;
&lt;br /&gt;
=== Projects users ===&lt;br /&gt;
Users are added automatically to projects as soon as they are logged in the first time. Only registered users can be assigned to Projects items.&lt;br /&gt;
&lt;br /&gt;
== Projects App UI concepts ==&lt;br /&gt;
The App Projects UI is subdivided into tabs that provide a structure that helps to organize projects, reflecting the Project Items: &#039;&#039;&#039;[[#Areas|Areas]]&#039;&#039;&#039;, &#039;&#039;&#039;[[#Projects|Projects]]&#039;&#039;&#039;, &#039;&#039;&#039;[[#Sprints|Sprints]] / [[#Backlog|Backlog]]&#039;&#039;&#039; and &#039;&#039;&#039;[[#Tasks|Tasks]]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Other extra tabs provide additional functionalities: &#039;&#039;&#039;[[#Attributes|Attributes]]&#039;&#039;&#039;, &#039;&#039;&#039;[[#Templates|Templates]]&#039;&#039;&#039; and &#039;&#039;&#039;[[#Users|Users]]&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Home&#039;&#039;&#039;-tab gives a quick and useful overview of all Current tasks and pinned Users/Areas/Projects and Sprints.&lt;br /&gt;
&lt;br /&gt;
Projects, Sprints and Tabs each consist of a board organising the &#039;&#039;&#039;Backlog&#039;&#039;&#039; or &#039;&#039;&#039;Planned&#039;&#039;&#039;, &#039;&#039;&#039;Current&#039;&#039;&#039; and &#039;&#039;&#039;Closed&#039;&#039;&#039; items.&lt;br /&gt;
&lt;br /&gt;
=== Filters ===&lt;br /&gt;
When selecting an item, it works as filter on lower level items. E.g. if an area is selected, only projects of that area are provided. All active filter definitions are shown in the corresponding tabs and may be removed there.&lt;br /&gt;
 &lt;br /&gt;
=== Item search ===&lt;br /&gt;
Item title / ID search is provided for projects, sprints, backlog entries and tasks in the corresponding tabs. The item search does not consider user filters.&lt;br /&gt;
&lt;br /&gt;
== Synchronisation ==&lt;br /&gt;
Updates on Projects items are synchronized immediately.&lt;br /&gt;
&lt;br /&gt;
== Using Projects App in combination with Connect App ==&lt;br /&gt;
When using Projects combined with Connect App new items defined in Projects or updates on items e.g. status changes are posted to Connect App. &amp;lt;br/&amp;gt;&lt;br /&gt;
The Zone has to be defined in Projects area definition and is used in all lower level items of the area. &amp;lt;br/&amp;gt;&lt;br /&gt;
Users are notified about item assignments and will be able to add comments / own posts on items. &amp;lt;br/&amp;gt;&lt;br /&gt;
[[#Project cannot see the Connect-discussion|Checks when having issues]]&lt;br /&gt;
&lt;br /&gt;
= Requirements =&lt;br /&gt;
* Connect App &lt;br /&gt;
* The Application Platform must be at least &#039;&#039;&#039;version 140029&#039;&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;&#039;[new in V16r1]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
* The Application Platform must have the &#039;&#039;&#039;correct time&#039;&#039;&#039; and a &#039;&#039;&#039;Timezone&#039;&#039;&#039; set &amp;lt;small&amp;gt;&#039;&#039;&#039;[new in V16r1]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
* License “App(innovaphone-projects)xx” (order no. 02-00050-014). &amp;lt;/br&amp;gt; &#039;&#039;&#039;Free version available&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= License =&lt;br /&gt;
* This is a user licence. This licence is debited if the function is configured on a user in the PBX - regardless of use.&lt;br /&gt;
* The Projects app licence version must be greater than or equal to the PBX software version and app software version in use (see: Licence version).&lt;br /&gt;
* The private area is available for every user and can also be used without a licence (free version).&lt;br /&gt;
* The Connect app (installation without licences) is required to use all the functions of Projects.&lt;br /&gt;
* Only a user licence is required for the Projects app. Further licences such as the port licence are not required!&lt;br /&gt;
&lt;br /&gt;
== Free version ==&lt;br /&gt;
An unlicensed user can also use Projects, but is restricted to their own area and can only use Projects to manage their own tasks. &amp;lt;/br&amp;gt;&lt;br /&gt;
However, an unlicensed user cannot see any cross-departmental areas, projects, sprints or tasks.&lt;br /&gt;
&lt;br /&gt;
= Configuration = &lt;br /&gt;
== Settings App/App Installer ==&lt;br /&gt;
# Install the Projects App on the App Platform via the &#039;Settings App/App Installer&#039;-plugin:&lt;br /&gt;
#* Open the Settings App&lt;br /&gt;
#* Open the app installer plugin&lt;br /&gt;
#* Read and accept the Terms and Conditions of the App Installer (if not done yet)&lt;br /&gt;
#* Search &#039;&#039;projects&#039;&#039; &lt;br /&gt;
#* Select the Projects-App&lt;br /&gt;
#* Select the correct version and click Install&lt;br /&gt;
#* Read and accept the Terms and Conditions of the Projects App and click Install&lt;br /&gt;
# Add an App-Object via the Projects-plugin of the Settings App:&lt;br /&gt;
#* Close and Re-Open the Settings App&lt;br /&gt;
#* Open the Projects-plugin&lt;br /&gt;
#* Click on Add an app; Select &#039;Projects&#039; and complete the form:&lt;br /&gt;
#** Name: &#039;&#039;Projects&#039;&#039;&lt;br /&gt;
#** SIP: &#039;&#039;projects&#039;&#039;&lt;br /&gt;
#** Connect App: select the correct Connect-App (default &#039;&#039;connect&#039;&#039;)&lt;br /&gt;
#** Connect Admin App: should be updated automatically to the previous Connect App appended with ~admin-service (default &#039;&#039;connect~admin-service&#039;&#039;). If nothing can be selected, see: [[#Projects-plugin_cannot_see_the_Connect_Admin_Service|Troubleshooting]].&lt;br /&gt;
#** (Optional) Assign the Projects-App to an existing Template&lt;br /&gt;
# Assign the Projects App to authorized users using a Config Template and/or directly on the User Object(s)&lt;br /&gt;
# Assign &#039;App(innovaphone-project)xx&#039;-licenses to the authorized users (or try the free version)&lt;br /&gt;
&lt;br /&gt;
== AP Manager/App Store ==&lt;br /&gt;
Installing the Project App via the &#039;Settings App/App Installer&#039;-plugin is the preferred/easier method, but a complete manual install is also possible.&lt;br /&gt;
# Install the Projects App on the App Platform via the App Store:&lt;br /&gt;
#* Open the AP Manager&lt;br /&gt;
#* Open the App Store&lt;br /&gt;
#* Read and accept the Terms and Conditions of the App Installer (if not done yet)&lt;br /&gt;
#* Search &#039;&#039;projects&#039;&#039;&lt;br /&gt;
#* Select the Projects-App&lt;br /&gt;
#* Select the correct version and click Install&lt;br /&gt;
#* Read and accept the Terms and Conditions of the Projects App and click Install&lt;br /&gt;
# Add an instance of the Projects App on the App Platform:&lt;br /&gt;
#* Close the App Store&lt;br /&gt;
#* Open the newly installed Projects App&lt;br /&gt;
#* Click on &#039;+ Add&#039; to add a new Projects Instances and complete the form:&lt;br /&gt;
#** Name: &#039;&#039;projects&#039;&#039;&lt;br /&gt;
#** Domain: {System Name} (found under PBX/Config/General)&lt;br /&gt;
#** Password: {strong password}&lt;br /&gt;
#** Database password: {strong password}&lt;br /&gt;
# Select and Start the instance&lt;br /&gt;
# Create a PBX-object:&lt;br /&gt;
#* Via the Settings App Plugin (see above)&lt;br /&gt;
#* Via the PBX Advanced UI (see below for settings)&lt;br /&gt;
# Assign the Projects App to authorized users using a Config Template and/or directly on the User Object(s)&lt;br /&gt;
# Assign &#039;App(innovaphone-project)&#039;-licenses to the authorized users (or try the free version)&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
Only one well-configured PBX App Object needed is needed for the Projects-App. &amp;lt;br /&amp;gt;&lt;br /&gt;
This App Object is best created/adjusted via that projects-plugin of the Settings App.&lt;br /&gt;
&lt;br /&gt;
Parameters of the PBX App object:&lt;br /&gt;
&amp;lt;pre&amp;gt;URL: https://&amp;lt;ap.domain.tld&amp;gt;/&amp;lt;domain.tld&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-projects&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;App&amp;quot;-tab ===&lt;br /&gt;
;Modes: admin &#039;&#039;(to allow an extra Admin-mode)&#039;&#039; &amp;lt;small&amp;gt;&#039;&#039;&#039;[new in V16r1]&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
;WebSocket: needed &#039;&#039;(to allow Connect-postings)&#039;&#039;&lt;br /&gt;
;Services: needed &#039;&#039;(to allow Connect-postings)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Apps&amp;quot;-tab ===&lt;br /&gt;
;connect: ticked &#039;&#039;(to allow Projects to maintain Projects zones in Connect)&#039;&#039;&lt;br /&gt;
;connect~admin-service: &#039;&#039;ticked (to allow Projects to maintain Projects zones in Connect)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Upgrade =&lt;br /&gt;
===Prerequisites === &lt;br /&gt;
The App Platform must have at least version 140029. So make sure the AP has been upgraded before trying to upgrade Projects, otherwise an upgrade of Projects will not be possible.== &lt;br /&gt;
&lt;br /&gt;
=== Upgrade ===&lt;br /&gt;
An upgrade of the Projects App can be done via an &#039;&#039;&#039;Update via the App Store&#039;&#039;&#039; or via an &#039;&#039;&#039;Update Job of the Devices App&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Manual adjustments ===&lt;br /&gt;
* Add the admin-mode to the Projects App Object. This can be done manual via the Advanced UI of the PBX or easier via the Projects Plugin of the Settings App (open the Projects App Object + click OK).&lt;br /&gt;
* Add (if necesseary) a correct Timezone to the Application Platform. This can be done via the AP Manager (Settings/General/Timezone).&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting = &lt;br /&gt;
== Projects-plugin cannot see the Connect Admin Service ==&lt;br /&gt;
* Check that the Connect App has an &#039;&#039;&#039;&#039;admin-service&#039;&#039;&#039;&#039;-mode configured (modes-field can be found in the &#039;App&#039;-tab of the object). See: https://wiki.innovaphone.com/index.php?title=Howto15r1:Firmware_Upgrade_V14r2_V15r1#Connect&lt;br /&gt;
&lt;br /&gt;
== Project cannot see the Connect-discussion ==&lt;br /&gt;
Both the Project App and the User using the Project App must be checked for the necessary settings:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project&#039;&#039;&#039; App object:&lt;br /&gt;
* Check that the Project App has &#039;&#039;&#039;&#039;WebSocket&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;Services&#039;&#039;&#039;&#039; ticked (&#039;App&#039;-tab). &lt;br /&gt;
* Check that the Project App has &#039;&#039;&#039;&#039;connect&#039;&#039;&#039;&#039; and &#039;&#039;&#039;&#039;connect~admin-service&#039;&#039;&#039;&#039; ticked (&#039;Apps&#039;-tab)&lt;br /&gt;
* Open the Project App/Areas + edit an Area.  Check the &#039;Connect zone setup state&#039;: &lt;br /&gt;
** Green: connection OK&lt;br /&gt;
** Orange: connection not yet established&lt;br /&gt;
** Red: connection NOK&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;User&#039;&#039;&#039; Object using the Project App:&lt;br /&gt;
* Check if the User using Projects has &#039;&#039;&#039;&#039;connect&#039;&#039;&#039;&#039; ticked in the &#039;Apps&#039;-tab (best deployed via a global Template; e.g. the default &#039;Config User&#039;).&lt;br /&gt;
&lt;br /&gt;
== Area Not Connected (Orange/Red) ==&lt;br /&gt;
Check the previous Troubleshoot-item (&#039;&#039;Project cannot see the Connect-discussion&#039;&#039;) and edit the Area (via the Pencil-icon).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
By editing the area the connection establishment will be restarted.&lt;br /&gt;
&lt;br /&gt;
== Projects cannot be upgraded ==&lt;br /&gt;
The V16r1-version of Projects requires an &#039;&#039;&#039;App Platform of at least version 140029&#039;&#039;&#039;. &amp;lt;br/&amp;gt;&lt;br /&gt;
See: [[Howto16r1:Firmware_Upgrade_V15r1_V16r1#AP_Upgrade_to_Image_140029_or_newer|&#039;Upgrade to Image 140029 or newer&#039;]] or [[Howto16r1:Firmware_Upgrade_V15r1_V16r1#Projects|&#039;Manual Steps needed after upgarde -&amp;gt; Projects&#039;]].&lt;br /&gt;
&lt;br /&gt;
== Extra Admin Features are not available ==&lt;br /&gt;
Check if the Project App Object in the PBX does have an &#039;&#039;&#039;&amp;quot;admin&amp;quot;-mode&#039;&#039;&#039; and that the user does have the &#039;&#039;&#039;&amp;quot;projects~admin&amp;quot;-app&#039;&#039;&#039; selected.&lt;br /&gt;
&lt;br /&gt;
== Auto Cleanup or automatic Task Status Updates do not work ==&lt;br /&gt;
Check the settings of the &#039;&#039;&#039;App Platform&#039;&#039;&#039; (AP Manager/Settings/General); the &#039;&#039;&#039;correct time&#039;&#039;&#039; together with a &#039;&#039;&#039;Timezone&#039;&#039;&#039; must be available.&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[Reference15r1:Apps/PbxManager/App Projects]]&lt;br /&gt;
* [[Reference15r1:Concept App Connect]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Conference_Invitation_Management&amp;diff=79688</id>
		<title>Reference16r1:Concept App Service Conference Invitation Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Conference_Invitation_Management&amp;diff=79688"/>
		<updated>2026-04-28T12:05:00Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&amp;lt;!-- Keywords: conference invitation management --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
&lt;br /&gt;
== Technical Overview ==&lt;br /&gt;
&lt;br /&gt;
== Technical Concept ==&lt;br /&gt;
&lt;br /&gt;
==== Additional Information ====&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
==== PBX Manager Plugin ====&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
== Known Issues == &lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Remote_Control&amp;diff=79687</id>
		<title>Reference16r1:Concept App Remote Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Remote_Control&amp;diff=79687"/>
		<updated>2026-04-28T12:04:53Z</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 Remote Control]]&lt;br /&gt;
&amp;lt;!-- Keywords: Remote Control --&amp;gt;&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* innovaphone PBX from version 16r1&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform (minimum version 130015)&lt;br /&gt;
* V16r1&lt;br /&gt;
* Windows 10 and up&lt;br /&gt;
* Windows Server 2016 and later versions&lt;br /&gt;
* myApps launcher for Windows. &lt;br /&gt;
* Remote Control Client (portable .EXE) for external participants or Remote Control Client (installable .MSI) &#039;&#039;&#039;Note : in v16r1 the Remote Control Client is only available for Windows&#039;&#039;&#039;&lt;br /&gt;
* Additionally it is possible to join a session also via myApps opened in a web Browser&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Remote Control is an application to access a remote PC. &lt;br /&gt;
&amp;lt;br/&amp;gt;The application can be used by the IT department to provide remote support or it could also be used as a collaborative tool for remote work.&lt;br /&gt;
&lt;br /&gt;
== Licensing == &lt;br /&gt;
* For the [[Reference16r1:Concept_App_Remote_Control#Features|licensed features]] you will need to order the &#039;&#039;&#039;Service(innovaphone-remotecontrol)&#039;&#039;&#039; license, order number : &#039;&#039;02-00050-015&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;The application includes one session by default&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== For new v16r1 installation === &lt;br /&gt;
The Remote Control App is automatically installed by the installer and will be deployed in the &#039;&#039;&#039;Config User&#039;&#039;&#039; template. The service ID is activated and the address pre-configured&lt;br /&gt;
=== With the Settings App - AP app installer plug-in === &lt;br /&gt;
[[File:Ap_app_installer.png]]&lt;br /&gt;
&lt;br /&gt;
Go to the Settings App 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. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;remote control&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v16&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the Settings App to refresh the list of the available coloured AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP remotecontrol&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; display name field &#039;&#039;(all characters allowed)&#039;&#039; and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; administration field &#039;&#039;(no spaces, no capital letters)&#039;&#039; need to be filled. You can enter for example &#039;&#039;Remote Control/remotecontrol&#039;&#039; . &lt;br /&gt;
* Tick the appropriate template to distribute the App&lt;br /&gt;
* Enter the amount of purchased licenses&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;
* Additionally you can enter the users that are allowed to start a remote session in the &#039;&#039;&#039;&amp;quot;configuration&amp;quot;&#039;&#039;&#039; menu of the plug-in, enter name comma separated and allow the usage of IDs with the Remote Control Client (external application available in our store)&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== Remote Control (remotecontrol) ===&lt;br /&gt;
This is the standard App within myApps for Remote Control.&lt;br /&gt;
Parameters of the App object:&lt;br /&gt;
;Websocket: Connection between the PBX and the App Platform. the App Platform receives the number of licences via this connection.&lt;br /&gt;
;PbxSignal: Protocol to register to the PBX and do signalling with the JSON signalling protocol (necessary to retrieve the TURN server data from the PBX)&lt;br /&gt;
;Admin: Used for the administration configuration available in the AP remotecontrol plugin&lt;br /&gt;
;PbxApi: App notification and presence monitoring  of in-app user list&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
[[Image: Rcrounded.png]]&lt;br /&gt;
&lt;br /&gt;
A user (viewer) sends a request to another user (sharer) to access the sharer&#039;s PC.&lt;br /&gt;
&amp;lt;br /&amp;gt;The sharer accepts the session and begins to share their desktop with the viewer.&lt;br /&gt;
&amp;lt;br /&amp;gt;The viewer is also automatically given control of the mouse and keyboard. &lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Here are the features available in the Remote Control App&lt;br /&gt;
==== Included features ====&lt;br /&gt;
* One session between Remote control App opened within myApps&lt;br /&gt;
* Start a session with myApps started in a browser (no control possible of the PC that have myApps opened in a web browser)&lt;br /&gt;
* App notification to start a session&lt;br /&gt;
* Multiple monitor support: Viewers can switch between desktops by clicking on the monitor icons&lt;br /&gt;
* Direction of control: Change the direction of sharing, a viewer would become a sharer&lt;br /&gt;
&#039;&#039;Note: if the viewer use myApps Remote Control App in a browser, the direction of control will not work since the browser has no interaction with the local operating system&#039;&#039;&lt;br /&gt;
* Screen scaling: Two different views of the remote desktop, original size or resized&lt;br /&gt;
* Notifications: On the remote PC, if the sharer does not have the remote control open or is busy with another session, the person requesting a session will be notified within the Remote Control App&lt;br /&gt;
* Text copy &amp;amp; paste support in both directions&lt;br /&gt;
* Support for same keyboard layouts (e.g. QWERTY to QWERTY).&lt;br /&gt;
* Multi-viewer support: several viewer can join a sharer session&lt;br /&gt;
&lt;br /&gt;
==== Licensed features ====&lt;br /&gt;
* Support of external participants via the [[Reference16r1:Concept_App_Remote_Control#The_Remote_Control_Client|Remote Control Client]]&lt;br /&gt;
* Administration configuration (available in the Settings App - AP remotecontrol plugin) such as : users that can start a session, usage of IDs code.&lt;br /&gt;
* Launch the Remote Control App and start a session with an URL.&lt;br /&gt;
* Share a session from the Remote Control App opened in myApps&lt;br /&gt;
* Multiple sessions: If you need more than one session (e.g. many viewers for one sharer, more than one parallel session)&lt;br /&gt;
&lt;br /&gt;
=== Technical overview ===&lt;br /&gt;
[[Image:Remote-control_technical-overview.png]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;Note: SCTP packets are routed through the TURN server and therefore the transmission is not peer-to-peer if the TURN server is selected from the ICE candidate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Technical data ===&lt;br /&gt;
*The maximum bitrate can reach &#039;&#039;&#039;8 Mbps&#039;&#039;&#039; if there is no packet loss. In case of packet loss, the bitrate is reduced, with a minimum of &#039;&#039;&#039;1 Mbps&#039;&#039;&#039; for the user who is sharing their desktop UI(sharer). The viewer only sends mouse and keyboard events.&lt;br /&gt;
* Remote Control App is using the SCTP protocol with a fix UDP port range between [https://wiki.innovaphone.com/index.php?title=Howto:What_Ports_are_used_for_Signaling_and_Voice_Traffic_in_SIP_and_H.323%3F#Application_Sharing_(RTP)| 50200-50299]  within the myApps client. Same range as the Application Sharing feature&lt;br /&gt;
*The Remote Control Client uses the same port range.&lt;br /&gt;
*In order to communicate with the Central ID Service, port &#039;&#039;&#039;443&#039;&#039;&#039; is used. The Remote Control client and the myApps Remote Control app must be able to communicate externally via port 443.&lt;br /&gt;
&lt;br /&gt;
=== Central ID service server ===&lt;br /&gt;
innovaphone provides a centrally hosted ID service that simplifies the establishment of sessions between the myApps Remote Control App and the Remote Control Client but also between myApps Remote Control Apps. The service is pre-configured in the Settings App, under the AP remotecontrol configuration menu, with the address &#039;&#039;&#039;remotecontrol.innovaphone.com&#039;&#039;&#039;.&lt;br /&gt;
It is possible to enable or disable this feature.&lt;br /&gt;
&lt;br /&gt;
In few steps it is explained how does the flow works:&lt;br /&gt;
#The myApps Remote Control App or the Remote Control Client automatically generates an ID &#039;&#039;(ID is user based)&#039;&#039;&lt;br /&gt;
#The sharer sends the ID to the viewer or the viewer send its ID to the sharer &lt;br /&gt;
#The viewer enters the ID into their myApps Remote Control App or the sharer enter the code in the Remote Control Client &lt;br /&gt;
#The viewer’s myApps Remote Control App or the sharer&#039;s Remote Control Client communicates with the ID service to transmit a session hash link&lt;br /&gt;
#The ID service forwards the session hash link to the sharer/viewer in order to establish the session&lt;br /&gt;
#The sharer receives a connection request notification that must be accepted&lt;br /&gt;
#Once the session request is accepted, the viewer can access the sharer’s PC&lt;br /&gt;
&#039;&#039;Note: For the Remote Control Client, it is possible to enable auto-connect to bypass manual acceptance of the session, see the notes in the [[Reference16r1:Concept_App_Remote_Control#The_Remote_Control_Client| General information]] section of the respective clients&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Note: For the Remote Control Client, the STUN/TURN server information stored in your Remote Control App service (running in your App Platform) is also transmitted within the hashlink.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== The Remote Control Client ==&lt;br /&gt;
=== Portable version ===&lt;br /&gt;
==== General information====&lt;br /&gt;
The portable Remote Control Client allows you to establish a remote session with people who are not part of your myApps environment. E.g. external participants such as your customers. External participants share their screen to the the myApps users. In order to use IDs to start a session, the Remote Control Client and the myApps Remote Control App has a default connection to the central ID service hosted by innovaphone.&lt;br /&gt;
* Compatible with Windows only&lt;br /&gt;
* Users are notified via an in-app notification when a new version is available. The new version is downloaded from the client and need to be started afterwards&lt;br /&gt;
* No installation needed, simple light .exe file that can be started without admin right&lt;br /&gt;
* You can download the  Remote Control Windows .EXE file by a given link from the person that want to take the control from his myApps client or directly in our [https://store.innovaphone.com/beta/download.htm store] under the section software, item name is &#039;&#039;&#039;Remote Control Windows Portable&#039;&#039;&#039;&lt;br /&gt;
#Open the shared session link in a web browser to download the &#039;&#039;remoteControl.exe&#039;&#039;&lt;br /&gt;
#Launch the app and enter your name (and any additional information, if desired)&lt;br /&gt;
#Provide the code to the viewer&lt;br /&gt;
#Accept the Remote session&lt;br /&gt;
&#039;&#039;Note: Optionally enable or disable the admin session and auto-connect features, works with ID code only&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Note: If you have entered the provided link or a code in the &amp;quot;Link or ID&amp;quot; field, click on &amp;quot;Join Session&amp;quot;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; For the automatic connection, you will need to enter one or several codes separated by commas. This allows the Remote Control Client to be accessed automatically from different viewers, in that case, you will need to request one or several codes from the viewer and you do not need to click on the &amp;quot;Join Session&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
==== Parameters available in the UI ====&lt;br /&gt;
;Your ID: &#039;&#039;Can be copied and given to the person that want to start a session with the portable client&#039;&#039;&lt;br /&gt;
;Display Name: &#039;&#039;You can enter a name that will be used to notify the myApps Remote Control App&#039;&#039;&lt;br /&gt;
;Additional information: &#039;&#039;Such as company name&#039;&#039;&lt;br /&gt;
;Link or ID: &#039;&#039;If you start a session via link or a code, link or code is provided by the viewer that want to take the control&#039;&#039;&lt;br /&gt;
;Join session: &#039;&#039;To establish a remote session when the link/ID code is previously entered&#039;&#039;&lt;br /&gt;
;Admin Session on/off: &#039;&#039;Allow to start a session without having the administration right from the Windows user&#039;&#039;&lt;br /&gt;
;Autoconnect on/off: &#039;&#039;Allow to start a session  without being accepted by the  Windows user, works only with ID codes&#039;&#039;&lt;br /&gt;
&#039;&#039;Note: When you activate auto connect, a new field is displayed. There, you can enter the codes used for the auto-connect feature. Multiple codes can be entered, separated by commas.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Installable version ===&lt;br /&gt;
==== General information====&lt;br /&gt;
The installable Remote Control Client allows you to establish a remote session with people who are not part of your myApps environment. E.g. external participants such as your customers. External participants share their screen to the the myApps users. In order to use IDs to start a session, the Remote Control Client and the myApps Remote Control App has a default connection to the central ID service hosted by innovaphone.&lt;br /&gt;
*Compatible with Windows only&lt;br /&gt;
*Pop-up notification when a new version is available&lt;br /&gt;
*Silent update installation&lt;br /&gt;
*Auto start&lt;br /&gt;
*Fast installation (require the admin right), you can download the Remote Control Windows .MSI file in our [https://store.innovaphone.com/beta/download.htm store] under the section software, item name is &#039;&#039;&#039;Remote Control Windows&#039;&#039;&#039;&lt;br /&gt;
#Get the version of &#039;&#039;remoteControlSetup.msi&#039;&#039; on our store and install it&lt;br /&gt;
#Launch the app and enter your name (and any additional information, if desired)&lt;br /&gt;
#Provide the code to the viewer&lt;br /&gt;
#Accept the Remote session&lt;br /&gt;
&lt;br /&gt;
==== Parameters available in the UI ====&lt;br /&gt;
;Your ID: &#039;&#039;Can be copied  and  given to the person that want to start a session with the installed client&#039;&#039;&lt;br /&gt;
;Display Name: &#039;&#039;You can enter a name that will be used to notify the myApps Remote Control App&#039;&#039;&lt;br /&gt;
;Additional information: &#039;&#039;Such as company name&#039;&#039;&lt;br /&gt;
;Link or ID: &#039;&#039;If you start a session via link or a code, link or code is provided by the viewer that want to take the control&#039;&#039;&lt;br /&gt;
;Autoconnect on/off: &#039;&#039;Allow to start a session  without being accepted by the  Windows user, works only with ID codes&#039;&#039;&lt;br /&gt;
&#039;&#039;Note: When you activate it, a new field is displayed. There, you can enter the codes used for the auto-connect feature. Multiple codes can be entered, separated by commas.&#039;&#039;&lt;br /&gt;
;Join session: &#039;&#039;To establish a remote session when the link/ID code is previously entered&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Parameters available in the tray icon menu ====&lt;br /&gt;
When you do a right click on the tray icon it offers you the following possibilities&lt;br /&gt;
;Open trace folder: &#039;&#039;Fast access to the folder where the debug files are stored&#039;&#039;&lt;br /&gt;
;Show in task bar: &#039;&#039;Pin the application to your Windows taskbar&#039;&#039;&lt;br /&gt;
;Autostart: &#039;&#039;The application starts when you log in&#039;&#039;&lt;br /&gt;
;Exit Remote Control: &#039;&#039;Close the application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Use Case scenario==&lt;br /&gt;
The table below presents the different options for starting a session, depending on the environment. it indicates also if a licence is required or not &lt;br /&gt;
&amp;lt;br /&amp;gt;&#039;&#039;Description&#039;&#039;:&lt;br /&gt;
*myApps launcher: Remote Control App used within the myApps launcher for Windows&lt;br /&gt;
*myApps browser: Remote Control App used within myApps running in a web browser&lt;br /&gt;
&#039;&#039;Note: myApps can be used within the Microsoft Teams client and is therefore considered as a myApps browser&#039;&#039;&lt;br /&gt;
*Remote Control Client: Windows portable or installable client that does not require myApps launcher to be running&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Viewer !! Sharer !! License needed&lt;br /&gt;
|-&lt;br /&gt;
| myApps launcher  || Remote Control client || yes&lt;br /&gt;
|-&lt;br /&gt;
| myApps browser || Remote Control client|| yes&lt;br /&gt;
|-&lt;br /&gt;
| myApps browser|| myApps launcher|| not for the 1st session&lt;br /&gt;
|-&lt;br /&gt;
| myApps launcher|| myApps launcher || not for the 1st session&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
When you open a support ticket, you will be asked to provide us with debugging data of your issue. You can also send us screenshots/videos of the behaviour you are reporting. Do not forget to send us also the PBX default configuration file. &lt;br /&gt;
&lt;br /&gt;
=== Trace flags of the App instance on the App Platform === &lt;br /&gt;
Select the corresponding App instance of the Remote Control App service and click on the &#039;&#039;&#039;Diagnostics button&#039;&#039;&#039;. Tick the following trace flags:&lt;br /&gt;
*App&lt;br /&gt;
*Database&lt;br /&gt;
&lt;br /&gt;
=== Trace flags of the myAPPS Client ===&lt;br /&gt;
Go to the myApps &#039;&#039;&#039;Burger menu&#039;&#039;&#039;, click on &#039;&#039;&#039;more&#039;&#039;&#039;, and then click the &#039;&#039;&#039;magnifying glass&#039;&#039;&#039;. Tick the following trace flag:&lt;br /&gt;
*AppSharing&lt;br /&gt;
&lt;br /&gt;
=== Trace of the myAPPS opened in a browser ===&lt;br /&gt;
Open the dev console &#039;&#039;(F12)&#039;&#039; and get the generated logs, you can copy them in a txt file&lt;br /&gt;
&lt;br /&gt;
=== Trace of the Remote Control Windows Client (portable) ===&lt;br /&gt;
Trace are available under (&#039;&#039;default path C:\Users\[YourUser]\AppData\Local\innovaphone\RemoteControl&#039;&#039;), get the chromium log file, chromium + remoteControl txt files and zip them before sending to our support. &lt;br /&gt;
&lt;br /&gt;
=== Trace of the Remote Control Windows Client (installable) ===&lt;br /&gt;
Do a right click on the app tray icon and click on open trace folder, get the chromium log file, chromium + remoteControl txt files and zip them before sending to our support. &lt;br /&gt;
&lt;br /&gt;
== Known issues == &lt;br /&gt;
*Push notifications on sharer&#039;s smartphone : if a viewer wants to start a remote session with a sharer who does not have the Remote Control App open on their PC, a push notification is triggered on the sharer&#039;s myApps mobile phone (if installed).&lt;br /&gt;
&lt;br /&gt;
== Known limitations == &lt;br /&gt;
*The language of the Remote Control Windows client is based on your operating system&#039;s language.&lt;br /&gt;
*Keyboards with different layouts are not supported yet (e.g. QWERTZ to QWERTY).&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App RemoteControl]]&lt;br /&gt;
[[Category:Apps/PbxManager/App RemoteControl]]&lt;br /&gt;
*[[Howto:Innovaphones_public_services#Remote_Control_Central_ID_service]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Polls&amp;diff=79686</id>
		<title>Reference16r1:Concept App Polls</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Polls&amp;diff=79686"/>
		<updated>2026-04-28T12:04:45Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&amp;lt;!-- Keywords: polls, surveys, votes, data, visual, myapps, connect --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* Polls App&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* v16r1&lt;br /&gt;
* com.innovaphone.includes consumer / &#039;&#039;&#039;Connect&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;As polls does not provide a standalone app, an app in which the poll is displayed is required (e.g. Connect).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Overviews ==&lt;br /&gt;
The Polls App provides polling functionality, which can be implemented by an app via the &amp;quot;Include API&amp;quot;. Currently only connect implements &amp;quot;Includes&amp;quot;, where they can be attached to any form of connect post.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Polls has a free license, as it is regarded as a base connect feature.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Create Polls&lt;br /&gt;
** Multiple Choice&lt;br /&gt;
** Single Choice&lt;br /&gt;
** Anonymous Voting&lt;br /&gt;
** Poll Expiry-Date&lt;br /&gt;
* Viewing Polls&lt;br /&gt;
** Voting&lt;br /&gt;
** Change Vote&lt;br /&gt;
** See current standing&lt;br /&gt;
** Seeing who voted for what&lt;br /&gt;
** Live Updates&lt;br /&gt;
&lt;br /&gt;
== Installation == &lt;br /&gt;
=== With the Settings AP app installer plug-in ===&lt;br /&gt;
&lt;br /&gt;
Go to the PBX manager/Settings 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. &#039;&#039;Hint: if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Polls&amp;quot;&#039;&#039;&#039; and click it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v16&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the yellow install button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the PBX Manager/Settings to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Polls&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; display name field &#039;&#039;(all characters allowed)&#039;&#039; and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; administration field &#039;&#039;(no spaces, no capital letters)&#039;&#039; are prefilled, you can leave them as they are.&lt;br /&gt;
* Tick the appropriate template to distribute the App&lt;br /&gt;
* Click OK to save the settings and a green checkmark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
As polls has no standalone app the usage can be a bit unintuitiv. In general an app, that consumes the &#039;&#039;&#039;com.innovaphone.includes&#039;&#039;&#039; API, is needed. As the implementation could vary, how the users interacts with the App could as well. But, as Polls was implement for the &#039;&#039;&#039;Connect App&#039;&#039;&#039;, below is a description on how a user would interact (create/vote) with the Polls App.&lt;br /&gt;
&lt;br /&gt;
=== Creation ===&lt;br /&gt;
&lt;br /&gt;
# The User Opens Connect and clicks on &amp;quot;Create a new post&amp;quot;&lt;br /&gt;
# The User Selects the &amp;quot;Include Icon&amp;quot; (3 squares and a plus)&lt;br /&gt;
# The Create UI pops-up (Anatomy explained in the User Interface section)&lt;br /&gt;
# Upon sending/creating the connect post the poll is created aswell (given the poll is valid)&lt;br /&gt;
&lt;br /&gt;
=== Viewing ===&lt;br /&gt;
&lt;br /&gt;
# The User opens a post, containing a poll include&lt;br /&gt;
# The poll loads in&lt;br /&gt;
# User can interact with the poll as long as the connect post is open&lt;br /&gt;
&lt;br /&gt;
== User Interface ==&lt;br /&gt;
&lt;br /&gt;
=== Create ===&lt;br /&gt;
[[File:Create Poll.png|thumb|300x300px|UI when creating a poll]]&lt;br /&gt;
The UI for creating a poll has two sections. &lt;br /&gt;
# Options, which can later be voted on&lt;br /&gt;
# Toggles, which change how the poll behaves&lt;br /&gt;
&lt;br /&gt;
Inputs for options will appear and disappear, as needed. Meaning, if every field would be full, a new field will appear. If more than 1 field would be empty, an empty field will be removed.&lt;br /&gt;
&lt;br /&gt;
Toggles are &#039;&#039;null&#039;&#039; or &#039;&#039;value&#039;&#039; fields. Meaning empty fields are equal to &#039;&#039;unchecked&#039;&#039; (toggle is considered off). &lt;br /&gt;
&lt;br /&gt;
=== View ===&lt;br /&gt;
[[File:View options.png|thumb|249x249px|UI when viewing a poll]]&lt;br /&gt;
[[File:View results.png|thumb|384x384px|UI when viewing the results of a poll]]&lt;br /&gt;
The UI for viewing a poll, which is the one used to actually vote, is divided into two views.&lt;br /&gt;
# Options, which can be voted for&lt;br /&gt;
# Results for the corresponding options&lt;br /&gt;
&lt;br /&gt;
Both options and results display&lt;br /&gt;
* Option title&lt;br /&gt;
* Current votes/percentage&lt;br /&gt;
* Winner (poll expiration date)&lt;br /&gt;
&lt;br /&gt;
The options further display&lt;br /&gt;
* Multiple (square) or Single (circle) Choice&lt;br /&gt;
* What the viewer voted by&lt;br /&gt;
** checked input&lt;br /&gt;
** higlighted outline&lt;br /&gt;
* Up to the last 5 voters per option (non anonymous)&lt;br /&gt;
&lt;br /&gt;
The results further display&lt;br /&gt;
* All the voters (non anonymous)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Libraries used ==&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
When you open a support ticket, you will be asked to provide us with debugging data of your issue. You can also send us screenshots/videos of the behaviour you are reporting. Do not forget to send us also the PBX default configuration file. &lt;br /&gt;
=== Trace flags of the myAPPS Client ===&lt;br /&gt;
Go to the myApps &#039;&#039;&#039;Burger menu&#039;&#039;&#039;, click on &#039;&#039;&#039;more&#039;&#039;&#039;, and then click the &#039;&#039;&#039;magnifying glass&#039;&#039;&#039;. Tick the following trace flag:&lt;br /&gt;
*Browser console&lt;br /&gt;
*App&lt;br /&gt;
&#039;&#039;Hint: If you are using myApps in a browser, press F12 to open the browser console.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Restrictions / Known issues ==&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Connect&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_MQTT_Broker&amp;diff=79685</id>
		<title>Reference16r1:Concept App MQTT Broker</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_MQTT_Broker&amp;diff=79685"/>
		<updated>2026-04-28T12:04:38Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: MQTT, Broker, IoT, Publish, Subscribe, Topic --&amp;gt;&lt;br /&gt;
== Applies To ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;innovaphone System (PBX/AP) from version 16r1 upwards&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt; innovaphone PBX&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; innovaphone AppPlatform&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; innovaphone myApps&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; MQTT-capable client devices or applications&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
This product requires no licensing.&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
&amp;lt;p&amp;gt;The MQTT Broker app provides a standards-compliant MQTT-message-broker running as an App Service on the innovaphone App Platform. It allows MQTT-clients such as IoT devices, sensors, or custom applications to exchange messages using the publish/subscribe pattern. Supported MQTT versions include 3.1.1 and 5.0.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
&amp;lt;p&amp;gt;MQTT clients connect to the broker using the standard MQTT protocol over TCP (port 1883) or encrypted via TLS (port 8883). Clients can publish messages to topics and subscribe to topics to receive messages from other clients. The broker routes published messages to all subscribers of the respective topic.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Authentication is handled via username and password credentials configured in the broker settings. Access control lists (ACLs) can be used to restrict which clients are allowed to publish or subscribe to specific topics.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The broker supports persistent sessions and retained messages. Quality of Service (QoS) levels 0, 1, and 2 are supported, allowing clients to choose between fire-and-forget, at-least-once, and exactly-once message delivery semantics.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Connection to third-party MQTT-brokers is also supported via the Bridge functionality, which allows the innovaphone broker to connect as a client.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== App (innovaphone-mqtt) ===&lt;br /&gt;
[[File:Innovaphone-mqtt-logo.png]]&lt;br /&gt;
&lt;br /&gt;
The app provides the following configuration and monitoring capabilities:&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Real-time monitoring of incoming messages and currently connected MQTT clients.&lt;br /&gt;
&lt;br /&gt;
[[File:MQTT_Overview_Section.png|512px]]&lt;br /&gt;
&lt;br /&gt;
==== Security ====&lt;br /&gt;
Authentication via JWT or username/password can be configured. Specific MQTT clients and topics can be restricted or granted access via Access Control List (ACL).&lt;br /&gt;
&lt;br /&gt;
[[File:MQTT_Security_Section.png|512px]]&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
The protocol and port used for MQTT packet transport can be configured here. To connect to an external MQTT broker (innovaphone or 3rd-party), the required connection details can be entered via &#039;&#039;Add Bridge&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:MQTT_Configuration_Section.png|512px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
* Install the MQTT Broker via the &#039;&#039;App Installer&#039;&#039; Settings plugin.&lt;br /&gt;
* Create a new PBX Object for the MQTT Broker with the Settings Plugin of the MQTT Broker app.&lt;br /&gt;
** Configure a name and SIPid.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
After the initial installation, the broker listens to AppPlatform-IP:1883&amp;lt;/br&amp;gt;&lt;br /&gt;
If any changes are needed, they should be done in the Configuration and Security sections of the app.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&amp;lt;p&amp;gt;If problems occur, please send a log of the app service. Before reproducing the issue, delete the current contents of the log. The following trace flags should be enabled:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;App&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;TCP/TLS&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;DB&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Charts&amp;diff=79684</id>
		<title>Reference16r1:Concept App Charts</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Charts&amp;diff=79684"/>
		<updated>2026-04-28T12:04:25Z</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 Charts]]&lt;br /&gt;
&amp;lt;!-- Keywords: charts, statistics, graph, data, visual--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* Charts App&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform 1300xx&lt;br /&gt;
* v16r1&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Charts App allows the centralised display of decentralised data — that is, data provided through the Statistics API and implemented by other apps. In other words, if another application has implemented the Statistics API, it can use this API to make some of its locally stored data available to the Charts App. The Charts App can then request and display that data. &amp;lt;br /&amp;gt;&lt;br /&gt;
The availability of data in the Charts App is determined by how other App services integrate with and use the API to share their data.&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;e.g : Connect App can return / create data from its database (like amount of posts, sql queries, etc)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Currently no license is required to use the Charts App. But this is subject to change.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Display data in graph form&lt;br /&gt;
** Using different graph types&lt;br /&gt;
** Using different time spans&lt;br /&gt;
** Using different granularity&lt;br /&gt;
** Real time graph&lt;br /&gt;
* Save displayed graphs as collections&lt;br /&gt;
** For quick access in the future&lt;br /&gt;
** Sharing with other users&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== With the Settings AP app installer plug-in === &lt;br /&gt;
[[File:Ap_app_installer.png]]&lt;br /&gt;
&lt;br /&gt;
Go to the Settings App 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. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;charts&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v16&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the Settings App to refresh the list of the available coloured AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP Charts&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; display name field &#039;&#039;(all characters allowed)&#039;&#039; and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; administration field &#039;&#039;(no spaces, no capital letters)&#039;&#039; need to be filled. You can enter for example Charts/charts.&lt;br /&gt;
* Tick the appropriate template to distribute the App&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;
==Apps==&lt;br /&gt;
=== Charts (charts) ===&lt;br /&gt;
This is the standard App within myApps for Charts App.&lt;br /&gt;
Parameters of the App object:&lt;br /&gt;
;Websocket: Connection between the PBX and the App Platform. &lt;br /&gt;
&lt;br /&gt;
== User Interface ==&lt;br /&gt;
The UI is divided into 3 main parts, which in part are divided into smaller parts:&lt;br /&gt;
*Charts Area: Main component displaying the data in chart form.&lt;br /&gt;
*Sidebar Area: Used to select the data to be displayed.&lt;br /&gt;
*Top Area: Toggles certain display functions.&lt;br /&gt;
[[File:ChartsUI.png|thumb|Charts interface]]&lt;br /&gt;
=== Charts Area ===&lt;br /&gt;
Here the charts are displayed. The user can hover over data points see the plain number being displayed. Furthermore, when enabled, the component can be scrolled&lt;br /&gt;
if the displayed timespan is long enough.&lt;br /&gt;
=== Sidebar ===&lt;br /&gt;
The Sidebar has two &amp;quot;modes&amp;quot;, &amp;quot;Charts&amp;quot; and &amp;quot;Collections&amp;quot;. &amp;quot;Charts&amp;quot; directly displays source apps, categories and charts they provide. &amp;quot;Collections&amp;quot; on the other hand&lt;br /&gt;
lets the user select saved collections. These in turn are also divided into groups, subgroups and corresponding collections.&lt;br /&gt;
Below the sidebar is the Timespan /-granularity selector, which lets the user change the corresponding values.&lt;br /&gt;
=== Top ===&lt;br /&gt;
The top mainly houses two components in the toolbar and the legend.&lt;br /&gt;
The toolbar has toggles for certain functionality like &amp;quot;What chart type should be used&amp;quot; or &amp;quot;Should the chart be compressed to the max visible width&amp;quot;. Besides that,&lt;br /&gt;
it also houses the entry point for the &amp;quot;Save as Collection&amp;quot; functionality.&lt;br /&gt;
The legend provides the user with an indicator as to what graph is currently displaying what data. And also serves as a toggle for visibility on a graph by graph basis,&lt;br /&gt;
without having to fully deselect it.&lt;br /&gt;
&lt;br /&gt;
== Implemented API in other Apps ==&lt;br /&gt;
Here is a list of the apps that have implemented the Statistics API and the data they return.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: This list may change over time.&#039;&#039;&lt;br /&gt;
=== App Platform Manager ===&lt;br /&gt;
* &#039;&#039;chart_manager_uptime&#039;&#039;: Manager uptime &lt;br /&gt;
* &#039;&#039;chart_system_cpu_perc&#039;&#039;: CPU load &lt;br /&gt;
* &#039;&#039;chart_system_disk_total&#039;&#039;: Storage size&lt;br /&gt;
* &#039;&#039;chart_system_disk_used&#039;&#039;: Used storage&lt;br /&gt;
* &#039;&#039;chart_system_memory_total&#039;&#039;: RAM size&lt;br /&gt;
* &#039;&#039;chart_system_meory_used&#039;&#039;: Used RAM&lt;br /&gt;
=== Connect ===&lt;br /&gt;
* &#039;&#039;Posts&#039;&#039;: Number of posts&lt;br /&gt;
* &#039;&#039;SQL&#039;&#039;: Number SQL queries&lt;br /&gt;
* &#039;&#039;Sessions&#039;&#039;: Amount of sessions&lt;br /&gt;
=== Contact Widget ===&lt;br /&gt;
* &#039;&#039;Chats&#039;&#039;: Number of text chats&lt;br /&gt;
* &#039;&#039;VoiceCalls&#039;&#039;: Number of voice calls&lt;br /&gt;
* &#039;&#039;VideoCalls&#039;&#039;: Number of video calls&lt;br /&gt;
* &#039;&#039;All&#039;&#039;: Combined chats, voice calls and video calls&lt;br /&gt;
=== Recordings ===&lt;br /&gt;
* &#039;&#039;CurrentRecordings&#039;&#039;: Number of currently running recordings &lt;br /&gt;
* &#039;&#039;LicenseType&#039;&#039;: internal usage, not relevant&lt;br /&gt;
* &#039;&#039;NumRecordings&#039;&#039;: Number of recordings in the database that have not been deleted&lt;br /&gt;
* &#039;&#039;OldestRecording&#039;&#039;: Oldest recording in the database not deleted&lt;br /&gt;
* &#039;&#039;ReportingLink&#039;&#039;: Indicates whether the link between recordings and reports is up or down&lt;br /&gt;
* &#039;&#039;SizeDB&#039;&#039;: Size of the Database&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Libraries used ==&lt;br /&gt;
The following libraries are used to display charts.&lt;br /&gt;
* Chart.Js&lt;br /&gt;
** License: [https://github.com/chartjs/Chart.js/blob/master/LICENSE.md MIT License]&lt;br /&gt;
** Further Information: [https://www.chartjs.org/ Library]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
When you open a support ticket, you will be asked to provide us with debugging data of your issue. You can also send us screenshots/videos of the behaviour you are reporting. Do not forget to send us also the PBX default configuration file. &lt;br /&gt;
=== Trace flags of the myAPPS Client ===&lt;br /&gt;
Go to the myApps &#039;&#039;&#039;Burger menu&#039;&#039;&#039;, click on &#039;&#039;&#039;more&#039;&#039;&#039;, and then click the &#039;&#039;&#039;magnifying glass&#039;&#039;&#039;. Tick the following trace flag:&lt;br /&gt;
*Browser console&lt;br /&gt;
*App&lt;br /&gt;
&#039;&#039;Hint: If you are using myApps in a browser, press F12 to open the browser console.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Restrictions / Known issues ==&lt;br /&gt;
* Due to restrictions on the canvas element on iOS the mobile version is limited to a max width of 4096px&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App Charts]]&lt;br /&gt;
* [https://sdk.innovaphone.com/16r1/service/statistics/statistics.htm  SDK documentation]&lt;br /&gt;
[[Category:Apps/PbxManager/App Charts]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/MQTT_Broker&amp;diff=79683</id>
		<title>Reference16r1:Apps/PbxManager/MQTT Broker</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/MQTT_Broker&amp;diff=79683"/>
		<updated>2026-04-28T12:04:11Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT Broker Settings plug-in can be used to create and configure the required App object. In addition, the App object can be assigned to specific configuration templates, if any exist.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add an App ==&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; of the App object which must be unique.&lt;br /&gt;
&lt;br /&gt;
;Config templates &lt;br /&gt;
:If config templates exist, they will be listed with a checkbox. Tick the template of your choice to deploy the application.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Concept App MQTT Broker|Reference16r1:Concept App MQTT Broker]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/Email&amp;diff=79682</id>
		<title>Reference16r1:Apps/PbxManager/Email</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/Email&amp;diff=79682"/>
		<updated>2026-04-28T12:03:59Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This PBX Manager Plugin configures the E-Mail Account of all PBXes in the system. The same configuration can be found in the advanced UI of the individual PBXes at [[{{NAMESPACE}}:PBX/Config/Authentication|PBX/Config/Authentication]].&lt;br /&gt;
&lt;br /&gt;
== Add Email Account ==&lt;br /&gt;
; SMTP Server&lt;br /&gt;
: Your SMTP Server&lt;br /&gt;
&lt;br /&gt;
; Email Address&lt;br /&gt;
: The used From Address&lt;br /&gt;
&lt;br /&gt;
; Username&lt;br /&gt;
: The username for the authorization&lt;br /&gt;
&lt;br /&gt;
; Password&lt;br /&gt;
: The password for the authorization&lt;br /&gt;
&lt;br /&gt;
; Sender&#039;s name&lt;br /&gt;
: The used Name in the From field&lt;br /&gt;
&lt;br /&gt;
; OAuth2&lt;br /&gt;
: Alternatively OAuth2 credentials to authenticate for e-mail sending. See [[Howto16r1:Configure_OAuth2_E-Mail]].&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/Documents&amp;diff=79681</id>
		<title>Reference16r1:Apps/PbxManager/Documents</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/Documents&amp;diff=79681"/>
		<updated>2026-04-28T12:03:51Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Add an app object == &lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Working&amp;diff=79680</id>
		<title>Reference16r1:Apps/PbxManager/App Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Working&amp;diff=79680"/>
		<updated>2026-04-28T12:03:36Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This PBX Manager Plugin contains 2 section:&lt;br /&gt;
* Add, edit or delete Working App on the PBX.&lt;br /&gt;
* Configuration: Setting target Master PBX .&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
; PBX Name&lt;br /&gt;
: This field specifies the master PBX to ensure that searches and data replication are performed on the correct PBX&lt;br /&gt;
; Connect Name&lt;br /&gt;
: The H323 name (SIPid) of the Connect app must be configured here. This is usually &#039;&#039;connect&#039;&#039;, but it depends on the individual setup of the system.&lt;br /&gt;
; Connect Groups&lt;br /&gt;
: Here you can define a comma-separated list of PBX group names that can be used for Connect integration in private posts. This allows separate PBX groups, such as the Human Resources department, to be included in private posts alongside department heads.&lt;br /&gt;
; Language for connectsposts&lt;br /&gt;
: Integration with the Connect app and thus the creation of “posts” is carried out from a central location. The language can be set for these posts. Currently, there is ‘de’ for German and “en” for English.&lt;br /&gt;
&lt;br /&gt;
== Add an App ==&lt;br /&gt;
; &amp;lt;nowiki&amp;gt;Name: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
: The name displayed for the App Object.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SIP:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: The sip from the App Object, which must be unique&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Config templates:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Select which config templates will allow to access the App Object.&lt;br /&gt;
&lt;br /&gt;
== App objects ==&lt;br /&gt;
; &amp;lt;u&amp;gt;Working User&amp;lt;/u&amp;gt;&lt;br /&gt;
: This is an app, where the user can enter the working hours, holidays, sick and vacation days&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;u&amp;gt;Working Manager&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This is an app that allows you to monitor working times, there are two types of rights:&lt;br /&gt;
&lt;br /&gt;
: - The Human Resources view where all working times can be viewed&lt;br /&gt;
: - The Manager view, where managers only see the working times of the associated group  &lt;br /&gt;
; &amp;lt;u&amp;gt;Working API&amp;lt;/u&amp;gt;&lt;br /&gt;
: This is a hidden app, where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;u&amp;gt;Working Service API&amp;lt;/u&amp;gt; &lt;br /&gt;
: This is an app needed to provide the Working Client API, so that other apps can start/stop working times.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;u&amp;gt;Public Holidays API&amp;lt;/u&amp;gt; &lt;br /&gt;
: This API provides public holiday data for other apps. It allows them to check whether a specific date is a public holiday in a given country or region.&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Documents&amp;diff=79679</id>
		<title>Reference16r1:Apps/PbxManager/App Documents</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Apps/PbxManager/App_Documents&amp;diff=79679"/>
		<updated>2026-04-28T12:03:15Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the PBX Settings Plugin of the Documents App.&lt;br /&gt;
&lt;br /&gt;
The app is only available as a plugin app and is not visible to users as a standalone app.&lt;br /&gt;
&lt;br /&gt;
This app must be allowed for both users and other app services.&lt;br /&gt;
&lt;br /&gt;
== Individual Documents App Configuration ==&lt;br /&gt;
Following items can be configured in a PBX App object:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Name&#039;&#039;&#039;: Object long name&lt;br /&gt;
* &#039;&#039;&#039;SIP&#039;&#039;&#039;: Object name. Allowed characters according to the [[Reference15r1:PBX/Objects#General_Object_Properties | general object properties]]. Using unallowed characters, e.g. spaces, can result in an unexpected behavior of the app, e.g. the badge counts do not work.&lt;br /&gt;
&lt;br /&gt;
=== App permissions ===&lt;br /&gt;
Allowed apps for the Documents service which provides the com.innovaphone.tagging API for checking user permissions.&lt;br /&gt;
&lt;br /&gt;
=== Configuration Templates ===&lt;br /&gt;
Select configuration templates to be applied for the Documents app object.&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Supported_innovaphone_versions&amp;diff=79675</id>
		<title>Howto:Supported innovaphone versions</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Supported_innovaphone_versions&amp;diff=79675"/>
		<updated>2026-04-28T11:52:56Z</updated>

		<summary type="html">&lt;p&gt;Slu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- unsupported, end of support, end of life, supported firmware, supported versions, maintained versions --&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color: lightgreen&amp;quot;&amp;gt;As of today (April 2026) we support firmware versions 16r1, 15r1 and 14r2.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This article explains the rule behind this.&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to all innovaphone products and firmware&lt;br /&gt;
&lt;br /&gt;
== What it means ==&lt;br /&gt;
The firmware described here is being supported by us generally (that is, support tickets may be opened, and we provide new service releases).  However, on specific devices, firmware support may end earlier due to technical restrictions.  See [[Howto:Firmware Upgrade]] for details.&lt;br /&gt;
&lt;br /&gt;
== Basic explanation of the supported versions ==&lt;br /&gt;
&lt;br /&gt;
=== Structure of version numbers ===&lt;br /&gt;
Version numbers are composed as followed: &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;(Major Version)&amp;lt;/span&amp;gt;r&amp;lt;span style=&amp;quot;background-color: orange&amp;quot;&amp;gt;(Minor Version)&amp;lt;/span&amp;gt;sr&amp;lt;span style=&amp;quot;background-color: lightgreen&amp;quot;&amp;gt;(Service Release)&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
This means for example for &amp;lt;code&amp;gt;15r1sr10&amp;lt;/code&amp;gt;:&lt;br /&gt;
* Major Version: &amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;15&amp;lt;/span&amp;gt;&lt;br /&gt;
* Minor Version: r&amp;lt;span style=&amp;quot;background-color: orange&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&lt;br /&gt;
* Service Release: sr&amp;lt;span style=&amp;quot;background-color: lightgreen&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== General rule for supported versions ===&lt;br /&gt;
&lt;br /&gt;
We support the &amp;lt;code&amp;gt;2 latest minor versions in the latest major version&amp;lt;/code&amp;gt; &#039;&#039;&#039;and&#039;&#039;&#039; the &amp;lt;code&amp;gt;latest minor version in the 3 latest major versions&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Examples &lt;br /&gt;
:If the latest version is 14r2, we support 14r2 and 14r1 as the &amp;lt;code&amp;gt;2 latest minor versions in the latest major version&amp;lt;/code&amp;gt; and 14r2, 13r3, 12r2 as the &amp;lt;code&amp;gt;latest minor version in the 3 latest major versions&amp;lt;/code&amp;gt;.&lt;br /&gt;
:If the latest version is 15r1, we support 15r1 as the &amp;lt;code&amp;gt;2 latest minor versions in the latest major version&amp;lt;/code&amp;gt; and 15r1, 14r2, 13r3 as the &amp;lt;code&amp;gt;latest minor version in the 3 latest major versions&amp;lt;/code&amp;gt;.&lt;br /&gt;
:If the latest version is 16r1, we support 16r1 as the &amp;lt;code&amp;gt;2 latest minor versions in the latest major version&amp;lt;/code&amp;gt; and 16r1, 15r1, 14r2 as the &amp;lt;code&amp;gt;latest minor version in the 3 latest major versions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Special exceptions ====&lt;br /&gt;
As is often the case, there are of course exceptions to every rule. In this case, the exceptions to the above rules are as follows.&lt;br /&gt;
&lt;br /&gt;
* V6 firmware on an IP21 in order to take advantage of the AUX or door interface will continue to be supported. (Support will end at latest once a replacement product featuring a door and AUX interface is released.)&lt;br /&gt;
* TAPI V8.00, latest release&lt;br /&gt;
* log2pcap V6.00, latest release&lt;br /&gt;
* Wireshark DLLs V6.00, latest release&lt;br /&gt;
&lt;br /&gt;
===Problems with old versions===&lt;br /&gt;
If you have issues which can not be fixed by changing the configuration, you need to upgrade to a more recent version.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Howto:Firmware Upgrade]]&lt;br /&gt;
* [[Support:End of Life for Linux Application Platform V9.00]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Problem|{{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=79666</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=79666"/>
		<updated>2026-04-28T10:23:39Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* AP Upgrade to Image 140029 or newer */&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;
* &#039;&#039;Nothing&#039;&#039;&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 Conference Scaler: [[Reference16r1:Concept_Conference_Scaler_App]]&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=79665</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=79665"/>
		<updated>2026-04-28T10:22:26Z</updated>

		<summary type="html">&lt;p&gt;Slu: /* New Apps */&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 140029 or newer ===&lt;br /&gt;
* First, upgrade your application platform to at least image version 140029. 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;
* &#039;&#039;Nothing&#039;&#039;&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 Conference Scaler: [[Reference16r1:Concept_Conference_Scaler_App]]&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=Reference16r1:Concept_App_Service_IP&amp;diff=79664</id>
		<title>Reference16r1:Concept App Service IP</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_IP&amp;diff=79664"/>
		<updated>2026-04-28T10:18:13Z</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|IP]]&lt;br /&gt;
&lt;br /&gt;
The App IP is an app which offers the PBX functionality and further functionalities as App service on our innovaphone App Platform.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone firmware and apps V16&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone Application Platform (image version 140011 or higher)&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The App IP offers modules known from innovaphone gateways, like the PBX, TURN server functionality etc.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
=== Single instance mode ===&lt;br /&gt;
Unlike other App Services, the App IP is a single instance App Service, so you can create &#039;&#039;&#039;just&#039;&#039;&#039; a single instance and not multiple instances.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
Standard licensing mechanisms apply to the App IP as they apply to innovaphone gateways.&lt;br /&gt;
&lt;br /&gt;
In addition, every port license requires a dedicated IPAP license (similar to the IPVA license for virtual machines).&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
There is no App provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
There is no PBX Manager Plugin provided by this App Service.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The configuration is done as an innovaphone gateway is configured too.&lt;br /&gt;
&lt;br /&gt;
=== Create instance ===&lt;br /&gt;
You have to create one instance for the App IP Service.&lt;br /&gt;
&lt;br /&gt;
[[Courseware:IT Advanced - 04 Setting up the Application Platform#Adding an App Service instance|Here]] are more informations how to do this.&lt;br /&gt;
&lt;br /&gt;
We recommend the following settings:&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Name&#039;&#039;&#039; = ip&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Domain&#039;&#039;&#039; = customer domain (system name of the PBX)&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Password&#039;&#039;&#039; = The password must be set to &amp;quot;pwd&amp;quot; for Install and will be changed during the process.&lt;br /&gt;
&lt;br /&gt;
=== Install Process ===&lt;br /&gt;
Install can be started under the webserver path of the App IP instance and /&#039;&#039;install.htm&#039;&#039;, e.g.: https://domain.com/ip/install.htm&lt;br /&gt;
&lt;br /&gt;
⚠️ Use standard ports for installation. If necessary, install via a reverse proxy&lt;br /&gt;
&lt;br /&gt;
⚠️ Do not use the localhost (127.0.0.1) address&lt;br /&gt;
&lt;br /&gt;
=== Advanced UI ===&lt;br /&gt;
The advanced UI is reachable under the webserver path of the App IP instance and /admin.xml?xsl=admin.xsl, e.g.:&lt;br /&gt;
https://domain.com/ip/admin.xml?xsl=admin.xsl&lt;br /&gt;
&lt;br /&gt;
=== IP configuration ===&lt;br /&gt;
As the App IP is just an App on an App Platform, there are no IP4/IP6, NTP etc. settings as on other innovaphone devices.&lt;br /&gt;
&lt;br /&gt;
==== Devices App ====&lt;br /&gt;
If your App Platform which runs the App IP is connected to a Devices App, you can access the Advanced UI with the &#039;&#039;&#039;PBX&#039;&#039;&#039; tab of your App Platform device.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
The App IP offers standard tracing mechanism for App Services and in addition mechanisms known from innovaphone gateways.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can enable module related trace flags with config change commands or by setting trace flags under Maintenance -&amp;gt; Tracing in the Advanced UI of the App IP.&lt;br /&gt;
&lt;br /&gt;
 Trace files are not found under Maintenance -&amp;gt; Tracing but on the App IP service on your App Platform Manager.&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Reference16r1:Concept_innovaphone_App_Platform_Container]]&lt;/div&gt;</summary>
		<author><name>Slu</name></author>
	</entry>
</feed>