<?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=Tac</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=Tac"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Tac"/>
	<updated>2026-05-05T13:49:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=74488</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=74488"/>
		<updated>2024-12-12T13:37:17Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
innovaphone only carries out scheduled remote maintenance via our ticket system by prior consultation.&amp;lt;br&amp;gt;&lt;br /&gt;
Please do not accept AnyDesk requests without prior appointment via ticket.&lt;br /&gt;
&lt;br /&gt;
Please ensure that you download the [https://anydesk.com/en/downloads/windows latest AnyDesk version].&lt;br /&gt;
&lt;br /&gt;
Please note: We cannot accept any liability for the external content of AnyDesk. AnyDesk is responsible for the content of its own software.&lt;br /&gt;
We are not liable for any damages resulting from the use of a non-updated or non-conforming version of AnyDesk.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales@innovaphone.com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r2 product/14r2/firmware 1420433 (sr5) available | Version 14r2 Service Release 5]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r1 product/14r1/firmware 1410584 (sr10) available | Version 14r1 Service Release 10]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r3 product/13r3/firmware 138005 (sr22) available | Version 13r3 Service Release 22]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125886 (sr72) available | Version 12r2 Service Release 72]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 16:22, 18 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Calculator beta1 available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Sga|Sga]] ([[User talk:Sga|talk]]) 17:43, 15 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP73 1011 (5.0.1) released | Wireless Handset Firmware IP73 1011 (5.0.1)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Gal|Gal]] ([[User talk:Gal|talk]]) 13:39, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13) released | Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 12:03, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Working final available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040621_(6.2.7)_released | Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 13:13, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130113_%284.1.8%29_released | WinPDM Software 3130113 (4.1.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=74487</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=74487"/>
		<updated>2024-12-12T13:35:56Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
innovaphone only carries out scheduled remote maintenance via our ticket system by prior consultation.&amp;lt;br&amp;gt;&lt;br /&gt;
Please do not accept AnyDesk requests without prior appointment via ticket.&lt;br /&gt;
&lt;br /&gt;
Please ensure that you download the [https://anydesk.com/en/downloads/windows latest AnyDesk version].&lt;br /&gt;
&lt;br /&gt;
Please note: We cannot accept any liability for the external content of AnyDesk. AnyDesk is responsible for the content of its own software.&lt;br /&gt;
We are not liable for any damages resulting from the use of a non-updated or non-conforming version of AnyDesk.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales@innovaphone.com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r2 product/14r2/firmware 1420433 (sr5) available | Version 14r2 Service Release 5]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r1 product/14r1/firmware 1410584 (sr10) available | Version 14r1 Service Release 10]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r3 product/13r3/firmware 138005 (sr22) available | Version 13r3 Service Release 22]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 14:35, 12 December 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125886 (sr72) available | Version 12r2 Service Release 72]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] ([[User talk:Afi|talk]]) 15:22, 13 November 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r2 product/14r2/firmware 1420399 (sr4) available | Version 14r2 Service Release 4]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] ([[User talk:Afi|talk]]) 15:22, 13 November 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r1 product/14r1/firmware 1410578 (sr9) available | Version 14r1 Service Release 9]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] ([[User talk:Afi|talk]]) 15:22, 13 November 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r3 product/13r3/firmware 137999 (sr21) available | Version 13r3 Service Release 21]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] ([[User talk:Afi|talk]]) 15:22, 13 November 2024 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125885 (sr71) available | Version 12r2 Service Release 71]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 16:22, 18 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Calculator beta1 available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Sga|Sga]] ([[User talk:Sga|talk]]) 17:43, 15 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP73 1011 (5.0.1) released | Wireless Handset Firmware IP73 1011 (5.0.1)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Gal|Gal]] ([[User talk:Gal|talk]]) 13:39, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13) released | Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 12:03, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Working final available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040621_(6.2.7)_released | Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 13:13, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130113_%284.1.8%29_released | WinPDM Software 3130113 (4.1.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Widget-code-popup.png&amp;diff=70121</id>
		<title>File:Widget-code-popup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Widget-code-popup.png&amp;diff=70121"/>
		<updated>2023-12-11T10:16:25Z</updated>

		<summary type="html">&lt;p&gt;Tac: Tac uploaded a new version of File:Widget-code-popup.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70120</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70120"/>
		<updated>2023-12-11T10:11:42Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Content-Security-Policy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70119</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70119"/>
		<updated>2023-12-11T10:11:14Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Content-Security-Policy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;&amp;quot;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;&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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70118</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70118"/>
		<updated>2023-12-11T10:10:42Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Content-Security-Policy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;; img-src &#039;&#039;&#039;data:&#039;&#039;&#039;; child-src &#039;self&#039; &#039;&#039;&#039;mailto:&#039;&#039;&#039; &#039;&#039;&#039;tel:&#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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70117</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70117"/>
		<updated>2023-12-11T10:08:47Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Content-Security-Policy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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; &#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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70116</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70116"/>
		<updated>2023-12-11T10:08:14Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Content-Security-Policy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70107</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70107"/>
		<updated>2023-12-08T13:59:28Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70077</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70077"/>
		<updated>2023-12-06T09:15:09Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;Widgets 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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70076</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70076"/>
		<updated>2023-12-06T09:14:07Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;Widgets License&#039;&#039;&#039; (optional) is required to remove the innovaphone 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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70075</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70075"/>
		<updated>2023-12-06T09:13:21Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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 &amp;lt;ref&amp;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;&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Widgets License&#039;&#039;&#039; (optional) is required to remove the innovaphone branding from the Widget UI&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70074</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70074"/>
		<updated>2023-12-06T09:09:14Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;Widgets License&#039;&#039;&#039; (optional) is required to remove the innovaphone branding from the Widget UI&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70073</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=70073"/>
		<updated>2023-12-06T08:57:16Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* What is a Contact Widget? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;
&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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Web visitor in a browser. &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;
The called agent working with myApps client.&amp;lt;br&amp;gt;&lt;br /&gt;
The myApps platform services provide more elaborate tracing mechanisms. See &#039;&#039;Troubleshooting&#039;&#039; in [[{{NAMESPACE}}:Concept_myApps_platform_services#Troubleshooting|Concept myApps platform services]].&lt;br /&gt;
&lt;br /&gt;
Troubleshooting AP Services on the AP. &amp;lt;br&amp;gt;&lt;br /&gt;
Troubleshooting a specific App instance on the AP [[{{NAMESPACE}}:Course13:IT_Plus_-_Tools_for_Troubleshooting#App_Service_Logs|Course13: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. Click on Diagnose and make sure that the box App is ticked. &lt;br /&gt;
[[File:AP-Diagnostics.png|thumb|AP-Diagnostics]]&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;
&lt;br /&gt;
&lt;br /&gt;
Make sure that the logging of the App instance has been activated.&lt;br /&gt;
[[File:AP-DiagnosticsLogging.png|thumb|AP-Diagnostics-Logging]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Cardset-widget.png&amp;diff=69899</id>
		<title>File:Cardset-widget.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Cardset-widget.png&amp;diff=69899"/>
		<updated>2023-11-28T07:05:13Z</updated>

		<summary type="html">&lt;p&gt;Tac: Tac uploaded a new version of File:Cardset-widget.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Cardset-widget.png&amp;diff=69891</id>
		<title>File:Cardset-widget.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Cardset-widget.png&amp;diff=69891"/>
		<updated>2023-11-28T06:55:44Z</updated>

		<summary type="html">&lt;p&gt;Tac: Tac uploaded a new version of File:Cardset-widget.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69890</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69890"/>
		<updated>2023-11-28T06:49:57Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Loading the Widget */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is a thing 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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69889</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69889"/>
		<updated>2023-11-28T06:45:39Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Loading the Widget */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is a thing 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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;Name&amp;quot; response providing the widget&#039;s display-name.&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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69888</id>
		<title>Reference14r1:Apps/PbxManager/App Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69888"/>
		<updated>2023-11-28T06:38:55Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Add an App */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Contact-Widgets.png|150px|frame|alt=Contact Widgets App|Contact Widgets App]]&lt;br /&gt;
&lt;br /&gt;
This PBX Manager Plugin contains 1 section:&lt;br /&gt;
* Add, edit or delete Contact Widgets App Objects on the PBX.&lt;br /&gt;
&lt;br /&gt;
== Add an App ==&lt;br /&gt;
; Name&lt;br /&gt;
: The name displayed for the App Object.&lt;br /&gt;
&lt;br /&gt;
; SIP&lt;br /&gt;
: The sip-id for the App Object, which must be unique.&lt;br /&gt;
&lt;br /&gt;
; PBX&lt;br /&gt;
: Name of the PBX (required in multi-PBX environments only).&lt;br /&gt;
&lt;br /&gt;
; Licenses&lt;br /&gt;
: If you want the Contact Widgets App to consume licenses.&lt;br /&gt;
: Video License is required to make video calls.&lt;br /&gt;
: Widget Licenses are required to remove innovaphone-branding from Widget UI.&lt;br /&gt;
&lt;br /&gt;
; Config Templates&lt;br /&gt;
: Assign the app to any config template.&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69772</id>
		<title>Reference14r1:Apps/PbxManager/App Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69772"/>
		<updated>2023-11-20T14:11:32Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Contact-Widgets.png|150px|frame|alt=Contact Widgets App|Contact Widgets App]]&lt;br /&gt;
