<?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=Eurix</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=Eurix"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Eurix"/>
	<updated>2026-05-07T22:06:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Recordings&amp;diff=66448</id>
		<title>Reference13r3:Concept App Service Recordings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Recordings&amp;diff=66448"/>
		<updated>2023-03-09T14:42:49Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Recordings is an application running on the App platform which allows capturing the audio streams during a telephone call.&lt;br /&gt;
The user&#039;s phone can be configured to send bidirectional audio streams to the Recordings App and store them into the database.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform build 110016 or up&lt;br /&gt;
* Firmware 13r3 or up&lt;br /&gt;
* Recordings App&lt;br /&gt;
* Recordings App licenses (per User)&lt;br /&gt;
* Device with PCAP Recording Interface:&lt;br /&gt;
** innovaphone deskphones&lt;br /&gt;
** innovaphone SoftphoneApp&lt;br /&gt;
** innovaphone gateway interfaces&lt;br /&gt;
* Reporting App&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Recordings App (innovaphone-recordings) ===&lt;br /&gt;
[[Image: Usrrecord.png]]&lt;br /&gt;
&lt;br /&gt;
User version of the App allow you to:&lt;br /&gt;
* Access to the user specific records&lt;br /&gt;
* Access to the user specific logs&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Play, Listen or Download the recording as a .WAV file&lt;br /&gt;
* Protect against deleting or delete a recording&lt;br /&gt;
&lt;br /&gt;
=== Recordings Admin App (innovaphone-recordingsadmin) ===&lt;br /&gt;
[[Image:Adminrecord.png]]&lt;br /&gt;
&lt;br /&gt;
Admin version of the app allow you to:&lt;br /&gt;
* Access to all records&lt;br /&gt;
* Access to all logs&lt;br /&gt;
* Set up the records auto deletion retention time in days&lt;br /&gt;
* Set the PBX name&lt;br /&gt;
* Set specific trace levels&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Play, Listen or Download the recording as a .wav file&lt;br /&gt;
* Protect against deleting or delete a recording&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugin ==&lt;br /&gt;
&lt;br /&gt;
With the Recordings PBX Manager Plugin, an App Object can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* Download the Recordings App via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Recordings App on the App Platform Manager.&lt;br /&gt;
* Create a new PBX recordings APP-Object with the PBX Manager Plugin.&lt;br /&gt;
* Create a new PBX recordingsadmin APP-Object with the PBX Manager Plugin.&lt;br /&gt;
* Assign recordingsadmin App to authorized (admin) users, which will be allowed to open the Admin UI of the Recordings App.&lt;br /&gt;
* Assign recordings App to users who will use the Recordings App.&lt;br /&gt;
* Start recordingsadmin App and configure the name of the PBX in the settings via upright option&lt;br /&gt;
* assign Record to (URL) to recording devices/objects in format&lt;br /&gt;
: &amp;lt;code&amp;gt;http://&amp;lt;/code&amp;gt;&#039;&#039;ap.domain.tld&#039;&#039;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&#039;&#039;domain.tld&#039;&#039;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&#039;&#039;recordings-instance-name&#039;&#039;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;Files&lt;br /&gt;
:on deskphones, softphones or gateway interfaces.&lt;br /&gt;
:On innovaphone deskphones, enable recording via Phone/User-X/Recording by setting &#039;&#039;Mode&#039;&#039; to &amp;lt;code&amp;gt;transparent&amp;lt;/code&amp;gt; and &#039;&#039;Recorder&#039;&#039; to &amp;lt;code&amp;gt;HTTP Server&amp;lt;/code&amp;gt;.  &lt;br /&gt;
:On innovaphone softphones, recordings config is only visible, if the user has the appropriate app(innovaphone-recorder) license.&lt;br /&gt;
&lt;br /&gt;
=== Access List ===&lt;br /&gt;
Unlike Recordings Admin App, which lists recordings of all users, Recordings App for users limits the listing of recordings to those made by the using user himself.&lt;br /&gt;
&lt;br /&gt;
A possibility to extend the listing of the recordings to other extensions/users is provided by the Access List. In the Access List, additional extension can be defined, which will be listed to the Users of the App. This way the Recordings App Service can be accessed via different App Objects, with different Access Lists.&lt;br /&gt;
&lt;br /&gt;
This way scenarios, like sharing recordings between team members or supervisor access to recordings of call agents are possible.&amp;lt;br /&amp;gt;&lt;br /&gt;
For the configuration, see : [[HowTo_Recordings_V13r3#Access_list_configuration_through_the_Recordings_Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Deletion of recordings ===&lt;br /&gt;
In the PBX Manager plugin, it can be configured how a deletion of a recording is processed. There are 2 modes selectable: &amp;quot;Recoverable&amp;quot; and &amp;quot;Permanent&amp;quot;. If &amp;quot;Recoverable&amp;quot; is selected, the users attached to this app object&lt;br /&gt;
will transfer a recording to the recycle bin upon a delete operation, otherwise the recordings will be permanently deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scheduled deletion of old recordings ===&lt;br /&gt;
You can configure a time period between &#039;&#039;1 and 11000 days&#039;&#039; (in maximum round about 30 years), after which recordings are automatically removed. You can enter &#039;&#039;0 days&#039;&#039; here to disable the scheduled deletion.&lt;br /&gt;
&lt;br /&gt;
== Call Information ==&lt;br /&gt;
A new method of acquiring the call information is implemented. It requires an installed and running App Service &amp;quot;Reports&amp;quot;. &amp;quot;Reports&amp;quot; does not&lt;br /&gt;
need own licenses to be run with recordings. With this new method, it is possible to provide detailed call flow information for each recording.&lt;br /&gt;
Furthermore, the previously used CDR slot on the PBX for recordings is not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
&lt;br /&gt;
An appropriate license &#039;&#039;App(innovaphone-recorder)&#039;&#039; must be installed on the PBX to enable Recordings App functionality for specified users.&lt;br /&gt;
The recordings config on the softphone is only available for users with a valid license.&lt;br /&gt;
&lt;br /&gt;
The Recorder App License can be assigned directly to a specific User Object or via a Config Template.&lt;br /&gt;
&lt;br /&gt;
 The recordings for users without an assigned Recorder App License will be unrecoverable deleted if the Recordings App is restarted.&lt;br /&gt;
&lt;br /&gt;
== Recording on Special Interfaces ==&lt;br /&gt;
&lt;br /&gt;
* Trunk Interface/Gateway&lt;br /&gt;
&lt;br /&gt;
The Trunk Interface acts as a substitute for the user&#039;s phone. For outgoing calls the call initiator is the owner of the recording and for him a license is required. With incoming calls, the first user answering the call owns the recording and a license for this user is required.&lt;br /&gt;
&lt;br /&gt;
* Waiting Queue&lt;br /&gt;
&lt;br /&gt;
The user answering the call is the owner, a license for this user is required.&lt;br /&gt;
&lt;br /&gt;
== Upgrade from V13r2 to V13r3 Recordings App ==&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
A V13r3 Recordings App can not be used in an 13r2 PBX environment and requires at least build 110016  of the application platform.&lt;br /&gt;
&lt;br /&gt;
=== License Changes ===&lt;br /&gt;
&lt;br /&gt;
Licensing is the same as version 13r2&lt;br /&gt;
&lt;br /&gt;
=== Database Conversion ===&lt;br /&gt;
&lt;br /&gt;
Databases from previous versions (13r1,13r2) will be converted automatically&lt;br /&gt;
&lt;br /&gt;
=== Removing CDR slot on PBX ===&lt;br /&gt;
&lt;br /&gt;
The CDR slot that was used by previous installations of recordings can be freed.&lt;br /&gt;
&lt;br /&gt;
=== Update App Object configuration ===&lt;br /&gt;
&lt;br /&gt;
If upgrading from a previous version, the app objects configuration of Recordings and Reports must be manually updated via the PBX Manager. Recordings now gets its CDR info directly from reporting, we need to select the good reporting instance, set the flag &#039;&#039;&amp;quot;Services&amp;quot;&#039;&#039; on the app object recordings with the AP recordings. Furthermore we also need to set the flag &#039;&#039;&amp;quot;Websocket&amp;quot;&#039;&#039; at the app object reports with the AP reporting.&lt;br /&gt;
&lt;br /&gt;
Open the PBX manager to edit AP recordings :&lt;br /&gt;
* Click your respective AP recordings (coloured icon) to open it, this will open on the right side its menu.&lt;br /&gt;
** Click on recordings (type User), and verify that the respective reporting instance is selected and &#039;&#039;&#039;click OK&#039;&#039;&#039; to apply settings. &#039;&#039;Hint: reporting instance will be listed in a drop-down list.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
And then to edit AP reporting :&lt;br /&gt;
* Click your respective AP reporting(coloured icon) to open it, this will open on the right side its menu.&lt;br /&gt;
** Click on Reports and just simply &#039;&#039;&#039;click OK&#039;&#039;&#039; to apply settings.&lt;br /&gt;
To verify you can open in your PBX the app object Reports to see if &#039;&#039;&amp;quot;Websocket&amp;quot;&#039;&#039; is set. Same for the app object Recordings with &#039;&#039;&amp;quot;Websocket&amp;quot;&#039;&#039;, &#039;&#039;&amp;quot;Admin&amp;quot;&#039;&#039;, &#039;&#039;&amp;quot;Services&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Download recording ===&lt;br /&gt;
&lt;br /&gt;
Once a recording is converted to .wav format, it can be downloaded. In version 13r3, this is done in a zip archive containing the wave audio file and a .pdf file containing&lt;br /&gt;
the call information.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Recordings App Service ===&lt;br /&gt;
The App Service for Recordings App provides a log output on the App instance, after the Diagnostics option &amp;quot;App&amp;quot; is activated for the selected instance.&lt;br /&gt;
&lt;br /&gt;
Additional Trace Level Options for the App Service are configurable via Recordings Admin App. These settings are available via an additional Menu in the upper right corner of the Recordings Admin UI:&lt;br /&gt;
&lt;br /&gt;
*Recording - PCAP interface related traces, useful on issues with IP-Phone and Interface Media transmission from Endpoint to the App Service&lt;br /&gt;
*Call Information - traces related to the CDR information&lt;br /&gt;
*Converting - traces for conversion process from VoIP codecs to WAV&lt;br /&gt;
*License - traces for on licensing issues&lt;br /&gt;
*UI - traces related to the user interface of the Recordings App&lt;br /&gt;
&lt;br /&gt;
The name of the Master PBX must be configured via the Recordings Admin App, otherwise a message &#039;&#039;PBX Name missing&#039;&#039; will be displayed.&lt;br /&gt;
&lt;br /&gt;
=== PBX Configuration ===&lt;br /&gt;
*WebSocket connection from App Object to the Recordings App should show &#039;&#039;connected&#039;&#039;&lt;br /&gt;
*A correct configuration of the CDR interface is required for transmission of metadata to the App Service &amp;quot;Reports&amp;quot;. In case the connection between recordings and App Service &amp;quot;Reports&amp;quot; is not successful, a red &amp;quot;broken link&amp;quot; is shown on top of the recordingsadmin and an entry in the event log will be added.&lt;br /&gt;
&lt;br /&gt;
=== PCAP Recording Interfaces ===&lt;br /&gt;
*Check URL for PCAP Recording provided on the IP-Phone or VoIP-Interface of a VoIP Gateway&lt;br /&gt;
*A Trace with enabled HTTP-Client option should show a successful HTTP PUT Request towards URL of the Recordings Service PCAP interface (e.g. &amp;lt;code&amp;gt;HTTPCLIENT WEBDAV_FILE_HTTP.2: PUT http://ap.company.com/company.com/recordings/Files/f9e5956e47d460010630009033302ab1-009033302ab1-11--username.pcap&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
=== Test Mode ===&lt;br /&gt;
The App Licenses are not supported in the [[Reference12r1:General/License|Test Mode]] at the moment, instead a [https://wiki.innovaphone.com/index.php?title=Reference:My_Innovaphone#Download_test_licenses Test License] should be used.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[HowTo_Recordings_V13r3]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Recordings&amp;diff=66447</id>
		<title>Reference13r3:Concept App Service Recordings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Recordings&amp;diff=66447"/>
		<updated>2023-03-09T14:42:03Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Recordings is an application running on the App platform which allows capturing the audio streams during a telephone call.&lt;br /&gt;
The user&#039;s phone can be configured to send bidirectional audio streams to the Recordings App and store them into the database.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform build 110016 or up&lt;br /&gt;
* Firmware 13r3 or up&lt;br /&gt;
* Recordings App&lt;br /&gt;
* Recordings App licenses (per User)&lt;br /&gt;
* Device with PCAP Recording Interface:&lt;br /&gt;
** innovaphone deskphones&lt;br /&gt;
** innovaphone SoftphoneApp&lt;br /&gt;
** innovaphone gateway interfaces&lt;br /&gt;
* Reporting App&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Recordings App (innovaphone-recordings) ===&lt;br /&gt;
[[Image: Usrrecord.png]]&lt;br /&gt;
&lt;br /&gt;
User version of the App allow you to:&lt;br /&gt;
* Access to the user specific records&lt;br /&gt;
* Access to the user specific logs&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Play, Listen or Download the recording as a .WAV file&lt;br /&gt;
* Protect against deleting or delete a recording&lt;br /&gt;
&lt;br /&gt;
=== Recordings Admin App (innovaphone-recordingsadmin) ===&lt;br /&gt;
[[Image:Adminrecord.png]]&lt;br /&gt;
&lt;br /&gt;
Admin version of the app allow you to:&lt;br /&gt;
* Access to all records&lt;br /&gt;
* Access to all logs&lt;br /&gt;
* Set up the records auto deletion retention time in days&lt;br /&gt;
* Set the PBX name&lt;br /&gt;
* Set specific trace levels&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Play, Listen or Download the recording as a .wav file&lt;br /&gt;
* Protect against deleting or delete a recording&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugin ==&lt;br /&gt;
&lt;br /&gt;
With the Recordings PBX Manager Plugin, an App Object can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* Download the Recordings App via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create an instance for the Recordings App on the App Platform Manager.&lt;br /&gt;
* Create a new PBX recordings APP-Object with the PBX Manager Plugin.&lt;br /&gt;
* Create a new PBX recordingsadmin APP-Object with the PBX Manager Plugin.&lt;br /&gt;
* Assign recordingsadmin App to authorized (admin) users, which will be allowed to open the Admin UI of the Recordings App.&lt;br /&gt;
* Assign recordings App to users who will use the Recordings App.&lt;br /&gt;
* Start recordingsadmin App and configure the name of the PBX in the settings via upright option&lt;br /&gt;
* assign Record to (URL) to recording devices/objects in format&lt;br /&gt;
: &amp;lt;code&amp;gt;http://&amp;lt;/code&amp;gt;&#039;&#039;ap.domain.tld&#039;&#039;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&#039;&#039;domain.tld&#039;&#039;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&#039;&#039;recordings-instance-name&#039;&#039;&amp;lt;code&amp;gt;/Files&amp;lt;/code&amp;gt;&lt;br /&gt;
:on deskphones, softphones or gateway interfaces.&lt;br /&gt;
:On innovaphone deskphones, enable recording via Phone/User-X/Recording by setting &#039;&#039;Mode&#039;&#039; to &amp;lt;code&amp;gt;transparent&amp;lt;/code&amp;gt; and &#039;&#039;Recorder&#039;&#039; to &amp;lt;code&amp;gt;HTTP Server&amp;lt;/code&amp;gt;.  &lt;br /&gt;
:On innovaphone softphones, recordings config is only visible, if the user has the appropriate app(innovaphone-recorder) license.&lt;br /&gt;
&lt;br /&gt;
=== Access List ===&lt;br /&gt;
Unlike Recordings Admin App, which lists recordings of all users, Recordings App for users limits the listing of recordings to those made by the using user himself.&lt;br /&gt;
&lt;br /&gt;
A possibility to extend the listing of the recordings to other extensions/users is provided by the Access List. In the Access List, additional extension can be defined, which will be listed to the Users of the App. This way the Recordings App Service can be accessed via different App Objects, with different Access Lists.&lt;br /&gt;
&lt;br /&gt;
This way scenarios, like sharing recordings between team members or supervisor access to recordings of call agents are possible.&amp;lt;br /&amp;gt;&lt;br /&gt;
For the configuration, see : [[HowTo_Recordings_V13r3#Access_list_configuration_through_the_Recordings_Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Deletion of recordings ===&lt;br /&gt;
In the PBX Manager plugin, it can be configured how a deletion of a recording is processed. There are 2 modes selectable: &amp;quot;Recoverable&amp;quot; and &amp;quot;Permanent&amp;quot;. If &amp;quot;Recoverable&amp;quot; is selected, the users attached to this app object&lt;br /&gt;
will transfer a recording to the recycle bin upon a delete operation, otherwise the recordings will be permanently deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scheduled deletion of old recordings ===&lt;br /&gt;
You can configure a time period between &#039;&#039;1 and 11000 days&#039;&#039; (in maximum round about 30 years), after which recordings are automatically removed. You can enter &#039;&#039;0 days&#039;&#039; here to disable the scheduled deletion.&lt;br /&gt;
&lt;br /&gt;
== Call Information ==&lt;br /&gt;
A new method of acquiring the call information is implemented. It requires an installed and running App Service &amp;quot;Reports&amp;quot;. &amp;quot;Reports&amp;quot; does not&lt;br /&gt;
need own licenses to be run with recordings. With this new method, it is possible to provide detailed call flow information for each recording.&lt;br /&gt;
Furthermore, the previously used CDR slot on the PBX for recordings is not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
&lt;br /&gt;
An appropriate license &#039;&#039;App(innovaphone-recorder)&#039;&#039; must be installed on the PBX to enable Recordings App functionality for specified users.&lt;br /&gt;
The recordings config on the softphone is only available for users with a valid license.&lt;br /&gt;
&lt;br /&gt;
The Recorder App License can be assigned directly to a specific User Object or via a Config Template.&lt;br /&gt;
&lt;br /&gt;
 The recordings for users without an assigned Recorder App License will be unrecoverable deleted if the Recordings App is restarted.&lt;br /&gt;
&lt;br /&gt;
== Recording on Special Interfaces ==&lt;br /&gt;
&lt;br /&gt;
* Trunk Interface/Gateway&lt;br /&gt;
&lt;br /&gt;
The Trunk Interface acts as a substitute for the user&#039;s phone. For outgoing calls the call initiator is the owner of the recording and for him a license is required. With incoming calls, the first user answering the call owns the recording and a license for this user is required.&lt;br /&gt;
&lt;br /&gt;
* Waiting Queue&lt;br /&gt;
&lt;br /&gt;
The user answering the call is the owner, a license for this user is required.&lt;br /&gt;
&lt;br /&gt;
== Upgrade from V13r2 to V13r3 Recordings App ==&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
A V13r3 Recordings App can not be used in an 13r2 PBX environment and requires at least build 110016  of the application platform.&lt;br /&gt;
&lt;br /&gt;
=== License Changes ===&lt;br /&gt;
&lt;br /&gt;
Licensing is the same as version 13r2&lt;br /&gt;
&lt;br /&gt;
=== Database Conversion ===&lt;br /&gt;
&lt;br /&gt;
Databases from previous versions (13r1,13r2) will be converted automatically&lt;br /&gt;
&lt;br /&gt;
=== Removing CDR slot on PBX ===&lt;br /&gt;
&lt;br /&gt;
The CDR slot that was used by previous installations of recordings can be freed.&lt;br /&gt;
&lt;br /&gt;
=== Update App Object configuration ===&lt;br /&gt;
&lt;br /&gt;
If upgrading from a previous version, the app objects configuration of Recordings and Reports must be manually updated via the PBX Manager. Recordings now gets its CDR info directly from reporting, we need to select the good reporting instance, set the flag &#039;&#039;&amp;quot;Services&amp;quot;&#039;&#039; on the app object recordings with the AP recordings. Furthermore we also need to set the flag &#039;&#039;&amp;quot;Websocket&amp;quot;&#039;&#039; at the app object reports with the AP reporting.&lt;br /&gt;
&lt;br /&gt;
Open the PBX manager to edit AP recordings :&lt;br /&gt;
* Click your respective AP recordings (coloured icon) to open it, this will open on the right side its menu.&lt;br /&gt;
** Click on recordings (type User), and verify that the respective reporting instance is selected and &#039;&#039;&#039;click OK&#039;&#039;&#039; to apply settings. &#039;&#039;Hint: reporting instance will be listed in a drop-down list.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
And then to edit AP reporting :&lt;br /&gt;
* Click your respective AP reporting(coloured icon) to open it, this will open on the right side its menu.&lt;br /&gt;
** Click on Reports and just simply &#039;&#039;&#039;click OK&#039;&#039;&#039; to apply settings.&lt;br /&gt;
To verify you can open in your PBX the app object Reports to see if &#039;&#039;&amp;quot;Websocket&amp;quot;&#039;&#039; is set. Same for the app object Recordings with &#039;&#039;&amp;quot;Websocket&amp;quot;&#039;&#039;, &#039;&#039;&amp;quot;Admin&amp;quot;&#039;&#039;, &#039;&#039;&amp;quot;Services&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Download recording ===&lt;br /&gt;
&lt;br /&gt;
Once a recording is converted to .wav format, it can be downloaded. In version 13r3, this is done in a zip archive containing the wave audio file and a .pdf file containing&lt;br /&gt;
the call information.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Recordings App Service ===&lt;br /&gt;
The App Service for Recordings App provides a log output on the App instance, after the Diagnostics option &amp;quot;App&amp;quot; is activated for the selected instance.&lt;br /&gt;
&lt;br /&gt;
Additional Trace Level Options for the App Service are configurable via Recordings Admin App. These settings are available via an additional Menu in the upper right corner of the Recordings Admin UI:&lt;br /&gt;
&lt;br /&gt;
*Recording - PCAP interface related traces, useful on issues with IP-Phone and Interface Media transmission from Endpoint to the App Service&lt;br /&gt;
*Call Information - traces related to the CDR information&lt;br /&gt;
*Converting - traces for conversion process from VoIP codecs to WAV&lt;br /&gt;
*License - traces for on licensing issues&lt;br /&gt;
*UI - traces related to the user interface of the Recordings App&lt;br /&gt;
&lt;br /&gt;
The name of the Master PBX must be configured via the Recordings Admin App, otherwise a message &#039;&#039;PBX Name missing&#039;&#039; will be displayed.&lt;br /&gt;
&lt;br /&gt;
=== PBX Configuration ===&lt;br /&gt;
*WebSocket connection from App Object to the Recordings App should show &#039;&#039;connected&#039;&#039;&lt;br /&gt;
*A correct configuration of the CDR interface is required for transmission of metadata to the App Service &amp;quot;Reports&amp;quot;. In case the connection between recordings and App Service &amp;quot;Reports&amp;quot; is not successful, a red &amp;quot;broken link&amp;quot; is shown on top of the recordingsadmin and an entry in the event log will be added.&lt;br /&gt;
&lt;br /&gt;
=== PCAP Recording Interfaces ===&lt;br /&gt;
*Check URL for PCAP Recording provided on the IP-Phone or VoIP-Interface of a VoIP Gateway&lt;br /&gt;
*A Trace with enabled HTTP-Client option should show a successful HTTP PUT Request towards URL of the Recordings Service PCAP interface (e.g. &amp;lt;code&amp;gt;HTTPCLIENT WEBDAV_FILE_HTTP.2: PUT http://ap.company.com/company.com/recordings/Files/f9e5956e47d460010630009033302ab1-009033302ab1-11--username.pcap&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
=== Test Mode ===&lt;br /&gt;
The App Licenses are not supported in the [[Reference12r1:General/License|Test Mode]] at the moment, instead a [https://wiki.innovaphone.com/index.php?title=Reference:My_Innovaphone#Download_test_licenses Test License] should be used.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[HowTo_Recordings_V13r3]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Platform&amp;diff=62258</id>
		<title>Reference13r3:Concept App Platform</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Platform&amp;diff=62258"/>
		<updated>2022-05-30T13:42:09Z</updated>

		<summary type="html">&lt;p&gt;Eurix: /* RPCAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General =&lt;br /&gt;
* V13 uses [https://buildroot.org/ buildroot]&lt;br /&gt;
* this is an own (innovaphone) collection of packages&lt;br /&gt;
* For further information see: [https://buildroot.org/docs.html Buildroot Documentations]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* V13 or up&lt;br /&gt;
* Gateway (arm): IPx10 (with CF card) or IPx11 (with mSATA SSD) &lt;br /&gt;
* Gateway (arm64): IPx13 (with m2 SSD)&lt;br /&gt;
* Virtual (x86_64)&lt;br /&gt;
** HyperV with [https://docs.microsoft.com/de-de/windows-server/virtualization/hyper-v/deploy/upgrade-virtual-machine-version-in-hyper-v-on-windows-or-windows-server#supported-virtual-machine-configuration-versions VM-configuration Version] 6.2 (minimum: Windows 10 or Windows Server 2016)&lt;br /&gt;
** VMWare&lt;br /&gt;
&lt;br /&gt;
== Default credentials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;During INSTALL, the default passwords are replaced with the global Admin PW!&#039;&#039;&#039;&lt;br /&gt;
* SSH-Login with &#039;&#039;&#039;admin&#039;&#039;&#039; and &#039;&#039;&#039;ipapps&#039;&#039;&#039;&lt;br /&gt;
* root login with &#039;&#039;&#039;root&#039;&#039;&#039; and &#039;&#039;&#039;iplinux&#039;&#039;&#039; (the root login is not directly possible, you have to login as admin first and use the command &#039;&#039;su root&#039;&#039;)&lt;br /&gt;
* manager App (web login) &#039;&#039;&#039;pwd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= App Platform - arm/arm64 (Gateway)=&lt;br /&gt;
&lt;br /&gt;
* The installation image has a size of ~50MB. During installation, the following partitions are created:&lt;br /&gt;
** /dev/sda1 fat32: 200MB (contains ramdisk, rootfs and kernel)&lt;br /&gt;
** /dev/sda2 ext4: depends on disk size (contains databases, log files and apps)&lt;br /&gt;
** /dev/sda3 ext4: 500MB (contains the rootfs)&lt;br /&gt;
** /dev/sda4 swap: 512MB&lt;br /&gt;
&lt;br /&gt;
When comparing potential performance of the IPxx11 platform compared to the IPxx10 platform, there are some major differences:&lt;br /&gt;
* SSDs found in the xx11 are faster and more reliable than the CF found in the xx10&lt;br /&gt;
* the available RAM for the App Platform (as specified in column &#039;&#039;RAM for LAP (GB) out of RAM&#039;&#039; in chapter &#039;&#039;Technical data and recommended number of users supported&#039;&#039; of [[Howto:How_to_implement_large_PBXs#Technical_data_and_recommended_number_of_users_supported|How to implement large PBXs]]) is factor 6 larger on the xx11 (1,536 GB) than on the xx10 (0,256 GB))&lt;br /&gt;
* the xx11 has gigabit Ethernet while the xx10 has 100Mbps Ethernet. The xx10 is therefore not well suited for Apps with larger network traffic, such as Recordings&lt;br /&gt;
* the CPU of the xx11 (although it runs on the same frequency) is roughly 20% faster than the xx10&lt;br /&gt;
&lt;br /&gt;
While it is hard to predict the performance of the App Platform in a specific scenario, we see that in a real life environment an App Platform running on an xx11 platform can well support 150 users. The xx10 platform is estimated to support 120 users.  Because CPU performance is the limiting factor, larger setups can be built based on the virtual machine platform (see [[#App_services_and_multi-threading|App services and multi-threading]] below).&lt;br /&gt;
&lt;br /&gt;
= App Platform - x86-64 (Virtual Machine 64bit) =&lt;br /&gt;
&lt;br /&gt;
* The default disk size is 16GB. It should be increased &#039;&#039;&#039;before&#039;&#039;&#039; the first start if needed!&lt;br /&gt;
&lt;br /&gt;
* Multiple CPUs are supported, default is one CPU&lt;br /&gt;
&lt;br /&gt;
* default RAM: 512MB&lt;br /&gt;
* static IP address, DNS, Gateway can be configured with the command &#039;&#039;&#039;setip&#039;&#039;&#039; on the console. Run &#039;&#039;&#039;setip --help&#039;&#039;&#039; to get a list of parameters. (Example: setip --addr=x.x.x.x --mask=x.x.x.x --gateway=x.x.x.x --dns1=x.x.x.x) &lt;br /&gt;
* If you have permission problems change to su user (Password is iplinux or your new admin password)  &lt;br /&gt;
* To figure out your ip address you can use the command: &#039;&#039;ip address&#039;&#039; on the console.&lt;br /&gt;
* &#039;&#039;&#039;loadkeys de&#039;&#039;&#039; can be used to change to german keyboard layout (etc.)&lt;br /&gt;
&lt;br /&gt;
* partitions:&lt;br /&gt;
** /dev/sda1 ext2: 350MB (contains ramdisk, rootfs and kernel)&lt;br /&gt;
** /dev/sda2 ext4: depends on disk size (contains databases, log files and apps)&lt;br /&gt;
** /dev/sda3 ext4: 500MB (contains the rootfs)&lt;br /&gt;
** /dev/sda4 swap: 512MB&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
==ARM Gateway==&lt;br /&gt;
&lt;br /&gt;
If you setup a Gateway with the install procedure, the App Platform is installed automatically (Https Download has to be allowed and shouldn&#039;t be blocked by any firewall.)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can also install it manually:&lt;br /&gt;
* Open App Platform -&amp;gt; General and &#039;&#039;&#039;Enable Linux Support&#039;&#039;&#039;. Restart the gateway.&lt;br /&gt;
* You need to enable Proxy-ARP on [[{{NAMESPACE}}:IP4/ETH/IP|ETH0]] or [[{{NAMESPACE}}:IP4/ETH/IP|ETH1]], so your Gateway and the Linux Appliance will share the same physical interface.&lt;br /&gt;
* Open App Platform -&amp;gt; IP and configure the IP settings of the App Platform. Restart the Gateway.&lt;br /&gt;
* Open App Platform -&amp;gt; Installation and select the given version or enter an own path to the &#039;&#039;app-platform-armel.img&#039;&#039; image file.&lt;br /&gt;
* The installation runs without any further required step.&lt;br /&gt;
&lt;br /&gt;
==ARM64 Gateway==&lt;br /&gt;
&lt;br /&gt;
If you setup a Gateway with the install procedure, the App Platform is installed automatically (Https Download has to be allowed and shouldn&#039;t be blocked by any firewall.)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can also install it manually:&lt;br /&gt;
* Open App Platform -&amp;gt; General and &#039;&#039;&#039;Enable Linux Support&#039;&#039;&#039;. Restart the gateway.&lt;br /&gt;
* You need to enable Proxy-ARP on [[{{NAMESPACE}}:IP4/ETH/IP|ETH0]] or [[{{NAMESPACE}}:IP4/ETH/IP|ETH1]], so your Gateway and the Linux Appliance will share the same physical interface.&lt;br /&gt;
* Open App Platform -&amp;gt; IP and configure the IP settings of the App Platform. Restart the Gateway.&lt;br /&gt;
* Open App Platform -&amp;gt; Installation and select the given version or enter an own path to the &#039;&#039;app-platform-arm64.img&#039;&#039; image file.&lt;br /&gt;
* The installation runs without any further required step.&lt;br /&gt;
&lt;br /&gt;
==Virtual machine==&lt;br /&gt;
&lt;br /&gt;
* Import the image into your server environment.&lt;br /&gt;
* Edit the disk size, if needed.&lt;br /&gt;
* Start the machine and wait until it reboots and starts again.&lt;br /&gt;
* Note: If you need to access an IP addresses available through a VPN connection from from inside the virtual machine, it could be that you need to set the network of your VM to NAT (and also add the URL for an IP to /etc/hosts)&lt;br /&gt;
&lt;br /&gt;
[https://wiki.innovaphone.com/index.php?title={{NAMESPACE}}:Concept_Innovaphone_Virtual_Appliance#Configuration More Configuration Hints regarding VM Ware]&lt;br /&gt;
&lt;br /&gt;
== Backup of the Apps ==&lt;br /&gt;
&lt;br /&gt;
Each App Service can have multiple instances and each instance has its own database. The manager app itself also has its own database.&amp;lt;br&amp;gt;&lt;br /&gt;
There are no other files which need to be backuped.&amp;lt;br&amp;gt;&lt;br /&gt;
The standard way to backup the databases is through the Devices App [[{{NAMESPACE}}:Concept_App_Service_Devices#Backups]].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
An alternate way is to use a command file which is similar to the command files from the firmware.&lt;br /&gt;
&lt;br /&gt;
===Commands===&lt;br /&gt;
* &#039;&#039;&#039;times&#039;&#039;&#039; 0,12 # backup only at 0 or 12 o&#039;clock&lt;br /&gt;
* &#039;&#039;&#039;backup-instances&#039;&#039;&#039; http://user:pw@ip/path/#I-#D.dump PUT&lt;br /&gt;
** PUT and POST are supported, all instances including the manager itself are saved&lt;br /&gt;
* &#039;&#039;&#039;backup-instance&#039;&#039;&#039; http://user:pw@ip/path/#I-#D.dump apidemo example.com PUT&lt;br /&gt;
** backup a single instance with instance name and instance domain&lt;br /&gt;
* &#039;&#039;&#039;backup-manager&#039;&#039;&#039; http://user:pw@ip/path/#I-#D.dump&lt;br /&gt;
&lt;br /&gt;
===Hash parameters===&lt;br /&gt;
* #L App Platform label (neu), e.g. 10024&lt;br /&gt;
* #A App label (neu), e.g. 130004&lt;br /&gt;
* #I instance name (neu), e.g. reporting1&lt;br /&gt;
* #D instance domain (neu), e.g. innovaphone.com&lt;br /&gt;
* #m MAC address of the LAP, e.g. 00ab11eeff&lt;br /&gt;
* #d Current date and time (plain UTC without daylight saving and timezone adjustments) 20051010-170130&lt;br /&gt;
* #bn rolling backup index&lt;br /&gt;
* ## escapes a hash mark&lt;br /&gt;
&lt;br /&gt;
= App Platform Infrastructure and Concept =&lt;br /&gt;
== Webserver ==&lt;br /&gt;
The app platform includes a webserver that is highly optimized for handling many Websocket connections at a low memory footprint.&lt;br /&gt;
All apps use that webserver by registering for specific HTTP subpath. So they can all use the same HTTP/HTTPS ports - typically the standard ports.&lt;br /&gt;
&lt;br /&gt;
=== Import Custom SSL Certificate ===&lt;br /&gt;
You have to upload a PEM Certificate with the following chain structure and without password encoding.&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 (certificate: your_domain_name.crt)&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 (Intermediate certificate: DigiCertCA.crt)&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 (Root certificate: TrustedRoot.crt)&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 (certificate Key: your_domain_name.key)&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
&lt;br /&gt;
=== Known issues ===&lt;br /&gt;
*The app platform webserver can use only the default http/https ports 80/443.&lt;br /&gt;
*By design, there is no possibility to restore the default webserver certificate on the App Platform, if another certificate was once uploaded.&amp;lt;br /&amp;gt;&lt;br /&gt;
**If nevertheless needed, you must login with Putty (see [[#How_to_retrieve_files_from_the_AP | Retrieve files]]) and execute these commands as root:&lt;br /&gt;
**&#039;&#039;psql -d manager -c &amp;quot;DELETE FROM config WHERE name=&#039;webserverCertificate&#039;&amp;quot;&#039;&#039;&lt;br /&gt;
**&#039;&#039;/etc/init.d/S92manager restart&#039;&#039;&lt;br /&gt;
*The app platform webserver interprets URLs case-sensitive. In other words, &amp;lt;nowiki&amp;gt;http://&amp;lt;addr&amp;gt;/file.txt&amp;lt;/nowiki&amp;gt; is not the same as &amp;lt;nowiki&amp;gt;http://&amp;lt;addr&amp;gt;/FILE.TXT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
The app platform creates a database for each app instance with a given password. In the installer there will be used randomly generated passwords. You can set a new database password for every instance in the Application Platform.&lt;br /&gt;
&lt;br /&gt;
The apps should store all data in that database. That makes sure that a consistent backup and restore of app instances can be done by the app platform manager.&lt;br /&gt;
In hosted scenarios, having separate databases for each instance also makes sure that the data of different customers are clearly separated and can easily be moved from one physical platform to another.&lt;br /&gt;
&lt;br /&gt;
The default configuration decline database request from extern. If you need external access you can change the PGSQL configuration (as root) in the file &#039;&#039;/mnt/sda2/pgsql/pg_hba.conf&#039;&#039;.&lt;br /&gt;
After editing pg_hba.conf, the database-service has to be restarted with the command &amp;lt;code&amp;gt;/etc/init.d/S50postgresql restart&amp;lt;/code&amp;gt;&lt;br /&gt;
(Please think about it before you do it, because a better way is to create your own local app with local database access.)&lt;br /&gt;
&lt;br /&gt;
 You can find the official documentation for the pg_hba.conf here: https://www.postgresql.org/docs/11/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
== App Platform Manager ==&lt;br /&gt;
The App Platform Manager is the central component of the App Platform. It does the following:&lt;br /&gt;
* Installing app services by downloading the binaries from an app store.&lt;br /&gt;
* Running and monitoring app services. If an app service crashes it is restarted, automatically.&lt;br /&gt;
* Management of app instances and providing them with the environment they need:&lt;br /&gt;
** A database&lt;br /&gt;
** A webserver path&lt;br /&gt;
** A password for authentication&lt;br /&gt;
* Backup and restore of app instances.&lt;br /&gt;
* Collecting debug information like tracing and crash dumps.&lt;br /&gt;
* System monitoring (CPU usage, memory usage, etc).&lt;br /&gt;
&lt;br /&gt;
== App Services ==&lt;br /&gt;
App services are runned by the App Platform Manager. They implement an interface that is used by the manager to start, stop and configure app instances. Each service runs in a separate child process of the manager.&lt;br /&gt;
&lt;br /&gt;
== App Instances ==&lt;br /&gt;
The actual functionality of an app service is provided by app instances. They run in the same process as the app service but have a distinct webserver path and their own database. There can be 0..n instances of an app service. Instances can optionally host (web) apps that can be opened in the myApps client.&lt;br /&gt;
&lt;br /&gt;
Each instance of an App service has two passwords. The instance password itself and a database password. If you want to change it you must update the password on both sides.&amp;lt;br&amp;gt;&lt;br /&gt;
The instance password must match to the password in the corresponding PBX App objects, while one instance can have different App objects.&amp;lt;br&amp;gt;&lt;br /&gt;
The database password must be just known to the manager and not outside of the App Platform.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Database name&#039;&#039; and &#039;&#039;Database user&#039;&#039; are both limited to a length of 63 characters.  By default, the App Manager would create &#039;&#039;&amp;lt;domain&amp;gt;&#039;&#039;_&#039;&#039;&amp;lt;instance-name&amp;gt;&#039;&#039; as value for both.  This is why it is recommended to use instance names so that length(name) + length(domain) is less than 63 characters.  However, if this is not possible, you can manually shorten the suggested values (both must still be unique on your App Platform).&lt;br /&gt;
&lt;br /&gt;
=== Cleanup database ===&lt;br /&gt;
You can cleanup the instance database inside the instance settings. This starts the vacuumdb process for the instance database which frees disk space of deleted rows.&lt;br /&gt;
 Note that this process locks the database and that sufficient disk space is needed to complete it!&lt;br /&gt;
&lt;br /&gt;
=== External database host ===&lt;br /&gt;
You can optionally configure an external database host, if the database shall be hosted on an external host.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note that the App Platform Manager still creates a local database, which is then not used as long as the external host is configured.&lt;br /&gt;
&lt;br /&gt;
What are external databases useful for?:&lt;br /&gt;
* User data is too large (files are stored as BLOB in the database)&lt;br /&gt;
* Other (non-innovaphone) database servers are to be used due to other regulations&lt;br /&gt;
* There is already an external database cluster with its own backup/restore processes which should be used&lt;br /&gt;
* More performance is required (please note that a local UNIX socket provides much faster results than a remote database server). Depending on the app and the task of the app, it can still be useful to use a separate server if it is faster.&lt;br /&gt;
&lt;br /&gt;
==== Supported database types ====&lt;br /&gt;
In principle, &#039;&#039;PostgreSQL&#039;&#039; and &#039;&#039;MySQL&#039;&#039; are supported. However, please note that the respective app must be designed for the target database server type. If an app has been developed for PostgreSQL, it cannot be operated on a MySQL server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note:&#039;&#039;&#039; All innovaphone apps are developed exclusively as PostgreSQL apps.&lt;br /&gt;
&lt;br /&gt;
MySQL therefore only makes sense if own apps are developed and MySQL or certain MySQL features are to be used. For such apps, it is very important to deactivate the automatic Application Platform APP-Backup.&lt;br /&gt;
The database backup process of the App Platform uses PostgreSQL backup commands, which is why the backup would fail, so the app must be excluded from the backup, and you must take care of the backup yourself.&lt;br /&gt;
&lt;br /&gt;
==== Database creation ====&lt;br /&gt;
If you use an external database, you have to create the database itself.&lt;br /&gt;
The App Platform Manager itself creates a PostgreSQL database like this (you may respect this on your database host to be compatible with the database implementation inside the Apps):&lt;br /&gt;
* CREATE DATABASE &amp;quot;dbname&amp;quot; ENCODING &#039;UTF8&#039;;&lt;br /&gt;
* CREATE USER &amp;quot;dbuser&amp;quot;;&lt;br /&gt;
* ALTER USER &amp;quot;dbuser&amp;quot; WITH PASSWORD &#039;dbpassword&#039;;&lt;br /&gt;
* GRANT ALL PRIVILEGES ON DATABASE &amp;quot;dbname&amp;quot; TO &amp;quot;dbuser&amp;quot;;&lt;br /&gt;
* ALTER DATABASE &amp;quot;dbname&amp;quot; OWNER TO &amp;quot;dbuser&amp;quot;;&lt;br /&gt;
* REVOKE CONNECT ON DATABASE &amp;quot;dbname&amp;quot; FROM public;&lt;br /&gt;
&lt;br /&gt;
==== Database connection ====&lt;br /&gt;
There are different possibilities to specify the host. You can use a DNS-Name, IPv4 or IPv6. A port can be optionally added with a colon.&lt;br /&gt;
&lt;br /&gt;
Our PostgreSQL implementation sets sslmode=prefer, so SSL is used by default if enabled on the server.&lt;br /&gt;
&lt;br /&gt;
==== Backup/Restore ====&lt;br /&gt;
External databases are still backuped as normal, but you can&#039;t restore such a database with the App Platform Manager on the external host! You must restore such a dump manually on your database host.&lt;br /&gt;
&lt;br /&gt;
==== Database redundancy ====&lt;br /&gt;
In principle, it is possible to create redundancies for failure scenarios through this function.&lt;br /&gt;
&lt;br /&gt;
However, there are different scenarios that need to be evaluated on a case-by-case basis:&lt;br /&gt;
&lt;br /&gt;
* One database, multiple App Platforms (primary online / secondary &#039;&#039;&#039;offline&#039;&#039;&#039;) where multiple apps access the same database.&lt;br /&gt;
** This mode of operation is legal as long as you can really ensure that only one App Platform is active at a time.&lt;br /&gt;
&lt;br /&gt;
* One database, multiple App Platforms (primary online / secondary &#039;&#039;&#039;online&#039;&#039;&#039;) with multiple apps accessing the same database.&lt;br /&gt;
** This operating mode cannot be used for innovaphone apps, as the app itself would have to be developed for such a mode, which it is not.&lt;br /&gt;
&lt;br /&gt;
However, we advise great caution here! The use of the same databases from different nodes may only be used if you can ensure that the databases or runtime environments of apps cannot get into a &#039;&#039;split-brain&#039;&#039; mode.&lt;br /&gt;
&lt;br /&gt;
== Relationship between app instances and app objects in the PBX ==&lt;br /&gt;
Typically an app instance is connected to one or more app objects in a customer PBX. This is done by configuring the same parameters on both sides:&lt;br /&gt;
* URL&lt;br /&gt;
* Password&lt;br /&gt;
The password is used by the PBX for authenticating itself, users and services against the app instance.&lt;br /&gt;
&lt;br /&gt;
Some apps need a websocket connection with the PBX. When &amp;quot;websocket&amp;quot; is activated at the app object, the PBX establishes a websocket connection to the app instance and provides the APIs that are configured at the app object.&lt;br /&gt;
&lt;br /&gt;
=== Supported scenarios ===&lt;br /&gt;
It is important to understand that the concept does not do any assumptions on how PBXes and APs are correlated. So you can have&lt;br /&gt;
* One App Platform for one customer&lt;br /&gt;
* One App Platform for many customers&lt;br /&gt;
* Many App Platforms for one customer&lt;br /&gt;
* Many App Platforms for many customers&lt;br /&gt;
&lt;br /&gt;
Attention: The V13 installer can only configure the scenario &amp;quot;&#039;&#039;One App Platform for one customer&#039;&#039;&amp;quot;. If you want to have a different scenario, you have to configure it manually.&lt;br /&gt;
&lt;br /&gt;
For hosting or cloud scenarios you need special scenarios. Please refer our [[Howto:V13_Hosting| V13 Hosting]] instructions.&lt;br /&gt;
&lt;br /&gt;
=== Restrictions ===&lt;br /&gt;
Currently we don&#039;t have redundancy for app instances or App Platforms.&lt;br /&gt;
&lt;br /&gt;
== Update of the App Platform itself ==&lt;br /&gt;
The App Platform is build on top of buildroot and will receive updates and fixes from time to time.&amp;lt;br/&amp;gt;&lt;br /&gt;
You can update the used build inside the Manager App by using the &#039;&#039;&#039;Update&#039;&#039;&#039; button at the top.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 It is strongly advised to make a full backup (VM) or at least backup all apps (Gateway) before you run such an update!&lt;br /&gt;
&lt;br /&gt;
== App services and multi-threading ==&lt;br /&gt;
Each App Service runs in a single process with no multi-threading, independent of the instances of the App Service. However, each instance maintains its own database connection and the database responds to this connect with the creation of a new process. Each app service therefore uses 1+&#039;&#039;n&#039;&#039;  threads (where &#039;&#039;n&#039;&#039; is the number of instances).  All communication between app service instances and their clients must pass the single-threaded web server.  On platforms with multi-threading support (i.e. VMware or Hyper-V), up to 1 + &#039;&#039;m&#039;&#039; + &#039;&#039;m&#039;&#039; * &#039;&#039;n&#039;&#039; (with &#039;&#039;m&#039;&#039; being the number of Apps and &#039;&#039;n&#039;&#039; the number of instances per App) threads can be utilized.&lt;br /&gt;
&lt;br /&gt;
= App Platform replication =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* 13r3 on both standby servers and the primary server&lt;br /&gt;
* at least an App Platform image starting with version 110002 (otherwise postgresql is too old)&lt;br /&gt;
* standby and primary servers must have the same system architecture&lt;br /&gt;
** arm gateways (IPx11) just with arm gateways (IPx11)&lt;br /&gt;
** arm64 gateways (IPx13) just with arm64 gateways (IPx13)&lt;br /&gt;
** x86_64 virtual machines just with x86_64 virtual machines&lt;br /&gt;
* the disk size on standby servers must be at least equal as the disk size on the primary server&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
The configuration is done within the App Platform Manager next to the settings button under &amp;quot;Replication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Off ===&lt;br /&gt;
No replication is done at all.&lt;br /&gt;
&lt;br /&gt;
=== Primary ===&lt;br /&gt;
The App Platform acts as primary server for one or multiple standby servers.&amp;lt;br/&amp;gt;&lt;br /&gt;
Max 8 standby servers can be configured.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Every standby server must get a unique name on the primary server which is then also configured on the standby server itself. This is due to the fact, that the primary server preserves data for every standby server while it&#039;s not reachable.&amp;lt;br/&amp;gt;&lt;br /&gt;
A standby server name must be a valid domain name, although this name is currently not used as DNS name (but might be used in the future).&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The password is randomly pregenerated and must be used as handed by the App Platform Manager.&lt;br /&gt;
&lt;br /&gt;
==== PostgreSQL port ====&lt;br /&gt;
The default PostgreSQL port is 5432 and can&#039;t be changed on the primary. It must be reachable through your firewall or at least forwarded on a different port towards this App Platform on port 5432.&lt;br /&gt;
&lt;br /&gt;
=== Standby ===&lt;br /&gt;
Configure the password from the primary and one of the not yet used standby server names.&amp;lt;br/&amp;gt;&lt;br /&gt;
The host and port must be reachable through the network. You can sepcify a non default port which must be then forwarded somewhere else to port 5432 on your primary.&lt;br /&gt;
&lt;br /&gt;
*Note: Do &#039;&#039;&#039;not&#039;&#039;&#039; configure the same standby name on different standby servers, as this will break the replication on at least one standby!&amp;lt;br&amp;gt;&lt;br /&gt;
*Note: On a standby, all &#039;&#039;&#039;locally installed apps are removed&#039;&#039;&#039; during installation&lt;br /&gt;
&lt;br /&gt;
== Failure detection ==&lt;br /&gt;
&lt;br /&gt;
The replication state on both primary and standby servers are continuously monitored.&amp;lt;br/&amp;gt;&lt;br /&gt;
In case of a broken connection, an alarm is triggered at once and just cleared if the failure goes away.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
If such an alarm lasts for 5 minutes an email is send. The recipient address must be configured in the App Platform Manager settings under &amp;quot;Alarms and Events&amp;quot; and you must also provide a valid SMTP configuration.&lt;br /&gt;
&lt;br /&gt;
== Failover ==&lt;br /&gt;
&lt;br /&gt;
There is no automatic failover procedure. If you detect the failure state, you must get active yourself.&lt;br /&gt;
&lt;br /&gt;
=== Standby down ===&lt;br /&gt;
&lt;br /&gt;
Fix the standby server and see if the replication comes up again. If not, setup a new standby server which will replicate the whole database cluster from scratch.&lt;br /&gt;
&lt;br /&gt;
=== Primary down ===&lt;br /&gt;
&lt;br /&gt;
If the primary is down and cannot be brought into life again, you must take the following steps, depending on your configuration:&lt;br /&gt;
&lt;br /&gt;
==== One standby server ====&lt;br /&gt;
&lt;br /&gt;
* Disable the replication in the replication configuration. You will then have a standalone App Platform afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Multiple standby servers ====&lt;br /&gt;
&lt;br /&gt;
* Change the replication type on one of the standby servers from standby to primary. Please note that the other standby entries must still exist here (they are automatically offered)!&lt;br /&gt;
* Change the host entry on the other standby servers to the new standby server. The standby server will sync the whole database cluster again, which will take time.&lt;br /&gt;
&lt;br /&gt;
==== Configuration changes ====&lt;br /&gt;
&lt;br /&gt;
You must also tell the PBXes and other tools to use the new primary server.&lt;br /&gt;
&lt;br /&gt;
* You may simply change the IP address behind the DNS of your primary server to point to the new primary server.&lt;br /&gt;
* Without DNS, you must currently modify the configuration by replacing the IP address of the old primary with the new address. &lt;br /&gt;
** This must be done in every master PBX configuration.&lt;br /&gt;
** This must be done in every App configuration which may use this IP address, e.g. Devices which rolls out an alarm server configuration&lt;br /&gt;
&lt;br /&gt;
== Technical backgrounds ==&lt;br /&gt;
&lt;br /&gt;
=== Streaming replication ===&lt;br /&gt;
&lt;br /&gt;
We use the asynchronous [https://www.postgresql.org/docs/9.3/warm-standby.html#STREAMING-REPLICATION streaming replication of PostgreSQL]. A transaction thus just waits for a commit on the primary server. Standby servers will receive the transaction asynchronously afterwards to avoid a reduced writing performance.&amp;lt;br/&amp;gt;&lt;br /&gt;
A primary server keeps the neccessary WAL files for every standby server until the standby fetched the neccessary information.&amp;lt;br/&amp;gt;&lt;br /&gt;
This fact can lead to higher disk space usage on the primary if one or multiple standby servers are offline for a while.&lt;br /&gt;
&lt;br /&gt;
 Take care to fix broken replications as soon as possible to avoid a full disk on the primary server!&lt;br /&gt;
&lt;br /&gt;
=== What is replicated ===&lt;br /&gt;
The whole database cluster of an app platform is replicated. This includes every database of every instance and the database of the App Platform Manager itself.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== App Services on standbys ===&lt;br /&gt;
The database of the App Platform Manager itself also contains the App service binaries to be able to restore applications in a failover case.&amp;lt;br/&amp;gt;&lt;br /&gt;
You do not have to install App services on the standby if you install them on the primary.&amp;lt;br/&amp;gt;&lt;br /&gt;
App Platform Manager and Webserver can be updated as usual through the App Store or the Devices App if the standby is connected to Devices.&lt;br /&gt;
&lt;br /&gt;
=== App Platform Manager configuration of the standby server ===&lt;br /&gt;
The App Platform Manager configuration of the standby server cannot be stored inside the database, as the database is readonly. So it is stored inside a configuration JSON file under &#039;&#039;/home/root/standby.conf&#039;&#039;.&amp;lt;br/&amp;gt;&lt;br /&gt;
This configuration is backed up as usual by a Devices backup job and can be also manually restored on a standby (not on a primary though!).&lt;br /&gt;
&lt;br /&gt;
=== No automatic failover ===&lt;br /&gt;
&lt;br /&gt;
There is currently no automatic failover mechanism. PostgreSQL doesn&#039;t offer multi master replication, so writing is just possible on the primary itself. Standby servers have a readonly database.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Let&#039;s consider the following use case if we would implement an automatic failover with the current technical possibilities:&amp;lt;br/&amp;gt;&lt;br /&gt;
* The primary server is connected to a master PBX.&lt;br /&gt;
* A slave PBX is also connected to the primary server in another location.&lt;br /&gt;
* A standby server is in this location and replicates from the primary.&lt;br /&gt;
* The internet connection between primary and standby fails.&lt;br /&gt;
* The standby promotes itself to primary, so that the master PBX now writes to the old primary and the slave PBX now writes to the &amp;quot;new&amp;quot; primary.&lt;br /&gt;
* The internet connection comes up again and both primary and standby servers now have databases which are out of sync and which cannot be merged.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
* port 5432 must be reachable on the App Platform &lt;br /&gt;
* For every standby a PostgreSQL user is created with the REPLICATION role on the primary. Just this user has access to the database server from non localhost connections.&lt;br /&gt;
* You cannot establish a standard connection with such a user and modify/read from tables.&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
&lt;br /&gt;
== Reboot after an image update hangs (ARM gateway) ==&lt;br /&gt;
&lt;br /&gt;
If it happens, that the App Platform doesn&#039;t recover after the reboot, please open the Admin UI of the corresponding gateway and take a look at App Platform -&amp;gt; General.&amp;lt;br&amp;gt;&lt;br /&gt;
If &#039;&#039;&#039;Kernel command line&#039;&#039;&#039; is set to &#039;&#039;&#039;/dev/ram0&#039;&#039;&#039;, the App Platform booted the ramdisk.&amp;lt;br&amp;gt;&lt;br /&gt;
Try to login with putty in this case (default credentials admin/ipapps and root/iplinux) and issue this command:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;cat /apps/install_step1.log&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If this file contains &#039;&#039;&#039;finished&#039;&#039;&#039; at the end, you can reconfigure the settings under App Platform -&amp;gt; General:&amp;lt;br&amp;gt;&lt;br /&gt;
* press &#039;&#039;&#039;Stop&#039;&#039;&#039;&lt;br /&gt;
* Initrd file: empty&lt;br /&gt;
* Kernel command line: &#039;&#039;&#039;root=/dev/sda3&#039;&#039;&#039;&lt;br /&gt;
* Ramdisk size: empty&lt;br /&gt;
* press &#039;&#039;&#039;Start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The App Platform should boot and run the already updated image.&lt;br /&gt;
&lt;br /&gt;
== Reboot after an image update doesn&#039;t start as update is already running ==&lt;br /&gt;
&lt;br /&gt;
If it happens, that the App Platform doesn&#039;t want to start an update because one is already running, please open the Admin UI of the corresponding gateway and take a look at App Platform -&amp;gt; General.&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Shutdown&#039;&#039;&#039; the App Platform and &#039;&#039;&#039;Stop&#039;&#039;&#039; it.&amp;lt;br&amp;gt;&lt;br /&gt;
* Set &#039;&#039;&#039;Kernel command line&#039;&#039;&#039; to &#039;&#039;&#039;/dev/ram0&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
* Set &#039;&#039;&#039;Initrd file&#039;&#039;&#039; to &#039;&#039;&#039;ramdisk.ext2.xz&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
* Set &#039;&#039;&#039;Ramdisk size&#039;&#039;&#039; to &#039;&#039;&#039;100000&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Start&#039;&#039;&#039; the App Platform now.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The App Platform now either applies the image update or it reboots into the old image. Try the image update afterwards again.&lt;br /&gt;
&lt;br /&gt;
== Webserver doesn&#039;t respond after an image update ==&lt;br /&gt;
&lt;br /&gt;
If you can&#039;t reach the web UI after an image update, please try to connect with SSH as admin user and delete old coredumps, which may prevent the App Platform Manager from starting correctly:&lt;br /&gt;
* su root (become root)&lt;br /&gt;
* rm -f /mnt/sda2/log/core_dumps/*/*&lt;br /&gt;
* /etc/init.d/S92manager restart&lt;br /&gt;
&lt;br /&gt;
Check if you can now reach the App Platform again.&lt;br /&gt;
&lt;br /&gt;
= Tracing =&lt;br /&gt;
Each App Service has its own log file, which can be accessed through the Manager App. You can configure a log file size for each App Service.&amp;lt;br&amp;gt;&lt;br /&gt;
Each App Intance has its own trace flags. The following trace flags can be set:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Alarm client: used by the manager to send alarms to an alarm server&lt;br /&gt;
* App: logs from the App Service itself&lt;br /&gt;
* App WebSocket: logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
* AppSharing: just native clients&lt;br /&gt;
* AppProxy: just native clients, logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
* Audio: just native clients&lt;br /&gt;
* Browser: just native clients&lt;br /&gt;
* Command: the command interface is used to execute shell commands, e.g. used by the manager App&lt;br /&gt;
* Config: logs config changes of an App&lt;br /&gt;
* Database: database logs&lt;br /&gt;
* DB files: database file logs&lt;br /&gt;
* DNS: DNS request logging&lt;br /&gt;
* DTLS: just native clients, DTLS request logging&lt;br /&gt;
* Ethernet: interface to get ethernet adapater infos, just manager App&lt;br /&gt;
* File: logs for file system access (synchronous), e.g. manager App&lt;br /&gt;
* Files: logs for file system access (asynchronous)&lt;br /&gt;
* HTTP client: http client logs&lt;br /&gt;
* HTTP file: logs for static HTTP files&lt;br /&gt;
* ICE: just native clients&lt;br /&gt;
* LDS: local domain sockets &lt;br /&gt;
* Media: just native clients&lt;br /&gt;
* Media channel: just native clients&lt;br /&gt;
* Process: IProcess interface logs which is used for spawning, killing processes etc.&lt;br /&gt;
* SMTP: SMTP client logs&lt;br /&gt;
* TCP: TCP logs&lt;br /&gt;
* Time: ITime interface logs&lt;br /&gt;
* TLS: TLS logs&lt;br /&gt;
* TURN: just native clients&lt;br /&gt;
* UDP: UDP logs&lt;br /&gt;
* Video: just native clients&lt;br /&gt;
* WebSocket client: logs outgoing websocket connections&lt;br /&gt;
* Webserver traffic: logs incoming HTTP traffic, which is forwarded from the webserver to the App&lt;br /&gt;
* WebDAV service: logs WebDAV requests to the App&lt;br /&gt;
* Webserver: enables webserver specific logs&lt;br /&gt;
&lt;br /&gt;
== RPCAP ==&lt;br /&gt;
&lt;br /&gt;
If you open the Manager App, click on the Manager in the left list and then on the Diagnostics button, you can enable RPCAP.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Please don&#039;t forget to disable RPCAP after your testing!&lt;br /&gt;
&lt;br /&gt;
String für Wireshark Remote-Interface: &amp;quot;IP-ADRESS-APPS-Platform\trace&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= How-Tos =&lt;br /&gt;
&lt;br /&gt;
== How to retrieve files from the App Platform ==&lt;br /&gt;
To retrieve files from the App Platform which can not be retrieved via the App Platform manager UI, you can connect to the App Platform using the SCP protocol on port 22.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
First copy files to /home/admin as root with Putty or another SSH client:&lt;br /&gt;
* use the &#039;&#039;DNS&#039;&#039; name or IP address of your App Platform (not the PBX)&lt;br /&gt;
* use user &#039;&#039;admin&#039;&#039; and the appropriate password (&#039;&#039;ipapps&#039;&#039; by default)&lt;br /&gt;
* use &#039;&#039;su root&#039;&#039; to be root (&#039;&#039;iplinux&#039;&#039; as default password)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can now copy files to &#039;&#039;/home/admin&#039;&#039; (e.g. from /var/log/apps/manager/...).&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
You can create a tar archive with all logs like this:&lt;br /&gt;
* cd /home/admin&lt;br /&gt;
* tar -cf - /var/log/* | xz -z - &amp;gt; log.tar.xz&lt;br /&gt;
** you may want to exclude coredumps (due to their size):&lt;br /&gt;
** tar -cf - --exclude=/var/log/core_dumps/* /var/log/* | xz -z - &amp;gt; log.tar.xz&lt;br /&gt;
* chown admin:admin /home/admin/log.tar.xz&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Then copy the files to your local system, e.g. with WinSCP&amp;lt;br/&amp;gt;&lt;br /&gt;
* use &#039;&#039;SCP&#039;&#039; as protocol (NB: WebDAV is not supported on most of the directories on the App Platform )&lt;br /&gt;
* use the &#039;&#039;DNS&#039;&#039; name or IP address of your App Platform (not the PBX)&lt;br /&gt;
* use user &#039;&#039;admin&#039;&#039; and the appropriate password (&#039;&#039;ipapps&#039;&#039; by default)&lt;br /&gt;
* use &#039;&#039;/home/admin&#039;&#039; as start directory&lt;br /&gt;
* copy the needed files&lt;br /&gt;
&lt;br /&gt;
== App Platform disk space warning ==&lt;br /&gt;
&lt;br /&gt;
If the configured threshold is reached, all Apps are stopped inside the App Platform . You must then free disk space somehow.&lt;br /&gt;
&lt;br /&gt;
=== Find large instances ===&lt;br /&gt;
Click through your apps in the tree on the left side and take a look at the database size of each instance.&lt;br /&gt;
&lt;br /&gt;
=== Delete data inside an instance ===&lt;br /&gt;
It depends on the type of app if you can delete data or not. E.g. you can start the Files app and delete files inside this app.&amp;lt;br&amp;gt;&lt;br /&gt;
This won&#039;t reclaim disk space though due to the way how PostgreSQL databases work, so you need to follow this guide to reclaim the disk space:&lt;br /&gt;
&lt;br /&gt;
* start the corresponding App&lt;br /&gt;
* delete data inside the App&lt;br /&gt;
* stop the corresponding App again&lt;br /&gt;
* download a backup of the instance (backup button at the top), this backup contains the whole instance data, also the password of the instance&lt;br /&gt;
* delete this specific instance&lt;br /&gt;
* restore the downloaded backup (restore button at the top)&lt;br /&gt;
&lt;br /&gt;
 Depending on the hardware and the size of the instance, this process may take hours to complete!&lt;br /&gt;
&lt;br /&gt;
=== Resize the disk ===&lt;br /&gt;
The resizing of a disk is just possible for virtual machines, see [[#Resizing the disk of a Virtual machine|Resizing the disk of a Virtual machine]].&lt;br /&gt;
&lt;br /&gt;
=== Delete the whole instance ===&lt;br /&gt;
If there is no other possibility, you can delete the whole instance. Afterwards you recreate the instance with the same values and a new random password. Don&#039;t forget to set this password in the corresponding PBX App objects though!&lt;br /&gt;
&lt;br /&gt;
=== Restart the Apps or the App Platform ===&lt;br /&gt;
If you have enough disk space again, you must either restart the whole App Platform or you manually start all Apps again.&lt;br /&gt;
&lt;br /&gt;
== App Platform/Apps app not online anymore due to full disk ==&lt;br /&gt;
If the apps app is not online anymore and you can&#039;t access any apps anymore, try to login with an SSH client to see if your disk is full.&lt;br /&gt;
Login as admin and afterwards as root (su root).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* issue &#039;&#039;&#039;df -h&#039;&#039;&#039; and see the disk usage of /dev/sda2, if this is 100%, your disk is too full&lt;br /&gt;
* stop the manager&lt;br /&gt;
** /etc/init.d/S92manager stop&lt;br /&gt;
* empty the 500 MB file, which is exactly for this case here (manager must be 13r1 SR9 or higher to have this file)&lt;br /&gt;
** echo &amp;quot;&amp;quot; &amp;gt; /mnt/sda2/empty_if_no_space&lt;br /&gt;
* delete log files to recover some space&lt;br /&gt;
** rm /var/log/apps/*/*&lt;br /&gt;
** rm /var/log/core_dumps/*/*&lt;br /&gt;
* restart the postgresql server (see the output if this worked or not)&lt;br /&gt;
** /etc/init.d/S50postgresql restart&lt;br /&gt;
* restart the manager&lt;br /&gt;
** /etc/init.d/S92manager restart&lt;br /&gt;
* wait until everything is online again&lt;br /&gt;
* open the Apps app and try to find the instance which uses the most disk space and try to delete files/content from it&lt;br /&gt;
** you may want to stop all app services first to prevent more writes to the database&lt;br /&gt;
** if not possible, you can delete this instance, but you&#039;ll loose all data from this instance then!&lt;br /&gt;
* after that you can try [[{{NAMESPACE}}:Concept_App_Platform#Shrink_the_physically_size_of_PostgreSQL_database_files]] to free up space&lt;br /&gt;
** If this does not work you can create a backup from the database, delete the database and import the database again.&lt;br /&gt;
* free up at least 500 MB so that the manager can create the file again&lt;br /&gt;
* delete /mnt/sda2/empty_if_no_space if you are done and restart the manager:&lt;br /&gt;
** rm /mnt/sda2/empty_if_no_space&lt;br /&gt;
** /etc/init.d/S92manager restart&lt;br /&gt;
** the manager restart automatically recreates the empty_if_no_space file if this file doesn&#039;t exist&lt;br /&gt;
&lt;br /&gt;
 Make sure, that you do &#039;&#039;&#039;not&#039;&#039;&#039; have backups configured to a local files instance while this files instance is not excluded from backups.&lt;br /&gt;
 An instance can be excluded from backups in the instance settings in the App Platform Manager.&lt;br /&gt;
&lt;br /&gt;
If all of this doesn&#039;t help, you can resize the file system on a VM:&lt;br /&gt;
* proceed with [[{{NAMESPACE}}:Concept_App_Platform#Resizing_the_disk_of_a_Virtual_machine]]&lt;br /&gt;
&lt;br /&gt;
== Resizing the disk of a Virtual machine ==&lt;br /&gt;
&lt;br /&gt;
* stop the VM&lt;br /&gt;
* expand the disk using your VM utilities&lt;br /&gt;
* start the VM and boot from the first boot entry &#039;&#039;&#039;rescue/setup&#039;&#039;&#039;&lt;br /&gt;
* login with &#039;&#039;&#039;root&#039;&#039;&#039; and &#039;&#039;&#039;iplinux&#039;&#039;&#039;&lt;br /&gt;
* execute this command: &#039;&#039;&#039;/home/root/install_step1.sh log.txt resize&#039;&#039;&#039;&lt;br /&gt;
* the VM reboots automatically after a successful resize&lt;br /&gt;
&lt;br /&gt;
== Shrink the physically size of PostgreSQL database files ==&lt;br /&gt;
Tuples that are deleted in your database are not physically removed from the database-file. So the claimed space on the harddisk is still in use after the delete operation. &lt;br /&gt;
If you need to free up some disk space you can force to reorganize the physically database-file on your harddisk.&lt;br /&gt;
&lt;br /&gt;
 You can also start this process through the instance settings as long as the App Platform Manager is still running.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important: You are operating on the Database, you have to make a Backup of your Database before you do this!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Login via SSH to the APPlatform with the &#039;&#039;admin&#039;&#039; User&lt;br /&gt;
 su root&lt;br /&gt;
 /etc/init.d/S92manager stop  # not always needed, but in case of database errors recommended, of course no app is online then&lt;br /&gt;
 sudo -u postgres reindexdb -a&lt;br /&gt;
 sudo -u postgres vacuumdb -a -f&lt;br /&gt;
 /etc/init.d/S92manager restart # just execute if the manager has been stopped above&lt;br /&gt;
&lt;br /&gt;
 sudo -u postgres reindexdb -d dbname # for a single database with dbname&lt;br /&gt;
 sudo -u postgres vacuumdb -d dbname -f # for a single database with dbname&lt;br /&gt;
&lt;br /&gt;
Note: This may take some time and CDRs (or other data written to a DB) won&#039;t be received during this time. &lt;br /&gt;
&lt;br /&gt;
After the process you can check the free dispace via &amp;lt;code&amp;gt;df -h&amp;lt;/code&amp;gt;. You can check the claimed space from the database file with the command &amp;lt;code&amp;gt;du -sh /mnt/sda2/pgsql/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Change IP Addresses / DNS Names / System Name ==&lt;br /&gt;
&lt;br /&gt;
If you want to change the System Name or the DNS Name of the PBX and/or App Platform Platform you must change records manually &#039;&#039;&#039;in the described order&#039;&#039;&#039;!&lt;br /&gt;
You have to know the Admin password to directly Login to the App Platform .&lt;br /&gt;
&lt;br /&gt;
=== App Platform ===&lt;br /&gt;
; Settings - General&lt;br /&gt;
* &#039;&#039;Devices app URL&#039;&#039;&lt;br /&gt;
* &#039;&#039;App platform DNS name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Settings - Alarms and Events&lt;br /&gt;
* &#039;&#039;URL&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; All Instances&lt;br /&gt;
* &#039;&#039;Domain&#039;&#039;&lt;br /&gt;
* &#039;&#039;Webserver path&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== PBX ===&lt;br /&gt;
Download the configuration and &#039;&#039;search/replace&#039;&#039; in the config file. Upload the config file and reboot.&lt;br /&gt;
&lt;br /&gt;
Manual:&lt;br /&gt;
* &#039;&#039;URL&#039;&#039; in all PBX Object (Apps, Voicemail ...)&lt;br /&gt;
* [[{{NAMESPACE}}:Gateway/CDR|CDRx]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/General|IP address for App Platform]] &lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/myApps|Reset Password Page]]&lt;br /&gt;
* [[{{NAMESPACE}}:PBX/Config/Authentication|Verification link]]&lt;br /&gt;
&lt;br /&gt;
Depending on your change you have to activate/deactivate the Setting [[{{NAMESPACE}}:PBX/Config/General|Operation without DNS]]&lt;br /&gt;
&lt;br /&gt;
=== Additional Devices / Steps ===&lt;br /&gt;
* &#039;&#039;Devices Registration URL&#039;&#039;&lt;br /&gt;
** There is no automatism to change the URL on all devices in your setup.&lt;br /&gt;
** If you have the option to use DHCP, you can temporarily overwrite the [[{{NAMESPACE}}:Services/Update|Update URL]] and execute a [[{{NAMESPACE}}:Concept_Update_Server|custom update script]] to change the &#039;&#039;Device Registration URL&#039;&#039;&lt;br /&gt;
* &#039;&#039;Alarm server&#039;&#039;&lt;br /&gt;
* Reverse Proxy configuration&lt;br /&gt;
* Change &#039;&#039;Domain Name&#039;&#039; in Devices if you have also changed the system name&lt;br /&gt;
&lt;br /&gt;
== How to recover from a broken File System ==&lt;br /&gt;
Sometimes you may find messages in the &#039;&#039;messages&#039;&#039; log file (in &#039;&#039;var/log&#039;&#039;) like&lt;br /&gt;
&lt;br /&gt;
 initial error at 1500329378: ext4_journal_start_sb:328&lt;br /&gt;
 last error at 1500329378: ext4_journal_start_sb:328&lt;br /&gt;
&lt;br /&gt;
Or you get events like &amp;quot;Broken file system&amp;quot; from your App Platform .&lt;br /&gt;
&lt;br /&gt;
This indicates a file system failure on the Linux Installation.&lt;br /&gt;
&lt;br /&gt;
When the Linux file system is broken, you can try to repair it using some command line Linux tools.&lt;br /&gt;
&lt;br /&gt;
If this doesn&#039;t fix your issue, you need to replace the SSD with a new one, re-install the App Platform and any applications and restore your backups.&lt;br /&gt;
&lt;br /&gt;
=== Gateway ===&lt;br /&gt;
&lt;br /&gt;
* Open the WebGUI of the gateway running your LAP and proceed to &#039;&#039;App Platform/General&#039;&#039;&lt;br /&gt;
** terminate Linux (&#039;&#039;Status/Stop&#039;&#039;)&lt;br /&gt;
** modify the Kernel command line from root=/dev/sda3 to root=/dev/ram0&lt;br /&gt;
** modify the Initrd file to ramdisk.ext2.xz&lt;br /&gt;
** modify the ramdisk size to 100000&lt;br /&gt;
** start Linux again&lt;br /&gt;
:: This will run Linux on another (hopefully sane) partition.&lt;br /&gt;
&lt;br /&gt;
* use [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty] to log in to the LAP&#039;s command line (user: root, pw: iplinux)&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda2&amp;lt;/code&amp;gt;&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda3&amp;lt;/code&amp;gt;&lt;br /&gt;
:: this should fix any issue on the file system&lt;br /&gt;
&lt;br /&gt;
* go back to the WebGUI of the gateway running your LAP and proceed to &#039;&#039;App Platform/General&#039;&#039;&lt;br /&gt;
** terminate Linux (&#039;&#039;Status/Stop&#039;&#039;)&lt;br /&gt;
** modify the &#039;&#039;Kernel command line&#039;&#039; from &#039;&#039;root=/dev/ram0&#039;&#039; to &amp;lt;code&amp;gt;root=/dev/sda3&amp;lt;/code&amp;gt;&lt;br /&gt;
** clear the Initrd file field&lt;br /&gt;
** clear the ramdisk size field&lt;br /&gt;
** start Linux again&lt;br /&gt;
:: This will run Linux on the original partition.&lt;br /&gt;
&lt;br /&gt;
=== VM ===&lt;br /&gt;
&lt;br /&gt;
Restart the VM and select the first entry in the boot menu from grub.&lt;br /&gt;
&lt;br /&gt;
* use [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty] to log in to the LAP&#039;s command line&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda2&amp;lt;/code&amp;gt;&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda3&amp;lt;/code&amp;gt;&lt;br /&gt;
:: this should fix any issue on the file system&lt;br /&gt;
* Reboot your VM&lt;br /&gt;
[[Category:Concept]]&lt;br /&gt;
&lt;br /&gt;
== How to create a memory dump of a running process ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it&#039;s usefull to have a memory dump of a running process to investigate certain issues.&lt;br /&gt;
&lt;br /&gt;
* login with SSH and become root&lt;br /&gt;
* find out the PID of the relevant process, e.g. with &#039;&#039;ps aux | grep /apps/manager/manager | grep -v grep&#039;&#039;&lt;br /&gt;
* gdb --pid PID -ex gcore --batch&lt;br /&gt;
* this creates a core file core.PID&lt;br /&gt;
* download this core file with WinSCP or similar tools&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Voice_Recording_2014&amp;diff=60615</id>
		<title>Reference10:Concept Voice Recording 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Voice_Recording_2014&amp;diff=60615"/>
		<updated>2021-12-06T14:34:57Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Innovaphone Voice Recorder application allows recording while the Innovaphone Player application a comfortable search and playback of phone calls. &lt;br /&gt;
&lt;br /&gt;
All kinds of calls can be recorded:&lt;br /&gt;
&lt;br /&gt;
*Incoming calls&lt;br /&gt;
&lt;br /&gt;
*Outgoing calls&lt;br /&gt;
&lt;br /&gt;
*Calls from Innovaphone IP Phones&lt;br /&gt;
&lt;br /&gt;
*Calls form 3rd party IP-Phones&lt;br /&gt;
&lt;br /&gt;
*Calls from IP-DECT phone sets&lt;br /&gt;
&lt;br /&gt;
*Calls from analogue phone sets&lt;br /&gt;
&lt;br /&gt;
*Calls from with mobile phones (mobility, forking)&lt;br /&gt;
&lt;br /&gt;
*Calls done on a legacy PBX (soft migrations scenarios)&lt;br /&gt;
&lt;br /&gt;
The records are stored in a first step on the Compact flash or WebDAV server and processed then form the recorder tool.&lt;br /&gt;
&lt;br /&gt;
Voice recording can be done on a logical or fiscal gateway (BRI, GW, SIP etc.), and therefore all kind of audio traffic can be recorded. Technically spoken a gateway is doing media relay and writes the audio data to the WebDAV or CF.&lt;br /&gt;
&lt;br /&gt;
The second way to record is recording directly from the Innovaphone IP-Phone. In this case the phone itself writes the audio data to the CF or WebDAV server.&lt;br /&gt;
&lt;br /&gt;
See the “Scenarios” for further details.&lt;br /&gt;
&lt;br /&gt;
The solution requires an Innovaphone PBX, the reporting tool and two applications;&lt;br /&gt;
&lt;br /&gt;
*a recording tool described in this document called “Recorder”&lt;br /&gt;
&lt;br /&gt;
*a search and playback tool called “Player”. &lt;br /&gt;
&lt;br /&gt;
The usage of the Player is not part of this description, a separate localized help and user manual is available. &lt;br /&gt;
&lt;br /&gt;
While the recorder (this description) has to be installed by professionals and the maintenance is done by system administrations people (and therefore English wording and this description is good enough) the player is operated by End user and may be not digital native, skilled or knowledge base workers. &lt;br /&gt;
&lt;br /&gt;
Note also that the setup of the player is a typical admin job and not described in the player manual.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: All users that should be recorded need the REPORTING! We recommend reporting for all user, see chapter “Requirements” for further details.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
As webdav server just the innovaphone webdav server (on a GW, IPVA or innovaphone LinuxAP) is supported.&lt;br /&gt;
&lt;br /&gt;
The recorder use HTTP and HTTPS access and not a webdav protocol to access.&lt;br /&gt;
&lt;br /&gt;
The Recorder must be physically and logically “nearby” the main PBX.  “nearby” means in the same location (not remote), in the same network and also on a physical machine.&lt;br /&gt;
&lt;br /&gt;
Our solutions are tested on single physical machines and we are not able to support the huge amount of virtualisation software (and there edition and version).&lt;br /&gt;
 &lt;br /&gt;
We recommend to user normal Windows software, so not a “server” edition.&lt;br /&gt;
&lt;br /&gt;
Disable &amp;quot;Power Saving Mode&amp;quot; on the windows machine that runs the recorder application, so the SOAP connection it&#039;s not interrupt.&lt;br /&gt;
&lt;br /&gt;
Voice recorder and Player could run on the same PC as well one single PC can also be used for the reporting, recording, playing and webdav server (and PBX if you like). So anything on one server is theoretically possible, but not recommended. &lt;br /&gt;
Please note that a working Webdav is mandatory, otherwise records will be lost! If recording is critical please define a second logical GW with recording and record on an independent webdav too as backup (you have to clear that drive manually to avoid disk full). Do never use the Flash memory ad webdav.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PBX===&lt;br /&gt;
You require a PBX version 11 or 12.&lt;br /&gt;
&lt;br /&gt;
For Version 13 see [[Reference10:Concept_Voice_Recording_2014#Known_Problems|section known problems]] !&lt;br /&gt;
&lt;br /&gt;
===Reporting===&lt;br /&gt;
&lt;br /&gt;
The recording feature requires the linux-platform-based innovaphone Reporting.  Please update your platform to the latest Hotfix. Minimum Build 10043 is required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; VoiceRecording (2014) will [[Reference10:Concept_Voice_Recording_2014#Version_13|not work with the new V13-reporting]].&lt;br /&gt;
&lt;br /&gt;
Each user for whom calls are physically recorded (by creating a pcap file for the call using the &#039;&#039;Record to (URL)&#039;&#039; feature) must have reporting enabled and hence requires a reporting license.  Although the recorder will discard all physically recorded calls if the user involved has no recording license, it still needs the CDR information for the call (without this information, the recorder can not determine the user the recorded file belongs to).  If the recorder needs to process files for which no CDR is available, it will malfunction.&lt;br /&gt;
&lt;br /&gt;
So generally, we recommend that all users in the PBX should have the reporting on as this is the simplest solution.  However, if this is not feasible, then all users for whom recording pcap files are created must have reporting.  Please note that if you configure the pcap creation on the trunk gateway all users that possibly could do calls through this trunk (which practically means: all users) must have recording.  To limit the number of recording licenses you need to configure pcap creation on the endpoints (i.e. phones) rather.&lt;br /&gt;
&lt;br /&gt;
=== Recorder ===&lt;br /&gt;
&lt;br /&gt;
This document describes Build 1134. &lt;br /&gt;
&lt;br /&gt;
Application package can be retrieved from our [http://download.innovaphone.com/ice/10.00/#recording download page].&lt;br /&gt;
&lt;br /&gt;
The recorder and Player application was tested on Windows 10, win 7 or higher should also be fine, framework 4.5 is required (no Windows XP).&lt;br /&gt;
&lt;br /&gt;
Disk space: One minute of conversation requires about 1 MB of memory if stored in Wave or Pcap Format. &lt;br /&gt;
The wave voice data is not pure PCM, but a G.711 format in a wave container. PCM requires about 2 times  much more disk space and is not used for storing. The audio files can also be encrypted. Encryption would double the required disk space. &lt;br /&gt;
&lt;br /&gt;
The recorded conversation is a stereo file where the external caller is on the left channel whiles the internal one in the right channel. &lt;br /&gt;
&lt;br /&gt;
It is possible to down mix the conversation to mono; this would save about 50%.&lt;br /&gt;
&lt;br /&gt;
It is also possible to compress the audio data to mp3.&lt;br /&gt;
&lt;br /&gt;
The following table shows the required disk space for one minute of conversation:&lt;br /&gt;
&lt;br /&gt;
[[Image:RecSetup07.png]]&lt;br /&gt;
&lt;br /&gt;
Example: 500 GB Hard disk, mp3 compression without encryption -&amp;gt; 1.389 days = 3,8 years of conversation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No particular memory or CPU speed is requested, standard editions are quite good enough. Invest better in a good quality because in professional environments those machines have to work for many years.&lt;br /&gt;
&lt;br /&gt;
Voice recording requires a Version 11 innovaphone PBX and a actual Build of the Reporting tool. No compatibility with older versions is possible. PBX and/or Reporting can run on a gateway as well as on VMware. &lt;br /&gt;
&lt;br /&gt;
The recording of the pcap file is done by the PBX firmware and requires a Compact flash or a WebDAV server. The recorder software will detect those records and copy them on the real storage path. Therefore the storage requirement for the CF/mSATA/WebDAV not real high (but remember always 1 Minute =1 MB, so if you must record 30 conversations for 30 minutes = 900MB).&lt;br /&gt;
&lt;br /&gt;
The two extreme setups are: &lt;br /&gt;
&lt;br /&gt;
*innovaphone PBX on the GW, reporting on the GW, pcap recording on the CF, recording application on a PC&lt;br /&gt;
&lt;br /&gt;
*innovaphone PBX on the PC, reporting on the PC, pcap recording on the PC, recording application on a PC&lt;br /&gt;
&lt;br /&gt;
Each combination between is possible. &lt;br /&gt;
&lt;br /&gt;
Remember that the CF is a relative slow drive, you will note this if you copy a file from the CF to the local HD of your PC. Exact this file copy is one of the task of the recorder, even a critical one (so not a good idea do anything else in between). The result is that the copy of a huge file (a long conversation) or many files will virtually froze the recorder software. In reality the recorder is just hanging around and waits that the file copy is finally done.&lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
Recording can only be done using G.711, G.729 or G.722 (Build 1134) codec.&lt;br /&gt;
&lt;br /&gt;
Note: if you update an older recorder version to build 1134 delete first the file pcap2wav.exe in the directory where the recorder run and/or in the log path of the recorder.&lt;br /&gt;
&lt;br /&gt;
=== Player ===&lt;br /&gt;
&lt;br /&gt;
The player application requires a PC with Windows OS Win 7 or higher, the Mediaplayer is necessary. All that on a standard office PC is installed and you have to do nothing in particularly.&lt;br /&gt;
Require Framework 4.5. &lt;br /&gt;
In theory also a Windows server 2008 could host the player, but in the server versions the media player typically is not installed and there are also different DLL missing. So if you have time or you are well Microsoft server trained face also that if necessary (normally not).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In theory it should work on any CPU, the Player was tested under Win7 32BIT, Win7 64Bit and Win8 64Bit and Win10.&lt;br /&gt;
&lt;br /&gt;
===License===&lt;br /&gt;
&lt;br /&gt;
The license model is based on user, so for each user to record a license is required.&lt;br /&gt;
&lt;br /&gt;
The current implementation allows a recording of objects of type user or executive. Recordings on other objects will be discarded.&lt;br /&gt;
&lt;br /&gt;
So in short: Per recorded user or executive object you need to have&lt;br /&gt;
* one recording license&lt;br /&gt;
* one reporting license&lt;br /&gt;
&lt;br /&gt;
In start-up the recorder will read out the number of recording license in the PBX. After that the recorder will read out all users and check if a user is in the recording group (defined in the recorder setup). If a user with that group is found one license is counted down. If there are no more license but user in group detected they will be skipped. The recorder shows how many license where detected in the PBX and how many user are in the recording group. If there are more users than licenses a warning is show.&lt;br /&gt;
&lt;br /&gt;
Remember that just users in the recorder user table are recorded; all other records are automatic deleted! This can be usefully if for example for internal reasons not just the user to record passes through the recording gateway but also others; not being in the group the records will be destroyed. But of course this will cause senseless PBX CPU workload because a recording anyway is done, just the recorder will delete after the files.&lt;br /&gt;
&lt;br /&gt;
=== Legal Aspects ===&lt;br /&gt;
&lt;br /&gt;
Please take extremely care about the legal issue: in most country voice recording of telephone calls is forbidden and persecuted by law as a crime.  In some country it is legal in certain circumstances, for example you have to inform the caller that the call will be recorded. That can be done automatically (using for example a waiting queue) or “manually”, telling the far person that this call will be recorded. Of cause also this announcement should be recorded. In some country recording is legal without any announcement for certain services, for example in case of emergency calls or calls to the police. In most country authority like the secret service do not really care about all that stuff and do what they want, but this is probably not your case. &lt;br /&gt;
&lt;br /&gt;
So inform yourself and the customer about the local legal situation. Using the recording tools is on your own risk and innovaphone will not take any responsibility, even not for eventual malfunctions. See also our general trading terms, valid even for this solution. If you have any doubt about legal questions in using voice recording; don´t do it, don’ use it!&lt;br /&gt;
&lt;br /&gt;
== Feature list ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
•	Using an innovaphone IP-Phone set immediately after call end the recording can be listened using the phone. One feature key stroke and the conversation is reproduced and repeated endless (auto replay). This call can also be transferred or put in a 3 party conference (immediate sharing) &lt;br /&gt;
&lt;br /&gt;
•	Online Help and tooltips for application and setup&lt;br /&gt;
&lt;br /&gt;
•	Setup password protected, setup files are encrypted&lt;br /&gt;
&lt;br /&gt;
•	Recorder in Demo Mode (20 minutes) , Player for free&lt;br /&gt;
&lt;br /&gt;
•	Many recorder in one system and unlimited number of players&lt;br /&gt;
&lt;br /&gt;
=== Recorder ===&lt;br /&gt;
&lt;br /&gt;
•	Recording of any type of calls direction &lt;br /&gt;
&lt;br /&gt;
•	Recording of calls from any device: IP-Phones (innovaphone and 3rt Party), analogue phones, GSM (mobility), IP-DECT&lt;br /&gt;
&lt;br /&gt;
•	Recording of calls from/to legacy PBX (smooth migration)&lt;br /&gt;
&lt;br /&gt;
•	Recording can be done in a logical gateway or direct from a innovaphone phone set&lt;br /&gt;
&lt;br /&gt;
•	Recording of encrypted calls&lt;br /&gt;
&lt;br /&gt;
•	Standard and thread call recording. If thread call recording is on after a settable time period (for example 5 minutes) a call will be automatically deleted. If the user calls inside the time period a code the last call will be saved. This marking to keep the recorded call can be done from any type of phone. If the phone is a innovaphone IP Phone the marking can be done also during conversation&lt;br /&gt;
&lt;br /&gt;
•	Storage of all relevant data including the time to answer for each call&lt;br /&gt;
&lt;br /&gt;
•	Detail protocol of each call, documentation of the entire call flow, not just the recording period but even previous and following one. Detail report on all call situations, transfer, call forwarding, pick-up, group call, conference etc. Also calls in waiting queues or announcements are reported with second accuracy&lt;br /&gt;
&lt;br /&gt;
•	Encrypted protocol data &lt;br /&gt;
&lt;br /&gt;
•	Display number of channels in recording with start timestamp&lt;br /&gt;
&lt;br /&gt;
•	Error and  Event log files&lt;br /&gt;
&lt;br /&gt;
•	Email alert in case of master alarm&lt;br /&gt;
&lt;br /&gt;
•	Automatic backup (copy to mass storage archive)&lt;br /&gt;
&lt;br /&gt;
•	Automatic delete of records older than 2-99 month (not on archives)&lt;br /&gt;
&lt;br /&gt;
•	Recordings are saved as wave files, can be reproduced with any player&lt;br /&gt;
&lt;br /&gt;
•	Wave data integrity supervision&lt;br /&gt;
&lt;br /&gt;
•	File name contains primary data (Timestamp, Caller and called, direction, time to answer, UID)&lt;br /&gt;
&lt;br /&gt;
•	Counter of recorded conversations&lt;br /&gt;
&lt;br /&gt;
•	Data Link to player, remote control of the recorder from player&lt;br /&gt;
&lt;br /&gt;
•	Interface to external applications, via TCP or URL, recorder provides data for later retrieving. Player can be controlled sending commands to the recorder (3rd party)&lt;br /&gt;
&lt;br /&gt;
•	Mark record during a conversation on the IP-Phone (build 1077)&lt;br /&gt;
&lt;br /&gt;
•	Https from Build 10087 on&lt;br /&gt;
&lt;br /&gt;
•	Slave sites from Build 10089 on&lt;br /&gt;
&lt;br /&gt;
•	G722 Codec from Build 1134 on&lt;br /&gt;
&lt;br /&gt;
•	PCAP recording from Build 1134 on&lt;br /&gt;
&lt;br /&gt;
•	Work as a service from Build 1134 on&lt;br /&gt;
&lt;br /&gt;
•	Work as http player server and/or PCAP to Wave/MP3 converter from Build 1134 on&lt;br /&gt;
&lt;br /&gt;
•	Work as a service from Build 1135 on&lt;br /&gt;
&lt;br /&gt;
=== Player ===&lt;br /&gt;
&lt;br /&gt;
•	Integrity of the recorded wave files are recognized and displayed&lt;br /&gt;
&lt;br /&gt;
•	Agent note, a Player displays automatically agent notes and can add text notes to each call&lt;br /&gt;
&lt;br /&gt;
•	Integration with iQM server, display of missed calls, possibility to recall immediately &lt;br /&gt;
&lt;br /&gt;
•	Naming of Players &lt;br /&gt;
&lt;br /&gt;
•	Month and Day filter&lt;br /&gt;
&lt;br /&gt;
•	Filter for internal and external number with wildcards&lt;br /&gt;
&lt;br /&gt;
•	Filter for incoming and outgoing calls&lt;br /&gt;
&lt;br /&gt;
•	View of oldest or newest call on top&lt;br /&gt;
&lt;br /&gt;
•	SOS mode can be switched on/off with just one click. If on all unnecessary key are hide, the newest calls are displayed on top of the call list and filters are switched off&lt;br /&gt;
&lt;br /&gt;
•	Selection of calls, one single call, more single selected calls, from to, all&lt;br /&gt;
&lt;br /&gt;
•	Online search and display, can be switched off&lt;br /&gt;
&lt;br /&gt;
•	Copy, move and delete of calls&lt;br /&gt;
&lt;br /&gt;
•	Move and delete operations are logged in centralized manipulation log &lt;br /&gt;
&lt;br /&gt;
•	Permissions &lt;br /&gt;
&lt;br /&gt;
•	Multiple selected calls can are transferred automatically in a playlist and can be reproduced&lt;br /&gt;
&lt;br /&gt;
•	Display record size&lt;br /&gt;
&lt;br /&gt;
•	Display number of records in playlist and actual play&lt;br /&gt;
&lt;br /&gt;
•	Jump forward and backward in playlist &lt;br /&gt;
&lt;br /&gt;
•	Jump to next/previous title in search result list if playlist contains just one record&lt;br /&gt;
&lt;br /&gt;
•	Marc record in playlist, select actual record and clear all others&lt;br /&gt;
&lt;br /&gt;
•	Play one title after the other in playlist&lt;br /&gt;
&lt;br /&gt;
•	Play a beep if record change in playlist (loop playlist)&lt;br /&gt;
&lt;br /&gt;
•	Repeat play (loop record), up to 4 positions, stored automatically&lt;br /&gt;
&lt;br /&gt;
•	Repeat play of all stored memory positions&lt;br /&gt;
&lt;br /&gt;
•	Display internal and external number with name resolution&lt;br /&gt;
&lt;br /&gt;
•	Display timestamp, time to answer an call ID&lt;br /&gt;
&lt;br /&gt;
•	Display System and Player status&lt;br /&gt;
&lt;br /&gt;
•	Display if local remote control interface is on&lt;br /&gt;
&lt;br /&gt;
•	Display of play was forced be recorder remote control&lt;br /&gt;
&lt;br /&gt;
•	Keys for Stop, Play, Fast Forwarding, Rewind, Pause and Eject &lt;br /&gt;
&lt;br /&gt;
•	Display duration record&lt;br /&gt;
&lt;br /&gt;
•	Display elapsed time or count down, switchable &lt;br /&gt;
&lt;br /&gt;
•	Original time elapsing display&lt;br /&gt;
&lt;br /&gt;
•	Progress bar adjustable, direct jump to selected position, drag and drop&lt;br /&gt;
&lt;br /&gt;
•	Start and Stop position can be marked an played in loop (selection loop)&lt;br /&gt;
&lt;br /&gt;
•	Volume control with audio meter and peek indication&lt;br /&gt;
&lt;br /&gt;
•	Delta level Indication (L-R and R-L meter)&lt;br /&gt;
&lt;br /&gt;
•	Overflow level audio meter&lt;br /&gt;
&lt;br /&gt;
•	Enhanced sensitivity for audio meter&lt;br /&gt;
&lt;br /&gt;
•	Attenuation left and right channel adjustable&lt;br /&gt;
&lt;br /&gt;
•	Audio setup can be stored and recalled&lt;br /&gt;
&lt;br /&gt;
•	Audio level at maximum&lt;br /&gt;
&lt;br /&gt;
•	Levels are stored and set on restart&lt;br /&gt;
&lt;br /&gt;
•	Level meter with peek indicator for left and right channel&lt;br /&gt;
&lt;br /&gt;
•	Mute&lt;br /&gt;
&lt;br /&gt;
•	Large additional display with call details&lt;br /&gt;
&lt;br /&gt;
•	Automatic decryption if files are copied&lt;br /&gt;
&lt;br /&gt;
•	Player can be limited to display just calls of one extension&lt;br /&gt;
&lt;br /&gt;
•	Communication with recorder, display of link status, last master alarm and channels in recording&lt;br /&gt;
&lt;br /&gt;
•	Reset recorder from player&lt;br /&gt;
&lt;br /&gt;
•	Search an play on backup directories&lt;br /&gt;
&lt;br /&gt;
•	Operate as Media player, reproduction of audio format wav, mp3, wmp and video format avi, wmv, mp4 and mpg&lt;br /&gt;
&lt;br /&gt;
•	1rst and 3rd party remote control&lt;br /&gt;
&lt;br /&gt;
•	Document security, manipulation is detected and displayed&lt;br /&gt;
&lt;br /&gt;
•	Browse last played records (build 1071)&lt;br /&gt;
&lt;br /&gt;
•	Browse marked records on this player (build 1071)&lt;br /&gt;
&lt;br /&gt;
•	Browse marked records in a system wide available directory (build 1071)&lt;br /&gt;
&lt;br /&gt;
•	Mark records on player and for system wide access (build 1071)&lt;br /&gt;
&lt;br /&gt;
•	Copy records marked in a player to the system wide available directory (build 1071)&lt;br /&gt;
&lt;br /&gt;
•	Write a central log for all player listening’s (build 1071) &lt;br /&gt;
&lt;br /&gt;
•	Work over http connections (build 1074)  &lt;br /&gt;
&lt;br /&gt;
•	Limit view to a list of extensions (build 1077)&lt;br /&gt;
&lt;br /&gt;
•	Play PCAP files (build 1134)&lt;br /&gt;
&lt;br /&gt;
•	Double password for unlocking (build 1134)&lt;br /&gt;
&lt;br /&gt;
== Scenarios ==&lt;br /&gt;
&lt;br /&gt;
If the recorded files are in a wave format and can be played with a normal Mediaplayer, the delivered Player allows additional features.&lt;br /&gt;
&lt;br /&gt;
The recorded records are stored in an indicated path and a copy of the records can be done automatically.&lt;br /&gt;
&lt;br /&gt;
Errors and events are stored in a log file and alarms tracked; a mail can be send if an alarm occurs. &lt;br /&gt;
&lt;br /&gt;
It is possible to limit the duration of the storing period; older files will be deleted automatically. This is to avoid disk full errors, keep in mind that this kind of systems usually works unattended all the time.&lt;br /&gt;
&lt;br /&gt;
The number of player and recorder is unlimited.&lt;br /&gt;
&lt;br /&gt;
=== Recording on a central point ===&lt;br /&gt;
&lt;br /&gt;
Recording is possible on each logical Gateway and therefore on external lines (ISDN, SIP or H323 Trunks). In theory “external” is just a convention, even internal calls passing through those gateways could be recorded, but this is more a theoretical issue. An innovaphone gateway can also be used as a “recording” bar and introduced between a legacy PBX and the PSTN. Remember anyway that the innovaphone PBX must be activated and the Reporting tool is required. &lt;br /&gt;
&lt;br /&gt;
Being recording defined on a logical Gateway opens different options, for example activate recording just for a dedicated route. For example just for incoming calls or just for some outgoing calls. Typical examples for such a setup are business and private calls, where just business calls should be recorded. For example if a call is done using “0” as prefix recording is done, using “9” not. &lt;br /&gt;
&lt;br /&gt;
Or normally (“0”) no voice recording is done, but if a user access to a trunk with a particular prefix (“9”), recording is on. This for example is widely used in selling contracts by phone (like mobile phone carrier do); they call the customer and if the customer agrees in the commercial proposal to extend or to “sign” the contract they will call back the customer again using another prefix and record now the conversation. &lt;br /&gt;
&lt;br /&gt;
Recording rules can also be executed automatically because configured in the gateway setup. For example you can exclude certain user from recording or vice versa, doing recording just for some users.  For example all calls to the financial operators are recorded, all other calls not. Or all users are recorder but the management not.&lt;br /&gt;
&lt;br /&gt;
All that is a question of setup in then innovaphone gateway (and PBX) and not described in detail in this document, being standard features and described in many other articles (and being part of the advanced technical training).&lt;br /&gt;
&lt;br /&gt;
Please note that recording starts when a connection is established and terminates when the connection is terminated. That means that eventual waiting situations in waiting queues, music on hold sequences calls etc. are recorded too.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that each extension that should be recorded must be active in the reporting, means require a recording license. Even if you operate a soft migration you must go up in the PBX to a dummy user with reporting on and back again down to the relay.&lt;br /&gt;
&lt;br /&gt;
Notes:  Recording can be done just in G711A/G729/G722 on a logical gateway as endpoint. If you want record internal calls in this way calls must always transit a logical gateway (with the media relay flag on).&lt;br /&gt;
&lt;br /&gt;
=== Recording with the IP-Phone ===&lt;br /&gt;
&lt;br /&gt;
Recording can be done also directly from the innovaphone IP-Phone.&lt;br /&gt;
If switched on all calls from and to this phone are recorded, there are no recording rules. Calls could be stored in different files, because a new call means also a new file. If for example a phone put on hold a conversations and establish a second call this second call will be stored a an separate file.&lt;br /&gt;
&lt;br /&gt;
Doing voice recording using the IP-Phone or using a Gateway has advantages and disadvantages; it depends on your point of view and the scenario.&lt;br /&gt;
&lt;br /&gt;
Here some issues to remember: &lt;br /&gt;
&lt;br /&gt;
Recording on a gateway is like the old “ISDN Recording”: anything passing that interface is recorded. That has the advantage that any type of endpoint (IP, 3rt party, Dect, analog etc.) will be recorded. The disadvantage is that internal calls are not recorded. Also the CPU load of the PBX will rise while recording with an IP-Phone has nearly no influence. &lt;br /&gt;
&lt;br /&gt;
Recording directly from the Phone has the limitation that just innovaphone IP-Phone are able to doing that. Only innovaphone IP-Phones IP2x2, IP11x, IP241 and IP240A with bigger DRAM (http://wiki.innovaphone.com/index.php?title=Howto:Upgrade_IPxxxA_to_support_more_DRAM_Memory) can performing Voice Recording directly.&lt;br /&gt;
If you mix both setup in a scenario you should avoid that a Phone is doing recording and cross a gateway doing recording too. If that happen recording is done in two points and you double for nothing disk space and resources (and confuse everybody).&lt;br /&gt;
&lt;br /&gt;
In the V11r1 IP recording on the phone can just switched on or off in the setup, not from the user. In V11r2 recording can switched on and off by the user (similar to the 3party version). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The recording described here does not require a phone 3 party conference; therefore a 3party conference is possible on the phone while Voice Recording 2014 is running.&lt;br /&gt;
&lt;br /&gt;
== Recording Modes ==&lt;br /&gt;
=== Standard Recording ===&lt;br /&gt;
&lt;br /&gt;
Operating in the “Standard Recording” (STD) mode recorded calls are converted and saved after the call has finished. &lt;br /&gt;
&lt;br /&gt;
Note: A recorder canoperate just in one mode (for example &amp;quot;Standard&amp;quot;). Mixed scenario are possible but require two or more recorders, the setup in this case has to be done very carefully.&lt;br /&gt;
&lt;br /&gt;
=== Thread Call Recording ===&lt;br /&gt;
&lt;br /&gt;
Operating in the “Thread Call Recording” (TCR) mode only marked calls are converted and saved, all other calls are deleted automatically.&lt;br /&gt;
&lt;br /&gt;
A call can be marked manually from the user or automatically from his innovaphone IP-Phone. A call can be marked during the call or after call, but within a defined time period (for example until 5 minutes after the call-end). Not marked calls are deleted while marked calls will contain the entire call, so from the beginning on (even if marking is done during or after the call).&lt;br /&gt;
&lt;br /&gt;
Marking calls during the conversation can be done only using innovaphone IP-Phones while all type of phones can mark a call after the conversation. To mark a call after a conversation the user must call a XML object.&lt;br /&gt;
&lt;br /&gt;
In a typical setup the user will hear a confirmation if he is marking a call, something like “the last conversation was recorded and will be saved” or similar. &lt;br /&gt;
&lt;br /&gt;
If marking is done using an innovaphone IP-Phone during the call (pressing the redial key) audio or no audio can be played. For example an automatic advice like “this conversation will be recorded” or similar can be played.&lt;br /&gt;
==== Setup TCR ====&lt;br /&gt;
&lt;br /&gt;
This paragraph discusses the different setups and aspects for Thread Call Recording. If you are not interested in those details skip it.&lt;br /&gt;
&lt;br /&gt;
TCR require a XML (TCRec.xml included in the software package of the Last call recording feature, see Related Articles, see Related Articles, go to the article and follow the download [http://download.innovaphone.com/ice/wiki-src#lcr http://download.innovaphone.com/ice/wiki-src#lcr] ), you have to create a sub-directory TCR in your PCAP recording directory and copy the xml in, create a VM-Object in the PBX and insert those parameters in the recorder setup (TCR panel). Example: Your PCAp directory is http://172.16.88.98/DRIVE/CF0/REC, therefore the directory create is is http://172.16.88.98/DRIVE/CF0/REC/TCR. The XML can be called directly or using the recording functions on the innovaphone phones. If called directly the xml will play the audio file Track1.g711a, if called through the recording function of the IP-Phone the file Track2.g711a. If the files are not present the user will hear nothing. A solution for the confirmation could also be to play just a “beep” if calling directly the xml. You could copy the beep.g711a file (for example from the VM) and rename it. A better option is record them using the universal track recording tool, see related articles at the end iof this page.&lt;br /&gt;
&lt;br /&gt;
Some additional information if you use the recoding function of the innovaphone IP-Phone:&lt;br /&gt;
Keep in mind that this function will not really recording the voice but just calling the XML (the recoding is done by the Gateway or the phone, but directly and not using this function). As explained the XML will play the file Track2.g711a if present, but to hear the announcement you have to use on your phone at least version 10.0887 or higher and switch on the flag “Two Way Media” in the Recording section of the phone setup. The rest is the usual one, if you setup “Mode=transparent” each call will flagged as “to record”, if Mode=manual you have to press the redial key to flag. No problem if the user presses more than one time the record key, just the actual call will be recorded. &lt;br /&gt;
&lt;br /&gt;
The xml itself will terminate after playing the Tack 1 or 2, delayed for 2 seconds. If the user press the redial key in this way he will see in the display of his IP-Phone appear “Recording” for 2 seconds and has a feedback (even if no tone is played) that the conversation is flagged to record.&lt;br /&gt;
&lt;br /&gt;
Please note that the directory where the PCAP files are stored can be „the same“ than the one using „normal“ recording. The TCR XML is just a subdirectory of the PCAP recording directory!&lt;br /&gt;
&lt;br /&gt;
===Delete Records===&lt;br /&gt;
Build 1188&lt;br /&gt;
&lt;br /&gt;
A user can skip (not store) some conversations. This is done using a similar mechanism used with the TCR. If at the end of the conversation a file is found this record will be deleted. Therefore it works only if this file is created during the conversation. This can be done calling the XML TCRec.xml (with a feature key, the recording feature of a innvaphone IP Phone, putting the actual call on hold and call the xml or using an external application). The file has to be created in the recording directory/TMP.&lt;br /&gt;
&lt;br /&gt;
File format: TCA-XXX_XXX.txt where xxx= the agent number.&lt;br /&gt;
&lt;br /&gt;
Example: TCA-1234_1234.txt -&amp;gt; the record of the actual conversation of the agent 1234 will not be recorded.&lt;br /&gt;
&lt;br /&gt;
The field itself could be empty, but observe that with Linux at least one character should be in.&lt;br /&gt;
&lt;br /&gt;
Please note also that the time of the reporting, PBX and webdav must be the same. The Feature works also with the (old) CF.&lt;br /&gt;
If a record is skipped because of theis feature he log will show the message “User Mark Record to delete found TCF=” and the Agent number.&lt;br /&gt;
&lt;br /&gt;
=== Random recording ===&lt;br /&gt;
The recorder can work in this mode also as an alternative to the Standard- or Threat call recording. Random recording will record just a sample of calls on normal Agents (User), typically for quality check purposes.&lt;br /&gt;
 &lt;br /&gt;
The system allows record just each x call where x can be set in the setup. The system can even record just each y call for an agent. Only “to recording” calls are counted, not calls in general. &lt;br /&gt;
&lt;br /&gt;
Example: “Record in System just each 3. Call”’: the system will store one record and then skip the following 2 one. &lt;br /&gt;
&lt;br /&gt;
Example: “Record for a Gent just each 2. Call”: for each agent one call will be recorded and one not.&lt;br /&gt;
&lt;br /&gt;
Both setups can be set isolated, but combined (3rd in system and 2nd for a agent) the system will first skip 2 calls and then for the specific agent skip each 2nd one. &lt;br /&gt;
&lt;br /&gt;
Calls typically are not foreseeable especially if they are more agent involved and therefore it is for a single agent a “random” recording.&lt;br /&gt;
&lt;br /&gt;
This feature requires build 1071 or higher.&lt;br /&gt;
&lt;br /&gt;
=== PCAP Recording (1134) ===&lt;br /&gt;
If switched on the recorder keeps the native PCAP file format. While encryption is possible also in this recording mode no down mix to mono or single cannel recording (just the internal caller) id possible, of cause MP3 can also not be switched on in this recording mode.&lt;br /&gt;
&lt;br /&gt;
Please note that this mode is mandatory if the recorder works as a service. A second recorder working in foreground can convert PCAP to wave or MP3 and also process the additional audio down mix. See relative articles.&lt;br /&gt;
&lt;br /&gt;
=== Manual/Transparent/Optional recording ===&lt;br /&gt;
&lt;br /&gt;
V11r2 (in the Phone) is required. &lt;br /&gt;
&lt;br /&gt;
If the recording is done using a innovaphone IP Phone there are 3 recording modes possible:&lt;br /&gt;
&lt;br /&gt;
- Manual: the user switch recording on/off using a Feature key&lt;br /&gt;
&lt;br /&gt;
- Transparent: recording is always on&lt;br /&gt;
&lt;br /&gt;
- Optional: recording is on by default but the user can switch it off using a feature key&lt;br /&gt;
&lt;br /&gt;
The manual and optional mode is widely used because the operator can switch on and off recording during a conversation. For example if the customer want to buy the operator starts recording and give the advice that from now on the recording is on (by the way: that can be played also automatically modifying the [[Howto:Last_Call_Recording|last call recording]]). Switching off recording is usefully also if for example during a conversation a secret info (like a password) is stated and should not be recorded ad all.&lt;br /&gt;
&lt;br /&gt;
The Recording link (url) to the Webdav or CF is defined in the user setup:&lt;br /&gt;
&lt;br /&gt;
[[Image:RecSetup08.png]]&lt;br /&gt;
&lt;br /&gt;
The mode is selected in the &amp;quot;recording&amp;quot; section: &lt;br /&gt;
&lt;br /&gt;
[[Image:RecSetup09.png]]&lt;br /&gt;
&lt;br /&gt;
Note: The recording described here does NOT require a phone 3 party conference; therefore a 3party conference is possible on the phone while recording is running.&lt;br /&gt;
&lt;br /&gt;
===Manual recording with announcement=== &lt;br /&gt;
(build 1198)&lt;br /&gt;
&lt;br /&gt;
If a customer want to start and stop a recording this can be done using a innovaphone IP-Phone as described in the previous chapter.&lt;br /&gt;
&lt;br /&gt;
This chapter described how to solve if on top there is also the requirement to play automatically an announcement at the beginning of the recording (typically something like “We advise you that this conversation will be recorded…”).&lt;br /&gt;
&lt;br /&gt;
The problem is that audio can be reproduced only if you set “Dialup Recorder” in the phone, but doing this there is no PCAP and therefore CDR information. If you select “HTTP” then there is PCAP information/CDR information but no audio.&lt;br /&gt;
&lt;br /&gt;
The workaround is that you select “Dialup Recorder” but as destination do not put in a XML or WQ but a trunk and then the XML or WQ. The result will be a call to the (recording) trunk and then to the XML/WQ.&lt;br /&gt;
&lt;br /&gt;
Set up the Recording to Dialup Recorder in your phone&lt;br /&gt;
&lt;br /&gt;
[[Image:DialUpRecorder.png]]&lt;br /&gt;
&lt;br /&gt;
Example: You have a XML or WQ playing first the required announcement and then silence, this object has the number “76”. &lt;br /&gt;
&lt;br /&gt;
[[Image:RecordingSilence.png]]&lt;br /&gt;
&lt;br /&gt;
Example for the second announcement: http://172.16.115.20/webdav/announcement/silence.$coder?coder=g711a,g711u,g729&amp;amp;repeat=true&lt;br /&gt;
You can download the silence announcement in our voicemail folder. &lt;br /&gt;
&lt;br /&gt;
Set up a trunk object &lt;br /&gt;
&lt;br /&gt;
[[Image:Mrec01.png]]&lt;br /&gt;
&lt;br /&gt;
In our example with the number &amp;quot;57&amp;quot; with the option “automatic hangup” selected pointing to a GW, &lt;br /&gt;
&lt;br /&gt;
[[Image:Mrec02.png]]&lt;br /&gt;
&lt;br /&gt;
in this GW the PCAP recording is done.&lt;br /&gt;
&lt;br /&gt;
[[Image:Mrec03.png]]&lt;br /&gt;
&lt;br /&gt;
be sure to choose Media Relay On:&lt;br /&gt;
&lt;br /&gt;
[[Image:MR1.png]]&lt;br /&gt;
&lt;br /&gt;
and create a Route:&lt;br /&gt;
&lt;br /&gt;
[[Image:Route.png]]&lt;br /&gt;
&lt;br /&gt;
Set in the setup of the Recorder, tab  “General” both numbers&lt;br /&gt;
&lt;br /&gt;
[[Image:Mrec04.png]]&lt;br /&gt;
&lt;br /&gt;
and switch on “Convert to mono”.&lt;br /&gt;
&lt;br /&gt;
Limitations: it is convenient (but not a must) to convert the call to mono and save some disk space because in this operational mode the announcement is on the left channel and both party on the right one. &lt;br /&gt;
&lt;br /&gt;
Please note that also the call direction (in or out) is always flagged “out” even on incoming calls.&lt;br /&gt;
&lt;br /&gt;
== SRTP ==&lt;br /&gt;
&lt;br /&gt;
Recording of encrypt conversation is possible, no particular setup is necessary, the system will decrypt automatically the media stream and store the conversation in unecnryptet  wave files for further processing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Last Call Recording/Repeat ==&lt;br /&gt;
&lt;br /&gt;
See relative article. &lt;br /&gt;
&lt;br /&gt;
Do not confuse this feature with the Instant Play (rescue mode) feature of the innovaphone Player.&lt;br /&gt;
&lt;br /&gt;
== Working as a Fileserver for the Player ==&lt;br /&gt;
&lt;br /&gt;
In this operational mode the recorder will not record any file or communicate with the PBX or the reporting but just act a http Fileserver for the innovaphone Player. The application can run in this mode on the same PC than the one of the recording, in huge scenarios for better workload share it is better to separate the two applications. For more information see the article “Player over http”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Working as a PCAP converter ==&lt;br /&gt;
&lt;br /&gt;
The recorder can also keep the original pcap file format; this is mandatory if the recorder work as a service. The player is able to reproduce even files in PCAP file format. &lt;br /&gt;
&lt;br /&gt;
If a recorder works in PCAP recording mode no audio down mix to mono or single audio cannel is possible. Please note that encryption of PCAP can be done in the recorder.&lt;br /&gt;
&lt;br /&gt;
If the customer wants down mix features and/or wave or mp3 files a recorder can be started in converter foreground mode doing this. &lt;br /&gt;
&lt;br /&gt;
Similar to the Fileserver mode the recorder will not perform any recording task or communicate with PBX or reporting. Please note that the same application can work as a PCAP recorder and fileserver at the same time, the application has not to be started twice; in large scenarios for a better workload sharing anyway it is possible to start the two modes even on different PC´s.&lt;br /&gt;
&lt;br /&gt;
In this working mode the recorder scan periodically all sub directory of the storing directory and if a PCAP file is detected it will be converted to Wave or mp3 and the down mix options will be observed. &lt;br /&gt;
&lt;br /&gt;
If the original PCAP file is encrypted also the resulting wave or mp3 file will be encrypted. If the original PCAP file is not encrypted encryption is only done if the relative flag in the setup of the converter is switched on.&lt;br /&gt;
&lt;br /&gt;
The idea of the converter mode is that the application is always on; the recording service provide the PCAP files and performs all the other tasks like the communication with the PBX, the file copy from the CF/mSATA/Webdav, renaming, encryption, TCR etc. while the converter in a second step convert. Anyway it is also possible start the converter in a second moment; of cause if there are many files to convert it will require some time until all PCAP files are converted. Therefore a typical situation is that the converter runs always, but if this operation fails (or example after a restart of the PC where only the service will start automatically or a logout of the user) the missing work can be done in a second moment or form another PC.&lt;br /&gt;
&lt;br /&gt;
For the operation of the recorder as a service see relative article.&lt;br /&gt;
&lt;br /&gt;
== Command line arguments ==&lt;br /&gt;
The recorder application “innovaphone_Recorder.exe” can be started with command parameters. &lt;br /&gt;
&lt;br /&gt;
This option is only required if the application is started as a service (se relative article). &lt;br /&gt;
&lt;br /&gt;
The order of the parameter has neither influence nor eventual characters between.&lt;br /&gt;
&lt;br /&gt;
The Setup parameters itself are not case sensitive, but the value (the path itself) is case sensitive.&lt;br /&gt;
&lt;br /&gt;
 recpath=c:\abc  is equal to RECPATH=c:\abc  but not equal to &amp;lt;&amp;gt; RECPATH=c:\AbC&lt;br /&gt;
&lt;br /&gt;
Example for fine imputs: &lt;br /&gt;
&lt;br /&gt;
innovaphone_recorder.exe recpath=c:\myiqmdir\ setup&lt;br /&gt;
&lt;br /&gt;
innovaphone_recorder.exe /recpath=c:\myiqmdir\/setup&lt;br /&gt;
&lt;br /&gt;
innovaphone_recorder.exe recpath=c:\myiqmdir\ -setup&lt;br /&gt;
&lt;br /&gt;
The parameter  “Setup” forces the application to open just the setup. No timer or interfaces are started. An exit of the setup will terminate the program. &lt;br /&gt;
&lt;br /&gt;
The parameter “recpath” defines where the setup is stored.&lt;br /&gt;
&lt;br /&gt;
The parameter can be inserted in the cmd box (DOS like) or using a batch file. Please note that the cmd should be executed as administrator (windows 8: press the windows key, enter cmd and select pressing the right mouse key “execute as administrator”).&lt;br /&gt;
&lt;br /&gt;
A batch file can be created easy, open the editor and enter the command string, for example &lt;br /&gt;
&lt;br /&gt;
 innovaphone_recording.exe setup&lt;br /&gt;
&lt;br /&gt;
Now save the file as a batch file, for example RecordingSetup.bat in the directory where the Recorder is. If you click the file the application will start just showing the setup. &lt;br /&gt;
&lt;br /&gt;
Note also here that it could be necessary to start the batch file with the administrator rights. Of cause you can make a shortcut for example to the Desktop.&lt;br /&gt;
&lt;br /&gt;
If you start the recorder as a service it is also usefully being able to stop the service and start the recorder in foreground using the same setup, therefore just running in foreground, mainly for trouble shooting and maintenance reasons. &lt;br /&gt;
&lt;br /&gt;
Also in this case you can start the recorder in a command line indicating the setup path or create a bat file.&lt;br /&gt;
&lt;br /&gt;
If you have to start more recorder on one single PC (for example a recorder and a recorder as a fileserver) it will be also necessary indicate individual setup path using a command parameters.&lt;br /&gt;
&lt;br /&gt;
Also the batch files should be started with administrator rights. To start an batch file with admin rights a little trick must be applied. After writing your .bat file, create a shortcut and put it for example on your desktop. Now press the right mouse, select property and select “Advanced Properties”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The recording itself is done by the innovaphone gateway. In each logical gateway a recording path can be configured as a URL; that means that the voice will be recorded in a file, this file can be on a compact flash or on an external WebDAV server. The recorder application copy the recorded file, read out the reporting, combine both, and rename the file. The original file on the compact flash/WebDAV is deleted. The new filename is formed using date and time, caller and called user, direction of the call, the time to answer (ringing time) and the unique ID number.  The recorder converts the file from pcap to the wave format and stores the converted file in a directory. If requested a copy of this record can be saved in a second directory (for example a SAN or NAS disk area). A maximum number of storage time expressed in month can be defined, older files will be deleted automatically. In this way no disk space overflow will be in unattended systems. Parallel to the payload (the wave voice file) also a XML file containing the reporting data is created, the name of the file is the same than the one of the voice and just the extension is xml instead of wav. That is basically what the recorder is doing; copy and convert recorded files, retrieve data from the reporting, renaming of the files and copy them to different destinations as well as keeping track of history.&lt;br /&gt;
&lt;br /&gt;
The player allows searching and browsing of records, show the oldest or newest first, can filter the search etc. For example it can be displayed calls in any direction or just incoming or outgoing calls, or calls from a certain number or to a certain number, using even wildcards for quick filter options. See relative description for details. Once the calls a displayed they can be marked using windows usual methods (one, many, all, range, etc.). The marked files can be copy, past, deleted or played in a playlist. A record in the playlist can be marked and the player allows the usual operations of a windows media player. Looping and audio signal before playing the next record in the playlist is included as well as moving inside the playlist from one call to the other. If all that sounds complicated calm down, it is quite simple in using and designed for “users”.&lt;br /&gt;
&lt;br /&gt;
The player can even operate in a mode called “rescue mode” or “direct play mode”. If switched in this mode the latest record is always on top. This is a typical requirement for an emergency center operator, he is interested in replay the last or lasted recordings in a quick and simple mode.&lt;br /&gt;
&lt;br /&gt;
The player shows also the reporting details and generally the most important data of the conversation. If recorded files are copied also the relative reporting information is copied. &lt;br /&gt;
Many player can be installed and work in the same moment in a scenario, while the recorder typically is just one. So the recorder is a kind of server and the player a kind of client. More recorders can be installed in a scenario and if necessary a player can be installed on the same PC where a recorder is working. Being the recorder always on usually it will be installed on a dedicated machine doing just that located in the server room.&lt;br /&gt;
&lt;br /&gt;
But remember that the recording job is done as described by the gateway. So even if a recorder application is switched off voice recording is done. The idea anyway is not that the recorder is switched off and just sometimes switched on to retrieve the files. But if you must shut down the application or reboot or enter in setup, no data will lose.&lt;br /&gt;
&lt;br /&gt;
The following diagram shows the logical interfaces between the innovaphone voice recorder, the innovaphone player and the rest of the equipment.&lt;br /&gt;
&lt;br /&gt;
[[Image:Player07.png]]&lt;br /&gt;
&lt;br /&gt;
(*) = Option&lt;br /&gt;
&lt;br /&gt;
The player main data source is the disk where the records are stores. There could be active many player at the same time, and in theory also more than one recorder. One player could monitor just one recorder, but it is possible to start more player on the same PC.&lt;br /&gt;
&lt;br /&gt;
== Installation Step by Step==&lt;br /&gt;
&lt;br /&gt;
In this and many other wiki articles everything you need to install and operate the product is (hopefully) described. Partners some time have the problem that they could not find a logical flow in the description and the do not realize what is important and what interesting, but not essential. &lt;br /&gt;
&lt;br /&gt;
To help here a simple step by step instruction, all details and comments are in the other paragraph and, of course, in other articles. &lt;br /&gt;
&lt;br /&gt;
1.	Check the Software version of your PBX, it must be 10 or higher otherwise do an upgrade or forget this recording. Your PBX must be up and running and to test you need at least 2 Phones.&lt;br /&gt;
&lt;br /&gt;
2.	Check that you have a valid license for the recording, if not just a demo-mode is possible, after 20 minutes the recorder stop and you have to restart him again.&lt;br /&gt;
&lt;br /&gt;
3.	Your CF should be working fine, create a directory to buffer the pcap files (for example http://123.123.123.123/DRIVE/CF0/IF_REC). &lt;br /&gt;
&lt;br /&gt;
4.	Setup the recording gateway, see http://wiki.innovaphone.com/index.php?title=Reference10:Voice_Recorder/System_Setup#Gateway_Setup . If you want to do a test with internal phones you have to assure that in call from one user to the other this gateway will be involved. Create for example a access code to this GW and flag Media-Relay. If you call this access code followed by the internal number ths should happen. Of course if you have a real trunk the you will do all that using the relative GW. At the end of the story your call must passing the recording gateway, check it; open you PBX interface, click on gateway and calls: you should see that the call goes through the recording GW. A pcap file will created at the CF directory indicated in the setup of the gateway (the same one you create in pass 3).&lt;br /&gt;
&lt;br /&gt;
5.	Start up the reporting (on a xx10 GW or IPVA), it must be up and working, you should be able to see the reports of the call done using the recording gateway.&lt;br /&gt;
&lt;br /&gt;
6.      Create SOAP user, a blank empty user object called SOAP (or _TAPI_ or _whatever_)&lt;br /&gt;
&lt;br /&gt;
7.	Create a root directory where the recorded files should be stores (for example “c:\mytest\” or “G:\myExternalDrive\”).&lt;br /&gt;
&lt;br /&gt;
8.	Start the application and open the setup.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
While the Recorder works “hidden” for the user, the Player has a huge user interface. The Player is typically installed on one or more PC of users. Therefore for the Player more effort to design a foolproof interface was done. The Player description is available, please check the relative section in the innovaphone Wiki.&lt;br /&gt;
Recorder and player applications are single executable file. The setup is stored in a xml file located in the same directory where the application is running; no registry entry is done; if you delete the directory where the recorder/player is in, the application is de-installed. If you like install on the same computer the recorder and the player application you have to create two different directories and copy the applications twice. Automatic execution is possible inserting in the auto start directory the recorder application.&lt;br /&gt;
&lt;br /&gt;
Please note that the setup file is in xml format, but his content is encrypted.&lt;br /&gt;
&lt;br /&gt;
The installation tool will copy all required files, if you install manually copping file note the following issues:&lt;br /&gt;
&lt;br /&gt;
If you install a recorder application manually you must copy the “pcap2wav.exe” utility in the same directory!&lt;br /&gt;
&lt;br /&gt;
Note: This utility “pcap2wav.exe” can be downloaded in the V7 application folder, access to a directory and download the “tools” Zip file; inside you will find the pcap2wav.exe. &lt;br /&gt;
The recorder is not a service because there is a full user interface available. To ensure that the recorder starts up even after a boot put the application in your autostart folder. In the setup an option to start up minimized is available.&lt;br /&gt;
&lt;br /&gt;
Before starting the recorder application check the following items on the recorder PC:&lt;br /&gt;
&lt;br /&gt;
*the directory where the recordings should be stored must be visible and it must be possible to create subdirectories, try using the file explorer&lt;br /&gt;
&lt;br /&gt;
*If backup is requested also a write access to the backup path must be possible (but it is not necessary to be able create subfolders).&lt;br /&gt;
&lt;br /&gt;
*Access to the reporting tool must be possible, use a browser to check&lt;br /&gt;
&lt;br /&gt;
*The access to the CF (or the WebDAV server) must be possible, try to map a drive and access to the directory where the pcap files are&lt;br /&gt;
&lt;br /&gt;
Do the setup the innovaphone PBX, the gateway and the reporting.&lt;br /&gt;
&lt;br /&gt;
See eventually also http://wiki.innovaphone.com/index.php?title=Reference10:Voice_Recorder/Setup#Recorder_Setup for a better understanding of the requirements.&lt;br /&gt;
&lt;br /&gt;
If you do now a call which has to be recorded this call must be logged in the reporting tool and a pcap file must be created in the indicated url path. Go only ahead if that is up and running.&lt;br /&gt;
&lt;br /&gt;
Now start the recording software and open the setup and set the values. An online help will explain the single parameters. Maybe it is also a good idea reading first the rest of this article.&lt;br /&gt;
&lt;br /&gt;
The installation of the Player is similar just simpler. After installing start the application, enter the setup and that its. But it has no sense install or setup a Player without before having a working recorder.&lt;br /&gt;
 &lt;br /&gt;
On a single PC multiple Recorder and Player can be installed, simple install and run them on different directories.&lt;br /&gt;
&lt;br /&gt;
For installation as a service see relative article.&lt;br /&gt;
&lt;br /&gt;
=== CPU load ===&lt;br /&gt;
&lt;br /&gt;
The power of the innovaphone CPU on the different gateway models is high enough to ensure the recording of all ISDN cannels (or the same number of SIP/H323 Trunk) on that gateway. If recording is done on a CF the innovaphone PBX CPU will be involved also in the copy operation (if recording is done on an external WebDAV server no CPU load of the PBX for copy is required). After the copy operation no more CPU power of the PBX CPU is required. &lt;br /&gt;
&lt;br /&gt;
The reporting CPU (which is anyway the second core in case of a gateway or a separate CPU in case of VMware) has some small workload because the recorder checks each 5 seconds the reporting. &lt;br /&gt;
Using the player will cause no workload for PBX, reporting or recorder CPU, so just the local workstation CPU power is require. Therefore the number of player is practically insignificant for any CPU load. &lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
&lt;br /&gt;
Recorder and the Player applications write an individual error log, this log is a text file and stored in the same directory where the application is. See online help for file names and description of the other files used by this applications. &lt;br /&gt;
&lt;br /&gt;
The recorder can also write a trace file; if tracing option is switched on all operations of the recorder are logged in a file named “iREC_sys_log.txt”. Please note that this files become very large if the option is always on, and this file will not be deleted or resized automatically. The idea is not to keep on tracing all the time but to switch on the trace during the first period or in case of trouble checking.  &lt;br /&gt;
If enabled in the setup the player stores all special operations in a central log file. All copy, delete and move operations done using the player are in this way stored automatically in a central log file.&lt;br /&gt;
&lt;br /&gt;
A “user operational” log file is in a central point and unique for all players installed. Here all user manipulations done using the player applications are reported, so copy or delete is traced. This file is named “iREC_Player_log.txt” and located in the “\TMP” subdirectory of the root recording directory. In this way all operations of all Player-User are visible at a glance in one single file.&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
The setup of the recorder and player is stored in an AES encrypted setup xml file. Therefore the user cannot manipulate or read out setup values. The access to the setup can be protected with a password. If a user deletes the setup file the software assumes that this is a new installation and allows access to the setup without password. If the user enters the correct path for the recording the software read out a centralized password and it is not possible to save the setup without that password. There is no way to read out or decode the password and this means that if you, as administrator, forget the password you have to clear the centralized password and the setup of the recorder and re-configure all. Try to avoid that situation and remember your password.&lt;br /&gt;
&lt;br /&gt;
The centralized password is in the located in the “\TMP” subdirectory of the root recording directory and named “SPlayer.xml”. It is also encrypted of cause.&lt;br /&gt;
&lt;br /&gt;
The Reporting xml data string is even encrypt. &lt;br /&gt;
&lt;br /&gt;
In the first column header of the player a looked/unlooked symbol is displayed showing the encrypt/clear file mode. If (using the player) a encrypt records is copied it will be automatically decrypt, while moving a file (cut and paste) will not change the original file mode. In this way a clear copy of a xml can be done from an authentic encrypted data string.&lt;br /&gt;
&lt;br /&gt;
=== Date ===&lt;br /&gt;
&lt;br /&gt;
As most application also the recorder requires a correct date and time. But also the PBX Date and time must be correct and the same as the one on the recording PC.&lt;br /&gt;
&lt;br /&gt;
Basically obviously, writing a file all file data should be correct, and also the CDR ticket data should. &lt;br /&gt;
&lt;br /&gt;
So verify that both, PBX and PC have always a correct and synchronized date and time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Voice Recorder operation ==&lt;br /&gt;
&lt;br /&gt;
As a normal application the recorder can operate in 3 layouts; minimized in the taskbar, viewing a small window or an extended panel. &lt;br /&gt;
&lt;br /&gt;
[[Image:RecE112B2.png]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switching between small and large view is done pressing the “&amp;gt;” key, press “_” for minimize.&lt;br /&gt;
&lt;br /&gt;
For operation as a service see relative article.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start up ===&lt;br /&gt;
&lt;br /&gt;
During start up the basic operational parameter are checked while the master alarm is disabled. The master alarm supervision is just switched on after about 20 seconds. This is necessary because sometimes network operation during start up fails, but becomes up in a second attempt. The sequence of testing is done by design and the software will not proceed in operation if a parameter fails but continuously try to fix it. &lt;br /&gt;
&lt;br /&gt;
This initial health check during start-up is done in the following order:&lt;br /&gt;
&lt;br /&gt;
*checking setup: try to understand if the setup parameters are reasonable.&lt;br /&gt;
&lt;br /&gt;
*checking reporting: pings the reporting, if ping is o.k. try to load a dummy page. If ping or dummy fails the “REPORTING” lamp is red, error message “Reporting Link failure” is viewed.&lt;br /&gt;
&lt;br /&gt;
*checking to access to the recording directory (url): try to read out the indicated path, if fails “PCAP” lamp is red, error message “PCAP directory access fails” is viewed.&lt;br /&gt;
&lt;br /&gt;
*checking if access to the storage path is possible: If reading fails the “DISK” lamp is red, error message “Store path fails” is viewed.&lt;br /&gt;
&lt;br /&gt;
If in the setup no backup path is indicated this last task is skipped and the Backup lamp is grey. Otherwise the access to the path is tested, if access fails the “BACKUP” lamp is red, error message “Backup path fails” is viewed.&lt;br /&gt;
&lt;br /&gt;
If a test is passed the relative lamp becomes green. If after start up 6 lamps are green (or 5 green and one grey) everything is working fine and the message “Normal Operation” is displayed in the System status line. &lt;br /&gt;
&lt;br /&gt;
After 20 second the Master alert supervision is switched to active, an eventual error causes a Master Alarm (see relative section).&lt;br /&gt;
&lt;br /&gt;
=== Normal operation ===&lt;br /&gt;
&lt;br /&gt;
The check counter shows you how many times the recorder reads out the recording directory and checks the reporting. As you see al 5 seconds a reading attempt is done, if data are found further processing operation will start. This counter goes automatically to 0 reaching 9999 and shows you that the software is working and checking but has no further signification.&lt;br /&gt;
&lt;br /&gt;
The counter “Channels in recording” shows you how many recordings are ongoing. The panel shows you the ID of each recording file and the initial recording time. In this way you can see how long a call is jet in recording. &lt;br /&gt;
&lt;br /&gt;
If the call ends it will disappear from the list. If there are more records then default lines a scroll down will automatically appear. &lt;br /&gt;
&lt;br /&gt;
If you click the innovaphone logo the software version is displayed. The version is also displayed in the headline of the setup.&lt;br /&gt;
&lt;br /&gt;
===Extended view ===&lt;br /&gt;
&lt;br /&gt;
If you enlarge the window with the “&amp;gt;” key two additional panels appears. &lt;br /&gt;
 &lt;br /&gt;
The left one shows the regular normal operations, the right one the errors and basic messages (like Start-up). The messages displayed of the error panel are stored automatically in an error log file while the messages of the status panel only file if that is enabled in setup. Both windows can be cleared pressing the relative button. This clearage is just an “optical” issue; no file is deleted or similar. Both windows shows up to 100 entries, if entry becomes too large a scrollbar appear automatically. If “full” the oldest message will be cleared. On top the error panel can also display the last 30 Error reading out the error file. &lt;br /&gt;
&lt;br /&gt;
Pressing the “&amp;lt;” key the windows will be resized again. &lt;br /&gt;
&lt;br /&gt;
There is no operational difference between the different layouts. The recording application starts always with the small window stile. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following picture shows two alarms, Reporting (because there where files without CDR records) and Software (because there was a license overflow).&lt;br /&gt;
&lt;br /&gt;
[[Image:RecXX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
Open a separate window, see relative online help.&lt;br /&gt;
&lt;br /&gt;
http://wiki.innovaphone.com/index.php?title=Reference10:Voice_Recorder/Setup#Recorder_Setup&lt;br /&gt;
&lt;br /&gt;
Note: during setup the recording timers are disabled, this means that no normal operation is done. For normal operation the setup must be terminated (with or without saving).&lt;br /&gt;
&lt;br /&gt;
=== Alarms ===&lt;br /&gt;
&lt;br /&gt;
[[Image:VR011.png]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
About 20 seconds after startup, and always during normal operation, alarms are detected from a particular master alarm routine. Some alarms are self-healing, others not. If an alarm occurs the relative source is switched from green to red, if an alarm disappears from red to green. You can simply test is, just shut down the reporting during operation and you will see that the reporting indicator becomes red. If you start up the reporting again the indication will switch automatically from red to green. &lt;br /&gt;
&lt;br /&gt;
An alarm master routine will control the system and summarize the alarms. On the left side there is an indicator “Master alarm” and two buttons, “RESET” and “OFF”.  While the alarms can toggle and appear and disappear, the master alarm once triggered will indicate that there was at least one serious error. The detail can be shown in the error log, but the point is that the master alarm shows you the correct operation in time and store the error event. &lt;br /&gt;
&lt;br /&gt;
With the “OFF” button the master alert can be switched manually off. If the master alarm is switched off the “OFF” button will blink red to indicate this exceptional situation. A manual switch off of the master alarm could be necessary during setup or test, or simply to avoid receive alarm emails being anyway in front of the application or similar. &lt;br /&gt;
&lt;br /&gt;
If the master alarm detect at least one error it will be switch on the Master Alarm status, the relative indicator will blink red, a warning triangle will appear and, if configured in the setup, and a warning email is send to the administrator. &lt;br /&gt;
&lt;br /&gt;
[[Image:VR012.png]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The icon of the application in the taskbar is changed and a warning triangle appears on the recorder logo; also operating in minimized status the Master Alert situation is visible. &lt;br /&gt;
&lt;br /&gt;
[[Image:VR013.png]] &lt;br /&gt;
&lt;br /&gt;
As explained the master alarm will not recover if an error disappears: to reset the master alarm the “RESET” button has to be clicked. Clicking the Reset Key the Master Alarm becomes again armed and will trigger again if an error is detected.&lt;br /&gt;
&lt;br /&gt;
The single errors are partly described in the startup section while the “SOFTWARE” indicator will go into alarm if there is an unexpected error in the software. While some errors are expected and supported and will not cause such an error (for example “no files” if you browse an empty directory) others are not (for example if the decoding of pcap file fails). So while some errors could be an exception (like the failing of file conversation) others could be persisting (like “disk full”) or are simply bugs.&lt;br /&gt;
&lt;br /&gt;
A particular expected, but not tolerable error is described in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Reporting time out error ===&lt;br /&gt;
&lt;br /&gt;
Basically calls that should not be recorded should not be recorded even on the CF, this is desirable, but not always feasible. &lt;br /&gt;
&lt;br /&gt;
In normal operations the recorder is connected to the PBX with a SOAP link and can so detect when a call is finished and the party involved. If there is a PCAP file and a SOAP connection fine, because in the very first step anything is clear and the recorder can decide to save or to just delete the PCAP file. But there is also the possibility that the recorder starts up later and “found” PCAP files stored in the meantime. In this case there could be or even not any SOAP information, if the call terminated before the recorder starts there will no SOAP info. Therefore if PCAP files are detected without any SOAP indication the recorder ask the reporting if there is any record to that PCAP. If yes the processing will follow the normal way, stored or just deleted. But if the reporting has no data there are more possible reasons. CDR data or the reporting could be “late”, so maybe in a few seconds data are in and processed. Or the reporting was just temperately busy or offline, a good idea is wait and try later again. Exactly that the recorder is doing, from build 1070 on the number of trial can be set in a range from 5 to 9999, default value is 5. On earlier build this value was set fix to 1444. Arrived to zero the call is deleted. Deleting recorded calls not knowing about the party involved is critical and therefore the recorder is so carefully. &lt;br /&gt;
&lt;br /&gt;
The real problem is if in a system there are extensions creating PCAP files, but they did not produce CDR tickets / have no CDR license. In this case after a start-up each stored call will produce a PCAP file, the reporting query will fail and the recorder will try later again. To avoid large quantity of PCAP files and slow call processing switch on the reporting feature on each extension creating PCAP files. Or avoid that extension without a reporting creates PCAP files. &lt;br /&gt;
&lt;br /&gt;
Receiving an answer form the reporting the recorder understand immediately the involved parties and can delete the file if the caller was not an Agent or store it.&lt;br /&gt;
&lt;br /&gt;
=== Terminating ===&lt;br /&gt;
&lt;br /&gt;
If you try to stop the application a warning message appears, if you confirm the recorder application stops.&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
&lt;br /&gt;
Voice files are stored a subdirectory of the indicated path in the recorder setup.&lt;br /&gt;
&lt;br /&gt;
The files are Wave stereo files where the left channel contains one speaker and the right channel the other one. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are two working sub directories: the directory “/TMP” contains the central activity log file where the player applications will report their activities (“iRec_Player_Log.txt”). The second is the directory “/REC”, it is a working folder. Both folders are created automatically.  The recorder creates a subdirectory for each month, so for June 2013 for example a directory “2013_06” is created and all recorded files in that period will be stored there. Note that in the backup folder no subdirectory folder are created and therefore all files in the backup path are in the same folder. &lt;br /&gt;
&lt;br /&gt;
The recording files are always a couple, one file contains the audio (in wave format, can be reproduced using also standard audio player) and an xml file with the same name containing connection data. Both files are anyway independent and our player handles automatically a single wave file as well as the pair with additional detailed connection data.&lt;br /&gt;
&lt;br /&gt;
One goal of the recorder was to produce a wave file that contains all relevant data. &lt;br /&gt;
&lt;br /&gt;
The format of the name of the Wave file is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Date and Time of conversation start&amp;quot; + &amp;quot;internal user&amp;quot; + &amp;quot;direction&amp;quot; + &amp;quot;external user&amp;quot; + &amp;quot;time to answer in seconds&amp;quot; + &amp;quot;serial number&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
“2013_06_24_1638_39_o_0800102_7_75c1f48e909d31188fc00903306225f.wav”&lt;br /&gt;
&lt;br /&gt;
Date: 24.06.2013&lt;br /&gt;
&lt;br /&gt;
Time: 16:38&lt;br /&gt;
&lt;br /&gt;
Internal: 39&lt;br /&gt;
&lt;br /&gt;
Direction: o = outgoing&lt;br /&gt;
&lt;br /&gt;
External: 0800107&lt;br /&gt;
&lt;br /&gt;
Time to answer: 7 seconds&lt;br /&gt;
&lt;br /&gt;
Serial: 75c1f48e909d31188fc00903306225f&lt;br /&gt;
&lt;br /&gt;
The file “2013_06_24_1638_39_o_0800102_7_75c1f48e909d31188fc00903306225f.xml” contains the reporting data of this call. &lt;br /&gt;
&lt;br /&gt;
Eventual notes are stored in a file named “2013_06_24_1638_39_o_0800102_7_75c1f48e909d31188fc00903306225f.txt”.&lt;br /&gt;
&lt;br /&gt;
This file is AES encrypt, see relative chapter. If this file is copied with the innovaphone Player it will be automatically decrypt and becomes a standard XML file.&lt;br /&gt;
&lt;br /&gt;
The player retrieves the name of the wave file and displays the data from the xml file if present, otherwise at least the data inside the filename.&lt;br /&gt;
&lt;br /&gt;
If you like you can open the xml file even with an editor and see all the relevant data, much more then displayed using the player.&lt;br /&gt;
&lt;br /&gt;
The player shows also the duration of the call (the recoding) and other details. See relative description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Encryption==&lt;br /&gt;
&lt;br /&gt;
The setup files for player and recorder are encrypted, as fix key is used an innovaphone specific secret key. The notes are not encrypted while the reporting and security file (the .xml) is encrypted.&lt;br /&gt;
&lt;br /&gt;
So the reporting and security files are encrypted (those ending with “.xml”) using again as default the innovaphone system key. This default encryption key can be replaced with a customer specific key. In the in the setup of the recorder can be defined a customer key. The only reason to define a customer key is to avoid that other customer can decrypt the files, a remote and strange, but thinkable situation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If this is done in the Recorder also in all Players must be set this customer decrypt key. Be careful in handling that key, because if you forget the key you will lose all encrypted information. The Player can handle contemporaneously the default key and the specific key. There is no update procedure foreseen if you change the key.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
After 3 month of default operation you decide to insert a customer specific encryption key, for example “MySuperSecret007Key”. &lt;br /&gt;
&lt;br /&gt;
You modify also the Player and insert in the setup this new key. Now you will observe that all data, the one of the first 3 month and the following one, will be decrypt automatically correct; the user will see no difference. &lt;br /&gt;
&lt;br /&gt;
After other 5 Month you decide to return to the default key (leaving blank the key field again in recorder and player).  Anything is going well, all records are decrypted correctly. &lt;br /&gt;
&lt;br /&gt;
After other 2 Month you decide to enter a key named “MyBrandNewKey”, doing setup of recorder and player. You will observe now that the data of the month period 0 to 3 ,  5 to 7 and after Month 7 will be decrypt while Month 3 to 5 (the one with the old key) will be displayed without CDR data and status “unknown”.  &lt;br /&gt;
&lt;br /&gt;
Therefore think well about your key, basically once selected it should remain. If you have the list of all Keys you can of cause change it on the fly in a player and decode the records in the period. &lt;br /&gt;
&lt;br /&gt;
=== Audio encryption ===&lt;br /&gt;
The security system is based on AES encrypted xml data file. That file contains the CDR data but even the security parameter of the audio file. Therefore if an audio file is manipulated (changed in any way) that will be detected and show in the player (the “manipul” red label is on while off and the green “original” on if the audio file is the original one).&lt;br /&gt;
&lt;br /&gt;
That means that the audio file itself is not encrypted, some customers want reproducing the file even with other media player.  &lt;br /&gt;
&lt;br /&gt;
But there are also customer that have another view and are worried about for example that such an audio file once copied is no more controllable. Or they simply do not thrust that the security features described works fine. &lt;br /&gt;
&lt;br /&gt;
Therefore also the audio file itself can be AES encrypted if that option is switched on in the recorder. The player will detect automatically that an audio file is encrypted and reproduced it anyway.&lt;br /&gt;
Here how a player shows a detected Audio encryption:&lt;br /&gt;
&lt;br /&gt;
[[Image:SEC21.png]]&lt;br /&gt;
&lt;br /&gt;
Of cause an encrypted audio file can be reproduced just with the innovaphone player, no other media player will work. &lt;br /&gt;
&lt;br /&gt;
Please note that any innovaphone player can do the decryption, so if you want to assure that just “your” player can reproduce you have to define a customer decrypt key in the recorder (and player).&lt;br /&gt;
&lt;br /&gt;
The recorder shows switched on encryption in the main view (see picture above).&lt;br /&gt;
&lt;br /&gt;
Audio encryption has also disadvantages, recorder and player has more workload and require more disk space; in fact size of the audio files will double if encrypted!&lt;br /&gt;
&lt;br /&gt;
==Audio compression==&lt;br /&gt;
&lt;br /&gt;
=== Wave ===&lt;br /&gt;
As default the files are saved in the wave format. More precisely in G711 because wave is a container format and pure PCM would require near the double disk size than G711.&lt;br /&gt;
&lt;br /&gt;
=== PCAP (Build 1134) ===&lt;br /&gt;
&lt;br /&gt;
A recorder can save files also in the original PCAP format. As well as using wave or MP3 format encoding is supported also using PCAP files. A PCAP file require more or less the same disk space than wave recordings. Also the Player form Build 1134 on support PCAP file play.&lt;br /&gt;
&lt;br /&gt;
Note: If the recorder work as a service only PCAP Recording is possible. See relative article.&lt;br /&gt;
&lt;br /&gt;
Note: The Recorder can work also as PCAP to Wave or MP3 converter and/or http Player server. See relative articles.&lt;br /&gt;
&lt;br /&gt;
=== MP3 ===&lt;br /&gt;
&lt;br /&gt;
As an option a mp3 compression can be activated. The required disk size is about 75% less, so one minute in wave requires about 1Mb while the same data in mp3 will require 250kb.&lt;br /&gt;
&lt;br /&gt;
If you wonder why the savings are not much higher consider that even the wave format itself is jet compressed as explained.&lt;br /&gt;
&lt;br /&gt;
All other functions like encryption (an encrypted file size is again doubled, so one minute of mp3 audio encrypted requires about 500kb) or reproducing are the same, the user has nothing to do and the player works always in the same mode.&lt;br /&gt;
&lt;br /&gt;
There is just one situation where an action is required: if the recorder works for a certain period with wave and then with mp3 (or vice versa) in the directory of that month there will be mixed files (wave and mp3). The player detect this and shows automatically an additional key where the user must  switch between those two formats: if a directory has just one type of files no action is required and the button is hided.&lt;br /&gt;
&lt;br /&gt;
===MP3 Stereo to Mono conversion===&lt;br /&gt;
&lt;br /&gt;
If the MP3 option is on, files could also be converted form stereo to mono. The file size savings will be nearly 50%, so one minute conversation in mono MP3 requires about 130kB. &lt;br /&gt;
&lt;br /&gt;
Note that conversion from wav to mp3 causes quality lost and stereo to mono even. Once converted, there is no possibility to return to the original format in terms of quality or format. So a bad mono mp3 quality cannot be recovered and even the stereo separation of the cannels cannot be done once converted to mono.&lt;br /&gt;
&lt;br /&gt;
===MP3 just internal channel===&lt;br /&gt;
&lt;br /&gt;
An interesting option in using MP3 is to record just one channel, the left (default) or the right one. The result is a mono file (130kB/min) where just one party is recorded. &lt;br /&gt;
&lt;br /&gt;
If a GW point to an external trunk the internal user is always talking on the left channel. Therefore with this option on just the voice of the internal user is recorded, and doing that in many countries is simply allowed without any restrictions (basically I can record myself).&lt;br /&gt;
&lt;br /&gt;
If recording is done on the phone the channel assignment is vice-versa, the internal caller (the phone) is recorded always in the right channel. Therefore in the setup of the recorder can be selected which cannel should be recorded. That means also that no mixed scenarios (GW and Phone recording) are supported for that feature.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SetupR01.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redundancy ==&lt;br /&gt;
&lt;br /&gt;
The recorder is able to handle redundancy scenarios with active and standby devices.&lt;br /&gt;
The recorder has to handle 3 sources in different scenarios, the PBX itself, the reporting and the CF or webdav server. Those devices can be all together in one single device (for example in an active IP6010 with reporting and CF and a standby IP6010 with reporting and CF) or on different devices (for example an active and a standby IP800 and two reporting on two different PCs). &lt;br /&gt;
Another example is active and standby PBX on Gateways but reporting on a high availability VMware environment, so at the end just one reporting from the recorder point of view.&lt;br /&gt;
&lt;br /&gt;
Therefore the standby can be defined for each of those devices.&lt;br /&gt;
If you have no redundancy scenario just leave blank the relative setup values.&lt;br /&gt;
&lt;br /&gt;
=== Active/Standby PBX ===&lt;br /&gt;
&lt;br /&gt;
The failure of the PBX is detected because the SOAP connection will go down. If that happen the recorder will try to establish an alternative link to the standby PBX, if that fails he try again with the primary PBX and so one. That means also that a breakdown of the SOPA connection, for example if you reset the PBX, will require some more seconds until the system is up again (because first the recorder try the standby PBX, this will also fail and after that the main SOAP will be up again). &lt;br /&gt;
&lt;br /&gt;
Note that after a restart the recorder try always the first the main address and then the standby one.&lt;br /&gt;
&lt;br /&gt;
In the panel of the recorder near the PBX status indicator is shown the actual link: if the “ACT” lamp is green than the active PBX is tempted, if gray and the “STB” lamp on the standby link is on.&lt;br /&gt;
&lt;br /&gt;
Please note that the recorder can handle differences in active and standby mode just regarding the IP address. All other parameter must be the same, so for example the path to the reporting must be the same.&lt;br /&gt;
&lt;br /&gt;
=== Active/Standby Reporting ===&lt;br /&gt;
&lt;br /&gt;
If the link to the reporting fails and there is a standby address indicated the recorder try to reach the reporting using the standby IP address for the reporting. If there is just one reporting leave the standby address blank.&lt;br /&gt;
&lt;br /&gt;
As you (hopefully) know the reporting can also be installed on two devices, in that case both PBX (the active and the standby one) will transmit CDR ticket to both reporting applications. The reporting database is replicated and therefore if both devices are on the recorder will find the same informations on each reporting. So in theory if both are on it is not important where the reports are requested. In fact if the active reporting fails the recorder will try a connection to the standby reporting. Now if the active device and relative reporting is on again the recorder could also continue get records from the standby reporting. And he will do that until he is restarted or the standby reporting is down because the reporting will answer. If that is not desired flag the option in the recorder setup (“follow Standby/Active PBX”); doing so the recorder will communicate again with the reporting on the active PBX if the active PBX is up again. So basically the switch is done on link down but also following the SOAP. &lt;br /&gt;
&lt;br /&gt;
=== Active/Standby CF/mSATA ===&lt;br /&gt;
&lt;br /&gt;
If the PCAP files are buffered on a CF/mSATA and the PBX goes down also the recorder has to re-map his drive to the standby PBX. In the setup there is a flag in the PCAP section (“follow Standby/Active PBX”), if on the recorder will try to reach the CF of the standby PBX (he takes the IP address of the standby PBX) in the setup.&lt;br /&gt;
&lt;br /&gt;
In scenarios where an external Webdav server is used that flag should not be switched on. The redundancy in that case is demanded to the external devices (for example VMware).&lt;br /&gt;
&lt;br /&gt;
So if you have a “classic” innovaphone redundancy (for example two IP6010 with reporting and CF) indicate the standby address in the PBX and Reporting panel and switch on the “follow Standby/Active PBX” in the reporting and PCAP panel and anything is fine.&lt;br /&gt;
&lt;br /&gt;
== External Applications == &lt;br /&gt;
&lt;br /&gt;
The recorder as well the player can be interfaced with external applications like booking or ticketing systems or similar.&lt;br /&gt;
&lt;br /&gt;
The basic idea is that the external application will share common information in his database with the recorder and pilot a player. The user should be able to play a recorder conversation directly from his application interface.&lt;br /&gt;
&lt;br /&gt;
In this chapter the interface is described. If you are not interested is such a feature you can skip this paragraph.&lt;br /&gt;
&lt;br /&gt;
This description is done for the software developer of the external applications. No particular setup for the recorder or player is described, part of other descriptions.&lt;br /&gt;
&lt;br /&gt;
For better understanding the description “hides” all other interfaces.&lt;br /&gt;
&lt;br /&gt;
The “recorder” is a software solution running on a Windows “server” (can also be a simple PC). In the network there will be one or several “players” able to reproducing the recorded conversations.&lt;br /&gt;
&lt;br /&gt;
Under “agent” in this description we understand operators working with the voice recording and using an external application.&lt;br /&gt;
&lt;br /&gt;
It is possible to have a TCP connection between player and recorder but this is not mandatory because the player just access to stored data and read out setup file in the network. The number of player has no limit while the number of player connected to the recorder via TCP is limited to 100. That means that the external application can control up to 100 “agents” trough the recorder. But it is also possible to control a player directly; in this case the remote control has no limit. &lt;br /&gt;
&lt;br /&gt;
Contact us if you have more than 100 agents with voice recording using an external application, we can easily extend this limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Principle and definition ===&lt;br /&gt;
&lt;br /&gt;
This is the described scenario:&lt;br /&gt;
&lt;br /&gt;
Recorder communicates with Player 1, Player 2 … Player x&lt;br /&gt;
&lt;br /&gt;
The Application server communicates with the Application Client 1,  2, … xx&lt;br /&gt;
&lt;br /&gt;
This description regards the TCP/IP interface in the following picture, the only one to build new from the application point of view.&lt;br /&gt;
&lt;br /&gt;
[[Image:Layout02.png]] &lt;br /&gt;
&lt;br /&gt;
Going on in the description as “Appclient” is intended the User frontend (“Application on terminal x” in the picture). &lt;br /&gt;
&lt;br /&gt;
“AppServer” is called the server of the application (Application Server in the picture), so the server for the ticketing or booking system or whatever.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that just one AppServer can communicate with the Recorder while even each Player can be called even directly from the Appserver or an AppClient. Do not confuse: There are two ways to interface the voice recording system, via TCP and via URL. The smarter and better way is the TCP one. We describe both, read both because in the second section some concepts described in the first one are not repeated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TCP/IP Interfacing === &lt;br /&gt;
&lt;br /&gt;
This is the preferred and smart way to realize the interface.&lt;br /&gt;
All messages and command goes to one single interface as shown in the picture. The Appserver act as a TCP/IP “Master” and will receive from the recorder messages and can send commands to the single Players trough the recorder. So it is a 3rt Party interface, piloting single player using one single IP address. The “play” command for a certain player is send to the recorder (and not to the relative player).&lt;br /&gt;
&lt;br /&gt;
If for example a AppClient wants that the Player starts reproducing a record the command flow will be:&lt;br /&gt;
&lt;br /&gt;
AppClientX press the play key -&amp;gt;  AppServer send command to the -&amp;gt; Recorder -&amp;gt; Recorder send a command to -&amp;gt; PlayerX&lt;br /&gt;
&lt;br /&gt;
So the idea is that in the applications is a “Play” and a “Stop” button; if the agent press this button the recording relative to the displayed database record will start to play, pressing stop the play will stop. &lt;br /&gt;
Therefore the applications database must contain the record name.&lt;br /&gt;
&lt;br /&gt;
The problem is that the entire information about the record is available just a certain time period after the call end. In most of the cases the application session is terminated or a new one started. Therefore the link is provided in two times.&lt;br /&gt;
&lt;br /&gt;
When voice recording starts, the recorder will send a first record to the AppServer in the following format:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;!FRST!&amp;lt;Extension Number of the Agent&amp;gt;!&amp;lt;UID&amp;gt;!&amp;lt;Agentname&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FRST&amp;gt; = indicate that this is the first (of two records)&lt;br /&gt;
&lt;br /&gt;
Extension Number = the Phone number of the Agent&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UID&amp;gt; = a unique ID of the record&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Agentname&amp;gt; =  the CN (common name) of the Agent in the PBX&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;!FRST!24!c03a55c2e909d311b6450090331b3e3b!Rossi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;“24”&#039;&#039; is the extension number of the agent, &#039;&#039;“c03a55c2e909d311b6450090331b3e3b”&#039;&#039; is the unique “serial number” of the record and &#039;&#039;“Rossi”&#039;&#039; the name of the agent.&lt;br /&gt;
&lt;br /&gt;
Just the filed &#039;&#039;“!FRST!”&#039;&#039; has a fix length, all the others not; the single field therefore has to be separated searching the “!”.&lt;br /&gt;
&lt;br /&gt;
At this point the applications probably store this information (number, ID and Name) in his database or buffer this info until the Agent has his client ready or similar. Important is that the database record of the application is linked to the record UID. &lt;br /&gt;
&lt;br /&gt;
Basically it is necessary for later data processing that the application server knows the name of the player (in our example “Rossi”). The simplest way to do that is giving the extension in the PBX the right common name (the same name than the application user name). If that is not possible (for example because the application has other items to identify a user) the application has to hold a cross reference table: application user name 1 = recording user name 1 etc. Consider also that not necessarily a record is played only on the player of a certain agent; recording for agent 1 can be required to be played on work station agent 2. &lt;br /&gt;
&lt;br /&gt;
When a call has terminated, the record converted, saved etc. (means, ready to be played) a second record is transmitted from the recording server to the AppServer:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;!LAST!&amp;lt;Extension Number of the Agent&amp;gt;!&amp;lt;UID&amp;gt;!&amp;lt;Track&amp;gt;!&amp;lt;Agentname&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Track&amp;gt; = Name of the recorded file, to transmit later to the recorder to play.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;!LAST!24!93adee5ee909d311b6450090331b3e3b!2013_09_24_1107_39.o.024_1_93adee5ee909d311b6450090331b3e3b.wav!Rossi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You see that the UID is in again and on the same position; even the extension number and name is repeated. In this way the application can easily search the UID in his database (and the name and/or the number) and when found complete the record entry with the record name (in the example &#039;&#039;2013_09_24_1107_39.o.024_1_93adee5ee909d311b6450090331b3e3b.wav&#039;&#039;). &lt;br /&gt;
You see the UID is also part of the record name and in theory the original “stand alone” UID in the application database is no longer required. Therefore a overwriting of the UID field in the application database with the record name is possible. &lt;br /&gt;
&lt;br /&gt;
Note: In the actual version a reverse search is not implemented (that the player told the application to display a record). If implemented in the future the search string will be the entire record name and not just the UID, therefore the stand alone UID has no further sense from the voice recording point of view. &lt;br /&gt;
&lt;br /&gt;
From the timing point of view the first message is critical because the UID has to be written until the Agent has opened his application record and that can be even a short time. &lt;br /&gt;
&lt;br /&gt;
The last string is not very time critical because the retrieving of a record and a update can be done in every moment.&lt;br /&gt;
&lt;br /&gt;
The recorder software has a small send buffer (about 25 recordings) where the messages will be buffered if the AppServer is not reachable or the link is down or. If for example the AppServer is switched off and later on again, the recorder will send to the AppServer the FRST and LAST messages buffered during downtime. The Buffer is a Fifo (first in first out) but not an Overflow-Fifo; if full not the oldest but simply all newer messages are lost. The buffering is done just to buffer short time periods, for example to allow a restart of the AppServer PC without losing information (but not for a “offline” operation). &lt;br /&gt;
&lt;br /&gt;
In the application software design should also be considered the possibility that the AppServer receives a First record, is then stopped, and receives the second one after the restart. &lt;br /&gt;
&lt;br /&gt;
That’s all regarding the recording part, now we discuss the remote control of the player. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember that a name can be assigned to a player, for external applications that is mandatory. The name can be defined in the player setup; a good idea to simplify the scenario is to give the player the common name of the phone. So in our example we will name the player of the agent “Rossi” just “Rossi”. Not a must of cause, you can call the player of Rossi even “myFirstAgent” or “1234”; but in doing so the external application must store a table where “Rossi” is mapped to “myFirstAgent”. To avoid such complication we suggest unifying the names and assigning to the phone user, Player name and application user in the same one.&lt;br /&gt;
&lt;br /&gt;
To force a certain player to reproduce a certain recording the AppSever has to transmit to the recorder the following command string:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TRAC!&amp;lt;PN&amp;gt;!&amp;lt;Track&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PN&amp;gt;=player name&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TRAC!Rossi!2013_09_24_1107_39.o.024_1_93adee5ee909d311b6450090331b3e3b.wav&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Player with the name “Rossi” will start playing the record &#039;&#039;2013_09_24_1107_39.o.024_1_93adee5ee909d311b6450090331b3e3b.wav&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
There are not foreseen any error messages, if for example the player will not find the record or is switched off nothing will be transmitted to the AppServer. In case of record not found on the Player a blank result will indicate the fail. If the recorder start reproducing a record a green “RC” label (for Remote Control) near the play symbol shows that a remote control message and not a manual play key press has started the reproduction.&lt;br /&gt;
&lt;br /&gt;
There are available also other commands:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;STOP&#039;&#039; (Stops the actual play)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;EJEC&#039;&#039; (the actual record is unloaded, the player stops)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;PAUS&#039;&#039; (the actual record is paused)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;PLAY&#039;&#039; (the actual record is played again)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;EJEC!Rossi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Will force the player Rossi to stop the reproduction of the track and go in an idle mode.&lt;br /&gt;
&lt;br /&gt;
Generally it is not necessary that the AppServer takes care about the actual Player status or observe command flows. If the Player is for example playing a track and the application server send the command to play another track he will Eject the actual track and play the desired one. &lt;br /&gt;
&lt;br /&gt;
Note also that the player can work minimized in the taskbar and play “invisible”, so the user will see just the application. In the setup of the player can also be defined an automatic popup if a remote play is received and automatic hiding if an eject-command is received. If this is enabled in this way the player is minimized in the taskbar and the user works just with the application screen. &lt;br /&gt;
&lt;br /&gt;
The TCP/IP link between recorder and AppServer is based on the fact that the recorder acts as a slave while the AppServer act as a Server. In the Setup of the recorder the IPadress and the port of the AppServer has to be indicated. The recorder expects on the same port where he is transmitting the response from the AppServer.&lt;br /&gt;
&lt;br /&gt;
The recording server performs a keep alive with an interval settable in seconds. The keep alive message send from the recorder to the AppServer each xx seconds is:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;RecKA&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The message has no further meaning and can be thrown away from the AppServer. If any command is received from the Appserver the keep alive will be skipped and repeated after the, in the recorder setup indicated timespan. Unknown messages form the application server will be throw away from the recorder server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== URL Interfacing ===&lt;br /&gt;
&lt;br /&gt;
URL interfacing is available only on a local port (127.0.0.1) and used for interfacing with the reporting (see relative article). The following description is just for internal use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;IPLTRAC&amp;gt;&amp;lt;PN&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are also available the commands&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IPLPLAY&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IPLSTOP&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IPLEJECT&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IPLPAUS&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IPLTRAC2013_09_24_1107_39.o.024_1_93adee5ee909d311b6450090331b3e3b.wav&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
will force the player to reproduce the indicated record &#039;&#039;2013_09_24_1107_39.o.024_1_93adee5ee909d311b6450090331b3e3b.wav&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Basically the interface of the player is anyway a TCP/IP interface and no mini Webserver is integrated. But a “Get” from an browser will be detected and decoded, but no answer occurs. That means if you try to launch a command with a browser it will work, but the browser will show you “no page”. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
If you post in your browser “&#039;&#039;http://127.0.0.1:9090/IPLPLAY&#039;&#039;“, the player will start to play the marked record.  &lt;br /&gt;
&lt;br /&gt;
If a port for direct remote control is switched on a “RC on” label is displayed in the player status line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Note ===&lt;br /&gt;
&lt;br /&gt;
The first UID will be detected form the recording using the SOAP interface in the PBX. Therefore all Agents has to be in the same group that the SOAP user object.&lt;br /&gt;
&lt;br /&gt;
Example: You have a simple user object called “MYSOAP”, put that object in an active group called “Recording” and now put all you Agents in the same group.&lt;br /&gt;
&lt;br /&gt;
Remember that basically recording is done even without the group stuff. So the group is just required to detect the UID in “advanced”. But there is also an additional benefit; the reporting has less stress because the recorder will query the reporting just at the end of the call (knowing via SOAP when the “end” is) while calls without the group are detected as “finished” because the reporting has a valid CDR record, and so the recorder polls each 4 second the reporting on active calls. That means that it is in any case a good idea put the agents in a group, even if no external application is running.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recording rules ==&lt;br /&gt;
&lt;br /&gt;
The recording rules describe how the innovaphone PBX and the innovaphone voice recorder works in complex situations.&lt;br /&gt;
&lt;br /&gt;
While basic calls are simple and straight forward in logic, voice recording behavior becomes non clear in complex situations. &lt;br /&gt;
&lt;br /&gt;
What about voice recording if for example a recorded user transfers the call to a “normal” user? Answer: This call will be entirely recorded and booked under the recording user by design; those behaviors are intended under “recording rules”.&lt;br /&gt;
From a technical point of view mostly no other solution is possible, from a political point of view any rule could be endless discussed. &lt;br /&gt;
&lt;br /&gt;
Remember that in this chapter “Agent” is just the wording for “user enabled to recording with license” while “user” is a “normal” user, eventually even recording pcap files, but he is not in the recording user group. &lt;br /&gt;
&lt;br /&gt;
In theory senseless recording should not be done. So deleting a record because it should not be stored is a task of the recorder; not recording at all if not necessary is better. That can be achieved avoiding or forcing extensions to the recording gateways or doing recoding directly from the IP-Phone.&lt;br /&gt;
&lt;br /&gt;
The length (or contend) of a record depends; if the recording is done on a GW the entire call will be recorded (if not you will find a note in the rules), from his very first answer to the end. Therefore all the parties involved are even recorded. If recording is done on the phone level just the active call time on that phone will be recorded.&lt;br /&gt;
&lt;br /&gt;
Generally spoken there are not necessary recording rules if the recording is done from the  innovaphone IP-Phone: the recording starts when the phone answer the call and ends when the phone hangs up. &lt;br /&gt;
&lt;br /&gt;
So the following table shows the recording rules if recording is done on a GW level.&lt;br /&gt;
&lt;br /&gt;
“External” is the external calling or called party. Of cause if you record even internals calls (forcing all calls in a GW) in some situation the “External” is in reality a internal user, but this will not change the rules. The recorder recognizes the “external” party involved simply because it is the longest number involved. &lt;br /&gt;
&lt;br /&gt;
The recorder stores always even the reporting data and therefore all details are visible in case of doubts. The audio filename anyway if formed just from the internal user number and the external user number even if more numbers are involved in the call (for example in a 3party conference).&lt;br /&gt;
&lt;br /&gt;
Example: External call from number 012345 goes to the Agent number 24, after 3 second he will answer: the result will be a file name like “2014-05-12 14:00_24_i_012345_3_UID”.&lt;br /&gt;
&lt;br /&gt;
Later on in the player you can search “24” or “012345” (or a fraction of it like “0123*” ecc.). In the reporting you can search also all other fields (like other involved extensions) and start the player than from the reporting (see relative function in the innovaphone player).&lt;br /&gt;
&lt;br /&gt;
Note: the following rules works on any type of call transfer (with or without announcement).&lt;br /&gt;
&lt;br /&gt;
“Delete” means that the call will be deleted on the CF. “Call” means that they talk. For example “Agent calls External” indicated the direction and means also that the involved parties talk (or at least produce a pcap file).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rules:&lt;br /&gt;
&lt;br /&gt;
•	External call to Agent = Agent &lt;br /&gt;
  &lt;br /&gt;
•	External call to User = Deleted&lt;br /&gt;
&lt;br /&gt;
•	External call to Agent, User pick-up the call = Agent&lt;br /&gt;
&lt;br /&gt;
•	External call to User, Agent pick-up the call = Agent&lt;br /&gt;
&lt;br /&gt;
•	External call to broadcast group, Agent answer = Agent&lt;br /&gt;
&lt;br /&gt;
•	External call to broadcast group, User answer = Deleted&lt;br /&gt;
&lt;br /&gt;
•	External call to User, User hold and transfer to Agent = Agent&lt;br /&gt;
&lt;br /&gt;
•	External call to Agent A, Agent A hold and transfer to Agent B = Agent A&lt;br /&gt;
&lt;br /&gt;
•	External call to Agent A, Agent B pick up the call = Agent A&lt;br /&gt;
&lt;br /&gt;
•	External call to WQ, WQ call XML with DTMF input, XML call WQ, WQ call Agent = Agent (just the external Number is considered, not the DTMF codes and numbers between)&lt;br /&gt;
&lt;br /&gt;
•       External call to WQ, Agent A transfer call to Agent with or without announcement = Agent A (from Build1185)&lt;br /&gt;
&lt;br /&gt;
•       External call to WQ, Agent transfer call to User without announcement = Agent (from Build1185)&lt;br /&gt;
&lt;br /&gt;
•       External call to WQ, Agent transfer call to User with announcement = Deleted (from Build1185)&lt;br /&gt;
&lt;br /&gt;
•       External call to WQ, User transfer call with or without announcement to Agent = Deleted (from Build1185)&lt;br /&gt;
&lt;br /&gt;
•	Agent call External = Agent &lt;br /&gt;
&lt;br /&gt;
•	Agent call External, Agent hold and call transfer to User = Agent&lt;br /&gt;
&lt;br /&gt;
•	Agent call User, User hold and transfer to External = Deleted&lt;br /&gt;
&lt;br /&gt;
•	Agent call External, Agent hold and talk with User but no call transfer = Agent (just external conversation is recorded)&lt;br /&gt;
&lt;br /&gt;
•	Agent A call External, Agent A hold and transfer to Agent B = Agent A&lt;br /&gt;
&lt;br /&gt;
•	Agent B call External, Agent B hold and transfer to Agent A = Agent B&lt;br /&gt;
&lt;br /&gt;
•	User call to Agent, Agent hold and transfer to External = Agent&lt;br /&gt;
&lt;br /&gt;
•	User call External, User hold and transfer to Agent = Agent&lt;br /&gt;
&lt;br /&gt;
•	User call External = Deleted&lt;br /&gt;
&lt;br /&gt;
•	User call External, User hold and talking with Agent but no call transfer = Deleted&lt;br /&gt;
&lt;br /&gt;
•	User call Agent, Agent hold and Agent talk with External = Agent (just the external conversation is recorded)&lt;br /&gt;
&lt;br /&gt;
•	External call to Agent, Agent has activated a unconditional call forward (CFU) to a User = Deleted&lt;br /&gt;
&lt;br /&gt;
•	External Call to Agent, Agent has activated a call forward on busy (CFB) to a User and is busy = Deleted&lt;br /&gt;
&lt;br /&gt;
•	External Call to Agent, Agent has activated a call forward on no response (CFNR) to a User, User answer after timeout = Agent&lt;br /&gt;
&lt;br /&gt;
•	External call to Agent A, Agent A has activated a unconditional call forward (CFU) to Agent B = Agent B&lt;br /&gt;
&lt;br /&gt;
•	External Call to Agent A, Agent A has activated a call forward on busy (CFB) to Agent B and is busy = Agent B&lt;br /&gt;
&lt;br /&gt;
•	External Call to Agent A, Agent A has activated a call forward on no response (CFNR) to Agent B, Agent B answer after timeout = Agent A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: If Threat call recording is on a call can be marked to store from the calling or called agent. But if both parties are Agent, the called Agent has to dial the code for storing: if the caller dials the code the record will not be saved.&lt;br /&gt;
&lt;br /&gt;
From version 11 on the generated pcap file have a different format. While in former versions the name of a pcap file was a unique single long number form version 11r1 on the ticket as two additional id, one is build form the serial number of the device and the other one if an increasing number. This new format is also generated when recording is done form directly the phone. The recorder can handle both formats automatically, no special setup is required.&lt;br /&gt;
 &lt;br /&gt;
We want to focus your attention on the reason of the new format. If for example the recording is done on the phone the phone will generate a new pcap file each time a new call is opened form the PBX point of view. &lt;br /&gt;
&lt;br /&gt;
Example: Phone rings and the user answers, the recording starts with record 1. Then the user put the call on hold and call another extension, this generates record number 2. Then the phone returns to the first call and continuous talking that will be the 3td call. Of cause using the player you will see those 3 calls one after the other (using the user as filter). That this is one situation you recognize looking the reporting details displayed and if you select the 3 calls the player will play one after the other (switch on the loop key) and you listen the entire call in one shoot.&lt;br /&gt;
&lt;br /&gt;
== TAN ==&lt;br /&gt;
&lt;br /&gt;
Build 1167&lt;br /&gt;
&lt;br /&gt;
TAN stand for “Transaction authentication number” used mainly in electronic banking and is a 6 digit long number. Of cause also other applications could use numbers like ticket systems or project handling. &lt;br /&gt;
&lt;br /&gt;
In voice recording a record should be assigned to a TAN and a filter (search) should be possible. The actual integrated function work exclusive with a 6 digit number. &lt;br /&gt;
&lt;br /&gt;
Please note that also a automatic association is possible as described in the relative chapter in this document: in this case all TAN issues are handled by the 3rt party application while this feature works without 3rt party application. &lt;br /&gt;
&lt;br /&gt;
The operation depends of the Recording Mode in the innovaphone IP-phone.&lt;br /&gt;
&lt;br /&gt;
If the Recording Mode in the IP-phone is switched on to “transparent” or “off” during a conversation the agent press the redial key. &lt;br /&gt;
&lt;br /&gt;
If the Recording Mode in the phone is switched to “manual” or “optional” during a conversation the agent press a feature key (Redirect).&lt;br /&gt;
&lt;br /&gt;
Than the agent enter the prefix for the TAN feature (the prefix for the TAN feature depends of the setup, see installation) and the 6 digit TAN code (without * and #) of this conversation.&lt;br /&gt;
&lt;br /&gt;
During that operation the agent is in conversation with the far party, no DTMF tones are transmitted. In any moment (but during the conversation, not after) the Agent press the redial button to store the number. His phone release and ring again, during that the far party hear a call control tone. If the agent picks up the receiver the connection is again established. Therefore it is good practice to inform the far party that he will be shortly disconnected for operational reasons. &lt;br /&gt;
&lt;br /&gt;
The call can be terminated now in any moment normally, the TAN information will be in the record and also in the reporting. The Recorder has not to be online in that moment because all information about the TAN is in the reporting.&lt;br /&gt;
&lt;br /&gt;
A record can be edited in any moment using the player (if relative permission is switched on in the setup). A TAN can be edited (for example because erroneous operation in the online operation) and to any record can be added a TAN number. Please note that once a TAN number was add to the record the number can be modified but not cancel. Best practice is to assign “000000” as TAN for “no TAN records”. Please note that the option to add TAN to records and filter for TAN can be used also without the recorder just using the player.&lt;br /&gt;
In the player a filter for TAN can be activated and combined with any other filter. To filter enter the 6 digit TAN code and press enter. To reset the filter clear at least one digit and press enter.&lt;br /&gt;
&lt;br /&gt;
[[Image:TAN02.png]]&lt;br /&gt;
&lt;br /&gt;
In the record name the TAN is at the end of the filename, starting with a “T”.&lt;br /&gt;
&lt;br /&gt;
The TAN feature is designed to work with innovaphone IP-Phones. The feature works also if a player-server is installed (http access to records). The feature is integrated in the reporting, therefore a player could be controlled directly as usual also from the reporting.&lt;br /&gt;
&lt;br /&gt;
The feature works in the same way regardless if the Agent was called or has called a customer.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
In the Setup of the Agent, Tab “permission” the “TAN” checkmark enables the player to search and modify TAN numbers. If that checkmark is on the main view of the player shows automatically the relative optional window with tooltip support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:TAN01.png]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable the online input during the conversation there are more setups required. Copy the xml “TAN.xml” on the CF/msata/webdav and create a VM object pointing on it. The number of this object will be the “TAN prefix”. Open the Recorder setup, tab “PBX” and enter the TAN prefix.&lt;br /&gt;
&lt;br /&gt;
TCR require a XML (TAN.xml included in the software package of the Last call recording feature, see Related Articles, see Related Articles, go to the article and follow the download [http://download.innovaphone.com/ice/wiki-src#lcr http://download.innovaphone.com/ice/wiki-src#lcr] ).&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
&lt;br /&gt;
===CDR on trunk===&lt;br /&gt;
It is recommended to switch on also the CDR on the involved trunk line if the recording is done on the trunk. If a call on a trunk cause a PCAP file without involving an internal object with reporting (for example a call rerouted to an external destination) there is no CDR ticket for that PCAP file. &lt;br /&gt;
&lt;br /&gt;
===Version 13===&lt;br /&gt;
The V12 Recording (this description) works also with an V13 installations. The licenses are identical to the V13 (this recorder can also work with V13 licenses). &lt;br /&gt;
&lt;br /&gt;
Please note that this product require a V12 reporting and is not compatible with the V13 reporting. Therefore if you run this recording in a V13 environment you have to setup on a different platform (for example a Vmware) a V12 reporting. &lt;br /&gt;
Also, the V13 mSata/FLASH Webdav cound is not used by the recording V10. You must use a V12 Application Platform Webdav (or an IPVA AP Webdav) to store the pcap files. Typically no problem, since the reporting must already be installed in V12 and a subsequent Ap platform has booted up.&lt;br /&gt;
&lt;br /&gt;
===Open a ticket===&lt;br /&gt;
&lt;br /&gt;
If you have a problem with the recording tool you have to open a ticket as usual. Describe your problem, but send us also the following information:&lt;br /&gt;
&lt;br /&gt;
- Setup of your PBX (with standard password or tell us the password)&lt;br /&gt;
&lt;br /&gt;
- Version of the reporting &lt;br /&gt;
&lt;br /&gt;
- Attach all log and error files and the setup of the recorder. All those files are in the log folder (so zip the entire folder), you find the path and link to the folder in the recorder setup.&lt;br /&gt;
&lt;br /&gt;
- Make some screenshots if possible.&lt;br /&gt;
&lt;br /&gt;
- Open the reporting and do a query where the recorded conversations are in (if possible). Do an export in XML and attached it.&lt;br /&gt;
&lt;br /&gt;
=== No CDR ticket after start-up ===&lt;br /&gt;
&lt;br /&gt;
If a record is not found on the CF and there is no SOAP info about that (for example if you start the recording and there are old terminated calls) the recording checks if the reporting has a related record. If a record is found and it is an Agent involved the record is stored as usual, if no Agent is involved the record will be deleted. &lt;br /&gt;
&lt;br /&gt;
But if there is a recording file found and in the recording there is no related record, the recorder cold simply deletes that record; but this could be fatal. For example the reporting could answer once bad, or the link between the reporting and the PBX is temporary down; in that cases the recording will be lost if simply deleted. Therefore the recorder waits in this situation and asks the reporting again after 2 hours. If even after 2 hours the reporting answer with no record found the file will be deleted (otherwise normally processed and stored or deleted as described before). &lt;br /&gt;
&lt;br /&gt;
Note that the reporting is not aware about the health of the connection between PBX and the Reporting. If the recorder gets no answer from the reporting an alarm occurs and the reporting will not proceed with the storage. But the answer “no record found” is not a clear situation for the software. Therefor this situation has to be avoided and occurs for example if pcaps are recorded, but the users involved have no reporting while the recorder is down and starts up later. So the recorder will “find” pcap files but no reporting information.&lt;br /&gt;
&lt;br /&gt;
During online operation this will not happen, because the SOAP driver will tell the recorder that a specific record has to be deleted, and so the recorder will not check the reporting. This is done even to speed up the recorder because the communication with the reporting is relatively slow. If for example there are many users doing a recording (because a bad setup or simply because a huge PBX) and there are only few users to record a huge amount of files are simply to delete without any further processing. Deleting of files is relatively fast during online operation while in case of startup and then recover historic records it becomes slow, and very slow if there are no CDR tickets. The online deleting of files is just “relatively fast” because the SOAP is very fast but the recorded file has to be closed before deleting. Trying to delete a not closed file will cause an error, if that happen the system after e while will recover, but it is not nice. On top there is no way on a CF to understand if a file is in use or not. Therefore the system will wait 2 seconds before deleting a file.&lt;br /&gt;
&lt;br /&gt;
=== No CDR ticket online ===&lt;br /&gt;
&lt;br /&gt;
There is even an unclear situation in online operation. Imagine that an Agent transmits no CDR information to the reporting (for example because there is no reporting license assigned to that user) or, because of a bad setup in the PBX, the ticket will not arrive to the reporting. A call of an Agent is terminated, the SOAP driver informs the upper layer of the software about that and now the recording ask the reporting about the CDR details. Note that the reporting is not down; the recorder can reach the reporting and get also answers (otherwise the REP alarm would be on).  If after a detected call end of an Agent signaled by SOAP and a timeout of 5 seconds no CDR is in the reporting a garbage select routine is activated in the recorder software; this routine ask a second time after other 5 seconds the reporting. If even now the response is “no record found” the reporting waits for this call 2 hours. After 2 hours a third time the reporting is asked, if no record is found the pcap is deleted, otherwise normal processed.&lt;br /&gt;
&lt;br /&gt;
If a record is waiting in the 2 hours timeout status in the field “status” the countdown proceed is shown, for example “P1443”, after 5 seconds “P1442” and so one (number*5/60 = time in minutes to zero).&lt;br /&gt;
&lt;br /&gt;
To fix it just stop the recording, solve the problem if possible (if you are lucky for example the CDR data are in the PBX buffer and will be send to the reporting when connection is up again), if not save the Pcap file, at least it will not be deleted. Then delete the pcap file on the CF to avoid a slowdown of the entire system.&lt;br /&gt;
&lt;br /&gt;
A simple but good idea is to enable the CDR on the recording trunk line, in this case “some information” for the call is retrieved all time and at least the system will not face that problem.&lt;br /&gt;
&lt;br /&gt;
All described can be the result of a bad or erroneous setup, or the customer is aware of that and simply not interested in a good working application. So a “no record” answer could be a real alarm or not. Therefore in the setup that can be selected. &lt;br /&gt;
&lt;br /&gt;
See recording setup, panel reporting, option “Alarm if no CDR ticket found”.&lt;br /&gt;
&lt;br /&gt;
=== Asynchronous reporting/PBX date and time ===&lt;br /&gt;
&lt;br /&gt;
PBX and reporting must have the same date and time. If not, the reporting will detect that and display error and warning messages about a possible manipulation in the files. &lt;br /&gt;
&lt;br /&gt;
So check first the actual date and time of PBX and reporting. &lt;br /&gt;
&lt;br /&gt;
IPVA: Remember that date can be set in the reporting in administration, General, Configure NTP server.&lt;br /&gt;
&lt;br /&gt;
===Voice Recorder Window is truncated===&lt;br /&gt;
&lt;br /&gt;
It could happen that the Voice Recorder Window is truncated. The reason for this is the screen resolution setting in windows. To solve the problem, the screen resolution adaptation must be switched off (set to 100%) in windows system settings.&lt;br /&gt;
&lt;br /&gt;
=== Player Crash on start-up===&lt;br /&gt;
&lt;br /&gt;
If the player won’t start try first play a wave file using the Windows media Player.  If the Windows Media Player cannot reproduce the wave file (for example because there is no audio device or the audio device is not ready) the player will not start up. Fix first the PC problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recorder stopped responding after the start ===&lt;br /&gt;
&lt;br /&gt;
We have had reports that recording did not run on windows 2008 r2. Symptoms were: recorder stopped responding after the start (recorder hang) and the link to the PBX was down. This had been fixed by running sfc.exe.&lt;br /&gt;
&lt;br /&gt;
=== PBX Trap ===&lt;br /&gt;
&lt;br /&gt;
If the PBX is doing a restart during a recording no CDR record will be produced. Therefore the partial PCAP File will be dropped. If the trap of the PBX is during a file copy from the Webdav, the recorder try up to 5 minutes, but will recover the operation automatically after that time.&lt;br /&gt;
&lt;br /&gt;
===Recorder stopped converting records into mp3===&lt;br /&gt;
It can happen that the recorder does not convert any recordings into mp3, even if the mp3 driver is detected and the mp3 conversion is turned on. &lt;br /&gt;
In that case, you should check if the name of the storage path contains special characters like &amp;lt;code&amp;gt;()&amp;quot;,&amp;lt;/code&amp;gt; or space.&lt;br /&gt;
&lt;br /&gt;
===Using Network Drives===&lt;br /&gt;
Windows mapping of network drives and also the integrated possibility to map networks drive do not work correctly because of windows bugs.&lt;br /&gt;
If destination of the storage you are using is a Webdav folder and you want to use a mapped drive (for example F: or N:), mapping the drive using Windows feature will cause writing/reading issues, and Recording won&#039;t convert the file in .wav in the storage path.&lt;br /&gt;
Work around: To avoid this, use a third party software like &amp;quot;Net Drive&amp;quot; to create the network map.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
[[Reference10:Player_Voice_Recording]]&lt;br /&gt;
&lt;br /&gt;
[[Reference10:Voice_Recorder/Setup]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Last_Call_Recording]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Universal_Track_Recording_Tool]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Integration_reporting_and_voice_recording]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Soft-migration_%28looping_in_a_innovaphone_gateway%29_and_Voice_Recording]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Player_over_http]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Marking_a_record_in_Voicerecording]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Voice_Recording_in_Master_Slave_scenarios]]&lt;br /&gt;
&lt;br /&gt;
[[Howto:Recorder_as_a_service]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
[[Reference13r2:Concept App Service Recordings]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r2:Concept_App_Service_Recordings&amp;diff=59521</id>
		<title>Reference13r2:Concept App Service Recordings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Concept_App_Service_Recordings&amp;diff=59521"/>
		<updated>2021-07-06T12:40:31Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Recordings is an application running on the App platform which allows to capture the audio streams during a telephone call.&lt;br /&gt;
The users phone can be configured to send bi-directional audio streams to the Recordings App and store them into the database.&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r2&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* Firmware V13r2xx&lt;br /&gt;
* Recordings App&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;not compatible with V13 Softphone!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== recordings ===&lt;br /&gt;
[[Image: Usrrecord.png]]&lt;br /&gt;
* User version of the App allow you to :&lt;br /&gt;
* Access to the user specific records&lt;br /&gt;
* Access to the user specific logs&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Play, Listen or Download the recording as a .WAV file&lt;br /&gt;
&lt;br /&gt;
Protect against deleting or delete a recording &lt;br /&gt;
&lt;br /&gt;
=== recordingsadmin ===&lt;br /&gt;
[[Image:Adminrecord.png]]&lt;br /&gt;
Admin version of the app allow you to :&lt;br /&gt;
* Access to all records&lt;br /&gt;
&lt;br /&gt;
* Access to all logs&lt;br /&gt;
* Set up the records auto deletion retention time in days&lt;br /&gt;
&lt;br /&gt;
* Set the recordings group name&lt;br /&gt;
&lt;br /&gt;
* Set specific trace levels&lt;br /&gt;
* Filter records by name, by date&lt;br /&gt;
* Play, Listen or Download the recording as a .wav file&lt;br /&gt;
* Protect against deleting or delete a recording&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugin ==&lt;br /&gt;
&lt;br /&gt;
With the Recordings PBX Manager Plugin an App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
* Download the Recordings App via App Store.&lt;br /&gt;
* Install the App on the App Platform Manager.&lt;br /&gt;
* Create a instance for the Recordings App on the App Platform Manager.&lt;br /&gt;
* Create a new PBX recordings Object with the PBX Manager Plugin.&lt;br /&gt;
* Create a new PBX recordingsadmin Object with the PBX Manager Plugin.&lt;br /&gt;
* Assign recordingsadmin  App to authorized (admin) users, which will be allowed to open the Admin UI of the Recordings App.&lt;br /&gt;
* Assign recordings  App to users who will use the Recordings App.&lt;br /&gt;
* Start recordings App and configure with recordingsadmin App the name of the PBX&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
&lt;br /&gt;
For recordings to work the appropriate license “Service(innovaphone-recordings)” must be installed on the pbx. During installation and configuration of the recordings App Object via PBX Manager a certain amount from the total of installed licenses&lt;br /&gt;
&lt;br /&gt;
Is allocated to the object. There are different modes of licence operation depending on number of users and the number of licences:&lt;br /&gt;
&lt;br /&gt;
* open mode&lt;br /&gt;
&lt;br /&gt;
If the number of licenses allocated to the recordings object are greater or equal to the number of users there is no need to configure a specific recordings group.&lt;br /&gt;
All users can record.&lt;br /&gt;
&lt;br /&gt;
If the number of licenses allocated to the recordings object are less than the number of users on the PBX the licenses will be allocated on a first come first serve basis. Unlicensed recordings will nevertheless be kept in the DB,&lt;br /&gt;
however they will not be accessible. They will be made accessible automatically when a sufficient number of additional licenses is installed/allocated to the recordings object. These unlicensed recordings will be kept as long as the&lt;br /&gt;
licensed ones. &lt;br /&gt;
  &lt;br /&gt;
* Group mode&lt;br /&gt;
&lt;br /&gt;
If the number of licenses allocated to the recordings object is less that the number of users and when it must be ensured that a certain group of user can record and access their recordings, these users who  must be put into a group.&lt;br /&gt;
If the members in the group exceeds the number of allocated licenses, the licenses are allocated first come first serve. As in the open mode unlicensed recordings will be kept, however the grace period of adding additional licenses&lt;br /&gt;
is one day, after which these recordings are physically, unrecoverably deleted.&lt;br /&gt;
&lt;br /&gt;
=== Recording on Special Interfaces ===&lt;br /&gt;
&lt;br /&gt;
* Trunk Interface&lt;br /&gt;
&lt;br /&gt;
The Trunk Interface acts as a substitute for the users phone. For outgoing calls the call initiator is the owner of the recording and for him a license is claimed. With incoming calls, the first user answering the call own the recording and a license for this user is claimed.&lt;br /&gt;
&lt;br /&gt;
* Waiting Queue&lt;br /&gt;
&lt;br /&gt;
The user answering the call is owner, a license for him is claimed.&lt;br /&gt;
&lt;br /&gt;
== Upgrade from V13r1 to V13r2 Recordings App ==&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
A V13r1 Recordings App can be used in the V13r2 PBX and App Platform environment.&lt;br /&gt;
&lt;br /&gt;
=== License Changes ===&lt;br /&gt;
With V13r2 required License Type for the Recordings App changes from a Service License to an App License. Customers with already activated Service Licenses should ask for License Conversion at &amp;lt;code&amp;gt;license@innovaphone.com&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Database Conversion ===&lt;br /&gt;
On first start after update from V13r1 to V13r2 Recordings App, the App Service will start a database conversion procedure. Depending on the number of recordings in the database, time for conversion my take up to 30 minutes for a database with 100000 recordings.&lt;br /&gt;
&lt;br /&gt;
It is recommended to export the Recordings App database for backup purposes, prior updating the App.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Recordings App Service ===&lt;br /&gt;
The App Service for Recordings App provides a log output on the App instance, after the Diagnostics option &amp;quot;App&amp;quot; is activated for the selected instance.&lt;br /&gt;
&lt;br /&gt;
Additional Trace Level Options for the App Service are configurable via Recordings Admin App. This settings are available via additional Menu in the upper right corner of the REcordings Admin UI:&lt;br /&gt;
&lt;br /&gt;
*Recording - PCAP interface related traces, useful on issues with IP-Phone and Interface Media transmission from Endpoint to the App Service&lt;br /&gt;
*Call Information - traces related to the CDR information&lt;br /&gt;
*Converting - traces for conversion process from VoIP codecs to WAV&lt;br /&gt;
*License - traces for on licensing issues&lt;br /&gt;
*UI - traces related to the user interface of the Recordings App&lt;br /&gt;
&lt;br /&gt;
The name of the MAster PBX must be configured via the Recordings Admin App, otherwise a message &#039;&#039;PBX Name missing&#039;&#039; will be displayed.&lt;br /&gt;
&lt;br /&gt;
=== PBX Configuration ===&lt;br /&gt;
*WebSocket connection from App Object to the recordings app should show &#039;&#039;connected&#039;&#039;&lt;br /&gt;
*A correct configuration of the CDR interface is required for transmission of metadata to the recordings service. In case this transmission is not successful, a recording will show a &#039;&#039;NoCDR&#039;&#039; message, instead of username&lt;br /&gt;
&lt;br /&gt;
=== PCAP Recording Interfaces ===&lt;br /&gt;
*Check URL for PCAP Recording provided on the IP-Phone or VoIP-Interface of a VoIP Gateway&lt;br /&gt;
*A Trace with enabled HTTP-Client option should show a successful HTTP PUT Request towards URL of the Recordings Service PCAP interface (e.g. &amp;lt;code&amp;gt;HTTPCLIENT WEBDAV_FILE_HTTP.2: PUT http://ap.company.com/company.com/recordings/Files/f9e5956e47d460010630009033302ab1-009033302ab1-11--username.pcap&amp;lt;/code&amp;gt;)&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:A_Simple_Recording_Solution_On-Top_of_The_innovaphone_Voicemail&amp;diff=59520</id>
		<title>Howto:A Simple Recording Solution On-Top of The innovaphone Voicemail</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:A_Simple_Recording_Solution_On-Top_of_The_innovaphone_Voicemail&amp;diff=59520"/>
		<updated>2021-07-06T12:36:41Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX V9 and later&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pay Attention:&#039;&#039;&#039;&lt;br /&gt;
This solution is not working anymore with V13 VM or the actual VM script!&lt;br /&gt;
Because die actual vm stores all in the user directory with the &amp;quot;h323&amp;quot; name, die script uses the &amp;quot;cn&amp;quot; name as store-place!&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
This article explains how a simple recording solution could be set up on-top of an innovaphone Voicemail (VM).&lt;br /&gt;
&lt;br /&gt;
Please note, that this recording solution is exemplary and free. It can be adapted in such, that it doesn&#039;t require the VM. It consists of 3 parts:&lt;br /&gt;
* Recording of the conversation. This is done by the record.xml script and doesn&#039;t need voicemail licenses.&lt;br /&gt;
* Listen to recorded conversations by phone. This is done by using the voicemail script and therefore needs voicemail licenses.&lt;br /&gt;
* Send recorded conversations by mail. This is done by using the email.xml script and doesn&#039;t need voicemail licenses.&lt;br /&gt;
&lt;br /&gt;
As a result, if you want only to listen to the recorded messages on your PC/by mail, then voicemail licenses are not needed.&lt;br /&gt;
&lt;br /&gt;
The recording mode itself (manual, automatic and optional) be done in the mode as described in: [[:Reference:Configuration/Registration/Recording]]&amp;lt;br&amp;gt;&lt;br /&gt;
The recording stores G.711a files into the &amp;quot;stored messages&amp;quot;-area of a user&#039;s voicebox. Recorded messages can be listened to by calling a user&#039;s voicebox and by proceeding into the main menu option &#039;&#039;2&#039;&#039; for stored messages.&lt;br /&gt;
&lt;br /&gt;
Please be informed, that recording usually requires the agreement of the calling peer and as such must be indicated to the peer. Please note that the file &#039;&#039;note.xxx&#039;&#039; contains the advising file played at the beginning of the recording. You can replace the  note-files with own announcements. Make sure to [[Howto:How to convert wave files in to G7xx coder files for the HTTP interface | convert]] them and put them on the CF. If you don’t like to play anything just delete those files.&lt;br /&gt;
&lt;br /&gt;
By default, the email notification is disabled. If you want to enable it, remove comments for the event type=&amp;quot;call-end&amp;quot; in the record.xml file and change the following in email.xml:&lt;br /&gt;
 &amp;lt;assign out=&amp;quot;$file&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
to &lt;br /&gt;
 &amp;lt;assign out=&amp;quot;$file&amp;quot; value=&amp;quot;$vm&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard email.xml file of the voicemail package is used for sending the mails, so the same [[Howto:Send_Email_MWI_Notification_From_The_innovaphone_Voicemail | limitation and troubleshooting]] applies.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The outline for the following configuration scenario shall be as follows:&lt;br /&gt;
* The VM is pre-installed on a CompactFlash card and is available at the number &#039;&#039;66&#039;&#039;.&lt;br /&gt;
* The configured URL for the VM is &#039;&#039;http://127.0.0.1/drive/CF0/vm/vm.xml&#039;&#039;.&lt;br /&gt;
* An IP phone &#039;&#039;49:Klaus&#039;&#039; may exist.&lt;br /&gt;
* Klaus has a voicebox configured which is available at &#039;&#039;http://127.0.0.1/drive/CF0/vm/Klaus/&#039;&#039;&lt;br /&gt;
* The recording solution requires an additional voicemail object, which shall be available as 67:vm-record.&lt;br /&gt;
* copy the solution files (record.xml and note.xxx) into the VM directory, such that record.xml resides in the same directory of the VM&#039;s vm.xml and becomes HTTP-available as http://127.0.0.1/drive/CF0/vm/record.xml.&lt;br /&gt;
&lt;br /&gt;
Create a new Voicemail Object at &#039;&#039;Administration/PBX/Objects/New&#039;&#039;&lt;br /&gt;
* Enter &#039;&#039;vm-record&#039;&#039; as &#039;&#039;Long Name&#039;&#039; and &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
* Enter &#039;&#039;67&#039;&#039; as &#039;&#039;Number&#039;&#039;&lt;br /&gt;
* Enter &#039;&#039;http://127.0.0.1/drive/CF0/vm/record.xml&#039;&#039; as &#039;&#039;URL&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Browse to the phone&#039;s Web UI: &#039;&#039;Configuration/RegistrationX/Recording&#039;&#039;&lt;br /&gt;
* As &#039;&#039;Mode&#039;&#039; enter &#039;&#039;manual&#039;&#039;. (or &#039;&#039;transparent&#039;&#039; if all calls should be recorded)&lt;br /&gt;
* As &#039;&#039;Number&#039;&#039; enter &#039;&#039;67&#039;&#039;.&lt;br /&gt;
* Flag &amp;quot;Two Way Media&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
====Optional settings====&lt;br /&gt;
A possibility to record only calls from/to specific numbers is implemented in the version 1001. Therefore the calling numbers can be placed in the sub-folder &#039;&#039;&#039;numbers&#039;&#039;&#039; as files containing the calling number in the file name (e.g. 072234567).&lt;br /&gt;
&lt;br /&gt;
To enable this function edit the script and change the value of the variable &#039;&#039;&#039;selective_recording&#039;&#039;&#039; to &#039;&#039;&#039;true&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;assign out=&amp;quot;selective_recording&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
Klaus is engaged in a call.&lt;br /&gt;
* During the call press the redial-button. The phone&#039;s display should now indicate something like &amp;quot;Recording&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
After the call has been finished Klaus calls his voicebox 6649. He enters main menu option &#039;&#039;2&#039;&#039;. The recorded message should now be among the stored messages.&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
The voice files have the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Username&amp;gt;/&amp;lt;Record&amp;gt;+&amp;lt;cdpn&amp;gt;+&amp;lt;cgpn&amp;gt;+&amp;lt;date&amp;gt;+&amp;lt;time&amp;gt;+&amp;lt;NumberInMinute&amp;gt;+.g711a&lt;br /&gt;
&lt;br /&gt;
Where&lt;br /&gt;
 &amp;lt;Username&amp;gt; = separate directory for each user&lt;br /&gt;
 &amp;lt;Record&amp;gt; = fix text field&lt;br /&gt;
 &amp;lt;cdpn&amp;gt; = extension which did the recording&lt;br /&gt;
 &amp;lt;cgpn&amp;gt; = the remote party&lt;br /&gt;
 &amp;lt;date&amp;gt; = system (PBX) date&lt;br /&gt;
 &amp;lt;time&amp;gt; = system (PBX) time&lt;br /&gt;
 &amp;lt;NumberInMinute&amp;gt; =  Record in this minute&lt;br /&gt;
 .g711a = coding&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
Record_37-24-01.08.2009-09.03_1.g711a&lt;br /&gt;
&lt;br /&gt;
Extension 37 did voice recording, the far partner was extension 24, date 01.08.2009 at 09:03, the first record in this minute.&lt;br /&gt;
&lt;br /&gt;
Please note that the date and time format always has the format DD.MM.JJJJ and hh:mm.&lt;br /&gt;
The file name of course must be unique. In the rare occasion that a user would start a second recording with the same remote party in the same minute (for example if he is toggling with the recording key), an incremental number is added. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Record_37-24-31.07.2009-13.58_1.g711a&lt;br /&gt;
Record_37-24-31.07.2009-13.58_2.g711a&lt;br /&gt;
Record_37-24-31.07.2009-13.58_3.g711a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Normally all recordings will end with “_1”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please feel free to modify the xml, for example using other separators.&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
The system sends the e-mail at the end of the conversation to the mail system. If the mail-system is down or not reachable, the e-mail gets lost. Please note that you can find the records anyway on the CF in the user folder. Since the records are not deleted after the mail is sent, you must delete them manually or adjust the xml script.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
*[http://download.innovaphone.com/ice/wiki-src#simplerec http://download.innovaphone.com/ice/wiki-src/] - download the complete file package of scripts and files described in this article.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[Howto:How_to_Configure_the_innovaphone_Voicemail|How to Configure the innovaphone Voicemail]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- voice recording, legal interception --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:A_Simple_Recording_Solution_On-Top_of_The_innovaphone_Voicemail&amp;diff=59519</id>
		<title>Howto:A Simple Recording Solution On-Top of The innovaphone Voicemail</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:A_Simple_Recording_Solution_On-Top_of_The_innovaphone_Voicemail&amp;diff=59519"/>
		<updated>2021-07-06T12:35:16Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX V9 and later&lt;br /&gt;
&lt;br /&gt;
Pay Attention:&lt;br /&gt;
This solution is not working anymore with V13 VM or the actual VM script!&lt;br /&gt;
Because die actual vm stores all in the user directory with the &amp;quot;h323&amp;quot; name, die script uses the &amp;quot;cn&amp;quot; name as store-place!&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
This article explains how a simple recording solution could be set up on-top of an innovaphone Voicemail (VM).&lt;br /&gt;
&lt;br /&gt;
Please note, that this recording solution is exemplary and free. It can be adapted in such, that it doesn&#039;t require the VM. It consists of 3 parts:&lt;br /&gt;
* Recording of the conversation. This is done by the record.xml script and doesn&#039;t need voicemail licenses.&lt;br /&gt;
* Listen to recorded conversations by phone. This is done by using the voicemail script and therefore needs voicemail licenses.&lt;br /&gt;
* Send recorded conversations by mail. This is done by using the email.xml script and doesn&#039;t need voicemail licenses.&lt;br /&gt;
&lt;br /&gt;
As a result, if you want only to listen to the recorded messages on your PC/by mail, then voicemail licenses are not needed.&lt;br /&gt;
&lt;br /&gt;
The recording mode itself (manual, automatic and optional) be done in the mode as described in: [[:Reference:Configuration/Registration/Recording]]&amp;lt;br&amp;gt;&lt;br /&gt;
The recording stores G.711a files into the &amp;quot;stored messages&amp;quot;-area of a user&#039;s voicebox. Recorded messages can be listened to by calling a user&#039;s voicebox and by proceeding into the main menu option &#039;&#039;2&#039;&#039; for stored messages.&lt;br /&gt;
&lt;br /&gt;
Please be informed, that recording usually requires the agreement of the calling peer and as such must be indicated to the peer. Please note that the file &#039;&#039;note.xxx&#039;&#039; contains the advising file played at the beginning of the recording. You can replace the  note-files with own announcements. Make sure to [[Howto:How to convert wave files in to G7xx coder files for the HTTP interface | convert]] them and put them on the CF. If you don’t like to play anything just delete those files.&lt;br /&gt;
&lt;br /&gt;
By default, the email notification is disabled. If you want to enable it, remove comments for the event type=&amp;quot;call-end&amp;quot; in the record.xml file and change the following in email.xml:&lt;br /&gt;
 &amp;lt;assign out=&amp;quot;$file&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
to &lt;br /&gt;
 &amp;lt;assign out=&amp;quot;$file&amp;quot; value=&amp;quot;$vm&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The standard email.xml file of the voicemail package is used for sending the mails, so the same [[Howto:Send_Email_MWI_Notification_From_The_innovaphone_Voicemail | limitation and troubleshooting]] applies.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The outline for the following configuration scenario shall be as follows:&lt;br /&gt;
* The VM is pre-installed on a CompactFlash card and is available at the number &#039;&#039;66&#039;&#039;.&lt;br /&gt;
* The configured URL for the VM is &#039;&#039;http://127.0.0.1/drive/CF0/vm/vm.xml&#039;&#039;.&lt;br /&gt;
* An IP phone &#039;&#039;49:Klaus&#039;&#039; may exist.&lt;br /&gt;
* Klaus has a voicebox configured which is available at &#039;&#039;http://127.0.0.1/drive/CF0/vm/Klaus/&#039;&#039;&lt;br /&gt;
* The recording solution requires an additional voicemail object, which shall be available as 67:vm-record.&lt;br /&gt;
* copy the solution files (record.xml and note.xxx) into the VM directory, such that record.xml resides in the same directory of the VM&#039;s vm.xml and becomes HTTP-available as http://127.0.0.1/drive/CF0/vm/record.xml.&lt;br /&gt;
&lt;br /&gt;
Create a new Voicemail Object at &#039;&#039;Administration/PBX/Objects/New&#039;&#039;&lt;br /&gt;
* Enter &#039;&#039;vm-record&#039;&#039; as &#039;&#039;Long Name&#039;&#039; and &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
* Enter &#039;&#039;67&#039;&#039; as &#039;&#039;Number&#039;&#039;&lt;br /&gt;
* Enter &#039;&#039;http://127.0.0.1/drive/CF0/vm/record.xml&#039;&#039; as &#039;&#039;URL&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Browse to the phone&#039;s Web UI: &#039;&#039;Configuration/RegistrationX/Recording&#039;&#039;&lt;br /&gt;
* As &#039;&#039;Mode&#039;&#039; enter &#039;&#039;manual&#039;&#039;. (or &#039;&#039;transparent&#039;&#039; if all calls should be recorded)&lt;br /&gt;
* As &#039;&#039;Number&#039;&#039; enter &#039;&#039;67&#039;&#039;.&lt;br /&gt;
* Flag &amp;quot;Two Way Media&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
====Optional settings====&lt;br /&gt;
A possibility to record only calls from/to specific numbers is implemented in the version 1001. Therefore the calling numbers can be placed in the sub-folder &#039;&#039;&#039;numbers&#039;&#039;&#039; as files containing the calling number in the file name (e.g. 072234567).&lt;br /&gt;
&lt;br /&gt;
To enable this function edit the script and change the value of the variable &#039;&#039;&#039;selective_recording&#039;&#039;&#039; to &#039;&#039;&#039;true&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;assign out=&amp;quot;selective_recording&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
Klaus is engaged in a call.&lt;br /&gt;
* During the call press the redial-button. The phone&#039;s display should now indicate something like &amp;quot;Recording&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
After the call has been finished Klaus calls his voicebox 6649. He enters main menu option &#039;&#039;2&#039;&#039;. The recorded message should now be among the stored messages.&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
The voice files have the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Username&amp;gt;/&amp;lt;Record&amp;gt;+&amp;lt;cdpn&amp;gt;+&amp;lt;cgpn&amp;gt;+&amp;lt;date&amp;gt;+&amp;lt;time&amp;gt;+&amp;lt;NumberInMinute&amp;gt;+.g711a&lt;br /&gt;
&lt;br /&gt;
Where&lt;br /&gt;
 &amp;lt;Username&amp;gt; = separate directory for each user&lt;br /&gt;
 &amp;lt;Record&amp;gt; = fix text field&lt;br /&gt;
 &amp;lt;cdpn&amp;gt; = extension which did the recording&lt;br /&gt;
 &amp;lt;cgpn&amp;gt; = the remote party&lt;br /&gt;
 &amp;lt;date&amp;gt; = system (PBX) date&lt;br /&gt;
 &amp;lt;time&amp;gt; = system (PBX) time&lt;br /&gt;
 &amp;lt;NumberInMinute&amp;gt; =  Record in this minute&lt;br /&gt;
 .g711a = coding&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
Record_37-24-01.08.2009-09.03_1.g711a&lt;br /&gt;
&lt;br /&gt;
Extension 37 did voice recording, the far partner was extension 24, date 01.08.2009 at 09:03, the first record in this minute.&lt;br /&gt;
&lt;br /&gt;
Please note that the date and time format always has the format DD.MM.JJJJ and hh:mm.&lt;br /&gt;
The file name of course must be unique. In the rare occasion that a user would start a second recording with the same remote party in the same minute (for example if he is toggling with the recording key), an incremental number is added. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Record_37-24-31.07.2009-13.58_1.g711a&lt;br /&gt;
Record_37-24-31.07.2009-13.58_2.g711a&lt;br /&gt;
Record_37-24-31.07.2009-13.58_3.g711a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Normally all recordings will end with “_1”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please feel free to modify the xml, for example using other separators.&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
The system sends the e-mail at the end of the conversation to the mail system. If the mail-system is down or not reachable, the e-mail gets lost. Please note that you can find the records anyway on the CF in the user folder. Since the records are not deleted after the mail is sent, you must delete them manually or adjust the xml script.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
*[http://download.innovaphone.com/ice/wiki-src#simplerec http://download.innovaphone.com/ice/wiki-src/] - download the complete file package of scripts and files described in this article.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[Howto:How_to_Configure_the_innovaphone_Voicemail|How to Configure the innovaphone Voicemail]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- voice recording, legal interception --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:PBX/Objects/Conference&amp;diff=59381</id>
		<title>Reference13r1:PBX/Objects/Conference</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:PBX/Objects/Conference&amp;diff=59381"/>
		<updated>2021-06-17T13:21:52Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX conference object manages conference rooms with announcements and PIN protection.&lt;br /&gt;
&lt;br /&gt;
The conference calls themselves are connected by one or more &#039;&#039;conference servers (MCU)&#039;&#039; registered to this object as devices. If more than one conference server is used, the different media types of the calls can be split to the different servers. innovaphone conference interfaces (CONF/SCNF) can be registered to this object to provide audio conferences with application sharing.&lt;br /&gt;
&lt;br /&gt;
== General Configuration ==&lt;br /&gt;
&lt;br /&gt;
The information about general configuration options shared by all objects can be found at [[{{NAMESPACE}}:PBX/Objects]].&lt;br /&gt;
&lt;br /&gt;
== Devices ==&lt;br /&gt;
; Hardware Id&lt;br /&gt;
: The hardware Id must match with a hardware Id of a device on the General page of the object (not the Gateway). The device is registered to this object and provides the conference service.&lt;br /&gt;
; innovaphone device&lt;br /&gt;
: This should be ticked if the MCU is an innovaphone device.&lt;br /&gt;
; Media Types&lt;br /&gt;
: If a media type is ticked, calls to the registration includes this media type.&lt;br /&gt;
; Channels Licenses&lt;br /&gt;
: use PBX-Channels-Licenses to enable conference functionality&lt;br /&gt;
; Number of channels&lt;br /&gt;
: The number of the available channels of the MCU device or maximum number of channels to be used. Leaving it empty means 0 (no channels)&lt;br /&gt;
; MCU Room Numbers&lt;br /&gt;
: If the device isn&#039;t an innovaphone device and has several rooms, the room numbers which are dialed can be configured here.&lt;br /&gt;
; Registration&lt;br /&gt;
: If a registration to this hardware Id exists, the IP address of the registrar is shown here.&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
; Announcement URL&lt;br /&gt;
: The URL where the announcements were saved. A &#039;$type&#039; within the URL is substituted for the announcement type string, e.g. &#039;&#039;&amp;lt;nowiki&amp;gt;http://127.0.0.1/webdav/conference/$type.$coder?coder=g722,g711u,g711a,g723,g729,opus-nb,opus-wb&amp;lt;/nowiki&amp;gt;&#039;&#039;. The announcement types are listed [[{{NAMESPACE}}:PBX/Objects/Conference/Announcement_types | here]].&lt;br /&gt;
; Extern Announcement Name/No: The conference object uses the internal HTTP interface, but announcements can also be provided by an external destination which name or number is to be configured here.&lt;br /&gt;
; Room number length&lt;br /&gt;
: If the room number length is zero, there is only one room available. If it isn&#039;t zero, static rooms can be configured and temporary rooms can be created with the operator.&lt;br /&gt;
; PIN&lt;br /&gt;
: If the room number length is zero, the PIN of the single conference room can be configured here. It can be empty or consists of four digits.&lt;br /&gt;
; Operator enabled&lt;br /&gt;
: If ticked, the operator is active. It can be reached if no room number is dialed.&lt;br /&gt;
; Trace&lt;br /&gt;
: If ticked, the trace of this PBX object is enabled.&lt;br /&gt;
&lt;br /&gt;
== Rooms ==&lt;br /&gt;
Up to &#039;&#039;30&#039;&#039; static rooms can be configured. If the room is called by the first member, the configured number of channels and all media types must be available otherwise the room isn&#039;t available. If the last member of a room leaves it, the reserved channels are released again.&lt;br /&gt;
A room is defined by:&lt;br /&gt;
; Room number&lt;br /&gt;
: The room number must be unique; it length depends on the room number length option.&lt;br /&gt;
; Number of channels&lt;br /&gt;
: The number of channels which must be available to open a room at dial-in. If this count of member is reached, the room is full and no further caller can take part.&lt;br /&gt;
; Media types&lt;br /&gt;
: If a media type is ticked, it is used for the call. If not all ticked media types are available at dial-in, the room can&#039;t be opened.&lt;br /&gt;
; PIN&lt;br /&gt;
: The room PIN can be empty or consists of four digits. The PIN can&#039;t be a part of the dialing number.&lt;br /&gt;
&lt;br /&gt;
== Operator ==&lt;br /&gt;
If the operator is enabled, users can dial in and create ad-hoc rooms. The requested number of channels for new rooms must be available and are reserved till the last member leaves the room.&lt;br /&gt;
; Operator Number&lt;br /&gt;
: The number which must be dialed instead of a room number to start the operator. Room numbers mustn&#039;t match with this number; numbers of new ad-hoc rooms are checked against it.&lt;br /&gt;
: &#039;&#039;&#039;Calls to the conference will be routed by default to the operator if no operator number is defined.&#039;&#039;&#039; &lt;br /&gt;
; PIN&lt;br /&gt;
: The operator PIN can be empty or consists of four digits. The PIN can&#039;t be a part of the dialing number.&lt;br /&gt;
; Media Types for ad-hoc rooms&lt;br /&gt;
: The media types which are used for the ad-hoc rooms. The room is also created if not all media types are available, but at least the audio channels.&lt;br /&gt;
; IVR Menu&lt;br /&gt;
: - PIN for access to operator&lt;br /&gt;
: - 3-digit room number&lt;br /&gt;
: - Maximum participants followed by #&lt;br /&gt;
: - 4 digit PIN followed by # (or only # for room without pin)&lt;br /&gt;
&lt;br /&gt;
Note: Overlap dialing to the Operator number it&#039;s not supported, it&#039;s necessary to dial the Conference Object Number plus the Operator Number &amp;quot;En-Block&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
For the supported announcements, please refer to [[{{NAMESPACE}}:PBX/Objects/Conference/Announcement types]].&lt;br /&gt;
&lt;br /&gt;
== Notifications ==&lt;br /&gt;
For notification of new participants entering the room, the routing can be adjusted to play a simple DTMF-tone.&lt;br /&gt;
Follow the config drawing below for setup:&lt;br /&gt;
&lt;br /&gt;
[[image:conf_interface_notification.png]]&lt;br /&gt;
&lt;br /&gt;
Remark: This does not apply to software conference interfaces (SNCF) as they do not support generation of DTMF sequences.&lt;br /&gt;
&lt;br /&gt;
== myPBX-built-in Conference App ==&lt;br /&gt;
&lt;br /&gt;
Remark: This is a myPBX-only-feature and has nothing to do with myAPPs-based V13-ConferenceAPP!&lt;br /&gt;
&lt;br /&gt;
Starting with V12r2, a conference room can be accessed via built-in application icon in myPBX&lt;br /&gt;
; Configuration&lt;br /&gt;
: - define at least one room with a dedicated number&lt;br /&gt;
: - in the Apps tab of the &#039;&#039;User&#039;&#039; or &#039;&#039;ConfigurationTemplate&#039;&#039; object the room is shown as license named &amp;lt;confobjectname&amp;gt;.&amp;lt;roomnumber&amp;gt;. Tick to grant for user&lt;br /&gt;
: - within myPBX, the app has to be made visible via app administration page&lt;br /&gt;
; Licensing&lt;br /&gt;
: - for conference-app use, a conferencing-app-license (order no. 02-00050-001) is required per user&lt;br /&gt;
: - as conference-app is a built-in myPBX app, a myPBX (order no. 02-00031-001) or UC (order no. 02-00044-001) -license is required per user as well&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept_Conference]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:PBX/Config/General&amp;diff=59351</id>
		<title>Reference13r1:PBX/Config/General</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:PBX/Config/General&amp;diff=59351"/>
		<updated>2021-06-16T07:14:02Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The fundamental operating modes of the PBX are configured on this page. &lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
;PBX Mode: The PBX operating mode&lt;br /&gt;
:* &#039;&#039;&#039;Off&#039;&#039;&#039; - The PBX is disabled. After enabling the PBX a browser refresh is needed to activate additional PBX webpages.&lt;br /&gt;
:* &#039;&#039;&#039;Master&#039;&#039;&#039; - The PBX on this device acts as Master. Within a multisite installation exactly one PBX must be configured as Master.&lt;br /&gt;
:* &#039;&#039;&#039;Slave&#039;&#039;&#039; - The PBX on this device acts as Slave. Within a multisite installation several PBXes can be configured as Slave.&lt;br /&gt;
:* &#039;&#039;&#039;Standby&#039;&#039;&#039; - The PBX on this device acts as Standby for the Master. As long as the master is available, this PBX is  not active, but just monitors the Master. If the Master is not available this PBX is active.&lt;br /&gt;
:* &#039;&#039;&#039;Standby-Slave&#039;&#039;&#039; - The PBX on this device acts as Standby for a Slave. As long as the slave is available, this PBX is  not active, but just monitors the slave. If the slave is not available this PBX is active.&lt;br /&gt;
&lt;br /&gt;
;System Name: The system Name. On all PBX within a multisite installation the same System Name must be configured. For H.323 endpoints this name is the gatekeeper identifier, for SIP endpoints it is the server name.&lt;br /&gt;
&lt;br /&gt;
;Use as Domain: Uses the &#039;&#039;System Name&#039;&#039; as domain name, together with the name field in the user object the PBX constructs the email address (used for sending emails out ox myPBX). This mechanism is also used for Federation, to federate with other domains.&lt;br /&gt;
&lt;br /&gt;
;PBX Name: The name of the PBX on this device. With this name a PBX is associated to a node. The field &#039;Name&#039; (not Long Name) of a PBX Node object relates to this name.&lt;br /&gt;
&lt;br /&gt;
;DNS: DNS Name of the PBX. If configured this will be used for myPBX redirects if a client tries to register at a PBX on which the user is not configured.&lt;br /&gt;
&lt;br /&gt;
;Unknown Registrations: If this checkmark is set, the PBX accepts &#039;unknown&#039; registrations. This means registrations with no matching object configured. If from an endpoint registered in this way a number of an object is dialed, which has no registration active and no &#039;HW-ID&#039; configured the name used for the registration is configured as &#039;HW-ID&#039; of this object. This is an easy way to deploy large numbers of phones.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;With PBX Pwd only:&#039;&#039;&#039; If checked only registrations with a PBX authentication or a verified certificate in case of H.323/TLS are accepted. In this case either &amp;quot;PBX Pwd&amp;quot; or &amp;quot;TLS only&amp;quot; is set in a device generated.&lt;br /&gt;
&lt;br /&gt;
;Reverse Proxy Addresses: Up to 8 addresses (no DNS names allowed) can be entered in this field, separated by comma. Registrations from one of these addresses are assumed to be routed through a Reverse Proxy. To the address &#039;/&amp;lt;certificate name&amp;gt;&#039; can be added to also check the TLS certificate of the Reverse Proxy. If the reverse proxy certificate is to be verified, the certificate or the issuer of the reverse proxy certificate must be trusted in the PBX.&lt;br /&gt;
; Assume TLS: If the &#039;&#039;Assume TLS&#039;&#039; checkmark is set, it is assumed, that the reverse Proxy did a successful check of the TLS certificate against the registration name.&lt;br /&gt;
&lt;br /&gt;
;IP address for App Platform&lt;br /&gt;
: The ip address of an App Platform can be configured here, with a DNS name used for it. If myApps uses a host to access the PBX different from the configured DNS name of the PBX, the hostname in any App url, which matches the configured AP DNS, is replaced by the AP IP. This way it is possible to configure a PBX with DNS names and access it with myApps when the DNS is not yet set up. If the checkmark &#039;&#039;Operation without DNS&#039;&#039; is set as well any matching DNS name is replaced also when an App service requests the URL of another App service (Example: Users requesting the URL of Devices for provisioning) and in the URL sent to the App services itself (Example: Devices uses this URL to construct the URL set at devices for the Devices registration).&lt;br /&gt;
&lt;br /&gt;
: Note that this mode is intended to be able to run the PBX using DNS names while the DNS is not yet in place. Once the DNS is up and running, neither the DNS name of the AP nor its IP address should be configured here.&lt;br /&gt;
&lt;br /&gt;
;Music On Hold URL: A URL for the Music On Hold. This file is read by the PBX using HTTP and sent to a held endpoint via RTP. The format of this URL is&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;addr&amp;gt;/&amp;lt;file&amp;gt;$coder?coder=g711a,g711u,g722,g723,g729,opus-nb,opus-wb&amp;amp;repeat=true&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;. &amp;lt;addr&amp;gt; is the IP address of the http server, no dns name is allowed here. &amp;lt;file&amp;gt; is the filename. $coder will be replaced by the actual coder used.&lt;br /&gt;
&lt;br /&gt;
:Parameters: &#039;&#039;coder=g729,g711a,g711u,g723,opus-nb,opus-wb&#039;&#039; is the list of available coders. Only these coders must be specified for which a corresponding file exists. &#039;&#039;repeat=true&#039;&#039; should be specified in order to loop the file endlessly. &#039;&#039;random=true&#039;&#039; can be used to start the music on hold on a random point (this will work only if the URL is not local though).&lt;br /&gt;
&lt;br /&gt;
:By default the built-in Music-On-Hold is played (Pseudo URL: &amp;quot;MOH?coder=g729,g711a,g723&amp;amp;repeat=true&amp;quot;).  You can also play a dial tone (Pseudo URL &amp;quot;TONE&amp;quot;) or a ring-back tone (Pseudo URL &amp;quot;TONE?tone=ringback&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
:The maximum length of the URL is limited to 500 characters (bytes).&lt;br /&gt;
&lt;br /&gt;
:If you configure a wrong (or invalid) URL then you will have silence as MOH. To prevent this situation when the MoH for some specific context/user(see below) is missing and silence is played instead of any MoH, an additional parameter &#039;&#039;fallback=true&#039;&#039; is available. If the file provided in the URL is missing (HTTP Error 404 Not Found is delivered by the HTTP Server) and the parameter &#039;&#039;fallback&#039;&#039; is provided, the default MoH will be played instead of silence. To use a custom file as fallback MoH, instead of default MoH, any file name can be provided with the &#039;&#039;fallback&#039;&#039; parameter: e.g. &#039;&#039;fallback=other_filename&#039;&#039;. The file other_filename.g7xx must be placed in the same folder as a file provided with URL. A special filename &#039;&#039;fallback=ringback&#039;&#039; can be used to generate a ringback tone (equivalent to &#039;&#039;TONE?tone=ringback&#039;&#039;) instead to play an alternative file.&lt;br /&gt;
&lt;br /&gt;
:Within the URL %&amp;lt;id&amp;gt; can be used to put in some context information of the call. The information refers to the party which has put the receiving party on hold. For information about the receiving party itself, the id has to be preceded by &#039;.&#039; (e.g. &#039;&#039;&#039;.l&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;l&#039;&#039;&#039; Long Name&lt;br /&gt;
:&#039;&#039;&#039;h&#039;&#039;&#039; Name (H.323 id)&lt;br /&gt;
:&#039;&#039;&#039;n&#039;&#039;&#039; Number&lt;br /&gt;
:&#039;&#039;&#039;N&#039;&#039;&#039; Node&lt;br /&gt;
:&#039;&#039;&#039;P&#039;&#039;&#039; PBX&lt;br /&gt;
:&#039;&#039;&#039;d&#039;&#039;&#039; Diverting Name&lt;br /&gt;
:&#039;&#039;&#039;#d&#039;&#039;&#039; Diverting Number&lt;br /&gt;
&lt;br /&gt;
: See [[Howto:Dynamic_MOH]] for more details on how to use dynamic music on hold.&lt;br /&gt;
&lt;br /&gt;
;External Music On Hold: To offload the device from playing the Music on hold, the Music On Hold can be played by a separate device. This device can register with a name configured here. To retrieve the Music On Hold a call is sent to this device. For each held endpoint a call is sent.&lt;br /&gt;
&lt;br /&gt;
;Response Timeout: Global timeout (in seconds) after which any action for no response is taken (e.g. Call Forward on No Response). A timeout configured at any object overrides this value.&lt;br /&gt;
&lt;br /&gt;
;Dial Complete Timeout: Global timeout (in seconds) after which any action for incomplete dialed number is taken (e.g. incomplete destination at trunk object).&lt;br /&gt;
&lt;br /&gt;
;No. of Regs w/o Pwd: Number of registration without password authentication which are allowed per user. If 0 is configured no registration without password is possible.&lt;br /&gt;
Pls. note that registrations from 127.0.0.1 w/o password will be accepted anyway&lt;br /&gt;
&lt;br /&gt;
;Security block time(s): Time for which a registration to a user is blocked after attempt with wrong password. Default is 20s. With a value of 0 this features is turned off.&lt;br /&gt;
&lt;br /&gt;
;Recall Timeout: A value configured here enables recall after transfer. If a call is transferred and not answered within this time, the call is sent back to the transferring endpoint.&lt;br /&gt;
&lt;br /&gt;
;Max Call Duration (h): Number of hours until a call with media is disconnected automatically. Affects all calls with initialized media channels signalled via PBX.&lt;br /&gt;
&lt;br /&gt;
;Group Default Visibility: Allows to restrict default visibility to active group members. If changed active subscriptions are not affected. Is used to prevent standard users from getting access to sensitive information like activities/presences of group members in myPBX. If not generally allowed by the administrator via this setting, normal users are not able to change it via myPBX.&lt;br /&gt;
&lt;br /&gt;
;Presence with Alert: Enable presentation of presence on phone upon alert. Setting applies for all PBX users. Alternatively, display of presence subject only delivered by Exchange can be prohibited - see [[Reference10:Concept_Exchange_Calendar_Connector#Exchange|Exchange Calendar Connector : Omit Subject]]&lt;br /&gt;
&lt;br /&gt;
;Enable External Transfer: Unless this checkbox is set any attempt to transfer an external call back to an external destination will result in disconnection of the call.&lt;br /&gt;
&lt;br /&gt;
;No CLIR on Internal calls: If checked numbers are displayed even if received with presentation restricted. When sending a call presentation restricted can still be set and should be honored by a public network.&lt;br /&gt;
&lt;br /&gt;
;Media Relay:&lt;br /&gt;
:;Off: No Media Relay is done in the PBX &lt;br /&gt;
:;On: All media traffic is routed through the PBX.  With the &#039;&#039;&#039;No Media Relay if Addresses are identical or private&#039;&#039;&#039; checkmark, this is not done if the two call endpoints registration addresses are either private or equal (i.e. external endpoints behind the same NAT router).  To identify an address as private the &amp;quot;Private Networks&amp;quot; configuration from &#039;&#039;IP4/General/Settings&#039;&#039; is used.&lt;br /&gt;
:;Auto: Media traffic is routed through the PBX if calls are between private and public registration addresses but not for calls between private and private or public and public registration addresses. To identify an address as private the &amp;quot;Private Networks&amp;quot; configuration from &#039;&#039;IP4/General/Settings&#039;&#039; is used. In v11 this was the behaviour if &#039;&#039;RTP Proxy&#039;&#039; was &#039;&#039;on&#039;&#039;.&lt;br /&gt;
: Please note that when media relay is in effect for a call,  &#039;&#039;&#039;video is not working&#039;&#039;&#039;.   With ICE (available from v12r1), media relay in the PBX should be obsolete except for special applications.  Check &#039;&#039;On&#039;&#039; or &#039;&#039;Auto&#039;&#039; only if you need to have this, since it creates CPU load on the PBX.&lt;br /&gt;
&lt;br /&gt;
;Generate CDRs: If this checkbox is set, the PBX generates CDRs for all calls. See [[Reference9:Concept_Call_Detail_Record_CDR_PBX]] for a description of the CDRs.&lt;br /&gt;
&lt;br /&gt;
;Reverse Lookup URL&lt;br /&gt;
: A String in the LDAP URL Format according [https://tools.ietf.org/html/rfc2255 RFC2255] which will be used by the PBX to make a lookup for all external numbers.&lt;br /&gt;
: Number resolutions will be forwarded to internal applications like generated CDRs, Phone App etc..&lt;br /&gt;
: Example: &#039;&#039;ldaps://ap.innovaphone.com/dc=entries?givenname,sn,company?sub?(metaSearchNumber=+%n)?bindname=innovaphone.com\contacts&#039;&#039;&lt;br /&gt;
:* dn:  &#039;&#039;dc=entries&#039;&#039;&lt;br /&gt;
:* attributes: &#039;&#039;givenname,sn,company&#039;&#039;&lt;br /&gt;
:* scope: &#039;&#039;sub&#039;&#039;&lt;br /&gt;
:* filter: &#039;&#039;(metaSearchNumber=+%n)&#039;&#039;&lt;br /&gt;
:** %n is a placeholder for the given cgpn&lt;br /&gt;
:* extension: &#039;&#039;bindname=innovaphone.com\contacts&#039;&#039;&lt;br /&gt;
:** The username for the authentication.&lt;br /&gt;
:&#039;&#039;&#039;Variables&#039;&#039;&#039;&lt;br /&gt;
:* %n - cgpn&lt;br /&gt;
:* %u - h323 name of the current object&lt;br /&gt;
: Also there is an additional field for the LDAP password&lt;br /&gt;
: Examples are listed in the [[Reference13r1:Concept_Number_Resolution_and_LDAP#PBX_Configuration|Concept Article]]&lt;br /&gt;
&lt;br /&gt;
;Route Root-Node External Calls to: Destination object (Long Name) of Root-Node external calls. This configuration option is available on the Master or Standby PBX only. Any call call which cannot be terminated inside the PBX is sent to this destination as long as neither the source nor the destination of the call can be associated with a node with a PBX configured. This object must be assigned to this PBX.&lt;br /&gt;
:&#039;&#039;&#039;For calls from local PBX only&#039;&#039;&#039;: If set on a master, calls from a slave are not sent to this destination but sent back to the slave where the call came from. On the slave the call is then sent to a destination configured with &#039;Route Root-Node External Calls to&#039;.&lt;br /&gt;
&lt;br /&gt;
;Route PBX-Node External Calls to: Destination object (Long Name) of PBX-Node external calls. Any call which cannot be terminated inside the PBX is sent to this destination as long as the source nor the destination of the call can be associated with the node of this PBX. If a call is sent from or to an object defined inside the node of this PBX or in a node hierarchically below the node of this PBX the call is associated to the node of this PBX. This object must be assigned to this PBX, that is, it has to register to this PBX.&lt;br /&gt;
&lt;br /&gt;
;Route Internal Calls to: Destination object (Long Name) to which any call is sent for which a PBX internal destination was found, except for those calls that originated from that object. This can be used to apply special routing on PBX internal calls.&lt;br /&gt;
&lt;br /&gt;
;Escape Dialtone from: The PBX object (Long Name) to which a call is made to get a dialtone if a dialtone is configured for the escape of a node. As above, this object must be assigned to this PBX.&lt;br /&gt;
&lt;br /&gt;
;Prefix for Intl/Ntl/Subscriber/Area-Code/Country-Code: Prefixes to be used to map International, National and Subscriber numbers.&lt;br /&gt;
:* &#039;&#039;&#039;International Prefix&#039;&#039;&#039; (&amp;lt;code&amp;gt;000&amp;lt;/code&amp;gt; in Germany).&lt;br /&gt;
:* &#039;&#039;&#039;National Prefix&#039;&#039;&#039; (&amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; in Germany).&lt;br /&gt;
:* &#039;&#039;&#039;Subscriber&#039;&#039;&#039; (in Germany, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; is a commonly used trunk line access code).&lt;br /&gt;
::The SubscriberID is used for hotkey-actions within myAPPs-launcher. By use of node-objects, adjust the Subscriber Prefix in the respective [[{{NAMESPACE}}:PBX/Objects/Node#Number_Mapping_.28International.2C_National.2C_Subscriber_Prefix.29|node object number mapping]].&lt;br /&gt;
::For myPBX-launcher hotkeys, refer to the [[{{NAMESPACE}}:Phone/User/Directories#Dialing_location|dialing location settings]].&lt;br /&gt;
&lt;br /&gt;
:* &#039;&#039;&#039;Area-Code&#039;&#039;&#039; (in Germany for example, the town Mannheim has area code &amp;lt;code&amp;gt;621&amp;lt;/code&amp;gt;).&lt;br /&gt;
:* &#039;&#039;&#039;Country-Code&#039;&#039;&#039; (for Germany, &amp;lt;code&amp;gt;49&amp;lt;/code&amp;gt; would be used)&lt;br /&gt;
&lt;br /&gt;
: These settings resemble the same settings found in the [[{{NAMESPACE}}:PBX/Objects/Node | Node ]] and [[{{NAMESPACE}}:PBX/Objects/PBX | PBX ]] object. However, they apply to the &#039;&#039;root&#039;&#039; node instead (and should be consistent through all PBXs in a multi-PBX system).&lt;br /&gt;
&lt;br /&gt;
;Adjust LDAP results for e.164: Add a &amp;quot;+&amp;quot; prefix to an PBX-internal LDAP-contact-search result. This is used for 3rd-party- and DECT-phones which are not able to benefit from the Dialing Location settings in case of LDAP-search in an E.164-setup.&lt;br /&gt;
&lt;br /&gt;
;Tones: The tones scheme to be used for PBX generated dialtones. This applies to dialtones generated for node prefixes, ringback on transfer and some more.&lt;br /&gt;
&lt;br /&gt;
=== Slave PBX ===&lt;br /&gt;
&lt;br /&gt;
If the PBX is operated in Slave mode, then the Slave PBX section is displayed&lt;br /&gt;
&lt;br /&gt;
;Registration: The VOIP protocol used for the registration to the master. Possible choices are H.323, H.323/TCP or H.323/TLS.&lt;br /&gt;
&lt;br /&gt;
;Master: The IP address of the PBX master&lt;br /&gt;
&lt;br /&gt;
;License Only: If set, the PBX obtains license from master, but acts as master in all other respects.&lt;br /&gt;
&lt;br /&gt;
;Alternate Master: The IP address of an alternative PBX master (standby, if available)&lt;br /&gt;
&lt;br /&gt;
;Password: The password to be used for registration at the Master as configured in the corresponding PBX Object (The length of the password is limited to 16 characters)&lt;br /&gt;
&lt;br /&gt;
;Master GK-ID: The System Name/Gatekeeper ID of the PBX Master were will register (Optional, usually used for DynPBX).&lt;br /&gt;
&lt;br /&gt;
;Replication: This parameter allows you to select the replication style for the slave PBX: either &#039;&#039;All&#039;&#039; or &#039;&#039;Local&#039;&#039; (only users that need to be known in this PBX). For the replication process the [[Reference9:PBX/Config/Security|PBX Password]] is used which have to be the same password on all PBXes in the system.&lt;br /&gt;
&lt;br /&gt;
;dyn PBX ID: This parameter allows to set replication from a specific DynPBX configured on the Master Device.&lt;br /&gt;
&lt;br /&gt;
;Use local static User DB: A dynPBX has also this checkmark. The database of the main PBX is used, but be careful due to the increased memory usage. The dynPBX will create its own PBX datastructure which allocates memory.&lt;br /&gt;
&lt;br /&gt;
;Route Master calls if no Master to: If the master is not available, master calls are sent to this destination. Destination has to be an object with active registration.&lt;br /&gt;
&lt;br /&gt;
;Max Calls to Master/No Reroute: This parameter can be used to limit the calls to the master. If a call is sent to the master and there are already calls to/from the master equal to or exceeding this value, the call is rejected if &#039;&#039;&#039;No Reroute&#039;&#039;&#039; is set or is handled as if the master was not available otherwise.&lt;br /&gt;
&lt;br /&gt;
;License Limits: Here we can set limit of licensing for this Slave PBX for Port, Mobility, Operator and Softwarephone.&lt;br /&gt;
&lt;br /&gt;
For complete replication from master to slave, check also password in [[Reference9:Administration/PBX/Security]]&lt;br /&gt;
&lt;br /&gt;
=== Standby PBX ===&lt;br /&gt;
&lt;br /&gt;
If the PBX is operated in Standby mode, then the Standby PBX section is displayed&lt;br /&gt;
&lt;br /&gt;
;Master: The IP address of the PBX master&lt;br /&gt;
&lt;br /&gt;
;Replicate from Master: Turns on full replication from the master PBX&lt;br /&gt;
&lt;br /&gt;
;use TLS: Use LDAPS (TLS) instead of LDAP (TCP).&lt;br /&gt;
&lt;br /&gt;
For complete replication from master to slave or standby, check also password in [[Reference9:Administration/PBX/Security]]&lt;br /&gt;
&lt;br /&gt;
== License Status ==&lt;br /&gt;
&lt;br /&gt;
=== Licenses ===&lt;br /&gt;
&lt;br /&gt;
A list of all installed PBX license with their current usage is displayed here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Count: The total number of installed licenses of this type.&lt;br /&gt;
&lt;br /&gt;
;Usage: The total usage of this license type&lt;br /&gt;
&lt;br /&gt;
;Local: The usage of this license on this PBX&lt;br /&gt;
&lt;br /&gt;
;Slaves: The usage of this license on PBX&#039;s registered to this PBX.&lt;br /&gt;
&lt;br /&gt;
see [[Reference10:Licenses]] for a description of the licenses.&lt;br /&gt;
&lt;br /&gt;
=== Registrations ===&lt;br /&gt;
&lt;br /&gt;
The current number of registrations and the limit as defined by the base license is displayed here. Because this limit is defined by the base license it includes any registrations because of standby as well, which require no registration license.&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform&amp;diff=53266</id>
		<title>Reference13r1:Concept App Platform</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform&amp;diff=53266"/>
		<updated>2019-08-21T07:06:15Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General =&lt;br /&gt;
* V13 uses [https://buildroot.org/ buildroot]&lt;br /&gt;
* this is an own (innovaphone) collection of packages&lt;br /&gt;
* For further information see: [https://buildroot.org/docs.html Buildroot Documentations]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* V13 or up&lt;br /&gt;
* Gateway (arm): IPx10 (with CF card) or IPx11 (with mSATA SSD) &lt;br /&gt;
* Virtual (x86_64): HyperV or VMWare&lt;br /&gt;
&lt;br /&gt;
== Default credentials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;During INSTALL, the default passwords are replaced with the global Admin PW!&#039;&#039;&#039;&lt;br /&gt;
* SSH-Login with &#039;&#039;&#039;admin&#039;&#039;&#039; and &#039;&#039;&#039;ipapps&#039;&#039;&#039;&lt;br /&gt;
* root login with &#039;&#039;&#039;root&#039;&#039;&#039; and &#039;&#039;&#039;iplinux&#039;&#039;&#039; (the root login is not directly possible, you have to login as admin first and use the command &#039;&#039;su root&#039;&#039;)&lt;br /&gt;
* manager App (web login) &#039;&#039;&#039;pwd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= App Platform - arm (Gateway)=&lt;br /&gt;
&lt;br /&gt;
* The installation image has a size of ~50MB. During installation, the following partitions are created:&lt;br /&gt;
** /dev/sda1 fat32: 200MB (contains ramdisk, rootfs and kernel)&lt;br /&gt;
** /dev/sda2 ext4: depends on disk size (contains databases, log files and apps)&lt;br /&gt;
** /dev/sda3 ext4: 500MB (contains the rootfs)&lt;br /&gt;
** /dev/sda4 swap: 512MB&lt;br /&gt;
&lt;br /&gt;
= App Platform - x86-64 (Virtual Machine) =&lt;br /&gt;
&lt;br /&gt;
* The default disk size is 16GB. It should be increased &#039;&#039;&#039;before&#039;&#039;&#039; the first start if needed!&lt;br /&gt;
&lt;br /&gt;
* Multiple CPUs are supported, default is one CPU&lt;br /&gt;
&lt;br /&gt;
* default RAM: 512MB&lt;br /&gt;
* static IP address, DNS, Gateway can be configured with the command &#039;&#039;&#039;setip&#039;&#039;&#039; on the console. Run &#039;&#039;&#039;setip --help&#039;&#039;&#039; to get a list of parameters. (Example: setip --addr=x.x.x.x --mask=x.x.x.x --gateway=x.x.x.x --dns1=x.x.x.x) &lt;br /&gt;
* If you have permission problems change to su user (Password is iplinux or your new admin password)  &lt;br /&gt;
* To figure out your ip address you can use the command: &#039;&#039;ip address&#039;&#039; on the console.&lt;br /&gt;
* &#039;&#039;&#039;loadkeys de&#039;&#039;&#039; can be used to change to german keyboard layout (etc.)&lt;br /&gt;
&lt;br /&gt;
* partitions:&lt;br /&gt;
** /dev/sda1 ext2: 350MB (contains ramdisk, rootfs and kernel)&lt;br /&gt;
** /dev/sda2 ext4: depends on disk size (contains databases, log files and apps)&lt;br /&gt;
** /dev/sda3 ext4: 500MB (contains the rootfs)&lt;br /&gt;
** /dev/sda4 swap: 512MB&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
==ARM Gateway==&lt;br /&gt;
&lt;br /&gt;
If you setup a Gateway with the install procedure, the App Platform is installed automatically (Https Download has to be allowed and shouldn&#039;t be blocked by any firewall.)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You can also install it manually:&lt;br /&gt;
* Open App Platform -&amp;gt; General and &#039;&#039;&#039;Enable Linux Support&#039;&#039;&#039;. Restart the gateway.&lt;br /&gt;
* You need to enable Proxy-ARP on [[Reference13r1:IP4/ETH/IP|ETH0]] or [[Reference13r1:IP4/ETH/IP|ETH1]], so your Gateway and the Linux Appliance will share the same physical interface.&lt;br /&gt;
* Open App Platform -&amp;gt; IP and configure the IP settings of the App Platform. Restart the Gateway.&lt;br /&gt;
* Open App Platform -&amp;gt; Installation and select the given version or enter an own path to the &#039;&#039;app-platform-armel.img&#039;&#039; image file.&lt;br /&gt;
* The installation runs without any further required step.&lt;br /&gt;
&lt;br /&gt;
==Virtual machine==&lt;br /&gt;
&lt;br /&gt;
* Import the image into your server environment.&lt;br /&gt;
* Edit the disk size, if needed.&lt;br /&gt;
* Start the machine and wait until it reboots and starts again.&lt;br /&gt;
* Note: If you need to access an IP addresses available through a VPN connectionfrom from inside the virtual machine, it could be that you need to set the network of your VM to NAT (and also add the URL for an IP to /etc/hosts)&lt;br /&gt;
&lt;br /&gt;
== Backup of the Apps ==&lt;br /&gt;
&lt;br /&gt;
Each App Service can have multiple instances and each instance has its own database. The manager app itself also has its own database.&amp;lt;br&amp;gt;&lt;br /&gt;
There are no other files which need to be backuped.&amp;lt;br&amp;gt;&lt;br /&gt;
The standard way to backup the databases is through the Devices App [[Reference13r1:Concept_App_Service_Devices#Backups]].&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
An alternate way is to use a command file which is similar to the command files from the firmware.&lt;br /&gt;
&lt;br /&gt;
===Commands===&lt;br /&gt;
* &#039;&#039;&#039;times&#039;&#039;&#039; 0,12 # backup only at 0 or 12 o&#039;clock&lt;br /&gt;
* &#039;&#039;&#039;backup-instances&#039;&#039;&#039; http://user:pw@ip/path/#I-#D.dump PUT&lt;br /&gt;
** PUT and POST are supported, all instances including the manager itself are saved&lt;br /&gt;
* &#039;&#039;&#039;backup-instance&#039;&#039;&#039; http://user:pw@ip/path/#I-#D.dump apidemo example.com PUT&lt;br /&gt;
** backup a single instance with instance name and instance domain&lt;br /&gt;
* &#039;&#039;&#039;backup-manager&#039;&#039;&#039; http://user:pw@ip/path/#I-#D.dump&lt;br /&gt;
&lt;br /&gt;
===Hash parameters===&lt;br /&gt;
* #L App Platform label (neu), e.g. 10024&lt;br /&gt;
* #A App label (neu), e.g. 130004&lt;br /&gt;
* #I instance name (neu), e.g. reporting1&lt;br /&gt;
* #D instance domain (neu), e.g. innovaphone.com&lt;br /&gt;
* #m MAC address of the LAP, e.g. 00ab11eeff&lt;br /&gt;
* #d Current date and time (plain UTC without daylight saving and timezone adjustments) 20051010-170130&lt;br /&gt;
* #bn rolling backup index&lt;br /&gt;
* ## escapes a hash mark&lt;br /&gt;
&lt;br /&gt;
= App Platform Infrastructure and Concept =&lt;br /&gt;
== Webserver ==&lt;br /&gt;
The app platform includes a webserver that is highly optimized for handling many Websocket connections at a low memory footprint.&lt;br /&gt;
All apps use that webserver by registering for specific HTTP subpath. So they can all use the same HTTP/HTTPS ports - typically the standard ports.&lt;br /&gt;
&lt;br /&gt;
=== Import Custom SSL Certificate ===&lt;br /&gt;
You have to upload a PEM Certificate with the following chain structure and without password encoding.&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;
 (certificate Key: your_domain_name.key)&lt;br /&gt;
 -----END RSA PRIVATE KEY-----&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 (certificate: your_domain_name.crt)&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 (Intermediate certificate: DigiCertCA.crt)&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 (Root certificate: TrustedRoot.crt)&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
The app platform creates a database for each app instance with a given password. In the installer there will be used randomly generated passwords. You can set a new database password for every instance in the Application Platform.&lt;br /&gt;
&lt;br /&gt;
The apps should store all data in that database. That makes sure that a consistent backup and restore of app instances can be done by the app platform manager.&lt;br /&gt;
In hosted scenarios, having separate databases for each instance also makes sure that the data of different customers are clearly separated and can easily be moved from one physical platform to another.&lt;br /&gt;
&lt;br /&gt;
The default configuration decline database request from extern. If you need external access you can change the PGSQL configuration in the file &#039;&#039;/mnt/sda2/pgsql/pg_hba.conf&#039;&#039;. (Please think about it before you do it, because a better way is to create your own local app with local database access.)&lt;br /&gt;
&lt;br /&gt;
== App Platform Manager ==&lt;br /&gt;
The App Platform Manager is the central component of the App Platform. It does the following:&lt;br /&gt;
* Installing app services by downloading the binaries from an app store.&lt;br /&gt;
* Running and monitoring app services. If an app service crashes it is restarted, automatically.&lt;br /&gt;
* Management of app instances and providing them with the environment they need:&lt;br /&gt;
** A database&lt;br /&gt;
** A webserver path&lt;br /&gt;
** A password for authentication&lt;br /&gt;
* Backup and restore of app instances.&lt;br /&gt;
* Collecting debug information like tracing and crash dumps.&lt;br /&gt;
* System monitoring (CPU usage, memory usage, etc).&lt;br /&gt;
&lt;br /&gt;
== App Services ==&lt;br /&gt;
App services are runned by the App Platform Manager. They implement an interface that is used by the manager to start, stop and configure app instances. Each service runs in a separate child process of the manager.&lt;br /&gt;
&lt;br /&gt;
== App Instances ==&lt;br /&gt;
The actual functionality of an app service is provided by app instances. They run in the same process as the app service but have a distinct webserver path and their own database. There can be 0..n instances of an app service. Instances can optionally host (web) apps that can be opened in the myApps client.&lt;br /&gt;
&lt;br /&gt;
Each instance of an App service has two passwords. The instance password itself and a database password. If you want to change it you must update the password on both sides.&amp;lt;br&amp;gt;&lt;br /&gt;
The instance password must match to the password in the corresponding PBX App objects, while one instance can have different App objects.&amp;lt;br&amp;gt;&lt;br /&gt;
The database password must be just known to the manager and not outside of the App Platform.&lt;br /&gt;
&lt;br /&gt;
== Relationship between app instances and app objects in the PBX ==&lt;br /&gt;
Typically an app instance is connected to one or more app objects in a customer PBX. This is done by configuring the same parameters on both sides:&lt;br /&gt;
* URL&lt;br /&gt;
* Password&lt;br /&gt;
The password is used by the PBX for authenticating itself, users and services against the app instance.&lt;br /&gt;
&lt;br /&gt;
Some apps need a websocket connection with the PBX. When &amp;quot;websocket&amp;quot; is activated at the app object, the PBX establishes a websocket connection to the app instance and provides the APIs that are configured at the app object.&lt;br /&gt;
&lt;br /&gt;
=== Supported scenarios ===&lt;br /&gt;
It is important to understand that the concept does not do any assumptions on how PBXes and APs are correlated. So you can have&lt;br /&gt;
* One AP for one customer&lt;br /&gt;
* [[Howto:V13_Install_many_APs_for_many_customers|Many APs for one customer]]&lt;br /&gt;
* [[Howto:V13_Install_one_AP_for_many_customers|One AP for many customers]]&lt;br /&gt;
&lt;br /&gt;
Attention: At the moment, the v13 installer can only configure the scenario &amp;quot;&#039;&#039;One AP for one customer&#039;&#039;&amp;quot;. If you want to have a different scenario, you have to configure it manually.&lt;br /&gt;
&lt;br /&gt;
=== Restrictions ===&lt;br /&gt;
Currently we don&#039;t have redundancy for app instances or APs.&lt;br /&gt;
&lt;br /&gt;
= Tracing =&lt;br /&gt;
Each App Service has its own log file, which can be accessed through the Manager App. You can configure a log file size for each App Service.&amp;lt;br&amp;gt;&lt;br /&gt;
Each App Intance has its own trace flags. The following trace flags can be set:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Alarm client: used by the manager to send alarms to an alarm server&lt;br /&gt;
* App: logs from the App Service itself&lt;br /&gt;
* App WebSocket: logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)&lt;br /&gt;
* AppSharing: just native clients&lt;br /&gt;
* AppProxy: just native clients, logs requests which are proxied between the local webserver and the remote server&lt;br /&gt;
* Audio: just native clients&lt;br /&gt;
* Browser: just native clients&lt;br /&gt;
* Command: the command interface is used to execute shell commands, e.g. used by the manager App&lt;br /&gt;
* Config: logs config changes of an App&lt;br /&gt;
* Database: database logs&lt;br /&gt;
* DB files: database file logs&lt;br /&gt;
* DNS: DNS request logging&lt;br /&gt;
* DTLS: just native clients, DTLS request logging&lt;br /&gt;
* Ethernet: interface to get ethernet adapater infos, just manager App&lt;br /&gt;
* File: logs for file system access (synchronous), e.g. manager App&lt;br /&gt;
* Files: logs for file system access (asynchronous)&lt;br /&gt;
* HTTP client: http client logs&lt;br /&gt;
* HTTP file: logs for static HTTP files&lt;br /&gt;
* ICE: just native clients&lt;br /&gt;
* LDS: local domain sockets &lt;br /&gt;
* Media: just native clients&lt;br /&gt;
* Media channel: just native clients&lt;br /&gt;
* Process: IProcess interface logs which is used for spawning, killing processes etc.&lt;br /&gt;
* SMTP: SMTP client logs&lt;br /&gt;
* TCP: TCP logs&lt;br /&gt;
* Time: ITime interface logs&lt;br /&gt;
* TLS: TLS logs&lt;br /&gt;
* TURN: just native clients&lt;br /&gt;
* UDP: UDP logs&lt;br /&gt;
* Video: just native clients&lt;br /&gt;
* WebSocket client: logs outgoing websocket connections&lt;br /&gt;
* Webserver traffic: logs incoming HTTP traffic, which is forwarded from the webserver to the App&lt;br /&gt;
* WebDAV service: logs WebDAV requests to the App&lt;br /&gt;
* Webserver: enables webserver specific logs&lt;br /&gt;
&lt;br /&gt;
= How-Tos =&lt;br /&gt;
&lt;br /&gt;
== Resizing the disk of a Virtual machine ==&lt;br /&gt;
&lt;br /&gt;
* stop the VM&lt;br /&gt;
* expand the disk using your VM utilities&lt;br /&gt;
* start the VM and boot from the first boot entry &#039;&#039;&#039;rescue/setup&#039;&#039;&#039;&lt;br /&gt;
* login with &#039;&#039;&#039;root&#039;&#039;&#039; and &#039;&#039;&#039;iplinux&#039;&#039;&#039;&lt;br /&gt;
* call &#039;&#039;&#039;/home/root/install_step1.sh log.txt resize&#039;&#039;&#039;&lt;br /&gt;
* the VM reboots automatically after a successful resize&lt;br /&gt;
&lt;br /&gt;
== Change IP Addresses / DNS Names ==&lt;br /&gt;
&lt;br /&gt;
If you want to change the System Name or the DNS Name of the PBX and/or AP Platform you must change records manually &#039;&#039;&#039;in the described order&#039;&#039;&#039;!&lt;br /&gt;
You have to know the Admin password to directly Login to the AP-Plattform.&lt;br /&gt;
&lt;br /&gt;
=== App Platform ===&lt;br /&gt;
; Settings - General&lt;br /&gt;
* &#039;&#039;Devices app URL&#039;&#039;&lt;br /&gt;
* &#039;&#039;App platform DNS name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Settings - Alarms and Events&lt;br /&gt;
* &#039;&#039;URL&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; All Instances&lt;br /&gt;
* &#039;&#039;Domain&#039;&#039;&lt;br /&gt;
* &#039;&#039;Webserver path&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PBX ===&lt;br /&gt;
Download the configuration and &#039;&#039;search/replace&#039;&#039; in the config file. Upload the config file and reboot.&lt;br /&gt;
&lt;br /&gt;
Manual:&lt;br /&gt;
* &#039;&#039;URL&#039;&#039; in all PBX Object (Apps, Voicemail ...)&lt;br /&gt;
* &#039;&#039;IP address for App Platform&#039;&#039; in PBX::Config::General &lt;br /&gt;
* &#039;&#039;Reset Password Page&#039;&#039; in PBX::Config::myApps&lt;br /&gt;
* &#039;&#039;Verification link&#039;&#039; in PBX::Config::Authentication&lt;br /&gt;
* &#039;&#039;Reset Password Page&#039;&#039; in PBX::Config::myApps&lt;br /&gt;
&lt;br /&gt;
=== Additional Devices / Steps ===&lt;br /&gt;
* &#039;&#039;Devices Registration URL&#039;&#039;&lt;br /&gt;
* &#039;&#039;Alarm server&#039;&#039;&lt;br /&gt;
* Reverse Proxy configuration&lt;br /&gt;
* Change &#039;&#039;Domain Name&#039;&#039; in Devices if you have also changed the system name&lt;br /&gt;
&lt;br /&gt;
== How to recover from a broken File System ==&lt;br /&gt;
Sometimes you may find messages in the &#039;&#039;messages&#039;&#039; log file (in &#039;&#039;var/log&#039;&#039;) like&lt;br /&gt;
&lt;br /&gt;
 initial error at 1500329378: ext4_journal_start_sb:328&lt;br /&gt;
 last error at 1500329378: ext4_journal_start_sb:328&lt;br /&gt;
&lt;br /&gt;
Or you get events like &amp;quot;Broken file system&amp;quot; from your AP.&lt;br /&gt;
&lt;br /&gt;
This indicates a file system failure on the Linux Installation.&lt;br /&gt;
&lt;br /&gt;
When the Linux file system is broken, you can try to repair it using some command line Linux tools.&lt;br /&gt;
&lt;br /&gt;
If this doesn&#039;t fix your issue, you need to replace the SSD with a new one, re-install the App Platform and any applications and restore your backups.&lt;br /&gt;
&lt;br /&gt;
=== Gateway ===&lt;br /&gt;
&lt;br /&gt;
* Open the WebGUI of the gateway running your LAP and proceed to &#039;&#039;App Platform/General&#039;&#039;&lt;br /&gt;
** terminate Linux (&#039;&#039;Status/Stop&#039;&#039;)&lt;br /&gt;
** modify the Kernel command line from root=/dev/sda3 to root=/dev/ram0&lt;br /&gt;
** modify the Initrd file to ramdisk.ext2.xz&lt;br /&gt;
** modify the ramdisk size to 100000&lt;br /&gt;
** start Linux again&lt;br /&gt;
:: This will run Linux on another (hopefully sane) partition.&lt;br /&gt;
&lt;br /&gt;
* use [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty] to log in to the LAP&#039;s command line&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda2&amp;lt;/code&amp;gt;&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda3&amp;lt;/code&amp;gt;&lt;br /&gt;
:: this should fix any issue on the file system&lt;br /&gt;
&lt;br /&gt;
* go back to the WebGUI of the gateway running your LAP and proceed to &#039;&#039;App Platform/General&#039;&#039;&lt;br /&gt;
** terminate Linux (&#039;&#039;Status/Stop&#039;&#039;)&lt;br /&gt;
** modify the &#039;&#039;Kernel command line&#039;&#039; from &#039;&#039;root=/dev/ram0&#039;&#039; to &amp;lt;code&amp;gt;root=/dev/sda3&amp;lt;/code&amp;gt;&lt;br /&gt;
** clear the Initrd file field&lt;br /&gt;
** clear the ramdisk size field&lt;br /&gt;
** start Linux again&lt;br /&gt;
:: This will run Linux on the original partition.&lt;br /&gt;
&lt;br /&gt;
=== VM ===&lt;br /&gt;
&lt;br /&gt;
Restart the VM and select the first entry in the boot menu from grub.&lt;br /&gt;
&lt;br /&gt;
* use [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty] to log in to the LAP&#039;s command line&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda2&amp;lt;/code&amp;gt;&lt;br /&gt;
** on the command prompt, use &amp;lt;code&amp;gt;e2fsck -p -f /dev/sda3&amp;lt;/code&amp;gt;&lt;br /&gt;
:: this should fix any issue on the file system&lt;br /&gt;
* Reboot your VM&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Service_Calendar&amp;diff=52802</id>
		<title>Reference13r1:Concept App Service Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Service_Calendar&amp;diff=52802"/>
		<updated>2019-07-16T09:26:06Z</updated>

		<summary type="html">&lt;p&gt;Eurix: /* Impersonation user */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Service Calendar is an App Service which can be installed on an innovaphone App Platform. It is used to synchronize the exchange calendar of the users that have been added to the PBX. For now, the synchronized appointments will be used to update the presence of the users. Doing this, the calendar replaces the previous exchange connector.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender ===&lt;br /&gt;
Runs as a service without UI. Handles the synchronization of the Exchange calendar as well as the update of the users presence.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender-admin ===&lt;br /&gt;
(Still experimental) Gives some administrative options and can be used to get the current status.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
With the calendar plugin, apps can be created and deleted. Also the calendar can be configured.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The calendar will get a list of all users available in the PBX. This list will be used to figure out the users available in Exchange (which means, that a user, that isn&#039;t available in PBX won&#039;t be synchronized by the calendar). Finally, all appointments of the users Exchange calendar will be synchronized to the calendars database and used to update the users presence. The calendar also registeres himself to Exchange to get notified about changes in a users calendar.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
To synchronize all users available, calendar uses the impersonation system offered by Exchange. To activate the synchronization, use the PBX manager to edit the settings for the calendar. There, only the email address and the password for the impersonation user must be given.&lt;br /&gt;
&lt;br /&gt;
=== PBX Settings ===&lt;br /&gt;
The calender will replicate the users of the PBX to check, if they can be synchronized with Exchange. Because there can be multiple PBX available, the calendar will only accept one. This one must be set in the calendar settings of the PBX manger by giving the name of the master PBX.&lt;br /&gt;
&lt;br /&gt;
=== Impersonation user ===&lt;br /&gt;
Impersonation is the way Exchange offers for services to synchronize multiple Exchange users. An impersonation user means, that a user has the Application Impersonation right. Calendar then uses that user to synchronize every other user found. Be aware of who has access to the impersonation users mail address and password, because that user has all rights to read, modify and add appointments, emails, tasks, etc. in Exchange for every other user. The calender itself must safe the password, but it will be stored in encrypted form to the database. For more information about impersonation user, ask your Exchange administrator.&lt;br /&gt;
For Example: https://www.techieshelp.com/exchange-2013-configuring-impersonation-applications/&lt;br /&gt;
&lt;br /&gt;
=== Autodiscover ===&lt;br /&gt;
The calendar uses autodiscover to get the Exchange Server version used as well as the address to use for synchronizing (which is done using the Exchange Web Services). Because of this, the impersonation user must have a valid mailbox, or autodiscover for that user will fail and the calendar won&#039;t be able to get the required information. It could be that Autodiscover it must be activated first. Ask your Exchange Administrator for more information.&lt;br /&gt;
&lt;br /&gt;
=== Users and primary SMTP address ===&lt;br /&gt;
The calendar will get a list of users available in the PBX. After that, he tries to resolve the primary SMTP address for each user. This must be done to be able to synchronize the user. So make sure that the email information given to the users object in the PBX contains at least one address that also exists in Exchange, or the resolving will fail. Note that multiple addresses can given to the users object seperated by semicolon.&lt;br /&gt;
&lt;br /&gt;
== Presence ==&lt;br /&gt;
The calendar will create a presence string for the appointments and send it to the PBX. The language and timezone of that presence can be defined in the calendar settings. However, the string also contains some information seperated by hashtags a client can use to rebuild the presence string for its own language and timezone settings (like it will be done by the innovaphone devices). Note that the appointment title itself won&#039;t be translated!&lt;br /&gt;
&lt;br /&gt;
=== Presence string format ===&lt;br /&gt;
The format of the presence string created by the calendar:&lt;br /&gt;
&lt;br /&gt;
 Presence         = &amp;quot;Free&amp;quot; / &amp;quot;Free until &amp;quot; Date-Time Next-Appointment / Appointment-Info &amp;quot;until &amp;quot; Date-Time [Next-Appointment]&lt;br /&gt;
 Date-Time        = [Date] [Time] ; Must be at least one of them&lt;br /&gt;
 Date             = Day (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Month (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Year ; Real format depends on localization settings&lt;br /&gt;
 Day              = 2DIGIT ; 01-31&lt;br /&gt;
 Month            = 2DIGIT ; 01-12&lt;br /&gt;
 Year             = 4DIGIT ; e. g. 2017&lt;br /&gt;
 Time             = Hour &amp;quot;:&amp;quot; Minute [&amp;quot;a.m.&amp;quot; / &amp;quot;p.m.&amp;quot;] ; Real format depends on localization settings&lt;br /&gt;
 Hour             = 2DIGIT ; 01-12 or 00-23&lt;br /&gt;
 Minute           = 2DIGIT&lt;br /&gt;
 Next-Appointment = &amp;quot;(&amp;quot; [&amp;quot;Busy: &amp;quot; / &amp;quot;Away: &amp;quot;] Appointment-Info &amp;quot;)&amp;quot;&lt;br /&gt;
 Appointment-Info = Title | &amp;quot;Private&amp;quot; ;&lt;br /&gt;
 Title            = ; Well - any string in UTF8 Format that can include what ever you whant...&lt;br /&gt;
&lt;br /&gt;
After the presence string, a couple of hash-tags will be added (if Presence is not only &amp;quot;Free&amp;quot;). This tags will&lt;br /&gt;
be sent so that a client can re-build with the cleint&#039;s localization settings. The tags will be added with the&lt;br /&gt;
following rules (note that the order of the tags is not variable):&lt;br /&gt;
&lt;br /&gt;
 Tags             = &amp;quot;&amp;quot; / &amp;quot;#&amp;quot; Activity &amp;quot; &amp;quot; [Info-Len &amp;quot; &amp;quot;] Date-Time &amp;quot; &amp;quot; [Whole-Day &amp;quot; &amp;quot;] [Next-Activity &amp;quot; &amp;quot; Next-Appointment]&lt;br /&gt;
 Activity         = &amp;quot;free&amp;quot; / &amp;quot;busy&amp;quot; / &amp;quot;away&amp;quot;&lt;br /&gt;
 Info-Len         = &amp;quot;#len:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ; The first DIGIT is the number of characters (UTF-8 conform) and the second the number of bytes&lt;br /&gt;
                                              of the len of the Appointment-Info. This tag only exists if the presence starts with Appointment-Info.&lt;br /&gt;
 Date-Time        = &amp;quot;#until:&amp;quot; DIGIT; DIGIT = Date-Time in sec as 64bit value.&lt;br /&gt;
 Whole-Day        = &amp;quot;#whole-day&amp;quot; ; Only if the appointment or the following one (depending on the case) or next is a&lt;br /&gt;
                                   whole-day appointment. In that case, until should only print the date&lt;br /&gt;
 Next-Activity    = &amp;quot;#next-activity&amp;quot; Activity ; Only, if there is a next is the start of the next appointment (see above).&lt;br /&gt;
 Next-Appointment = &amp;quot;#next:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ;&lt;br /&gt;
                                      Where the first DIGIT is the position of the next activities Appointment-Info inside the presence&lt;br /&gt;
                                      string and the second DIGIT the Appointment-Info length. Those values are given in number of charactes (UTF-8 conform).&lt;br /&gt;
                                      The third DIGIT has the same meaning as the first, so that it is given in number of bytes, while the last DIGIT&lt;br /&gt;
                                      has the meaning of the second one, but also in bytes.&lt;br /&gt;
&lt;br /&gt;
=== Additional Notes ===&lt;br /&gt;
&lt;br /&gt;
* The presence starts with &amp;quot;Free until&amp;quot;, if there is an upcoming appointment.&lt;br /&gt;
* If the presence starts with Appointment-Info, Date-Time will be the end of that appointment or the start of the next appointment, if the next appointment starts at or before the current one ends.&lt;br /&gt;
* Date-Time will be time-only, if the is the same day as when the precense text will be build, date only, if the appointment (or Next-Appointmant in case that next is a appointment start) is a whole-day appointment.&lt;br /&gt;
* Next-Appointment only will be written, if the presence won&#039;t start with an Appointment-Info.&lt;br /&gt;
&lt;br /&gt;
=== Example presence strings ===&lt;br /&gt;
  Free&lt;br /&gt;
  Free until 10:30 (Busy: Meeting with Caption Sparrow) #free #until:12345 #next-activity:busy #next:24:28:48:28&lt;br /&gt;
  Meeting with Caption Sparrow until 12:30 #busy #len:28:28 #until:12345&lt;br /&gt;
  Free until 24.12.2017 (Busy: Christmas) #free #until:54321 #whole-day #next-activity:busy #next:29:9:29:2&lt;br /&gt;
  Christmas until 27.12.2017 #busy #len:9 #until:42424242 #whole-day&lt;br /&gt;
  Sleeping until 22.08.2017 07:00 #away #len:8  #until:3333333&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Service_Calendar&amp;diff=52801</id>
		<title>Reference13r1:Concept App Service Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Service_Calendar&amp;diff=52801"/>
		<updated>2019-07-16T09:25:57Z</updated>

		<summary type="html">&lt;p&gt;Eurix: /* Impersonation user */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Service Calendar is an App Service which can be installed on an innovaphone App Platform. It is used to synchronize the exchange calendar of the users that have been added to the PBX. For now, the synchronized appointments will be used to update the presence of the users. Doing this, the calendar replaces the previous exchange connector.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender ===&lt;br /&gt;
Runs as a service without UI. Handles the synchronization of the Exchange calendar as well as the update of the users presence.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender-admin ===&lt;br /&gt;
(Still experimental) Gives some administrative options and can be used to get the current status.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
With the calendar plugin, apps can be created and deleted. Also the calendar can be configured.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The calendar will get a list of all users available in the PBX. This list will be used to figure out the users available in Exchange (which means, that a user, that isn&#039;t available in PBX won&#039;t be synchronized by the calendar). Finally, all appointments of the users Exchange calendar will be synchronized to the calendars database and used to update the users presence. The calendar also registeres himself to Exchange to get notified about changes in a users calendar.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
To synchronize all users available, calendar uses the impersonation system offered by Exchange. To activate the synchronization, use the PBX manager to edit the settings for the calendar. There, only the email address and the password for the impersonation user must be given.&lt;br /&gt;
&lt;br /&gt;
=== PBX Settings ===&lt;br /&gt;
The calender will replicate the users of the PBX to check, if they can be synchronized with Exchange. Because there can be multiple PBX available, the calendar will only accept one. This one must be set in the calendar settings of the PBX manger by giving the name of the master PBX.&lt;br /&gt;
&lt;br /&gt;
=== Impersonation user ===&lt;br /&gt;
Impersonation is the way Exchange offers for services to synchronize multiple Exchange users. An impersonation user means, that a user has the Application Impersonation right. Calendar then uses that user to synchronize every other user found. Be aware of who has access to the impersonation users mail address and password, because that user has all rights to read, modify and add appointments, emails, tasks, etc. in Exchange for every other user. The calender itself must safe the password, but it will be stored in encrypted form to the database. For more information about impersonation user, ask your Exchange administrator.&lt;br /&gt;
-For Example: https://www.techieshelp.com/exchange-2013-configuring-impersonation-applications/-&lt;br /&gt;
&lt;br /&gt;
=== Autodiscover ===&lt;br /&gt;
The calendar uses autodiscover to get the Exchange Server version used as well as the address to use for synchronizing (which is done using the Exchange Web Services). Because of this, the impersonation user must have a valid mailbox, or autodiscover for that user will fail and the calendar won&#039;t be able to get the required information. It could be that Autodiscover it must be activated first. Ask your Exchange Administrator for more information.&lt;br /&gt;
&lt;br /&gt;
=== Users and primary SMTP address ===&lt;br /&gt;
The calendar will get a list of users available in the PBX. After that, he tries to resolve the primary SMTP address for each user. This must be done to be able to synchronize the user. So make sure that the email information given to the users object in the PBX contains at least one address that also exists in Exchange, or the resolving will fail. Note that multiple addresses can given to the users object seperated by semicolon.&lt;br /&gt;
&lt;br /&gt;
== Presence ==&lt;br /&gt;
The calendar will create a presence string for the appointments and send it to the PBX. The language and timezone of that presence can be defined in the calendar settings. However, the string also contains some information seperated by hashtags a client can use to rebuild the presence string for its own language and timezone settings (like it will be done by the innovaphone devices). Note that the appointment title itself won&#039;t be translated!&lt;br /&gt;
&lt;br /&gt;
=== Presence string format ===&lt;br /&gt;
The format of the presence string created by the calendar:&lt;br /&gt;
&lt;br /&gt;
 Presence         = &amp;quot;Free&amp;quot; / &amp;quot;Free until &amp;quot; Date-Time Next-Appointment / Appointment-Info &amp;quot;until &amp;quot; Date-Time [Next-Appointment]&lt;br /&gt;
 Date-Time        = [Date] [Time] ; Must be at least one of them&lt;br /&gt;
 Date             = Day (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Month (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Year ; Real format depends on localization settings&lt;br /&gt;
 Day              = 2DIGIT ; 01-31&lt;br /&gt;
 Month            = 2DIGIT ; 01-12&lt;br /&gt;
 Year             = 4DIGIT ; e. g. 2017&lt;br /&gt;
 Time             = Hour &amp;quot;:&amp;quot; Minute [&amp;quot;a.m.&amp;quot; / &amp;quot;p.m.&amp;quot;] ; Real format depends on localization settings&lt;br /&gt;
 Hour             = 2DIGIT ; 01-12 or 00-23&lt;br /&gt;
 Minute           = 2DIGIT&lt;br /&gt;
 Next-Appointment = &amp;quot;(&amp;quot; [&amp;quot;Busy: &amp;quot; / &amp;quot;Away: &amp;quot;] Appointment-Info &amp;quot;)&amp;quot;&lt;br /&gt;
 Appointment-Info = Title | &amp;quot;Private&amp;quot; ;&lt;br /&gt;
 Title            = ; Well - any string in UTF8 Format that can include what ever you whant...&lt;br /&gt;
&lt;br /&gt;
After the presence string, a couple of hash-tags will be added (if Presence is not only &amp;quot;Free&amp;quot;). This tags will&lt;br /&gt;
be sent so that a client can re-build with the cleint&#039;s localization settings. The tags will be added with the&lt;br /&gt;
following rules (note that the order of the tags is not variable):&lt;br /&gt;
&lt;br /&gt;
 Tags             = &amp;quot;&amp;quot; / &amp;quot;#&amp;quot; Activity &amp;quot; &amp;quot; [Info-Len &amp;quot; &amp;quot;] Date-Time &amp;quot; &amp;quot; [Whole-Day &amp;quot; &amp;quot;] [Next-Activity &amp;quot; &amp;quot; Next-Appointment]&lt;br /&gt;
 Activity         = &amp;quot;free&amp;quot; / &amp;quot;busy&amp;quot; / &amp;quot;away&amp;quot;&lt;br /&gt;
 Info-Len         = &amp;quot;#len:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ; The first DIGIT is the number of characters (UTF-8 conform) and the second the number of bytes&lt;br /&gt;
                                              of the len of the Appointment-Info. This tag only exists if the presence starts with Appointment-Info.&lt;br /&gt;
 Date-Time        = &amp;quot;#until:&amp;quot; DIGIT; DIGIT = Date-Time in sec as 64bit value.&lt;br /&gt;
 Whole-Day        = &amp;quot;#whole-day&amp;quot; ; Only if the appointment or the following one (depending on the case) or next is a&lt;br /&gt;
                                   whole-day appointment. In that case, until should only print the date&lt;br /&gt;
 Next-Activity    = &amp;quot;#next-activity&amp;quot; Activity ; Only, if there is a next is the start of the next appointment (see above).&lt;br /&gt;
 Next-Appointment = &amp;quot;#next:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ;&lt;br /&gt;
                                      Where the first DIGIT is the position of the next activities Appointment-Info inside the presence&lt;br /&gt;
                                      string and the second DIGIT the Appointment-Info length. Those values are given in number of charactes (UTF-8 conform).&lt;br /&gt;
                                      The third DIGIT has the same meaning as the first, so that it is given in number of bytes, while the last DIGIT&lt;br /&gt;
                                      has the meaning of the second one, but also in bytes.&lt;br /&gt;
&lt;br /&gt;
=== Additional Notes ===&lt;br /&gt;
&lt;br /&gt;
* The presence starts with &amp;quot;Free until&amp;quot;, if there is an upcoming appointment.&lt;br /&gt;
* If the presence starts with Appointment-Info, Date-Time will be the end of that appointment or the start of the next appointment, if the next appointment starts at or before the current one ends.&lt;br /&gt;
* Date-Time will be time-only, if the is the same day as when the precense text will be build, date only, if the appointment (or Next-Appointmant in case that next is a appointment start) is a whole-day appointment.&lt;br /&gt;
* Next-Appointment only will be written, if the presence won&#039;t start with an Appointment-Info.&lt;br /&gt;
&lt;br /&gt;
=== Example presence strings ===&lt;br /&gt;
  Free&lt;br /&gt;
  Free until 10:30 (Busy: Meeting with Caption Sparrow) #free #until:12345 #next-activity:busy #next:24:28:48:28&lt;br /&gt;
  Meeting with Caption Sparrow until 12:30 #busy #len:28:28 #until:12345&lt;br /&gt;
  Free until 24.12.2017 (Busy: Christmas) #free #until:54321 #whole-day #next-activity:busy #next:29:9:29:2&lt;br /&gt;
  Christmas until 27.12.2017 #busy #len:9 #until:42424242 #whole-day&lt;br /&gt;
  Sleeping until 22.08.2017 07:00 #away #len:8  #until:3333333&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Set_Type_of_Service_(ToS)_DiffServ_DSCP_Values_for_innovaphone_Windows_Applications&amp;diff=51263</id>
		<title>Howto:Set Type of Service (ToS) DiffServ DSCP Values for innovaphone Windows Applications</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Set_Type_of_Service_(ToS)_DiffServ_DSCP_Values_for_innovaphone_Windows_Applications&amp;diff=51263"/>
		<updated>2019-02-14T10:26:45Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to all innovaphone Windows Applications sending the RTP Data (this is currently the SoftwarePhone (audio) and the myPBX launcher (video))&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
&lt;br /&gt;
In contrast to the innovaphone devices, that allows you to [[Reference9:IP4/General/Settings|specify the IP v4 TOS header field value]] used for voice and signalling IP packets, the MS Windows based applications like SoftwarePhone and myPBX do not have any possibility to set ToS Values on the RTP packets due restriction of the Microsoft Windows operating system.&lt;br /&gt;
&lt;br /&gt;
Instead to set the ToS Value in the Application the [http://technet.microsoft.com/en-us/library/dd919203%28WS.10%29.aspx Policy-based Quality of Service (QoS)] provided by the MS Windows operating system can be used to mark the IP packets.&lt;br /&gt;
&lt;br /&gt;
Usually the configuration of the Policy-based Quality of Service is done by defining a [http://technet.microsoft.com/en-us/library/hh831689.aspx Group Policy Object (GPO) in the Group Policy Management Console (GPMC)]. This could be done for a single computer or distributed to a number of computers via the domain controller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;3&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse;empty-cells:show;&amp;quot;&lt;br /&gt;
|+ Microsoft Windows QoS Policy Mappings for innovaphone Applications&lt;br /&gt;
!Policy Name!!Application Path!!Protocol!!Source Port!!Destination Port!!Source IP / Mask!!Destination IP / Mask!!DSCP Value!!Throttling Rate&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone myPBX Video RTP||%programfiles(x86)%\\innovaphone\\myPBX\\myPBX.exe||UDP||50000:50100||*||*||*||34||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone myPBX Signalling HTTP||%programfiles(x86)%\\innovaphone\\myPBX\\myPBX.exe||TCP||*||80||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone myPBX Signalling HTTPS||%programfiles(x86)%\\innovaphone\\myPBX\\myPBX.exe||TCP||*||443||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Audio RTP||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||UDP||2050:16000||*||*||*||46||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling RAS||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||UDP||*||1718:1719||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling H225||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP||*||2048:59999||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling H323/TCP||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP||*||1720||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling H323/TLS||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP||*||1300||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling SIP||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP/UDP||*||5060||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling SIPS||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe|| TCP||*||5061||*||*||26||-1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSCP Values in the above example are default DSCP values used by innovaphone devices, according to the Wiki article [[Howto:Calculate Values for Type of Service %28ToS%29 from DiffServ or DSCP Values]]. You may change this values to meet requirements on your traffic prioritisation and routing equipment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the Windows 8, Server 2012, Windows 10 and later it is possible to use [http://technet.microsoft.com/en-us/scriptcenter/powershell.aspx PowerShell] to configure the values with the [https://technet.microsoft.com/en-us/library/hh967471(v=wps.630).aspx NetQosPolicy] Cmdlet.&lt;br /&gt;
&lt;br /&gt;
The above table can be added to the Grou Policies by the following powershell commands (administrator account access right required):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone myPBX Video RTP&amp;quot; -DSCPAction 34 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\myPBX\myPBX.exe&amp;quot; -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 50000 -IPSrcPortEndMatchCondition 50100&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone myPBX Signalling HTTP&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\myPBX\myPBX.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 80&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone myPBX Signalling HTTPS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\myPBX\myPBX.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 443&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Audio RTP&amp;quot; -DSCPAction 46 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 2050 -IPSrcPortEndMatchCondition 16000&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling RAS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 1718 -IPSrcPortEndMatchCondition 1719&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling H225&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPSrcPortStartMatchCondition 2048 -IPSrcPortEndMatchCondition 59999&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling H323 TCP&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 1720&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling H323 TLS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 1300&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling SIP&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition Both -IPDstPortMatchCondition 5060&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling SIPS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 5061&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note, the QoS policies added via powershell NetQosPolicy cmdlet are not visible in the Group Policies Editor (gpedit.msc). To list the configured QoS policies use &amp;lt;code&amp;gt;Get-NetQosPolicy&amp;lt;/code&amp;gt; cmdlet.&lt;br /&gt;
&lt;br /&gt;
The GPO on the PCs will refresh from time to time automatically. To apply the changes to the GPO immediately following command can be used:&lt;br /&gt;
 Gpupdate.exe /force&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
In some cases setting of the following registry key is required to ensure the DSCP values are applied:&lt;br /&gt;
&lt;br /&gt;
 HKEY_LOCAL_MACHINE /SYSTEM / CurrentControlSet / Tcpip / &amp;quot;Do not use NLA&amp;quot; = 1&lt;br /&gt;
&lt;br /&gt;
Reboot of the PC is required afterwards.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Howto:Calculate Values for Type of Service (ToS) from DiffServ or DSCP Values]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V6 V7 and later#Default ToS Values]]&lt;br /&gt;
* [[Howto:The IPv4 TOS field and DiffServ]]&lt;br /&gt;
* [[Reference9:IP4/General/Settings]]&lt;br /&gt;
* [[Reference:Configuration/IP/Settings]]&lt;br /&gt;
* [[Howto:Softphone recommended settings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Set_Type_of_Service_(ToS)_DiffServ_DSCP_Values_for_innovaphone_Windows_Applications&amp;diff=51262</id>
		<title>Howto:Set Type of Service (ToS) DiffServ DSCP Values for innovaphone Windows Applications</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Set_Type_of_Service_(ToS)_DiffServ_DSCP_Values_for_innovaphone_Windows_Applications&amp;diff=51262"/>
		<updated>2019-02-13T13:51:54Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to all innovaphone Windows Applications sending the RTP Data (this is currently the SoftwarePhone (audio) and the myPBX launcher (video))&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
&lt;br /&gt;
In contrast to the innovaphone devices, that allows you to [[Reference9:IP4/General/Settings|specify the IP v4 TOS header field value]] used for voice and signalling IP packets, the MS Windows based applications like SoftwarePhone and myPBX do not have any possibility to set ToS Values on the RTP packets due restriction of the Microsoft Windows operating system.&lt;br /&gt;
&lt;br /&gt;
Instead to set the ToS Value in the Application the [http://technet.microsoft.com/en-us/library/dd919203%28WS.10%29.aspx Policy-based Quality of Service (QoS)] provided by the MS Windows operating system can be used to mark the IP packets.&lt;br /&gt;
&lt;br /&gt;
Usually the configuration of the Policy-based Quality of Service is done by defining a [http://technet.microsoft.com/en-us/library/hh831689.aspx Group Policy Object (GPO) in the Group Policy Management Console (GPMC)]. This could be done for a single computer or distributed to a number of computers via the domain controller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;3&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse;empty-cells:show;&amp;quot;&lt;br /&gt;
|+ Microsoft Windows QoS Policy Mappings for innovaphone Applications&lt;br /&gt;
!Policy Name!!Application Path!!Protocol!!Source Port!!Destination Port!!Source IP / Mask!!Destination IP / Mask!!DSCP Value!!Throttling Rate&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone myPBX Video RTP||%programfiles(x86)%\\innovaphone\\myPBX\\myPBX.exe||UDP||50000:50100||*||*||*||34||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone myPBX Signalling HTTP||%programfiles(x86)%\\innovaphone\\myPBX\\myPBX.exe||TCP||*||80||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone myPBX Signalling HTTPS||%programfiles(x86)%\\innovaphone\\myPBX\\myPBX.exe||TCP||*||443||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Audio RTP||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||UDP||2050:16000||*||*||*||46||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling RAS||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||UDP||*||1718:1719||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling H225||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP||*||2048:59999||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling H323/TCP||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP||*||1720||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling H323/TLS||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP||*||1300||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling SIP||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe||TCP/UDP||*||5060||*||*||26||-1&lt;br /&gt;
|-&lt;br /&gt;
| innovaphone SoftwarePhone Signalling SIPS||%programfiles(x86)%\\innovaphone\\SoftwarePhone\\softwarephone.exe|| TCP||*||5061||*||*||26||-1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSCP Values in the above example are default DSCP values used by innovaphone devices, according to the Wiki article [[Howto:Calculate Values for Type of Service %28ToS%29 from DiffServ or DSCP Values]]. You may change this values to meet requirements on your traffic prioritisation and routing equipment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the Windows 8, Server 2012, Windows 10 and later it is possible to use [http://technet.microsoft.com/en-us/scriptcenter/powershell.aspx PowerShell] to configure the values with the [https://technet.microsoft.com/en-us/library/hh967471(v=wps.630).aspx NetQosPolicy] Cmdlet.&lt;br /&gt;
&lt;br /&gt;
The above table can be added to the Grou Policies by the following powershell commands (administrator account access right required):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone myPBX Video RTP&amp;quot; -DSCPAction 34 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\myPBX\myPBX.exe&amp;quot; -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 50000 -IPSrcPortEndMatchCondition 50100&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone myPBX Signalling HTTP&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\myPBX\myPBX.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 80&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone myPBX Signalling HTTPS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\myPBX\myPBX.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 443&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Audio RTP&amp;quot; -DSCPAction 46 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 16384 -IPSrcPortEndMatchCondition 32767&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling RAS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition UDP -IPSrcPortStartMatchCondition 1718 -IPSrcPortEndMatchCondition 1719&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling H225&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPSrcPortStartMatchCondition 2048 -IPSrcPortEndMatchCondition 59999&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling H323 TCP&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 1720&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling H323 TLS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 1300&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling SIP&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition Both -IPDstPortMatchCondition 5060&lt;br /&gt;
 New-NetQosPolicy -Name &amp;quot;innovaphone SoftwarePhone Signalling SIPS&amp;quot; -DSCPAction 26 -NetworkProfile All -AppPathNameMatchCondition &amp;quot;%programfiles(x86)%\innovaphone\SoftwarePhone\softwarephone.exe&amp;quot; -IPProtocolMatchCondition TCP -IPDstPortMatchCondition 5061&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note, the QoS policies added via powershell NetQosPolicy cmdlet are not visible in the Group Policies Editor (gpedit.msc). To list the configured QoS policies use &amp;lt;code&amp;gt;Get-NetQosPolicy&amp;lt;/code&amp;gt; cmdlet.&lt;br /&gt;
&lt;br /&gt;
The GPO on the PCs will refresh from time to time automatically. To apply the changes to the GPO immediately following command can be used:&lt;br /&gt;
 Gpupdate.exe /force&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
In some cases setting of the following registry key is required to ensure the DSCP values are applied:&lt;br /&gt;
&lt;br /&gt;
 HKEY_LOCAL_MACHINE /SYSTEM / CurrentControlSet / Tcpip / &amp;quot;Do not use NLA&amp;quot; = 1&lt;br /&gt;
&lt;br /&gt;
Reboot of the PC is required afterwards.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[Howto:Calculate Values for Type of Service (ToS) from DiffServ or DSCP Values]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V6 V7 and later#Default ToS Values]]&lt;br /&gt;
* [[Howto:The IPv4 TOS field and DiffServ]]&lt;br /&gt;
* [[Reference9:IP4/General/Settings]]&lt;br /&gt;
* [[Reference:Configuration/IP/Settings]]&lt;br /&gt;
* [[Howto:Softphone recommended settings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference9:Phone/User/Recording&amp;diff=49582</id>
		<title>Reference9:Phone/User/Recording</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference9:Phone/User/Recording&amp;diff=49582"/>
		<updated>2018-04-09T09:47:11Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The recording feature permits to record conversations on a recording device. Recording is implemented as a 3 party (3PTY) conference between the two conversation peers and the recording device. While a conversation is recorded no other 3 party conference can be opened. A ``Recording´´ message in the status line and/or the label/LED-pattern of a function key with the ``Recording´´ function assigned indicates that the current conversation is recorded.  &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mode&#039;&#039;&#039;:&lt;br /&gt;
** Manual: Recording of the active call is manually started and stopped by pressing the Redial key or a function key with the ``Recording´´ function assigned.&lt;br /&gt;
** Transparent: Recording is started automatically as soon as a call is connected and stopped when there is no call left. It cannot be stopped manually. &lt;br /&gt;
** Optional:  Recording is started automatically as soon as a call is connected. It can be stopped and restarted manually by pressing the Redial key or a function key with the ``Recording´´ function assigned.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Number&#039;&#039;&#039;: The telephone number of the recording device.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Name&#039;&#039;&#039;: The H.323 name of the recording device (if any).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;External call only&#039;&#039;&#039;: Restrict recording to calls from/to external lines.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Function Key Control Only&#039;&#039;&#039;: Recording can be started and stopped by a ``Recording´´ function key only. The Redial key keeps it&#039;s normal function (context dependent, for example it initiates a blind transfer of the active call).  No ``Recording´´ message is displayed in the status line if this checkmark is set, the recording state is indicated by the associated key label/LED-pattern only. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Two Way Media&#039;&#039;&#039;: Enable reciving of media data from the recording device. By default the recording call from the phone to the recording device is established in sendonly mode because usually a recording device does not send any media data. ``Two Way Media´´ need to be checked only in special application cases, for example when the Innovaphone Operator &amp;quot;Greeting Function&amp;quot; or a &amp;quot;Recording prompt&amp;quot; is used.&lt;br /&gt;
 &lt;br /&gt;
==== Call Data ====&lt;br /&gt;
The recording call from the phone to the recording device is a straight fresh call with the recording phones telephone number as calling line id.  However, the remote party number (that is, the party the agent is talking to) will be sent with this call as diverting number&amp;lt;ref name=from&amp;gt;available from V6 SR2&amp;lt;/ref&amp;gt;&lt;br /&gt;
(H.450 leg2 information in H.323 and &#039;&#039;&#039;Diversion:&#039;&#039;&#039; header in SIP, respectively).  Please note that when the agent does consultation calls while recording, the recorded stream always follows the active call.  The changing remote party numbers are notified in the recording call through a CT-COMPLETE with number/h323id (which is interworked to an &#039;&#039;UPDATE&#039;&#039; or &#039;&#039;re-INVITE&#039;&#039; request with updated &#039;&#039;&#039;P-Asserted-Identity:&#039;&#039;&#039; header in SIP).&lt;br /&gt;
&lt;br /&gt;
The diversion info sent in the recording call will indicate an incoming call as &#039;&#039;diversion user busy&#039;&#039; and an outgoing call as &#039;&#039;diversion-no-answer&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This special attribution can be suppressed with the &amp;lt;code&amp;gt;/recording-without-remote-party-info&amp;lt;/code&amp;gt; flag for the &amp;lt;code&amp;gt;PHONE SIG&amp;lt;/code&amp;gt; config line (e.g. &amp;lt;code&amp;gt;config add PHONE SIG /recording-without-remote-party-info&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:XCAPI&amp;diff=49221</id>
		<title>Howto:XCAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:XCAPI&amp;diff=49221"/>
		<updated>2018-02-23T08:08:05Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- {{Template:3rd Party Input}} --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* Configuring the XCAPI with the innovaphone Gateways and innovaphone PBX&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This document is intended to support you with the integration of the XCAPI (version 3.4.0.0) into an existing environment of&lt;br /&gt;
current innovaphone gateways (Version 6 and following). In the following sections we describe the essential steps of configuration to allow for optimal cooperation of both the XCAPI and the innovaphone PBX/gateway. At this point, we suppose that the innovaphone PBX, the hardware the XCAPI is running on and both the XCAPI and your CAPI applications are already installed properly. For some extended information on installation procedures please refer to the respective manuals. A short installation manual for the XCAPI is available at the XCAPI Homepage (http://www.te-systems.de/community/index.php?L=0).&lt;br /&gt;
&lt;br /&gt;
Both XCAPI and Innovaphone support H.323 and SIP and we can configure the Trunk between them using the Gateway/Relay or directly registering XCAPI on the PBX. &#039;&#039;However the only method recommended is registering XCAPI directly on the innovaphone PBX using SIP Protocol.  All other setups are no longer supported thus&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring the innovaphone ===&lt;br /&gt;
In this example, we are going to use one PBX gateway object (XCAPI-SIP-GW) and register XCAPI on this Object. &lt;br /&gt;
&lt;br /&gt;
==== Creating a Gateway Object in the PBX ====&lt;br /&gt;
Log in to the PBX administration and create a new gateway object. The name of the object is &amp;quot;XCAPI-SIP-GW&amp;quot;, and the number is 93 in this case.&lt;br /&gt;
&lt;br /&gt;
[[Image:2-pbx-gw-object-gw-4-config.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[Image:XCAPI_no_iband_disconnect.PNG]]&lt;br /&gt;
&lt;br /&gt;
Note: At this Gateway Object we should select the option &amp;quot;No Inband Disconnec&amp;quot; to avoid issues with external call transfer that are rejected.&lt;br /&gt;
&lt;br /&gt;
=== XCAPI Configuration ===&lt;br /&gt;
When the XCAPI configuration is started for the first time, there are no configured controllers. Use the link &amp;quot;Click here to add a controller&amp;quot; in the overview page to start the controller wizard.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-0.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== Add new VoIP controller ====&lt;br /&gt;
On the welcome page of the controller wizard, select to add a new VoIP controller.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== Network Interface ====&lt;br /&gt;
In the next dialog, select the network interface that you want to use for the SIP connection between the XCAPI and the innovaphone gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== Select VoIP environment template ====&lt;br /&gt;
From the list of predefined VoIP environments, select a innovaphone (PBX object) template.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== Signalling Protocol ====&lt;br /&gt;
We must select SIP as protocol to be used by XCAPI.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-4.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== innovaphone (PBX Object) ====&lt;br /&gt;
Here we must insert the innovaphone PBX System Name or IP address. This will depend on the option &amp;quot;Use as Domain&amp;quot; at PBX-&amp;gt;Config.&lt;br /&gt;
&lt;br /&gt;
If we have &amp;quot;Use as Domain&amp;quot; we insert the system name of the PBX:&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-5a.PNG]]&lt;br /&gt;
&lt;br /&gt;
Then if the System name it&#039;s not resolved by DNS we need to configure SIP Proxy in the XCAPI Configuration after we finish the Wizard:&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-5b.PNG]]&lt;br /&gt;
&lt;br /&gt;
If there is no &amp;quot;Use as Domain&amp;quot; we configure the IP address of the PBX:&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== User Information ====&lt;br /&gt;
Here we insert the GW Object Name previously created at &amp;quot;Username&amp;quot; field, the use of password it&#039;s optional.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-6.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== Description and channels ====&lt;br /&gt;
Enter a meaningful description and the number of lines that the XCAPI can use to communicate with the innovaphone gateway simultaneously.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-7.PNG]]&lt;br /&gt;
&lt;br /&gt;
==== Confirmation ====&lt;br /&gt;
Check if all necessary information has been entered correctly (green symbols on the left) and confirm all data by clicking Finish.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-8.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then the new controller appears in the XCAPI configuration. Save the changes and stop all running CAPI applications before restarting them.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-9.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
&lt;br /&gt;
=== No MOH ===&lt;br /&gt;
&lt;br /&gt;
* In XCAPI version 3.3.249 when XCAPI puts call on hold it uses media attribute &amp;quot;send-only&amp;quot;, this could affect some call scenarios by not providing MOH to the held party. In order to PBX provide the MOH the hold must be set with media attribute &amp;quot;inactive&amp;quot; instead. In future releases of XCAPI it&#039;s planned that &amp;quot;inactive&amp;quot; will be set already in the template for innovaphone PBX meanwhile you can edit in the configuration this option like the image bellow shows. Also other option that should be enable it&#039;s &amp;quot;Send attribute &amp;quot;Recvonly&amp;quot; when being held&amp;quot; for the cases that XCAPI it&#039;s put on hold.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-10.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If you perform a consultation transfer with XCAPI (example using Voxtron Agent hold incoming PSTN call and does consultation transfer with alerting to another agent) and the held party doesn&#039;t hear the MOH/Alerting from the PBX then the reason could be the default option in XCAPI configuration to &amp;quot;Discard incoming audio data when held&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-11.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Failure on Registration due missing Username ===&lt;br /&gt;
&lt;br /&gt;
* Gateway Object with Password requires extra step of configuration on XCAPI settings after XCAPI wizard it&#039;s finished. For that reason we need to insert the Name/Number for registration at field &amp;quot;Username(Authorization)&amp;quot; at XCAPI SIP Settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:controller-wizard-12.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Incoming call declined by PBX ===&lt;br /&gt;
&lt;br /&gt;
*If the registration is successful but an incoming call is declined by the PBX due to an unknown contact header you should enter the xcapi object name as contact parameter in the XCAPI configuration.&lt;br /&gt;
Notice: When using MWI by SIP notify, the Contact Header of the SIP Notify must be identical to the Contact Header of the SIP Registration. The Contact for the Registration will be create automatically. Perhaps a registration by number would be a solution. Normally, the Contact field must be left blank.&lt;br /&gt;
&lt;br /&gt;
[[Image: Xcapi-contact.png]]&lt;br /&gt;
&lt;br /&gt;
- On v10sr8/V10sr9 the previous behaviour was fixed so the Contact Info should have no value, if you set value like the example this will cause problems with the SIP Register after a restart of the Gateway.&lt;br /&gt;
&lt;br /&gt;
- On v10sr10 there is a fix for the SIP Register issue, so you can set a name on the Contact Info or leave it blank both methods will work.&lt;br /&gt;
&lt;br /&gt;
=== One way audio using SRTP ===&lt;br /&gt;
XCapi does not support SRTP unless the optional XSSA Module is installed.  If SRTP is used anyway, one-way-audio may occur (from XCapi to innovaphone endpoint). &lt;br /&gt;
&lt;br /&gt;
If you do not want to install XSSA (and thus use un-encrypted RTP to the XCapi), you may (from XCAPI Version 3.4.x on) enable the XCAPI Tweak &amp;lt;&#039;&#039;REJECT_UNACCEPTABLE_SDP&#039;&#039;&amp;gt; to reject calls with unsupported SAVP (i.e. SRTP) media requests.&lt;br /&gt;
&lt;br /&gt;
[[Image:XCAPI_Tweak_reject_unacceptable_SDP.jpg]]&lt;br /&gt;
&lt;br /&gt;
The calling innovaphone device will then re-initiate the call w/o SRTP.&lt;br /&gt;
&lt;br /&gt;
For more information about XSSA please contact TE-Systems.&lt;br /&gt;
&lt;br /&gt;
If the SIP Security Additions are available, the enable &amp;quot;SIP Security Addittions&amp;quot; should be activated to have SRTP like in the picture bellow:&lt;br /&gt;
&lt;br /&gt;
[[Image:XCAPI_SIP_SIPSecurity.png]]&lt;br /&gt;
&lt;br /&gt;
=== T38 / Fax failed ===&lt;br /&gt;
T38 will not supported if the option &amp;quot;Software Fax über Sprachkanäle benutzen&amp;quot; is enabled. If required disable this option.&lt;br /&gt;
&lt;br /&gt;
[[Image:Xcapi_controller_features_softax.png]]&lt;br /&gt;
&lt;br /&gt;
=== Screenshots of a example XCAPI configuration ===&lt;br /&gt;
PBX V9/V10 - Xcapi 3.5.31.0&lt;br /&gt;
&lt;br /&gt;
Changes which are different to the config of the Wizard are highlighted.&lt;br /&gt;
&lt;br /&gt;
[[Media:XCAPI_Config.zip]]&lt;br /&gt;
&lt;br /&gt;
=== MWI is not working when XCAPI is connected via GK-Interfaces ===&lt;br /&gt;
You must set &amp;quot;Interworking/QSIG&amp;quot; in the route from the XCAPI GK-Interface to the PBX-Registration&lt;br /&gt;
&lt;br /&gt;
===Support of DTLS===&lt;br /&gt;
At the moment(Summer 2015) XCAPI does not support DTLS. So please make sure that you are not using DTLS only at phones calling the XCAPI. This may change in the future.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* http://www.xcapi.de&lt;br /&gt;
* http://www.te-systems.de&lt;br /&gt;
&lt;br /&gt;
[[Category:Faq|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference12r2:PBX/Config/myPBX&amp;diff=49117</id>
		<title>Reference12r2:PBX/Config/myPBX</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference12r2:PBX/Config/myPBX&amp;diff=49117"/>
		<updated>2018-02-08T13:16:30Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;myPBX is the web application of the innovaphone PBX for end users. &lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
== Common Settings ==&lt;br /&gt;
* &#039;&#039;&#039;Enable&#039;&#039;&#039; Turns the application on or off. It is disabled by default.&lt;br /&gt;
* &#039;&#039;&#039;Launcher URL&#039;&#039;&#039; The URL that should be configured in the myPBX launcher.&lt;br /&gt;
* &#039;&#039;&#039;Start in web browser&#039;&#039;&#039; Click this link to start myPBX in the web browser right away.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
myPBX can use the Netlogon service of the Box for authenticating users against a Windows domain. For that the Netlogon service has to be connected to a domain controller.&lt;br /&gt;
* &#039;&#039;&#039;PBX only&#039;&#039;&#039; Login is allowed with PBX user password only.&lt;br /&gt;
* &#039;&#039;&#039;Netlogon only&#039;&#039;&#039; Login is allowed with Windows password only.&lt;br /&gt;
* &#039;&#039;&#039;PBX and Netlogon&#039;&#039;&#039; Login is allowed with both PBX user password and Windows password.&lt;br /&gt;
&lt;br /&gt;
== Password policy ==&lt;br /&gt;
Defines rules for password changes in myPBX.&lt;br /&gt;
* &#039;&#039;&#039;Minimum length&#039;&#039;&#039; The minimum number of characters for new passwords.&lt;br /&gt;
* &#039;&#039;&#039;Minimum number of categories&#039;&#039;&#039; Defines the number of different character types that new passwords must consist of, namely &lt;br /&gt;
** upper case letters&lt;br /&gt;
** lower case letters&lt;br /&gt;
** numeric digits&lt;br /&gt;
** special characters&lt;br /&gt;
* &#039;&#039;&#039;Forbid password changes&#039;&#039;&#039; Disables the possibility to change the password in myPBX and over the myPBX protocol.&lt;br /&gt;
&lt;br /&gt;
== Call List Service ==&lt;br /&gt;
myPBX can use the innovaphone reporting as a database for call lists.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Type&#039;&#039;&#039; The type of the reporting service&lt;br /&gt;
** &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;: do not use reporting for call lists&lt;br /&gt;
** &amp;lt;code&amp;gt;LOCAL-AP&amp;lt;/code&amp;gt;: running on the same box&lt;br /&gt;
** &amp;lt;code&amp;gt;REMOTE-AP&amp;lt;/code&amp;gt;: running on a different box. The myPBX client decides which protocol to use (HTTP or HTTPS), depending on the URL (http or https)used to connect to the PBX.&lt;br /&gt;
** &amp;lt;code&amp;gt;LOCAL-CF&amp;lt;/code&amp;gt;: use the local CF card for call-lists. This is possible on devices without the Linux AP running. The call list service must be configured for this under [[Reference11:Services/Call-Lists]].&lt;br /&gt;
&lt;br /&gt;
For LOCAL-AP or REMOTE-AP&lt;br /&gt;
* &#039;&#039;&#039;Host&#039;&#039;&#039; The IP address of the reporting service&lt;br /&gt;
* &#039;&#039;&#039;User&#039;&#039;&#039; The &#039;&#039;User&#039;&#039; name of the &#039;&#039;Linux web server credentials&#039;&#039; of the Linux application platform providing the reporting service&lt;br /&gt;
* &#039;&#039;&#039;Password&#039;&#039;&#039; The password of the &#039;&#039;Linux web server credentials&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For LOCAL-CF&lt;br /&gt;
* &#039;&#039;&#039;Host&#039;&#039;&#039; The IP address or Hostname of the device which hosts the myPBX service (don&#039;t use loopback IP Address)&lt;br /&gt;
* &#039;&#039;&#039;User&#039;&#039;&#039; The admin user of the device which hosts the myPBX service&lt;br /&gt;
* &#039;&#039;&#039;Password&#039;&#039;&#039; The admin password of the device which hosts the myPBX service&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Additional Administrator Accounts can&#039;t be used as &amp;quot;User&amp;quot; for the LOCAL-CF feature. It must be the main administration login of the device.&lt;br /&gt;
&lt;br /&gt;
== Preferences ==&lt;br /&gt;
* &#039;&#039;&#039;Logo URI&#039;&#039;&#039; The URI to a customized logo image that will be displayed in the myPBX Launcher, myPBX web application and at the phone on the &amp;quot;phone-app&amp;quot;. The image size should be 220x150px or less. Leave empty to keep the standard logo. The file format should be PNG or JPEG or an other format that is supported by web browsers.&lt;br /&gt;
&lt;br /&gt;
= Access =&lt;br /&gt;
== URLs ==&lt;br /&gt;
There is a start page that opens the application in a dedicated browser window and that allows for choosing the language from a list. &lt;br /&gt;
 http://IP-ADDRESS/PBX0/MY/start.htm&lt;br /&gt;
&lt;br /&gt;
The application can also be accessed directly. This is the URL to be configured at the myPBX launcher or a smart phone.&lt;br /&gt;
 http://IP-ADDRESS/PBX0/MY/client.htm&lt;br /&gt;
In this case the language can be selected by adding &amp;lt;code&amp;gt;?lang=XX&amp;lt;/code&amp;gt; to the URL with &amp;lt;code&amp;gt;XX&amp;lt;/code&amp;gt; being the ISO 639-1 language code. For an example &amp;lt;code&amp;gt;fr&amp;lt;/code&amp;gt; means French.&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
People can login using the credentials from their PBX user object:&lt;br /&gt;
&lt;br /&gt;
* user name (H.323-ID) &lt;br /&gt;
* password&lt;br /&gt;
&lt;br /&gt;
Only users with a password can login.&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
* [[{{NAMESPACE}}:Services/Call-Lists]]&lt;br /&gt;
* [[{{NAMESPACE}}:Services/Netlogon/Config]]&lt;br /&gt;
* [[{{NAMESPACE}}:Concept myPBX]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference7:Configure_Active_Directory_Replication&amp;diff=49023</id>
		<title>Reference7:Configure Active Directory Replication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference7:Configure_Active_Directory_Replication&amp;diff=49023"/>
		<updated>2018-01-18T14:23:54Z</updated>

		<summary type="html">&lt;p&gt;Eurix: Speicherort ist zwingend erforderlich im Aufruf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Applies To=&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
*innovaphone PBX V7 and later&lt;br /&gt;
*Microsoft Windows Server Platforms&lt;br /&gt;
&lt;br /&gt;
Tested with MS Windows 2000 Server and MS Windows 2003 Server.&lt;br /&gt;
&lt;br /&gt;
=More Information=&lt;br /&gt;
Active Directory (AD) replication allows to import Windows Users into an innovaphone PBX as user objects. It is a read-only replication. Nothing is going to be written into the AD.&lt;br /&gt;
&lt;br /&gt;
An attribute mapping mechanism allows to map arbitrary AD-attributes into arbitrary innovaphone-attributes.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
The configuration can be divided into the two tasks [[#AD Settings|AD Settings]] and [[#Attribute Mapping|Attribute Mapping]]. This article focusses on Attribute Mapping.&lt;br /&gt;
&lt;br /&gt;
*Maps for incoming attributes must be configured. An In-Map controls which content of which incoming attribute goes into a runtime symbol table.&lt;br /&gt;
*Maps for outgoing or local attributes must be configured. An out-map controls which runtime symbol table entry fills a local attribute. &lt;br /&gt;
&lt;br /&gt;
=AD Settings=&lt;br /&gt;
Please see [[Reference7:Configuration/LDAP/Replicator|Reference7:Configuration/LDAP/Replicator]] for common server settings as IP address, DN, User, Password, LDAP Filter.&lt;br /&gt;
&lt;br /&gt;
==Replicating in a Domain Forest==&lt;br /&gt;
[[Image:domain-forest.png|left|thumb|100px|Domain Forest, built up by 3x DCs]]&lt;br /&gt;
A company &#039;&#039;foo.bar&#039;&#039; maintains three domain controllers (DC).&lt;br /&gt;
*A root DC for the naming context &#039;&#039;dc=foo, dc=bar&#039;&#039;&lt;br /&gt;
*A sub DC for the naming context &#039;&#039;dc=sales, dc=foo, dc=bar&#039;&#039;&lt;br /&gt;
*A sub DC for the naming context &#039;&#039;dc=support, dc=foo, dc=bar&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The task may now be to replicate all users within &#039;&#039;dc=foo, dc=bar&#039;&#039; recursing down into all sub-domains.&lt;br /&gt;
By default this isn&#039;t possible, because MS designed a DC to only answer LDAP search requests with search results it is authoritative for.&lt;br /&gt;
&lt;br /&gt;
The role of a global catalog (GC) is supposed to overcome this limitation. A DC acts as a GC if contacted on TCP port 3268.&lt;br /&gt;
&lt;br /&gt;
Therefore..if it&#039;s desired to replicate from a forest of DCs&lt;br /&gt;
* Enter as &#039;&#039;LDAP/Replicator/Server&#039;&#039; the destination as &#039;&#039;[IP Address]:[port]&#039;&#039; &lt;br /&gt;
**&#039;&#039;IP Address&#039;&#039; shall be the IP address of the root DC&lt;br /&gt;
**&#039;&#039;port&#039;&#039; must be &#039;&#039;3268&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Be sure to have read below [[#Replicated_Objects_Lost_After_erroneous_Changes_in_Active_Directory|Replicated Objects Lost After erroneous Changes in Active Directory]]&lt;br /&gt;
&lt;br /&gt;
=Attribute Mapping=&lt;br /&gt;
There are a list of [[#Grammar For In-Maps|In-Maps]] and a list of [[#Grammar For Out-Maps|Out-Maps]]. That&#039;s it.&lt;br /&gt;
In-Maps allow for regular expressions&amp;lt;ref&amp;gt;Regular Expression, http://en.wikipedia.org/wiki/Regular_expression. We use POSIX 1003.2 regular expressions syntax, see e.g. https://www.freebsd.org/cgi/man.cgi?query=re_format&amp;amp;sektion=7&amp;amp;apropos=0&amp;amp;manpath=FreeBSD+10.3-RELEASE+and+Ports for a detailed description&amp;lt;/ref&amp;gt;. Out-Maps merely consist of symbol names or literals (constants).&lt;br /&gt;
&lt;br /&gt;
#On reception of of a source-ldap object, all existing attributes will be investigated and a corresponding in-map is being looked-up for each attribute&lt;br /&gt;
#If there are many in-maps per attribute, all maps will be executed sequentially and the value assignment will be placed (if the pattern matches)&lt;br /&gt;
#In case of a matching map, then values will be maintained within a symbol table (see grammar: &#039;identifier&#039; production)&lt;br /&gt;
#Values within the symbol table will be overwritten (if already existing)&lt;br /&gt;
#After completion, the target-ldap-object will be generated by means of the Out-Maps. If a value application without a value in the symbol table will be found (i.e. no In-Map matched and wrote something into the symbol), then the source-ldap-object is to be discarded&lt;br /&gt;
&lt;br /&gt;
Because of the possible discard of a source object in step #5 above, you must provide a default value for all objects which should be replicated although there is no value in it for an attribute used in an Out-Map! (see in the examples below how to do that)&lt;br /&gt;
&lt;br /&gt;
==Grammar For In-Maps==&lt;br /&gt;
An in-map is a pair of &amp;lt;source-attr-name&amp;gt; (An AD-attribute name) and &amp;lt;assignment_pattern&amp;gt;.&lt;br /&gt;
Approximate Grammar:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    assignment_pattern  ::= &amp;lt;symboldefinitions&amp;gt; &#039;:&#039; &amp;lt;regexp&amp;gt;&lt;br /&gt;
                        |   &amp;lt;symboldefinitions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    symboldefinitions   ::= &amp;lt;symboldefinitions&amp;gt; &amp;lt;symboldefinition&amp;gt;&lt;br /&gt;
                        |   &amp;lt;symboldefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    symboldefinition    ::= &amp;lt;identifier&amp;gt; &#039;=&#039; &amp;lt;value_expression&amp;gt;&lt;br /&gt;
                        |   &amp;lt;identifier&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    value_expression    ::= &#039;/&#039; &amp;lt;VALUES&amp;gt; &#039;/&#039;&lt;br /&gt;
&lt;br /&gt;
    VALUES              ::= &amp;lt;VALUES&amp;gt; &amp;lt;VALUE&amp;gt;&lt;br /&gt;
                        |   &amp;lt;VALUE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    VALUE               ::= &#039;\&#039;  &amp;lt;NUM&amp;gt;              # Back Reference&lt;br /&gt;
                        |   &#039;\&#039;&#039; &amp;lt;ALLCHARS&amp;gt; &#039;\&#039;&#039;    # Literal&lt;br /&gt;
                        |   &amp;lt;ALLCHARS&amp;gt;              # Const, synonymous to Literal&lt;br /&gt;
&lt;br /&gt;
    identifer           ::= &#039;%&#039; &amp;lt;ALNUM&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    regexp              ::= &amp;lt;ALLCHARS&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ALNUMS              ::= ALNUMS ALNUM&lt;br /&gt;
                        |   ALNUM &lt;br /&gt;
&lt;br /&gt;
    ALNUM               ::= [&#039;a&#039;-&#039;z&#039;|&#039;A&#039;-&#039;Z&#039;|&#039;0-&#039;9&#039;]&lt;br /&gt;
&lt;br /&gt;
    ALLCHARS            ::= [.*]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==In-Map Examples, Maps for &#039;&#039;telephoneNumber&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
* %dw=/\1/:07031 12345-(.*)&lt;br /&gt;
that assigns the extension to the symbol %dw&lt;br /&gt;
&lt;br /&gt;
* %dw=/\2/%root=/\1/:07031(.*) -(.*)&lt;br /&gt;
this assigns the extension to the symbol %dw and the root-/subscriber number to %root.&lt;br /&gt;
&lt;br /&gt;
* If the &amp;lt;value_expression&amp;gt; was skipped, it defaults to \n, wher n is the running index of the symbol_definition (starting with 1). The second example from above can therefore be written as: %root%dw:07031(.*) -(.*)&lt;br /&gt;
&lt;br /&gt;
* A default value for a symbol may be defined by simply applying an an always-match-constant-value. That is, for instance for telephoneNumber  &lt;br /&gt;
%dw=/0/:.*&lt;br /&gt;
 &lt;br /&gt;
* Because of the rule, that a missing regexp defaults to &#039;&#039;&#039;:(.*)&#039;&#039;&#039; , this can be written as&lt;br /&gt;
%dw=/0/&lt;br /&gt;
 &lt;br /&gt;
* If an attribute value is to copied straight, one simply writes &lt;br /&gt;
%e164&lt;br /&gt;
 &lt;br /&gt;
* which is identical with&lt;br /&gt;
%e164=/\1/:(.*)&lt;br /&gt;
&lt;br /&gt;
==Grammar For Out-Maps==&lt;br /&gt;
An out-map is a pair of &amp;lt;destination-attr-name&amp;gt; (name of an innovaphone attribute) and &amp;lt;destination_values&amp;gt;.&lt;br /&gt;
Approximate Grammar:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    destination_values  ::= &amp;lt;destination_values&amp;gt; &amp;lt;destination_value&amp;gt;&lt;br /&gt;
                        |   &amp;lt;destination_value&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    destination_value   ::= &amp;lt;identifier&amp;gt;&lt;br /&gt;
                        |   &#039;\&#039;&#039; &amp;lt;ALLCHARS&amp;gt; &#039;\&#039;&#039;    # Literal&lt;br /&gt;
                        |   &amp;lt;ALLCHARS&amp;gt;              # Const, synonymous to Literal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This grammar allows to fill the e.g. local cn-attribute not only with a single identifier, but with an intermixed concatenation of several identifiers and literals alike e.g.: &#039;&#039;&amp;quot;%sn&#039;, &#039;%givenName&amp;quot;&#039;&#039; - yielding for instance: &#039;&#039;&amp;quot;Doe, Jon&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The following example focusses on the generation of the e164-, node- and loc-attribute.&lt;br /&gt;
*Only Sindelfingen-Numbers (+49(7031)...) will match&lt;br /&gt;
*The numbering node (a.k.a. node-attribute) will then be set to &#039;&#039;root&#039;&#039;. &lt;br /&gt;
*The hosting PBX (a.k.a. loc-attribute) will be set to &#039;&#039;sifi&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Within the AD exists..:&lt;br /&gt;
&#039;&#039;Btw, the Filter was configured to: (&amp;amp;(objectclass=User)(telephoneNumber=*))&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
            Peter&#039;s telephoneNumber:   +49(7031)12345-75&lt;br /&gt;
            John&#039;s telephoneNumber:    +49(7031)12345-74&lt;br /&gt;
            Mary&#039;s telephoneNumber:    +49(7031)12345-43&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Map configuration underneath Configuration/LDAP/Replicator:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
In Maps&lt;br /&gt;
Source Attribute    Assignment Pattern                                    Description&lt;br /&gt;
--------------      ------------------                                    -----------&lt;br /&gt;
cn                  %cn&lt;br /&gt;
telephoneNumber     %tel%loc=/sifi/%node=/root/:\+49.*7031.*12345-(.*)    Sindelfingen numbers with leading &#039;+&#039; at begin: then backref=1 into %tel. Constant=sifi into %loc. Constant=root into %node.&lt;br /&gt;
displayName         %dn&lt;br /&gt;
&lt;br /&gt;
Out Maps&lt;br /&gt;
Dest.-Attribute     Destination Value&lt;br /&gt;
--------------      ----------------&lt;br /&gt;
cn                  %cn&lt;br /&gt;
e164                %tel&lt;br /&gt;
loc                 %loc&lt;br /&gt;
node                %node&lt;br /&gt;
dn                  %dn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is how the output is written into the flash:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mod cmd FLASHDIR0 add-item 102 (cn=Peter Schmidt)(repsrc=ad)(guid;bin=2B1DAA4655AE244D845734951F5F2F1B)(node=root)(loc=sifi)(dn=Peter Schmidt)(e164=74)(usn=3675) &lt;br /&gt;
mod cmd FLASHDIR0 add-item 102 (cn=John Doe)(repsrc=ad)(guid;bin=904AF5506116354E9E86BE9A6C5D67FF)(node=root)(loc=sifi)(dn=John Doe)(e164=75)(usn=3676) &lt;br /&gt;
mod cmd FLASHDIR0 add-item 102 (cn=Mary Fernandez)(repsrc=ad)(guid;bin=575743792731EE478EFB40754885BAAB)(node=root)(loc=sifi)(dn=Mary Fernandez)(e164=43)(usn=3678)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: According to the [[#Grammar For Out-Maps|Out-Maps Grammar]] a local attribute can be synthesized from multiple symbols and literals. Here comes an example for the aggregated synthesis of the local &#039;&#039;&#039;CN&#039;&#039;&#039; attribute.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
In Map&lt;br /&gt;
Source Attribute    Assignment Pattern                                    Description&lt;br /&gt;
--------------      ------------------                                    -----------&lt;br /&gt;
...&lt;br /&gt;
sn                  %sn                                                   Surname (e.g. Fernandez) into %sn&lt;br /&gt;
givenName           %gn                                                   Name (e.g. Mary) into %gn&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Out Map&lt;br /&gt;
Dest.-Attribute     Destination Value&lt;br /&gt;
--------------      ----------------&lt;br /&gt;
...&lt;br /&gt;
cn                  %sn&#039;, &#039;%gn                                            &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
yielding:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mod cmd FLASHDIR0 add-item 102 (cn=Fernandez, Mary)(repsrc=ad)(guid;bin=575743792731EE478EFB40754885BAAB)(node=root)(loc=sifi)(dn=Mary Fernandez)(e164=43)(usn=3678)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==AD Attributes Of Interest==&lt;br /&gt;
The following list names the attributes to be configured as &#039;&#039;Source Attribute&#039;&#039; within an In-Map or to be referenced within the LDAP filter:&lt;br /&gt;
*cn: The Common Name&lt;br /&gt;
**single-valued&lt;br /&gt;
**possible usage: for &#039;&#039;cn&#039;&#039; attribute&lt;br /&gt;
&lt;br /&gt;
*sn: The Surname&lt;br /&gt;
**single-valued&lt;br /&gt;
**possible usage: for DECT display name &#039;&#039;dn&#039;&#039; attribute&lt;br /&gt;
&lt;br /&gt;
*givenName: The Given Name.&lt;br /&gt;
**single-valued&lt;br /&gt;
**possible usage: for DECT display name &#039;&#039;dn&#039;&#039; attribute&lt;br /&gt;
&lt;br /&gt;
*telephoneNumber: The primary business telephone number. To be found on a user&#039;s &#039;&#039;General&#039;&#039; tab.&lt;br /&gt;
**single-valued&lt;br /&gt;
**mostly in international form with leading plus sign (e.g. +49(7031)12345-44)&lt;br /&gt;
**possible usage: for &#039;&#039;e164&#039;&#039; attribute&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
*mobile: The primary mobile-/cell-phone number.&lt;br /&gt;
**single-valued&lt;br /&gt;
**mostly in international form with leading plus sign (e.g. +49(177)1234544)&lt;br /&gt;
**possible usage: for &#039;&#039;e164&#039;&#039; attribute&lt;br /&gt;
&lt;br /&gt;
*homePhone: Primary home phone number.&lt;br /&gt;
**single-valued&lt;br /&gt;
**mostly in international form with leading plus sign (e.g. +49(177)1234544)&lt;br /&gt;
**possible usage: for &#039;&#039;e164&#039;&#039; attribute&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*memberOf: Group memberships. Groups are named here by their Distinguished Name (DN).&lt;br /&gt;
**multi-valued&lt;br /&gt;
**possible usage: for &#039;&#039;root&#039;&#039; attribute&lt;br /&gt;
**&#039;&#039;&#039;Note&#039;&#039;&#039;:Though there might be desires - PBX groups must still be configured manually. PBX groups cannot be configured through AD Replication.&lt;br /&gt;
&lt;br /&gt;
*samAccountName: The logon name&lt;br /&gt;
**single-valued&lt;br /&gt;
**possible usage: for &#039;&#039;h323&#039;&#039; attribute&lt;br /&gt;
&lt;br /&gt;
*mail: Email Address&lt;br /&gt;
**single-valued&lt;br /&gt;
**possible usage: for &#039;&#039;email&#039;&#039;&amp;lt;ref name=&amp;quot;v10&amp;quot;&amp;gt;From on V10: email attribute contains a user&#039;s email address&amp;lt;/ref&amp;gt; attribute&lt;br /&gt;
&lt;br /&gt;
===Notes on replicating the new-in-V10 &#039;&#039;email&#039;&#039; User Attribute ===&lt;br /&gt;
*proxyAddresses: Email Address&lt;br /&gt;
**multi-valued&lt;br /&gt;
**possible usage: for &#039;&#039;email&#039;&#039;&amp;lt;ref name=&amp;quot;v10&amp;quot;/&amp;gt; attribute&lt;br /&gt;
&lt;br /&gt;
From V10 upwards, a new user attribute &#039;&#039;email&#039;&#039; is present in a PBX user entry (see [[Reference10:PBX/Objects#General_Object_Properties | &#039;&#039;E-Mail&#039;&#039; in PBX/Objects]]).  This is stored as a distinct attribute on the LDAP level, so it can be replicated from the active directory.  Please note that since V9, it is recommended to use the users primary email addresses&#039; user part as &#039;&#039;h323&#039;&#039; attribute (e.g. if the users primary email address is &amp;lt;code&amp;gt;user@innovaphone.com&amp;lt;/code&amp;gt;, then the h323 attribute should be set to &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt;).  If you do so, there is no need to set the &#039;&#039;email&#039;&#039; attribute. However, if you set the &#039;&#039;h323&#039;&#039; to something else, you should set the &#039;&#039;email&#039;&#039; attribute in addition.&lt;br /&gt;
&lt;br /&gt;
To do so, you first need to determine how the user&#039;s primary email address is stored in your AD.  We recommend to use AD&#039;s &#039;&#039;proxyAddresses&#039;&#039; attribute.  This is a multi-valued attribute.  Each value contains an address prefixed with a protocol specifier (e.g. &amp;lt;code&amp;gt;smtp:&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sip:&amp;lt;/code&amp;gt;).  If there are multiple addresses for a single protocol, the primary address for this protocol has the protocol specifier in capital letters (e.g. &amp;lt;code&amp;gt;SMTP:&amp;lt;/code&amp;gt;).  SMTP addresses in the &#039;&#039;proxyAddresses&#039;&#039; attribute always include the domain part (e.g. &amp;lt;code&amp;gt;@innovaphone.com&amp;lt;/code&amp;gt;).  As from V9 up it is recommended to use the customers domain as PBX &#039;&#039;System Name&#039;&#039; property and have the &#039;&#039;Use as Domain&#039;&#039; check-mark ticked, the value in the &#039;&#039;email&#039;&#039; attribute shall consist of the user-part only (e.g. &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;user@innovaphone.com&amp;lt;/code&amp;gt;).  &lt;br /&gt;
&lt;br /&gt;
Having said this, appropriate replication patterns are&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Source Attribute          Assignment Pattern                          Description&lt;br /&gt;
----------------          ------------------                          -----------&lt;br /&gt;
proxyAddresses            %mail=/\1/:SMTP:(.*)                        full email address if domain does not match&lt;br /&gt;
proxyAddresses            %mail=/\1/:SMTP:(.*)@sample.com             simplified email address if domain matches&lt;br /&gt;
&lt;br /&gt;
Dest. Attribute          Destination Value&lt;br /&gt;
----------------          ------------------&lt;br /&gt;
email                     %mail&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In many companies, multiple email addresses are used per user.  For example, a user &#039;&#039;Fred Firestone&#039;&#039; with windows account name (&#039;&#039;samAccountName&#039;&#039;) &#039;&#039;ffi&#039;&#039; may have the proxy addresses &#039;&#039;smtp:ffi@sample.com&#039;&#039; and &#039;&#039;SMTP:ffirestone@sample.com&#039;&#039;.  If the windows account name shall be used as value for the &#039;&#039;h323&#039;&#039; attribute, you can note the fact that the &#039;&#039;h323&#039;&#039; attribute contains another valid email address by prefixing the value of the &#039;&#039;email&#039;&#039; attribute with &amp;lt;code&amp;gt;.;&amp;lt;/code&amp;gt;.  Appropriate mappings could thus look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Source Attribute          Assignment Pattern                          Description&lt;br /&gt;
----------------          ------------------                          -----------&lt;br /&gt;
sAMAccountName            %sAMAccountName                             use windows account as Name&lt;br /&gt;
proxyAddresses            %mail=/\1/:SMTP:(.*)                        full email address if domain does not match&lt;br /&gt;
proxyAddresses            %mail=/\1/:SMTP:(.*)@innovaphone.com        simplified email address if domain matches&lt;br /&gt;
&lt;br /&gt;
Dest. Attribute           Destination Value&lt;br /&gt;
----------------          ------------------&lt;br /&gt;
email                     .;%mail                                     apply h323 (Name) as valid email&lt;br /&gt;
h323                      %sAMAccountName                             set h323 to windows account&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is unclear (to us :-)) if AD&#039;s &#039;&#039;email&#039;&#039; attribute always holds the primary SMTP address.&lt;br /&gt;
&lt;br /&gt;
=Tips&amp;amp;Tricks=&lt;br /&gt;
&lt;br /&gt;
==Investigating/Dumping An AD Object==&lt;br /&gt;
If you want to learn or study about how the AD stores user objects and which attributes are available per user, the tool &#039;&#039;&#039;ldifde.exe&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;ldifde&amp;quot;&amp;gt;Using LDIFDE, http://support.microsoft.com/kb/237677 or LDIFDE, http://technet2.microsoft.com/WindowsServer/en/Library/32872283-3722-4d9b-925a-82c516a1ca141033.mspx?mfr=true&amp;lt;/ref&amp;gt; will be of help.&lt;br /&gt;
Ldifde.exe is a Microsoft command line program which is part of a Windows Server installation. It allows to dump the complete AD content or parts of it into LDIF&amp;lt;ref&amp;gt;RFC2849, LDAP Data Interchange Format&amp;lt;/ref&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
To Dump the AD object for a Windows user &#039;&#039;John Doe&#039;&#039; into a file &#039;&#039;out.txt&#039;&#039;&lt;br /&gt;
*On a Windows Server open up a command line box.&lt;br /&gt;
*Enter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldifde -s 127.0.0.1 -r &amp;quot;(sn=doe)&amp;quot; -f out.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Btw, from the file you can also learn which Distinguished Names (DNs) are available. A DN may be required as user name within the common server settings on the LDAP/Replicator page.&lt;br /&gt;
&lt;br /&gt;
To Dump all AD user objects into a file &#039;&#039;out.txt&#039;&#039;&lt;br /&gt;
*On a Windows Server open up a command line box.&lt;br /&gt;
*Enter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldifde -s 127.0.0.1 -r &amp;quot;(objectclass=User)&amp;quot; -f out.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deleting AD-Replicated Objects==&lt;br /&gt;
You may delete up to 100 objects in one instance.&lt;br /&gt;
*Proceed to [[Reference7:Configuration/LDAP/Expert|Reference7:Configuration/LDAP/Expert]]&lt;br /&gt;
*Enter the LDAP filter &#039;&#039;(repsrc=*)&#039;&#039; into the search edit field an click on &#039;&#039;&#039;Show&#039;&#039;&#039;&lt;br /&gt;
*Check the column selector to select all displayed objects&lt;br /&gt;
*Click &#039;&#039;&#039;Delete&#039;&#039;&#039; within the toolbar. A confirmation dialog will be shown.&lt;br /&gt;
*Confirm&lt;br /&gt;
&lt;br /&gt;
==Display Non-AD-Replicated Objects==&lt;br /&gt;
*Proceed to [[Reference7:Configuration/LDAP/Expert|Reference7:Configuration/LDAP/Expert]]&lt;br /&gt;
*Enter the LDAP filter &#039;&#039;(!(repsrc=*))&#039;&#039; into the search edit field an click on &#039;&#039;&#039;Show&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Out-Filtering Disabled Windows Accounts==&lt;br /&gt;
Windows maintains the numerical attribute &#039;&#039;userAccountControl&#039;&#039;&amp;lt;ref&amp;gt;userAccountControl, http://support.microsoft.com/?scid=kb%3Ben-us%3B305144&amp;lt;/ref&amp;gt; for each user object within the AD.&lt;br /&gt;
If Bit 2 is set, the user account was disabled.&lt;br /&gt;
&lt;br /&gt;
A NOT-Filter term, featuring a matching-rule, ensures that this bit isn&#039;t set, i.e. that it is not a disabled account: &lt;br /&gt;
*&#039;&#039;(!(userAccountControl:1.2.840.113556.1.4.803:=2))&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A complete AND-filter may therefore look like this one: &lt;br /&gt;
*&#039;&#039;(&amp;amp;(objectclass=User)(telephoneNumber=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Filtering For Group Memberships==&lt;br /&gt;
The multi-value AD attribute &#039;&#039;memberOf&#039;&#039; carries the information which groups a user is belonging to. Groups are named within the AD by their Distinguished Name (DN), instead of by their friendly name. &lt;br /&gt;
This is how the AD could be storing a group membership &#039;&#039;Berlin&#039;&#039;:&lt;br /&gt;
*memberOf: &#039;&#039;CN=Berlin,CN=Users,DC=innovaphone,DC=sifi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you wanted to filter for members of the group &#039;&#039;Berlin&#039;&#039;, the following AND-filter would do the job:&lt;br /&gt;
*&#039;&#039;(&amp;amp;(objectclass=User)(memberOf=CN=Berlin,CN=Users,DC=innovaphone,DC=sifi))&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The filter must be crafted for an equality match. According to MSDN &#039;&#039;memberOf&#039;&#039; does not allow for substring/wildcard matches.&lt;br /&gt;
&lt;br /&gt;
==Merging Old PBX Users Into An AD-Replicated Database==&lt;br /&gt;
If AD-replication is about to be administrated for a PBX with an existing portfolio of user objects, the question may arise for how to retain those existing objects. This section explains the background and the required administrative steps.&lt;br /&gt;
&lt;br /&gt;
When looking into a PBX&#039;s downloadable configuration file an existing object may grossly look as the following example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mod cmd FLASHDIR0 add-item 102 (cn=Martin Streller)(dn=Martin S.)(h323=mst)(e164=173)(loc=va-sifi)(pbx=etc,..)(pbx=and so on,..)(node=root)(guid;bin=8D7A0AB9E909D311B539009033080010)(usn=106540)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Various informations are stored within individual attributes cn(common name), dn(display name), h323(diallable name), e164(number), loc(pbx name), pbx(groups, diversions,...), node (numbering node). One attribute - the &#039;&#039;guid&#039;&#039; - is the actual identifier for an entire pbx object. It is the actual hook or grip for an object. Once assigned a guid will remain static for the whole object&#039;s lifetime.&lt;br /&gt;
&lt;br /&gt;
With the AD-replication the &#039;&#039;guid&#039;&#039; is also going to play the same role as an identifier. However, the &#039;&#039;guid&#039;&#039; will be taken from the AD. In detail from the AD attribute &#039;&#039;objectGUID&#039;&#039;, which is semantically the same as the &#039;&#039;guid&#039;&#039; of a pbx object. Therefore the necessity arises to manually tweak the &#039;&#039;guid&#039;&#039; as if set by an AD-replication run. After applying this required step the resulting and modified object example from above may look alike:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mod cmd FLASHDIR0 add-item 102 (cn=Martin Streller)(dn=Martin S.)(h323=mst)(e164=173)(loc=va-sifi)(pbx=etc,..)(pbx=and so on,..)(node=root)(repsrc=ad)(guid;bin=4C7BA6C8568CAF4D85BA37486EF39A26)(usn=106540)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The alert reader will notice that not only the &#039;&#039;&#039;guid&#039;&#039;&#039; was changed. An additional attibute &#039;&#039;&#039;repsrc&#039;&#039;&#039; with the value &#039;&#039;&#039;ad&#039;&#039;&#039; joined the set of attributes. This &#039;&#039;repsrc&#039;&#039;-attribute is required internally for all AD-replicated objects. It helps to separate AD-replicated objects from all of the other objects.&lt;br /&gt;
&lt;br /&gt;
With that background in mind, the following recipe summarizes the steps to accomplish.&lt;br /&gt;
*Download and save the entire configuration of the box.&lt;br /&gt;
*Configure the AD-replication.&lt;br /&gt;
*Download the resulting new configuration.&lt;br /&gt;
*Open a copy of the old configuration within a suitable editor.&lt;br /&gt;
**For all affected objects, replace the &#039;&#039;guid&#039;&#039; attribute with the respective &#039;&#039;guid&#039;&#039; from the new configuration.&lt;br /&gt;
**For all affected objects, add the attribute &#039;&#039;repsrc&#039;&#039; with the value &#039;&#039;ad&#039;&#039;.&lt;br /&gt;
**Copy the AD-replication settings: from the new configuration, copy the line beginning with &amp;lt;pre&amp;gt;config change LDAPREP0 /server...&amp;lt;/pre&amp;gt;&lt;br /&gt;
**Copy the AD-replication password: from the new configuration, copy the line beginning with &amp;lt;pre&amp;gt;vars create LDAPREP0/AUTH ...&amp;lt;/pre&amp;gt; &lt;br /&gt;
*Upload the edited old configuration into the box and reboot.&lt;br /&gt;
&lt;br /&gt;
==Assigning Default/Dummy Content Into a Variable==&lt;br /&gt;
Sometimes not all AD objects to be replicated, contain all the required attributes to fill values into all of the &amp;quot;Out Maps&amp;quot;-attributes.&lt;br /&gt;
In order to avoid empty attributes, a dummy content may be provided. The following example outlines how to handle e.g. objects without an email address.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
In Maps&lt;br /&gt;
Source Attribute    Assignment Pattern                                    Description&lt;br /&gt;
--------------      ------------------                                    -----------&lt;br /&gt;
cn                  %cn%mail=/default@example.com/                        cn &amp;amp; default dummy content for mail&lt;br /&gt;
mail                %mail                                                 A real email will override the default content. Must follow in-map with default assignment.&lt;br /&gt;
..&lt;br /&gt;
&lt;br /&gt;
Out Maps&lt;br /&gt;
Dest.-Attribute     Destination Value&lt;br /&gt;
--------------      ----------------&lt;br /&gt;
cn                  %cn&lt;br /&gt;
email               %mail&lt;br /&gt;
..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
Watch out for the &#039;&#039;&#039;LDAP/Replicator-Status&#039;&#039;&#039; page. This page is going to display errors alike&lt;br /&gt;
*&#039;&#039;Invalid Credentials&#039;&#039;, implying wrong credentials for the LDAP authentication. &lt;br /&gt;
*&#039;&#039;Cannot Connect&#039;&#039;, meaning the configured IP address may be wrong.&lt;br /&gt;
*&#039;&#039;Connect Timeout&#039;&#039;, indicating the AD may be down.&lt;br /&gt;
&lt;br /&gt;
If there are non-specific errors listed, a further click on &#039;&#039;&#039;Flash Directory Status&#039;&#039;&#039; may reveal error messages from the flash directory module acting below the replication module.&lt;br /&gt;
[[Image:Ad-repl-status.PNG|center|thumb|200px|Replicator-Status]]&lt;br /&gt;
&lt;br /&gt;
==Suddenly, New Objects Aren&#039;t Replicated. What Can I Do?==&lt;br /&gt;
Few support cases dealt with customers missing the replication of newly created user objects. This section outlines a strategy to identify a root cause. It is based on the MS Ldap client ldifde&amp;lt;ref name=&amp;quot;ldifde&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a batch file and prepare and adapt to your needs, a command line for ldifde as follows:&lt;br /&gt;
&amp;lt;code type=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ldifde -a &amp;quot;&amp;lt;me&amp;gt;\&amp;lt;domain&amp;gt;&amp;quot; &amp;quot;&amp;lt;pw&amp;gt;&amp;quot; -s 192.168.0.5 -g -d &amp;quot;DC=&amp;lt;my-company&amp;gt;,DC=com&amp;quot; -r &amp;quot;(&amp;amp;(objectclass=User)(telephoneNumber=*))&amp;quot; -v  -f result.txt -j c:\tmp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;-a&#039;&#039;&#039; user, password credentials for the LDAP bind authentication&lt;br /&gt;
*&#039;&#039;&#039;-s&#039;&#039;&#039; Server IP address&lt;br /&gt;
*&#039;&#039;&#039;-t&#039;&#039;&#039; optional port&lt;br /&gt;
*&#039;&#039;&#039;-g&#039;&#039;&#039; disable some MS specifics&lt;br /&gt;
*&#039;&#039;&#039;-d&#039;&#039;&#039; The root DN underneath which to search&lt;br /&gt;
*&#039;&#039;&#039;-r&#039;&#039;&#039; The LDAP filter&lt;br /&gt;
*&#039;&#039;&#039;-v&#039;&#039;&#039; Print verbose informations to the console&lt;br /&gt;
*&#039;&#039;&#039;-f&#039;&#039;&#039; The file, results will be written to&lt;br /&gt;
*&#039;&#039;&#039;-j&#039;&#039;&#039; The path, where the log should be stored, it&#039;s mendatory&lt;br /&gt;
&lt;br /&gt;
The paramaters should be aligned to the configuration underneath &#039;&#039;&#039;Services/LDAP/Replicator&#039;&#039;&#039;. In addition it might be a good idea to reduce the size of the file result.txt by providing the command line option&lt;br /&gt;
*&#039;&#039;&#039;-l &amp;quot;cn&amp;quot;&#039;&#039;&#039; This option asks the AD only for the attribute cn.&lt;br /&gt;
&lt;br /&gt;
Then watch-out for the missing objects. If they&#039;re still not present in the result set, then modifiy the LDAP filter &#039;&#039;&#039;-r&#039;&#039;&#039;. Simplified filters may be:&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;(objectclass=User)&amp;quot;&#039;&#039;&#039; Ask for all &#039;&#039;user&#039;&#039; objects&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;(sn=Schmidt)&amp;quot;&#039;&#039;&#039; Ask for the surname/family name &#039;&#039;Schmidt&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&amp;quot;(sn=Sch*)&amp;quot;&#039;&#039;&#039; Ask for all surnames/family names starting with &#039;&#039;Sch&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If the missing objects eventually appear in the result set, then remove the &#039;&#039;&#039;-l&#039;&#039;&#039; option, in order to retrieve the objects in their entirety with all attributes. Look at the object&#039;s attribute and try to draw a conclusion. &lt;br /&gt;
&lt;br /&gt;
Possible causes reported from the field were:&lt;br /&gt;
*Group membership didn&#039;t fit&lt;br /&gt;
*Telephone number wasn&#039;t administrated correctly&lt;br /&gt;
&lt;br /&gt;
=Known Problems=&lt;br /&gt;
==Freshly Deleted AD-Objects Aren&#039;t Deleted Locally==&lt;br /&gt;
Although the replicator receives change notify results from the AD, the AD might not send notifications about the deletion of objects.&lt;br /&gt;
The replicator will be deleting affected objects only after a stop+start of the replication session.&lt;br /&gt;
&lt;br /&gt;
Lab experiments showed that the AD sent such deletion notifications only, if the replicator had authenticated with administrator credentials - which practically isn&#039;t recommendable.&lt;br /&gt;
&lt;br /&gt;
To recover from this peculiarity the following procedure should be implemented:&lt;br /&gt;
*Please obey paragraph [[#Out-Filtering Disabled Windows Accounts|Out-Filtering Disabled Windows Accounts]] under the Tips&amp;amp;Tricks section.&lt;br /&gt;
*Don&#039;t delete AD objects as the first step of the administration procedure for user objects scheduled for deletion.&lt;br /&gt;
*Instead: Disable such objects as the first step.&lt;br /&gt;
&lt;br /&gt;
==Increasing CPU Load if poll Timer is set==&lt;br /&gt;
If you have an AD Forrest you need to configure a poll timer, because the Notify mechanism isn’t working. If you configure a one minute poll timer, a full replication is done every minute. This causes a high CPU load with low priority. &lt;br /&gt;
Furthermore the AD has a mechanism to reestablish a connection if the &#039;&#039;&#039;MaxConnIdleTime&#039;&#039;&#039; is running out. If the connection is reestablished a full replication is done. The default value is 900 seconds (15 minutes). You can change this value with Ntdsutil.exe.&lt;br /&gt;
&lt;br /&gt;
==Replicated Objects Lost After erroneous Changes in Active Directory==&lt;br /&gt;
When the LDAP replication succeeds and a PBX object is found not to be present in the replication result any more, it will be removed from the PBX. This ensures that objects removed from the AD are removed in the PBX also.&lt;br /&gt;
&lt;br /&gt;
However, if an object is missing from the replication result by accident (e.g. because the replication is based on AD groups and the user is mistakenly removed from the group), the corresponding PBX object will be removed too.  When the problem is fixed, the object will be re-created again.  However, all object properties which are not derived from the AD will be lost (in other words, you will end up with a naked object with all manually set properties lost).  To recover from such a situation, the AD problem needs to be fixed and the most recent PBX backup must be applied then. &lt;br /&gt;
&lt;br /&gt;
Note that erroneously changing the LDAP access from &#039;&#039;Global Catalog(GC) Mode&#039;&#039; to &#039;&#039;Non-GC Mode&#039;&#039; will create such a situation too. A GC on port 3268 usually covers a broader database than an AD working in non-GC mode. Therefore it is highly likely to lose just some or even all replicated objects after the GC-mode has been turned off.  Re-enabling the GC-mode alone does not recover from this situation for the reasons explained above.  In this case, restoring the most recent backup will fix the issue, as this backup will also restore the correct LDAP replicator configuration.&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- = Related Articles = --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Freeedit:Wiki_Edit_Sandbox&amp;diff=27038</id>
		<title>Freeedit:Wiki Edit Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Freeedit:Wiki_Edit_Sandbox&amp;diff=27038"/>
		<updated>2012-10-18T12:52:24Z</updated>

		<summary type="html">&lt;p&gt;Eurix: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tobias &#039;&#039;&#039;TeleSys&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1234&lt;br /&gt;
&lt;br /&gt;
Stefano &#039;&#039;&#039;Eksaip&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TESt TEST &#039;&#039;&#039;TEST&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
K.S &#039;&#039;&#039;DTG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[CC:&#039;&#039;&#039;Roman&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
Thrainer Thomas &#039;&#039;&#039;Kufgem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Roberto Arletti &#039;&#039;&#039;DAM SISTEMI&#039;&#039;&#039; SRL&lt;br /&gt;
&lt;br /&gt;
Lars Lerjefors &#039;&#039;&#039;Telmekom&#039;&#039;&#039; srl&lt;br /&gt;
&lt;br /&gt;
test test&lt;br /&gt;
&lt;br /&gt;
Dawid &#039;&#039;&#039;BELL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
iuuo&lt;br /&gt;
&lt;br /&gt;
Jens &#039;&#039;&#039;inexio&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Christopher &#039;&#039;&#039;inexio&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
R.H. &#039;&#039;&#039;MediaMobil&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A.R. &#039;&#039;&#039;DeTeWe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TEsting&lt;br /&gt;
&lt;br /&gt;
D.B. &#039;&#039;&#039;ooperon&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mathias Rüger &#039;&#039;&#039;Telcat Multicom GmbH&#039;&#039;&#039;&lt;br /&gt;
MDN &#039;&#039;&#039;care-call&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;you are crazy to ask such questions.....&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
P.K. &#039;&#039;&#039;CN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
M.B. &#039;&#039;&#039;CW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Christian, &#039;&#039;&#039;Incotec GmbH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Tobias, &#039;&#039;&#039;TelNet GmbH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-thG-&lt;br /&gt;
&lt;br /&gt;
Michael, &#039;&#039;&#039;Frank GmbH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dennis, &#039;&#039;&#039;Bechtle&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bert, &#039;&#039;&#039;Volksbank Stuttgart eG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Martin, &#039;&#039;&#039;Inikon AG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Silvio, &#039;&#039;&#039;Orange Open Solution SRL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marcin &#039;&#039;&#039;Emtel System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Łukasz &#039;&#039;&#039;Emtel System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Christophe &#039;&#039;&#039;e-BO Enterprises&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bram &#039;&#039;&#039;Ooperon&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jo-Jo &#039;&#039;&#039;IPD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Georg &#039;&#039;&#039;IPD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Franco &#039;&#039;&#039;Fiemme Sistemi&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Eurix</name></author>
	</entry>
</feed>