&lt;br /&gt;
This PBX Manager Plugin contains 1 section:&lt;br /&gt;
* Add, edit or delete Contact Widgets App Objects on the PBX.&lt;br /&gt;
&lt;br /&gt;
== Add an App ==&lt;br /&gt;
; Name&lt;br /&gt;
: The name displayed for the App Object.&lt;br /&gt;
&lt;br /&gt;
; SIP&lt;br /&gt;
: The sip from the App Object, which must be unique.&lt;br /&gt;
&lt;br /&gt;
; PBX&lt;br /&gt;
: Name of the PBX (required in multi-PBX environments only).&lt;br /&gt;
&lt;br /&gt;
; Licenses&lt;br /&gt;
: If you want the Contact Widgets App to consume licenses.&lt;br /&gt;
: Video License is required to make video calls.&lt;br /&gt;
: Widget Licenses are required to remove innovaphone-branding from Widget UI.&lt;br /&gt;
&lt;br /&gt;
; Config Templates&lt;br /&gt;
: Assign the app to any config template.&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69771</id>
		<title>Reference14r1:Apps/PbxManager/App Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69771"/>
		<updated>2023-11-20T14:11:05Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Add an App */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This PBX Manager Plugin contains 1 section:&lt;br /&gt;
* Add, edit or delete Contact Widgets App Objects on the PBX.&lt;br /&gt;
[[File:Contact-Widgets.png|150px|frame|alt=Contact Widgets App|Contact Widgets App]]&lt;br /&gt;
&lt;br /&gt;
== Add an App ==&lt;br /&gt;
; Name&lt;br /&gt;
: The name displayed for the App Object.&lt;br /&gt;
&lt;br /&gt;
; SIP&lt;br /&gt;
: The sip from the App Object, which must be unique.&lt;br /&gt;
&lt;br /&gt;
; PBX&lt;br /&gt;
: Name of the PBX (required in multi-PBX environments only).&lt;br /&gt;
&lt;br /&gt;
; Licenses&lt;br /&gt;
: If you want the Contact Widgets App to consume licenses.&lt;br /&gt;
: Video License is required to make video calls.&lt;br /&gt;
: Widget Licenses are required to remove innovaphone-branding from Widget UI.&lt;br /&gt;
&lt;br /&gt;
; Config Templates&lt;br /&gt;
: Assign the app to any config template.&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69770</id>
		<title>Reference14r1:Apps/PbxManager/App Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69770"/>
		<updated>2023-11-20T14:02:06Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This PBX Manager Plugin contains 1 section:&lt;br /&gt;
* Add, edit or delete Contact Widgets App Objects on the PBX.&lt;br /&gt;
[[File:Contact-Widgets.png|150px|frame|alt=Contact Widgets App|Contact Widgets App]]&lt;br /&gt;
&lt;br /&gt;
== Add an App ==&lt;br /&gt;
; Name&lt;br /&gt;
: The name displayed for the App Object.&lt;br /&gt;
&lt;br /&gt;
; SIP&lt;br /&gt;
: The sip from the App Object, which must be unique.&lt;br /&gt;
&lt;br /&gt;
; Config Template&lt;br /&gt;
: Assign App to any config template&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69769</id>
		<title>Reference14r1:Apps/PbxManager/App Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Apps/PbxManager/App_Contact_Widgets&amp;diff=69769"/>
		<updated>2023-11-20T13:59:17Z</updated>

		<summary type="html">&lt;p&gt;Tac: Created page with &amp;quot;This PBX Manager Plugin contains 1 section: * Add, edit or delete Contact Widgets App Objects on the PBX. thumb frame Contact Widgets App  == Add an App == ; Name : The name displayed for the App Object.  ; SIP : The sip from the App Object, which must be unique.  ; Config Template : Assign App to any config template&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This PBX Manager Plugin contains 1 section:&lt;br /&gt;
* Add, edit or delete Contact Widgets App Objects on the PBX.&lt;br /&gt;
[[File:Contact-Widgets.png|thumb]]&lt;br /&gt;
[[File:Contact Widgets App|frame]]&lt;br /&gt;
[[File:Contact-Widgets.png|alt=Contact Widgets App|Contact Widgets App]]&lt;br /&gt;
&lt;br /&gt;
== Add an App ==&lt;br /&gt;
; Name&lt;br /&gt;
: The name displayed for the App Object.&lt;br /&gt;
&lt;br /&gt;
; SIP&lt;br /&gt;
: The sip from the App Object, which must be unique.&lt;br /&gt;
&lt;br /&gt;
; Config Template&lt;br /&gt;
: Assign App to any config template&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Contact-Widgets.png&amp;diff=69768</id>
		<title>File:Contact-Widgets.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Contact-Widgets.png&amp;diff=69768"/>
		<updated>2023-11-20T13:56:54Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;app icon&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Widget-code-popup.png&amp;diff=69179</id>
		<title>File:Widget-code-popup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Widget-code-popup.png&amp;diff=69179"/>
		<updated>2023-10-20T09:32:53Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Adding-new-agents.png&amp;diff=69178</id>
		<title>File:Adding-new-agents.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Adding-new-agents.png&amp;diff=69178"/>
		<updated>2023-10-20T09:32:04Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Widget-new-widget-features.png&amp;diff=69177</id>
		<title>File:Widget-new-widget-features.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Widget-new-widget-features.png&amp;diff=69177"/>
		<updated>2023-10-20T09:31:34Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Widget-code-new-widget.png&amp;diff=69176</id>
		<title>File:Widget-code-new-widget.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Widget-code-new-widget.png&amp;diff=69176"/>
		<updated>2023-10-20T09:30:08Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69175</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69175"/>
		<updated>2023-10-20T09:29:21Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is a thing 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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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 Cardset-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;
= 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;
  &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;; 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;Name&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;Name&amp;quot; response providing the widget&#039;s display-name.&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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69174</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69174"/>
		<updated>2023-10-20T09:28:57Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is a thing 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 Cardset-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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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;
[[Bild: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 Cardset-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;
= 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;
[[Bild: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;
  &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;; 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;Name&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;Name&amp;quot; response providing the widget&#039;s display-name.&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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Concept-widgets-overview.png&amp;diff=69173</id>
		<title>File:Concept-widgets-overview.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Concept-widgets-overview.png&amp;diff=69173"/>
		<updated>2023-10-20T08:49:56Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Sidebar-Widget.png&amp;diff=69172</id>
		<title>File:Sidebar-Widget.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Sidebar-Widget.png&amp;diff=69172"/>
		<updated>2023-10-20T08:48:45Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69171</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69171"/>
		<updated>2023-10-20T08:48:02Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* What is a Contact Widget? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is a thing 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 Cardset-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;
[[Bild: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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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;
[[Bild: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 Cardset-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;
= 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;
[[Bild: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;
  &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;; 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;Name&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;Name&amp;quot; response providing the widget&#039;s display-name.&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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Cardset-widget.png&amp;diff=69170</id>
		<title>File:Cardset-widget.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Cardset-widget.png&amp;diff=69170"/>
		<updated>2023-10-20T08:47:01Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69169</id>
		<title>Reference14r1:Concept Contact Widgets</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r1:Concept_Contact_Widgets&amp;diff=69169"/>
		<updated>2023-10-20T08:42:37Z</updated>

		<summary type="html">&lt;p&gt;Tac: Created page with &amp;quot;{{FIXME|reason=still in progress}} Conference  = Applies To = * innovaphone PBX from version 14r1 * innovaphone Application Platform  = Requirements = * innovaphone PBX * innovaphone Application Platform * Firmware Version 14r1  = What is a Contact Widget? = A Contact Widget (or Website Widget) is a thing 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...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=still in progress}}&lt;br /&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;
&lt;br /&gt;
= What is a Contact Widget? =&lt;br /&gt;
A Contact Widget (or Website Widget) is a thing 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 Cardset-Widget:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Cardset-widget.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of a Sidebar-Widget:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sidebar-Widget.png]]&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
[[Bild: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;Cardset 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 Cardset 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;
* 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 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;
&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;).&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;/widgets/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 cardset 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;
&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;
[[Bild: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 Cardset-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;
= 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;
[[Bild: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;
  &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;; 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;Name&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;Name&amp;quot; response providing the widget&#039;s display-name.&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;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&#039;&#039;&#039;If an issue can be reproduced&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=67792</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=67792"/>
		<updated>2023-05-25T11:26:47Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://get.anydesk.com/PK8coqHH/AnyDesk.exe Download Anydesk]&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales-at-innovaphone-dot-com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 13:24, 25 May 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Howto:Firmware_Upgrade_V13r3 | Version 13r3 SR5]] is now available from the new [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 13:24, 25 May 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Howto:Firmware_Upgrade_V13r2 | Version 13r2 SR23]] is now available from the new [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] ([[User talk:Afi|talk]]) 11:11, 2 May 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP73_1008_(4.0.2)_released | Wireless Handset Firmware IP73 1008 (4.0.2)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Smayoral|sma]] 10:29, 27 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125871 (sr 62) available | Version 12r2 Service Release 62]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Smayoral|sma]] 10:29, 27 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V11r2 product/11r2/firmware 113809 (sr 66) available | Version 11r2 Service Release 66]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 16:43, 25 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Working Beta beta1 available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040621_(6.2.7)_released | Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 13:13, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130113_%284.1.8%29_released | WinPDM Software 3130113 (4.1.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 17:40, 14 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r1 product/12r1/firmware 121355(sr 46) available | Version 12r1 Service Release 46]] is now available from the [https://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 11:22, 14 April 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Operator9 90246 (hotfix24) available | Operator9 hotfix24]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
* [[Support:What are the Roadmap Documents? | Roadmaps ]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=67789</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=67789"/>
		<updated>2023-05-25T11:24:12Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://get.anydesk.com/PK8coqHH/AnyDesk.exe Download Anydesk]&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales-at-innovaphone-dot-com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 13:24, 25 May 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Howto:Firmware_Upgrade_V13r3 | Version 13r3 SR5]] is now available from the new [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Tac|Tac]] ([[User talk:Tac|talk]]) 13:24, 25 May 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Howto:Firmware_Upgrade_V13r2 | Version 13r2 SR23]] is now available from the new [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] ([[User talk:Afi|talk]]) 11:11, 2 May 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP73_1008_(4.0.2)_released | Wireless Handset Firmware IP73 1008 (4.0.2)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Smayoral|sma]] 10:29, 27 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r3 product/13r3/firmware 137818 (sr 4) available | Version 13r3 Service Release 4]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Smayoral|sma]] 10:29, 27 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r2 product/13r2/firmware 136416 (sr 22) available | Version 13r2 Service Release 22]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Smayoral|sma]] 10:29, 27 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125871 (sr 62) available | Version 12r2 Service Release 62]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Smayoral|sma]] 10:29, 27 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V11r2 product/11r2/firmware 113809 (sr 66) available | Version 11r2 Service Release 66]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 16:43, 25 April 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Working Beta beta1 available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040621_(6.2.7)_released | Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 13:13, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130113_%284.1.8%29_released | WinPDM Software 3130113 (4.1.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 17:40, 14 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r1 product/12r1/firmware 121355(sr 46) available | Version 12r1 Service Release 46]] is now available from the [https://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 11:22, 14 April 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Operator9 90246 (hotfix24) available | Operator9 hotfix24]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
* [[Support:What are the Roadmap Documents? | Roadmaps ]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_SoftphoneApp&amp;diff=64417</id>
		<title>Reference13r3:Concept App SoftphoneApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_SoftphoneApp&amp;diff=64417"/>
		<updated>2022-11-30T10:52:47Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* In-call feature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept_App_SoftphoneApp]]&lt;br /&gt;
{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
* myApps clients version 13r3&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* myApps native client (Windows, MacOS, iOS or Android) or a Browser (Chrome, Firefox, ...)&lt;br /&gt;
* App(phone) and App(softphone) license per user.&lt;br /&gt;
* Port license per registered softphone&lt;br /&gt;
&lt;br /&gt;
== Compatibility ==&lt;br /&gt;
&lt;br /&gt;
* Softphone App running in a myApps 13r3 native client is not compatible with a 13r2/13r1 PBX.&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The Softphone App is directly loaded from the PBX either in a native client or in a brower.&lt;br /&gt;
&lt;br /&gt;
For configuring the softphone app at a user object&lt;br /&gt;
# enable the app &amp;quot;softphone&amp;quot;.&lt;br /&gt;
# activate the App(softphone) and App(phone) licenses.&lt;br /&gt;
# create a device for registration and configure &amp;quot;softphone&amp;quot; as the device app.&lt;br /&gt;
&lt;br /&gt;
Additionally users can add a softphone and the corresponding device themselves using the Profile App, as long as (1.) and (2.) are already configured by the admin.&lt;br /&gt;
&lt;br /&gt;
=== Standard App, Wake and Push mechanism ===&lt;br /&gt;
&lt;br /&gt;
myApps client allows to define a default app for telephony.&lt;br /&gt;
&lt;br /&gt;
If the Softphone App is defined as the default app, the PBX will wake the softphone if the user receives a call and the softphone is not running.&lt;br /&gt;
&lt;br /&gt;
=== Technical Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Native client ====&lt;br /&gt;
&lt;br /&gt;
If the softphone App is loaded in a native client, a signaling module establishes the registration to the PBX and handles signaling messages for the calls.&lt;br /&gt;
&lt;br /&gt;
That means a running Web UI is not needed to establish a connection to the PBX and to start and receive calls. Main advantages of this solution are: &lt;br /&gt;
* Calls are signaled to the user even if the UI is not opened (important in mobile environment to present the call faster to the user)&lt;br /&gt;
* Calls are not terminated if the UI is closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A first start of myApps triggers an automatic launch of the Softphone App (defined as Standard App) in order to get PBX url, app, hardware id and credentials for connecting to the PBX.&lt;br /&gt;
&lt;br /&gt;
This information is stored locally in the operating system and is only accessible by the user (e.g. Windows Registry).&lt;br /&gt;
&lt;br /&gt;
Following starts of myApps do not require to launch the Softphone since the signaling module is able to connect to the PBX with the stored information.&lt;br /&gt;
&lt;br /&gt;
If the Softphone App is removed as standard app this data is deleted from the operating system. Therefore anytime a new Softphone App is defined as standard app it will be started automatically in order to get the information.&lt;br /&gt;
&lt;br /&gt;
Once myApps is started the signaling module automatically opens a websocket connection to the PBX and registers to it. At this point the signaling module is able to receive calls (as mentioned before this is really important with mobile devices)&lt;br /&gt;
&lt;br /&gt;
While the UI is still not running a native notification will be presented to the user in order to accept or reject the call. In the meantime the Softphone UI will be started since it is defined as standard app but the good point is that the user does not have to wait until the Softphone UI is fully loaded like it happened in 13r1 or 13r2 versions.&lt;br /&gt;
&lt;br /&gt;
If the call is accepted before the Softphone UI runs it will only have audio. Video will be added later if the &amp;quot;Autostart video&amp;quot; setting is on. &lt;br /&gt;
&lt;br /&gt;
When the Softphone UI is started it opens a websocket connection to the new signaling module in order to monitor the calls and to send user commands (terminate call, appSharing, view mode, mute, add/remove video, ...) to the module.&lt;br /&gt;
&lt;br /&gt;
If the Softphone UI is closed during a call. The calls switches to only audio and a new notification shows up in order to be able to disconnect the call.&lt;br /&gt;
&lt;br /&gt;
==== Browser ====&lt;br /&gt;
&lt;br /&gt;
If the Softphone App is loaded in a browser, it uses the WebRTC technology.&lt;br /&gt;
&lt;br /&gt;
The registration to the PBX and signaling is done in Javascript and therefore the Softphone UI needs to run in order to make and receive calls.&lt;br /&gt;
&lt;br /&gt;
This solution does not offer some features which are provided by the native services.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Some functionalities are available even if the Softphone UI is not running and there are also differences between native clients and browsers&lt;br /&gt;
&lt;br /&gt;
=== Softphone UI not running ===&lt;br /&gt;
&lt;br /&gt;
 {|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Audio calls only || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Accept/reject incoming calls (using OS notification) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Disconnect calls (using OS notification) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; &lt;br /&gt;
|-&lt;br /&gt;
| Possibility to record calls [https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_myApps_platform_services#Recording Recording] || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use cases:&lt;br /&gt;
* Smartphones: On the smartphones incoming calls (via Push) can be accepted, while the UI is still loading.&lt;br /&gt;
* Windows: Call is not disconnected when closing Softphone App inside myApps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Additional features with Softphone UI ===&lt;br /&gt;
&lt;br /&gt;
==== In-call feature ====&lt;br /&gt;
&lt;br /&gt;
 {|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Media: Multi-Video, application sharing, non-persistent chat &lt;br /&gt;
 || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Call control: Hold, transfer, park, DTMF || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Local 3-party-conference || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Additional conference control: Request to speak, list of participants || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Display recording state. Start / stop recording? || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Call completion || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Hide own number, send number || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Start external application for call (automatic or manual) [https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_myApps_platform_services#Call_an_external_application_for_calls External Applications] || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Detach video || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Acoustic &amp;quot;Blubb&amp;quot; when joining a conference || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== General features (not call-related) ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
| || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Favorites (profile picture, dialog monitoring, start call, start chat, pickup, transfer)&lt;br /&gt;
 || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Call history (profile picture, start call, start chat, transfer) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Search (profile picture, contact details, start call, start chat, transfer) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Call forwardings (display and configuration) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| New ringtones added in 13r3 || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other features ===&lt;br /&gt;
&lt;br /&gt;
Additionally Android Auto is now supported and we also did a general rework of the Sofphone UI:&lt;br /&gt;
* Multi-video support in conferences (similar to Conference Web Access)&lt;br /&gt;
* Improved usability&lt;br /&gt;
&lt;br /&gt;
== Known problems ==&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
* [[Reference13r3:Concept_myApps_platform_services]]&lt;br /&gt;
* [[Reference13r3:Concept_myApps]]&lt;br /&gt;
* [[Reference13r3:Concept_Multi-Video-Conference]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_SoftphoneApp&amp;diff=64416</id>
		<title>Reference13r3:Concept App SoftphoneApp</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_SoftphoneApp&amp;diff=64416"/>
		<updated>2022-11-30T10:52:28Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept_App_SoftphoneApp]]&lt;br /&gt;
{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
* myApps clients version 13r3&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* myApps native client (Windows, MacOS, iOS or Android) or a Browser (Chrome, Firefox, ...)&lt;br /&gt;
* App(phone) and App(softphone) license per user.&lt;br /&gt;
* Port license per registered softphone&lt;br /&gt;
&lt;br /&gt;
== Compatibility ==&lt;br /&gt;
&lt;br /&gt;
* Softphone App running in a myApps 13r3 native client is not compatible with a 13r2/13r1 PBX.&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
The Softphone App is directly loaded from the PBX either in a native client or in a brower.&lt;br /&gt;
&lt;br /&gt;
For configuring the softphone app at a user object&lt;br /&gt;
# enable the app &amp;quot;softphone&amp;quot;.&lt;br /&gt;
# activate the App(softphone) and App(phone) licenses.&lt;br /&gt;
# create a device for registration and configure &amp;quot;softphone&amp;quot; as the device app.&lt;br /&gt;
&lt;br /&gt;
Additionally users can add a softphone and the corresponding device themselves using the Profile App, as long as (1.) and (2.) are already configured by the admin.&lt;br /&gt;
&lt;br /&gt;
=== Standard App, Wake and Push mechanism ===&lt;br /&gt;
&lt;br /&gt;
myApps client allows to define a default app for telephony.&lt;br /&gt;
&lt;br /&gt;
If the Softphone App is defined as the default app, the PBX will wake the softphone if the user receives a call and the softphone is not running.&lt;br /&gt;
&lt;br /&gt;
=== Technical Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Native client ====&lt;br /&gt;
&lt;br /&gt;
If the softphone App is loaded in a native client, a signaling module establishes the registration to the PBX and handles signaling messages for the calls.&lt;br /&gt;
&lt;br /&gt;
That means a running Web UI is not needed to establish a connection to the PBX and to start and receive calls. Main advantages of this solution are: &lt;br /&gt;
* Calls are signaled to the user even if the UI is not opened (important in mobile environment to present the call faster to the user)&lt;br /&gt;
* Calls are not terminated if the UI is closed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A first start of myApps triggers an automatic launch of the Softphone App (defined as Standard App) in order to get PBX url, app, hardware id and credentials for connecting to the PBX.&lt;br /&gt;
&lt;br /&gt;
This information is stored locally in the operating system and is only accessible by the user (e.g. Windows Registry).&lt;br /&gt;
&lt;br /&gt;
Following starts of myApps do not require to launch the Softphone since the signaling module is able to connect to the PBX with the stored information.&lt;br /&gt;
&lt;br /&gt;
If the Softphone App is removed as standard app this data is deleted from the operating system. Therefore anytime a new Softphone App is defined as standard app it will be started automatically in order to get the information.&lt;br /&gt;
&lt;br /&gt;
Once myApps is started the signaling module automatically opens a websocket connection to the PBX and registers to it. At this point the signaling module is able to receive calls (as mentioned before this is really important with mobile devices)&lt;br /&gt;
&lt;br /&gt;
While the UI is still not running a native notification will be presented to the user in order to accept or reject the call. In the meantime the Softphone UI will be started since it is defined as standard app but the good point is that the user does not have to wait until the Softphone UI is fully loaded like it happened in 13r1 or 13r2 versions.&lt;br /&gt;
&lt;br /&gt;
If the call is accepted before the Softphone UI runs it will only have audio. Video will be added later if the &amp;quot;Autostart video&amp;quot; setting is on. &lt;br /&gt;
&lt;br /&gt;
When the Softphone UI is started it opens a websocket connection to the new signaling module in order to monitor the calls and to send user commands (terminate call, appSharing, view mode, mute, add/remove video, ...) to the module.&lt;br /&gt;
&lt;br /&gt;
If the Softphone UI is closed during a call. The calls switches to only audio and a new notification shows up in order to be able to disconnect the call.&lt;br /&gt;
&lt;br /&gt;
==== Browser ====&lt;br /&gt;
&lt;br /&gt;
If the Softphone App is loaded in a browser, it uses the WebRTC technology.&lt;br /&gt;
&lt;br /&gt;
The registration to the PBX and signaling is done in Javascript and therefore the Softphone UI needs to run in order to make and receive calls.&lt;br /&gt;
&lt;br /&gt;
This solution does not offer some features which are provided by the native services.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Some functionalities are available even if the Softphone UI is not running and there are also differences between native clients and browsers&lt;br /&gt;
&lt;br /&gt;
=== Softphone UI not running ===&lt;br /&gt;
&lt;br /&gt;
 {|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Audio calls only || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Accept/reject incoming calls (using OS notification) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Disconnect calls (using OS notification) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007; &lt;br /&gt;
|-&lt;br /&gt;
| Possibility to record calls [https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_myApps_platform_services#Recording Recording] || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use cases:&lt;br /&gt;
* Smartphones: On the smartphones incoming calls (via Push) can be accepted, while the UI is still loading.&lt;br /&gt;
* Windows: Call is not disconnected when closing Softphone App inside myApps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Additional features with Softphone UI ===&lt;br /&gt;
&lt;br /&gt;
==== In-call feature ====&lt;br /&gt;
&lt;br /&gt;
 {|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Media: Multi-Video, application sharing, non-persistent chat &lt;br /&gt;
 || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Call control: Hold, transfer, park, DTMF || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Local 3-party-conference: || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Additional conference control: Request to speak, list of participants || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Display recording state. Start / stop recording? || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Call completion || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Hide own number, send number || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Start external application for call (automatic or manual) [https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_myApps_platform_services#Call_an_external_application_for_calls External Applications] || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Detach video || &amp;amp;#10004; || &amp;amp;#10007; || &amp;amp;#10007; || &amp;amp;#10004; || &amp;amp;#10007;&lt;br /&gt;
|-&lt;br /&gt;
| Acoustic &amp;quot;Blubb&amp;quot; when joining a conference || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== General features (not call-related) ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;text-align: left; font-weight: bold&amp;quot;| Availability&lt;br /&gt;
|-&lt;br /&gt;
| || Windows || iOS || Android || macOS || Browser&amp;lt;ref&amp;gt;This refers to the myApps web application running in a browser with no platform services available&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Favorites (profile picture, dialog monitoring, start call, start chat, pickup, transfer)&lt;br /&gt;
 || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Call history (profile picture, start call, start chat, transfer) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Search (profile picture, contact details, start call, start chat, transfer) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| Call forwardings (display and configuration) || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|-&lt;br /&gt;
| New ringtones added in 13r3 || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004; || &amp;amp;#10004;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other features ===&lt;br /&gt;
&lt;br /&gt;
Additionally Android Auto is now supported and we also did a general rework of the Sofphone UI:&lt;br /&gt;
* Multi-video support in conferences (similar to Conference Web Access)&lt;br /&gt;
* Improved usability&lt;br /&gt;
&lt;br /&gt;
== Known problems ==&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
* [[Reference13r3:Concept_myApps_platform_services]]&lt;br /&gt;
* [[Reference13r3:Concept_myApps]]&lt;br /&gt;
* [[Reference13r3:Concept_Multi-Video-Conference]]&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference:Supported_SIP_Features_and_List_of_RFC%27s&amp;diff=63716</id>
		<title>Reference:Supported SIP Features and List of RFC&#039;s</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference:Supported_SIP_Features_and_List_of_RFC%27s&amp;diff=63716"/>
		<updated>2022-10-17T08:14:58Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* List of supported RFCs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary== &lt;br /&gt;
SIP Features and list of RFC’s supported in version 6 of innovaphone firmware&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
* All innovaphone V6 devices&lt;br /&gt;
Build  06-6040001 and later.&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===PBX Features and their corresponding RFCs===&lt;br /&gt;
&lt;br /&gt;
MWI (RFC 3842/RFC 3265 &amp;quot;Subscription für message-summary&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
DTMF (RFC 2833 &amp;quot;RTP payload for DTMF&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Name Identification (Display String, RFC 3325 &amp;quot;Asserted Identity&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Hold/Retrieve (RFC 3264 &amp;quot;Offer/Answer Model for SDP&amp;quot;) [[Howto:SIP Reverse Negotiation - Call Transfer]]&lt;br /&gt;
&lt;br /&gt;
Transfer (RFC 3515 &amp;quot;REFER Method&amp;quot;, RFC 3891 &amp;quot;Replaces Header)&lt;br /&gt;
&lt;br /&gt;
Coder Change [T.38] (RFC 3264 &amp;quot;Re-Negotiation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Call Forwarding (PBX internal, &amp;quot;183 Call Is Being Forwarded&amp;quot;, &amp;quot;Diversion Header&amp;quot;)    &lt;br /&gt;
&lt;br /&gt;
Overlap Dialing (RFC 3578)&lt;br /&gt;
&lt;br /&gt;
Dialoge State monitoring (partner Key) (RFC 4235)&lt;br /&gt;
&lt;br /&gt;
Instant Messaging (RFC 3428)&lt;br /&gt;
&lt;br /&gt;
=== CTI Features and their corresponding RFCs ===&lt;br /&gt;
&lt;br /&gt;
Initiate outgoing call (a call with &amp;lt;code&amp;gt;Answer-Mode: Auto&amp;lt;/code&amp;gt; header (RFC 5373) is sent to the originating phone)&lt;br /&gt;
&lt;br /&gt;
Accept incoming call (an unsolicited NOTIFY-Request with &amp;lt;code&amp;gt;Event: talk&amp;lt;/code&amp;gt; header (RFC 3265) is sent to the accepting phone)&lt;br /&gt;
&lt;br /&gt;
In a scenario where a call is accepted on a different device (e.g. pickup group), the PBX will use the Reason Header &amp;lt;code&amp;gt;Reason: SIP ;cause=200 ;text=&amp;quot;Call completed elsewhere&amp;quot;&amp;lt;/code&amp;gt; in its Cancel Message to signal that a call is accepted elsewhere and must not be entered in the phones call list. (RFC 3326)&lt;br /&gt;
&lt;br /&gt;
===List of supported RFCs===&lt;br /&gt;
&lt;br /&gt;
*RFC 1889&lt;br /&gt;
RTP: Real-Time Transport Protocol &lt;br /&gt;
 &lt;br /&gt;
*RFC 1890&lt;br /&gt;
RTP Profile for Audio and Video Conferences with Minimal Control &lt;br /&gt;
 &lt;br /&gt;
*RFC 2327, RFC 3266, RFC 4566&lt;br /&gt;
SDP: Session Description Protocol&lt;br /&gt;
 &lt;br /&gt;
*RFC 2396 &lt;br /&gt;
Uniform Resource Identifiers (URI): Generic Syntax&lt;br /&gt;
 &lt;br /&gt;
* RFC 2543&lt;br /&gt;
SIP: Session Initiation Protocol (obsolete)&lt;br /&gt;
 &lt;br /&gt;
* RFC 2616&lt;br /&gt;
Hypertext Transfer protocol (HTTP/1.1)&lt;br /&gt;
 &lt;br /&gt;
*RFC 2617 &lt;br /&gt;
HTTP Authentication: Basic and Digest Access Authentication&lt;br /&gt;
 &lt;br /&gt;
*RFC 2782 &lt;br /&gt;
A DNS RR for specifying the location of services (DNS SRV) &lt;br /&gt;
 &lt;br /&gt;
*RFC 2976&lt;br /&gt;
The SIP INFO Method (including the non-standard &amp;lt;code&amp;gt;application/dtmf-relay&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;application/dtmf&amp;lt;/code&amp;gt; content types with a fixed duration of 250)&lt;br /&gt;
&lt;br /&gt;
*RFC 3203&lt;br /&gt;
DHCP reconfigure extension&lt;br /&gt;
 &lt;br /&gt;
*RFC 3261 &lt;br /&gt;
SIP: Session Initiation Protocol&lt;br /&gt;
 &lt;br /&gt;
*RFC 3263 &lt;br /&gt;
Session Initiation Protocol (SIP): Locating SIP Servers &lt;br /&gt;
 &lt;br /&gt;
*RFC 3264 &lt;br /&gt;
An Offer/Answer Model with the Session Description Protocol (SDP) [[Howto:SIP Reverse Negotiation - Call Transfer]]&lt;br /&gt;
&lt;br /&gt;
*RFC 3265 &lt;br /&gt;
SIP-Specific Event Notification&lt;br /&gt;
&lt;br /&gt;
*RFC 3323&lt;br /&gt;
A Privacy Mechanism for the Session Initiation Protocol (SIP)&lt;br /&gt;
 &lt;br /&gt;
*RFC 3326 &lt;br /&gt;
The Reason Header Field for the Session Initiation Protocol&lt;br /&gt;
 &lt;br /&gt;
*RFC 3389&lt;br /&gt;
RTP Payload for Comfort Noise&lt;br /&gt;
 &lt;br /&gt;
*RFC 3515 &lt;br /&gt;
The Session Initiation Protocol (SIP) Refer Method&lt;br /&gt;
 &lt;br /&gt;
*RFC 3550&lt;br /&gt;
RTP: Transport Protocol for Real-Time Applications&lt;br /&gt;
 &lt;br /&gt;
*RFC 3551&lt;br /&gt;
RTP Profile for A/V Conferences with Minimal Control&lt;br /&gt;
 &lt;br /&gt;
*RFC 3555&lt;br /&gt;
MIME Type Registration of RTP Payload Formats&lt;br /&gt;
 &lt;br /&gt;
*RFC 3578 &lt;br /&gt;
Mapping of Integrated Services Digital Network (ISDN) User Part (ISUP) Overlap Signalling to the Session Initiation Protocol (SIP)&lt;br /&gt;
 &lt;br /&gt;
*RFC 3680&lt;br /&gt;
SIP Event Package for Registrations&lt;br /&gt;
 &lt;br /&gt;
*RFC 3764&lt;br /&gt;
enumservice registration for SIP Adresses-of-Record&lt;br /&gt;
 &lt;br /&gt;
*RFC 3824&lt;br /&gt;
Using E.164 numbers with SIP&lt;br /&gt;
 &lt;br /&gt;
*RFC 3891 &lt;br /&gt;
The Session Initiation Protocol ‘Replaces Header’&lt;br /&gt;
 &lt;br /&gt;
*RFC 3892 &lt;br /&gt;
The SIP Referred-By Mechanism &lt;br /&gt;
-SIP-aware filtering (to prevent SIP attacks)&lt;br /&gt;
&lt;br /&gt;
*RFC 3842&lt;br /&gt;
SIP Message Waiting&lt;br /&gt;
 &lt;br /&gt;
*RFC 3311&lt;br /&gt;
re-INVITE&lt;br /&gt;
 &lt;br /&gt;
*RFC 2833&lt;br /&gt;
DTMF via RTP Channel , RTP payload for DTMF&lt;br /&gt;
 &lt;br /&gt;
*RFC 3325&lt;br /&gt;
Name identification&lt;br /&gt;
 &lt;br /&gt;
*RFC 3578&lt;br /&gt;
Overlap Dialing&lt;br /&gt;
 &lt;br /&gt;
*RFC 3420&lt;br /&gt;
Internet Media Type message/sipfrag&lt;br /&gt;
&lt;br /&gt;
*RFC 3428&lt;br /&gt;
Extension for Instant Messaging&lt;br /&gt;
&lt;br /&gt;
*RFC 3262&lt;br /&gt;
Reliability of Provisional Responses in Session Initiation Protocol (SIP)&lt;br /&gt;
&lt;br /&gt;
*RFC 4028&lt;br /&gt;
Session Timers in the Session Initiation Protocol (SIP)&lt;br /&gt;
&lt;br /&gt;
*RFC 4235&lt;br /&gt;
Dialoge State monitoring (partner Key)&lt;br /&gt;
&lt;br /&gt;
*RFC 4612&lt;br /&gt;
Real-Time Facsimile (T.38) - audio/t38 MIME Sub-type Registration&lt;br /&gt;
&lt;br /&gt;
*RFC 4733&lt;br /&gt;
RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals&lt;br /&gt;
&lt;br /&gt;
*RFC 4916 &lt;br /&gt;
Connected Identity in the Session Initiation Protocol (SIP)&lt;br /&gt;
&lt;br /&gt;
*RFC 5373&lt;br /&gt;
Requesting Answering Modes for the Session Initiation - only Header &amp;lt;code&amp;gt;Answer-Mode: Auto&amp;lt;/code&amp;gt; for calls started via SOAP/TAPI is supported. Header &amp;lt;code&amp;gt;Priv-Answer-Mode&amp;lt;/code&amp;gt; for urgent calls is not supported.&lt;br /&gt;
&lt;br /&gt;
*RFC 4568&lt;br /&gt;
Session Description Protocol (SDP) Security Descriptions for Media Streams&lt;br /&gt;
&lt;br /&gt;
===List of supported RFCs in V8===&lt;br /&gt;
&lt;br /&gt;
*RFC 3863&lt;br /&gt;
Presence Information Data Format (PIDF)&lt;br /&gt;
&lt;br /&gt;
*RFC 4480&lt;br /&gt;
Rich Presence Extensions to the Presence Information Data Format (PIDF)&lt;br /&gt;
&lt;br /&gt;
*RFC 3856&lt;br /&gt;
A Presence Event Package for the Session Initiation Protocol (SIP)&lt;br /&gt;
&lt;br /&gt;
===List of supported RFCs in V9===&lt;br /&gt;
&lt;br /&gt;
*RFC 4235&lt;br /&gt;
An INVITE-Initiated Dialog Event Package for the Session Initiation Protocol (SIP)&lt;br /&gt;
&lt;br /&gt;
*RFC 4040&lt;br /&gt;
RTP Payload Format for a 64 kbit/s Transparent Call&lt;br /&gt;
&lt;br /&gt;
===List of supported RFCs in v11r1===&lt;br /&gt;
* RFC 5245 &lt;br /&gt;
Interactive Connectivity Establishment (ICE)&lt;br /&gt;
&lt;br /&gt;
* RFC 6336&lt;br /&gt;
Interactive Connectivity Establishment (ICE) Options&lt;br /&gt;
&lt;br /&gt;
*RFC 5763 &lt;br /&gt;
DTLS-SRTP Framework&lt;br /&gt;
&lt;br /&gt;
===List of supported RFCs in v13r2===&lt;br /&gt;
*RFC 5626&lt;br /&gt;
Client-Initiated Connections in SIP&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Howto:SIP Reverse Negotiation - Call Transfer]]&lt;br /&gt;
&amp;lt;!-- * [[Howto:Does the innovaphone IP200 support RFC 3261 aka SIP?]] --&amp;gt;&lt;br /&gt;
* [[Howto:SIP Media Negotiation - Details]]&lt;br /&gt;
* [[Howto:Guidelines for Testing 3rd Party SIP Terminal Devices]]&lt;br /&gt;
* Additional RFC&#039;s listed here: [[Howto:Security_works_with_innovaphone]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- aliases&lt;br /&gt;
rfc3265 rfc 3265 RFC-3265 &lt;br /&gt;
rfc2833 rfc 2833 RFC-2833 &lt;br /&gt;
rfc3325 rfc 3325 RFC-3325 &lt;br /&gt;
rfc3264 rfc 3264 RFC-3264 &lt;br /&gt;
rfc3891 rfc 3891 RFC-3891 &lt;br /&gt;
rfc3264 rfc 3264 RFC-3264 &lt;br /&gt;
rfc3578 rfc 3578 RFC-3578 &lt;br /&gt;
rfc4235 rfc 4235 RFC-4235 &lt;br /&gt;
rfc3428 rfc 3428 RFC-3428 &lt;br /&gt;
rfc1889 rfc 1889 RFC-1889 &lt;br /&gt;
rfc2327 rfc 2327 RFC-2327 &lt;br /&gt;
rfc2396 rfc 2396 RFC-2396 &lt;br /&gt;
rfc2543 rfc 2543 RFC-2543 &lt;br /&gt;
rfc2616 rfc 2616 RFC-2616 &lt;br /&gt;
rfc2617 rfc 2617 RFC-2617 &lt;br /&gt;
rfc2782 rfc 2782 RFC-2782 &lt;br /&gt;
rfc2976 rfc 2976 RFC-2976 &lt;br /&gt;
rfc3261 rfc 3261 RFC-3261 &lt;br /&gt;
rfc3263 rfc 3263 RFC-3263 &lt;br /&gt;
rfc3264 rfc 3264 RFC-3264 &lt;br /&gt;
rfc3265 rfc 3265 RFC-3265 &lt;br /&gt;
rfc3326 rfc 3326 RFC-3326 &lt;br /&gt;
rfc3389 rfc 3389 RFC-3389 &lt;br /&gt;
rfc3515 rfc 3515 RFC-3515 &lt;br /&gt;
rfc3550 rfc 3550 RFC-3550 &lt;br /&gt;
rfc3551 rfc 3551 RFC-3551 &lt;br /&gt;
rfc3555 rfc 3555 RFC-3555 &lt;br /&gt;
rfc3578 rfc 3578 RFC-3578 &lt;br /&gt;
rfc3680 rfc 3680 RFC-3680 &lt;br /&gt;
rfc3764 rfc 3764 RFC-3764 &lt;br /&gt;
rfc3824 rfc 3824 RFC-3824 &lt;br /&gt;
rfc3891 rfc 3891 RFC-3891 &lt;br /&gt;
rfc3892 rfc 3892 RFC-3892 &lt;br /&gt;
rfc3842 rfc 3842 RFC-3842 &lt;br /&gt;
rfc3311 rfc 3311 RFC-3311 &lt;br /&gt;
rfc2833 rfc 2833 RFC-2833 &lt;br /&gt;
rfc3325 rfc 3325 RFC-3325 &lt;br /&gt;
rfc3578 rfc 3578 RFC-3578 &lt;br /&gt;
rfc3420 rfc 3420 RFC-3420 &lt;br /&gt;
rfc4235 rfc 4235 RFC-4235 &lt;br /&gt;
rfc3428 rfc 3428 RFC-3428 &lt;br /&gt;
rfc3262 rfc 3262 RFC-3262 &lt;br /&gt;
rfc3261 rfc 3261 RFC-3261 &lt;br /&gt;
rfc3863 rfc 3863 RFC-3863&lt;br /&gt;
rfc4480 rfc 4480 RFC-4480 &lt;br /&gt;
rfc3856 rfc 3856 RFC-3856&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60821</id>
		<title>Reference13r3:Concept Multi-Video-Conference</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60821"/>
		<updated>2022-01-19T15:11:43Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Multi-Video Signaling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The PBX conference object now supports multiple video streams.&lt;br /&gt;
Not only one video stream of the current speaker, but video streams from all participating users.&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* Firmware V13r3xx&lt;br /&gt;
* Endpoints supporting the multi-video signaling technology&lt;br /&gt;
&lt;br /&gt;
== Endpoints ==&lt;br /&gt;
&lt;br /&gt;
In order to see multiple videos the endpoint must support the new multi-video signaling.&lt;br /&gt;
Available endpoints are:&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softphone-App (version 13r3 or higher)&lt;br /&gt;
* innovaphone Phone-App (version 13r3 or higher) and a desk-phone&lt;br /&gt;
* innovaphone Web Access Client&lt;br /&gt;
&lt;br /&gt;
== Multi-Video Signaling ==&lt;br /&gt;
&lt;br /&gt;
A multi-video conference starts as any other traditional conference by calling a conference object (See &amp;quot;How to configure a conference object&amp;quot; for mor information).&lt;br /&gt;
An audio-only connection is established at the very beginning. A welcome message might be played to the new participant (if configured).&lt;br /&gt;
After this initial call setup the calling endpoint is joined into the conference room. It now can hear all other participants and can speak to other participants.&lt;br /&gt;
&lt;br /&gt;
To every participant the conference room provides information about all current participants.&lt;br /&gt;
This participant information block contains information about:&lt;br /&gt;
&lt;br /&gt;
* Display name&lt;br /&gt;
* Status flags (e.g. is-muted, is-speaking, is-sharing, wants-to-speak)&lt;br /&gt;
* Video stream information (contains information about available video streams of a participant)&lt;br /&gt;
&lt;br /&gt;
After having the initial audio-only connection established, an endpoint with a video camera may establish additional video-send connections.&lt;br /&gt;
These video-send signaling connections are independent from (but related to) the main connection (audio-only).&lt;br /&gt;
Up to 3 video-send connections can be established with different quality/bandwith profiles:&lt;br /&gt;
&lt;br /&gt;
* LOW bandwith video stream (bandwith &amp;lt; 100 kbit/s)&lt;br /&gt;
* MEDIUM bandwith video stream (bandwith &amp;lt; 250 kbit/s)&lt;br /&gt;
* HIGH bandwith video stream (bandwith &amp;lt; 1000 kbit/s)&lt;br /&gt;
&lt;br /&gt;
All these video streams are sent to the central conference. The central conference will broadcast these video streams to other particiants on demand.&lt;br /&gt;
&lt;br /&gt;
Other participants get information about the offered video streams and other participants can get these video streams by opening dedicated video-recv connections.&lt;br /&gt;
&lt;br /&gt;
[[Image:Conference_Videostreams.png]]&lt;br /&gt;
&lt;br /&gt;
== Bandwith Consideration ==&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Conference_Videostreams.png&amp;diff=60820</id>
		<title>File:Conference Videostreams.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Conference_Videostreams.png&amp;diff=60820"/>
		<updated>2022-01-19T15:10:26Z</updated>

		<summary type="html">&lt;p&gt;Tac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60662</id>
		<title>Reference13r3:Concept Multi-Video-Conference</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60662"/>
		<updated>2021-12-21T15:01:50Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Multi-Video Signaling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The PBX conference object now supports multiple video streams.&lt;br /&gt;
Not only one video stream of the current speaker, but video streams from all participating users.&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* Firmware V13r3xx&lt;br /&gt;
* Endpoints supporting the multi-video signaling technology&lt;br /&gt;
&lt;br /&gt;
== Endpoints ==&lt;br /&gt;
&lt;br /&gt;
In order to see multiple videos the endpoint must support the new multi-video signaling.&lt;br /&gt;
Available endpoints are:&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softphone-App (version 13r3 or higher)&lt;br /&gt;
* innovaphone Phone-App (version 13r3 or higher) and a desk-phone&lt;br /&gt;
* innovaphone Web Access Client&lt;br /&gt;
&lt;br /&gt;
== Multi-Video Signaling ==&lt;br /&gt;
&lt;br /&gt;
A multi-video conference starts as any other traditional conference by calling a conference object (See &amp;quot;How to configure a conference object&amp;quot; for mor information).&lt;br /&gt;
An audio-only connection is established at the very beginning. A welcome message might be played to the new participant (if configured).&lt;br /&gt;
After this initial call setup the calling endpoint is joined into the conference room. It now can hear all other participants and can speak to other participants.&lt;br /&gt;
&lt;br /&gt;
To every participant the conference room provides information about all current participants.&lt;br /&gt;
This participant information block contains information about:&lt;br /&gt;
&lt;br /&gt;
* Display name&lt;br /&gt;
* Status flags (e.g. is-muted, is-speaking, is-sharing, wants-to-speak)&lt;br /&gt;
* Video stream information (contains information about available video streams of a participant)&lt;br /&gt;
&lt;br /&gt;
After having the initial audio-only connection established, an endpoint with a video camera may establish additional video-send connections.&lt;br /&gt;
These video-send signaling connections are independent from (but related to) the main connection (audio-only).&lt;br /&gt;
Up to 3 video-send connections can be established with different quality/bandwith profiles:&lt;br /&gt;
&lt;br /&gt;
* LOW bandwith video stream (bandwith &amp;lt; 100 kbit/s)&lt;br /&gt;
* MEDIUM bandwith video stream (bandwith &amp;lt; 250 kbit/s)&lt;br /&gt;
* HIGH bandwith video stream (bandwith &amp;lt; 1000 kbit/s)&lt;br /&gt;
&lt;br /&gt;
All these video streams are sent to the central conference. The central conference will broadcast these video streams to other particiants on demand.&lt;br /&gt;
&lt;br /&gt;
Other participants get information about the offered video streams and other participants can get these video streams by opening dedicated video-recv connections.&lt;br /&gt;
&lt;br /&gt;
== Bandwith Consideration ==&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60661</id>
		<title>Reference13r3:Concept Multi-Video-Conference</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60661"/>
		<updated>2021-12-21T14:55:04Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Multi-Video Signaling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The PBX conference object now supports multiple video streams.&lt;br /&gt;
Not only one video stream of the current speaker, but video streams from all participating users.&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* Firmware V13r3xx&lt;br /&gt;
* Endpoints supporting the multi-video signaling technology&lt;br /&gt;
&lt;br /&gt;
== Endpoints ==&lt;br /&gt;
&lt;br /&gt;
In order to see multiple videos the endpoint must support the new multi-video signaling.&lt;br /&gt;
Available endpoints are:&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softphone-App (version 13r3 or higher)&lt;br /&gt;
* innovaphone Phone-App (version 13r3 or higher) and a desk-phone&lt;br /&gt;
* innovaphone Web Access Client&lt;br /&gt;
&lt;br /&gt;
== Multi-Video Signaling ==&lt;br /&gt;
&lt;br /&gt;
A multi-video conference starts as any other traditional conference by calling a conference object (See &amp;quot;How to configure a conference object&amp;quot; for mor information).&lt;br /&gt;
An audio-only connection is established at the very beginning. A welcome message might be played to the new participant (if configured).&lt;br /&gt;
After this initial call setup the calling endpoint is joined into the conference room. It now can hear all other participants and can speak to other participants.&lt;br /&gt;
&lt;br /&gt;
To every participant the conference room provides information about all current participants.&lt;br /&gt;
This participant information block contains information about:&lt;br /&gt;
&lt;br /&gt;
* Display name&lt;br /&gt;
* Status flags (e.g. is-muted, is-speaking, is-sharing, wants-to-speak)&lt;br /&gt;
* Video stream information (contains information about available video streams of a participant)&lt;br /&gt;
&lt;br /&gt;
After having the initial audio-only connection established, an endpoint with a video camera may establish additional video-send connections.&lt;br /&gt;
These video-send signaling connections are independent from (but related to) the main connection (audio-only).&lt;br /&gt;
Up to 3 video-send connections can be established with different quality/bandwith profiles:&lt;br /&gt;
&lt;br /&gt;
* LOW bandwith video stream (bandwith &amp;lt; 100 kbit/s)&lt;br /&gt;
* MEDIUM bandwith video stream (bandwith &amp;lt; 250 kbit/s)&lt;br /&gt;
* HIGH bandwith video stream (bandwith &amp;lt; 1000 kbit/s)&lt;br /&gt;
&lt;br /&gt;
All these video streams are sent to the central conference. The central conference will broadcast these video streams to other particiants on demand.&lt;br /&gt;
&lt;br /&gt;
Other participants get information about the offered video streams and other participants can&lt;br /&gt;
&lt;br /&gt;
== Bandwith Consideration ==&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60660</id>
		<title>Reference13r3:Concept Multi-Video-Conference</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60660"/>
		<updated>2021-12-21T14:36:20Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Multi-Video Signaling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The PBX conference object now supports multiple video streams.&lt;br /&gt;
Not only one video stream of the current speaker, but video streams from all participating users.&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* Firmware V13r3xx&lt;br /&gt;
* Endpoints supporting the multi-video signaling technology&lt;br /&gt;
&lt;br /&gt;
== Endpoints ==&lt;br /&gt;
&lt;br /&gt;
In order to see multiple videos the endpoint must support the new multi-video signaling.&lt;br /&gt;
Available endpoints are:&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softphone-App (version 13r3 or higher)&lt;br /&gt;
* innovaphone Phone-App (version 13r3 or higher) and a desk-phone&lt;br /&gt;
* innovaphone Web Access Client&lt;br /&gt;
&lt;br /&gt;
== Multi-Video Signaling ==&lt;br /&gt;
&lt;br /&gt;
A multi-video conference starts as any other traditional conference by calling a conference object (See &amp;quot;How to configure a conference object&amp;quot; for mor information).&lt;br /&gt;
An audio-only connection is established at the very beginning. A welcome message might be played to the new participant (if configured).&lt;br /&gt;
After this initial call setup the calling endpoint is joined into the conference room. It now can hear all other participants and can speak to other participants.&lt;br /&gt;
&lt;br /&gt;
To every participant the conference room provides information about all current participants.&lt;br /&gt;
This participant information block contains information about:&lt;br /&gt;
&lt;br /&gt;
* Display name&lt;br /&gt;
* Status flags (e.g. is-muted, is-speaking, is-sharing, wants-to-speak)&lt;br /&gt;
* Video stream information (contains information about available video streams of a participant)&lt;br /&gt;
&lt;br /&gt;
After having the initial audio-only connection established, an endpoint with a video camera may establish additional video-send connections.&lt;br /&gt;
These video-send signaling connections are independent from (but related to) the main connection (audio-only).&lt;br /&gt;
Up to 3 video-send connections can be established with different quality/bandwith profiles:&lt;br /&gt;
&lt;br /&gt;
* LOW bandwith video stream (bandwith &amp;lt; 100 kbit/s)&lt;br /&gt;
* MEDIUM bandwith video stream (bandwith &amp;lt; 250 kbit/s)&lt;br /&gt;
* HIGH bandwith video stream (bandwith &amp;lt; 1000 kbit/s)&lt;br /&gt;
&lt;br /&gt;
== Bandwith Consideration ==&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60659</id>
		<title>Reference13r3:Concept Multi-Video-Conference</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_Multi-Video-Conference&amp;diff=60659"/>
		<updated>2021-12-21T14:30:45Z</updated>

		<summary type="html">&lt;p&gt;Tac: /* Multi-Video Signaling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The PBX conference object now supports multiple video streams.&lt;br /&gt;
Not only one video stream of the current speaker, but video streams from all participating users.&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* Firmware V13r3xx&lt;br /&gt;
* Endpoints supporting the multi-video signaling technology&lt;br /&gt;
&lt;br /&gt;
== Endpoints ==&lt;br /&gt;
&lt;br /&gt;
In order to see multiple videos the endpoint must support the new multi-video signaling.&lt;br /&gt;
Available endpoints are:&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softphone-App (version 13r3 or higher)&lt;br /&gt;
* innovaphone Phone-App (version 13r3 or higher) and a desk-phone&lt;br /&gt;
* innovaphone Web Access Client&lt;br /&gt;
&lt;br /&gt;
== Multi-Video Signaling ==&lt;br /&gt;
&lt;br /&gt;
A multi-video conference starts as any other traditional conference by calling a conference object (See &amp;quot;How to configure a conference object&amp;quot; for mor information).&lt;br /&gt;
An audio-only connection is established at the very beginning. A welcome message might be played to the new participant (if configured).&lt;br /&gt;
After this initial call setup the calling endpoint is joined into the conference room. It now can hear all other participants and can speak to other participants.&lt;br /&gt;
&lt;br /&gt;
To every participant the conference room provides information about all current participants.&lt;br /&gt;
This participant information block contains information about:&lt;br /&gt;
&lt;br /&gt;
* Display name&lt;br /&gt;
* Status flags (e.g. is-muted, is-speaking, is-sharing, wants-to-speak)&lt;br /&gt;
* Video stream information (contains information about available video streams of a participant)&lt;br /&gt;
&lt;br /&gt;
After having the initial audio-only connection established, an endpoint with a video camera may establish additional video-send connections.&lt;br /&gt;
These video-send signaling connections are independent from (but related to) the main connection (audio-only).&lt;br /&gt;
Up to 3 video-send connections can be established with different quality/bandwith profiles.&lt;br /&gt;
&lt;br /&gt;
== Bandwith Consideration ==&lt;/div&gt;</summary>
		<author><name>Tac</name></author>
	</entry>
</feed>