<?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=Twl</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=Twl"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Twl"/>
	<updated>2026-05-09T07:55:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r2:Step-by-Step_Create_notifications_for_a_group_voicemail&amp;diff=78002</id>
		<title>Howto13r2:Step-by-Step Create notifications for a group voicemail</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r2:Step-by-Step_Create_notifications_for_a_group_voicemail&amp;diff=78002"/>
		<updated>2025-10-02T10:43:19Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: Voicemail, MWI, Function key, step-by-step, easy, E-Mail--&amp;gt;&lt;br /&gt;
[[Category:Step-by-Step|Voicemail, MWI Function Key, Badge Count, E-Mail]]&lt;br /&gt;
&lt;br /&gt;
{{HOWTOMOD13r3 Translation Info}}&lt;br /&gt;
&lt;br /&gt;
This article explains how to set up a group voicemail. New voicemail notifications should be received via email and badge count information. It also explains an MWI feature key on a desk phone. This feature key flashes as well when a new voicemail is received for that voicemail group.&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-key-overview.png]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
A common requirement is a voicemail box for a group of users. All users of this group should be notified of a new voicemail so no message is missed.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Notification of a new voicemail by a flashing MWI key&lt;br /&gt;
* Notification of a new voicemail via the voicemail apps (myApps) badge count&lt;br /&gt;
* Notification of a new voicemail by E-Mail&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Innovaphone PBX&lt;br /&gt;
* Innovaphone myApps client&lt;br /&gt;
* A voicemail license is needed for the group voicemail object (no voicemail license for the user is required)&lt;br /&gt;
&lt;br /&gt;
== Things to know before you begin ==&lt;br /&gt;
* Name and number of the group voicemail object&lt;br /&gt;
* Name (SIPid) of each member of the voicemail group&lt;br /&gt;
* Value of the &#039;Custom&#039;-flag of the voicemail object&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
In this scenario we have the following task to configure:&lt;br /&gt;
* User lsv, mro and vgr should receive notifications of new voicemails via a badge count in their voicemail app, via MWI function key and E-mail&lt;br /&gt;
* The name of the voicemail group will be &#039;&#039;group-vm&#039;&#039;&lt;br /&gt;
* The number of the voicemail group will be &#039;&#039;89&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===PBX Manager ===&lt;br /&gt;
Open your PBX Manager and select your voicemail plugin. Since we want to add a voicemail group we will select a voicemail group app&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-key-1.png]]&lt;br /&gt;
&lt;br /&gt;
We are going to configure the following options&lt;br /&gt;
&lt;br /&gt;
* Name: The name is the name of the app and displayed to all users in their myApps client. In our case we will call it &#039;&#039;group-vm&#039;&#039;&lt;br /&gt;
* sip: This name is only used for internal purposes. It is important not to use any space in this name. In our case we will call it &#039;&#039;group-vm&#039;&#039;&lt;br /&gt;
* Number: Please choose any free number in your dial plan. In our scenario we will configure the &#039;&#039;89&#039;&#039; because this will be the number of the voicemail group.&lt;br /&gt;
* PBX: Select the PBX, the voicemail object should be located at.&lt;br /&gt;
* Node: Select the Node of a voicemail object. Please use &#039;&#039;root&#039;&#039; in a flat numbering plan.&lt;br /&gt;
* email notifications: In case you want to receive the voicemail as e-mail as well, this option has to be enabled.&lt;br /&gt;
* custom: Same value as the custom-flag of the voicemail-object.&lt;br /&gt;
* MWI users: Please configure the name (SIPid) of every user of this voicemail group. Users should be separated by a comma.&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-key-2.png]]&lt;br /&gt;
&lt;br /&gt;
Afterwards press OK.&lt;br /&gt;
&lt;br /&gt;
Every user of the group should have the voicemail app. Please use a config template to assign the app to every user of the group.&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-key-3.png]]&lt;br /&gt;
&lt;br /&gt;
Please go to the advanced UI of your PBX and go to PBX/Objects and click show. Now search for the same config Template you just used to assign the app but this time open the phone config of this template.&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-key-4.png]]&lt;br /&gt;
&lt;br /&gt;
Select &#039;&#039;Function-Keys&#039;&#039; on the left bar. To create a function we have to select a position on the phone. If we choose 1, the first position on the top left is used for this function key. As Type for the key we will select &#039;&#039;Message Waiting&#039;&#039;. Then we click on &#039;&#039;Add&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-key-5.png]]&lt;br /&gt;
&lt;br /&gt;
* We can specify an idle text and an active text, which will be displayed in their respective states. &lt;br /&gt;
* As number we will configure the number of the group voicemail &#039;&#039;&#039;twice&#039;&#039;&#039;. In our case the group voicemail has the number &#039;&#039;89&#039;&#039;, so we will configure &#039;&#039;8989&#039;&#039;. Do &#039;&#039;&#039;not&#039;&#039;&#039; set &#039;&#039;Append Own Number&#039;&#039;.&lt;br /&gt;
* We have to set the name to the name of our group voicemail which is &#039;&#039;group-vm&#039;&#039; in our case.&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-key-6.png]]&lt;br /&gt;
&lt;br /&gt;
To receive mails as well we need to edit the group voicemail object in the advanced UI. &lt;br /&gt;
&amp;lt;br&amp;gt;This means we have to search for the object &#039;&#039;group-vm&#039;&#039; and edit the object&#039;s email settings.  &lt;br /&gt;
&amp;lt;br&amp;gt;If you only check the box next to the email text, the email address of this object will consist of the name(sipID) of the group voicemail as the user part and the system name as the domain part. &lt;br /&gt;
&amp;lt;br&amp;gt;Of course you can also configure an arbitrary E-mail address in the text field next to it. &lt;br /&gt;
&amp;lt;br&amp;gt;We recommend to configure a E-mail address of a distribution group. &lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Do not&#039;&#039;&#039; remove the Voicemail-license checkmark which is mandatory and set by PBXManager plugin!&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-mail1.png]]&lt;br /&gt;
&lt;br /&gt;
In most cases, the last step can be skipped, since you probably already set up an SMTP connection to your mail server during the Install. If you are not sure whether you have done that, please go to PBX/Configuration/Authentication in your advanced UI and configure the following parameters.&lt;br /&gt;
&lt;br /&gt;
* SMTP Server: The IP address or DNS Name of the SMTP Server&lt;br /&gt;
* Sender name: This name is used as sender name of the E-mails&lt;br /&gt;
* Email address: The email address for sending mails&lt;br /&gt;
* Username: The username of the email account to authenticate at the mail server&lt;br /&gt;
* Password: The password of the email account to authenticate at the mail server&lt;br /&gt;
&lt;br /&gt;
[[Image:Create-a-mwi-mail2.png]]&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
Create a call forwarding on one of your users to &#039;&#039;8989&#039;&#039; and call this user. Due to the call forwarding the call will be redirected to the group voice box. The Badge count of your group voicemail will increase, all users will receive an E-Mail and the MWI key on all phones will be blinking.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Do not configure a space in the SIPid of the group voicemail.&lt;br /&gt;
* A UC-license can not be applied to a group voicemail object. A single voicemail license is needed. This [[ReleaseNotes13r3:Firmware#152640_-_Voicemail_object:_Config_option_for_UC,_Voicemail_and_Reporting_licenses_was_lost|was fixed in 13r3sr10]].&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Howto:Group_Voicemail]]&lt;br /&gt;
* [[Courseware:IT_Connect_-_09.1_Even_more_Apps#The_Voicemail_App|iT Connect - The Voicemail App]]&lt;br /&gt;
* [https://www.innovaphone.com/en/services/licenses/feature-licenses.html#voicemail Voicemail Licensing]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_TechAssist&amp;diff=73782</id>
		<title>Reference15r1:Concept App Service TechAssist</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_TechAssist&amp;diff=73782"/>
		<updated>2024-10-17T11:40:27Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Internal Timers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service TechAssist]]&lt;br /&gt;
&amp;lt;!-- techassist, ticket, analyze, debug, tests --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r2&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the TechAssist app is to provide helpful tools for technicians, as well as to analyze static and runtime information of a system and check for problems and improvements. In this way, the app can help you find and solve problems and misconfigurations independently and quickly.&lt;br /&gt;
For this purpose, the app supports&lt;br /&gt;
* the execution of &#039;&#039;tests&#039;&#039;&lt;br /&gt;
** a bunch of manufacturer tests are supplied with the app&lt;br /&gt;
** you can create and save your own tests&lt;br /&gt;
** testresults can be downloaded to attach them to a support ticket&lt;br /&gt;
* a PBX license overview&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
There are no licenses needed for this app&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The TechAssist App is installed by default for every new installation and is accessible from the Config Admin template.&lt;br /&gt;
&lt;br /&gt;
=== With the PBX manager AP app installer plug-in === &lt;br /&gt;
[[File:Ap_app_installer.png]]&lt;br /&gt;
&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Techassist&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v14&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP techassist&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as display name &#039;&#039;(all character allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: TechAssist, SIP: techassist&#039;&#039;&lt;br /&gt;
&#039;&#039;Hint : The App needs access-right to one devices-api. The access to &amp;quot;devices-api&amp;quot; will be set automatically. If you want to have another devices-apis working with techassist, you have to configure it manually in the advanced UI.&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Test Engine ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
==== Technical look inside ====&lt;br /&gt;
[[File:Concept_TechAssist.png|thumb|upright=1.0|right|Technical Overview]]&lt;br /&gt;
The app service receives multiple incoming websocket connections of the app objects from the PBXes. By assigning rights to a to your desired &amp;quot;devices-apis&amp;quot; (in the Apps tab), the app service receives the corresponding rights to connect to the respectively activated DevicesApps. All managed domains and devices can then be read in via this connection. (One TechAssist can only connect with one device-api)&lt;br /&gt;
With this procedure, you can work with one DevicesApp instance and across all domains and devices in it.&lt;br /&gt;
&lt;br /&gt;
==== Submodules ====&lt;br /&gt;
The app contains various sub-modules in order to be able to carry out the tests provided by the manufacturer and also to be able to integrate custom tests created by yourself.&lt;br /&gt;
&lt;br /&gt;
;scheduler&lt;br /&gt;
: The scheduler initially loads all tests and performs a plausibility check of the individual tests. From this status onwards, the scheduler ensures that all tests are executed in the required time intervals.&lt;br /&gt;
: Inside the Scheduler the tick is 5000 milliseconds, and test are executed sequentially to prevent high system load&lt;br /&gt;
;cmd&lt;br /&gt;
: The cmd submodule (derived from &amp;quot;command&amp;quot;) can communicate with devices in the installation to query a status, the config or similar. The submodule takes care of all the information that tests from an installation want to have, consolidates them so that queries do not have to be executed multiple times and caches the results.&lt;br /&gt;
;test&lt;br /&gt;
: The test submodule is instantiated per test and provides all necessary functionalities within a test.&lt;br /&gt;
&lt;br /&gt;
==== UI Language ====&lt;br /&gt;
By design, only the app itself is available in multiple languages. The content of the tests and technical output is intentionally only available in english.&lt;br /&gt;
&lt;br /&gt;
==== Tests ====&lt;br /&gt;
The app contains a bunch of embedded test, but it is also possible to create and save your own tests.&lt;br /&gt;
&lt;br /&gt;
=== UI ===&lt;br /&gt;
==== Expert Mode ====&lt;br /&gt;
By default there are some expert information hidden in the left menu bar. You will find a switch for that in the left menu (non-mobile-view) to enable all menu items.&lt;br /&gt;
&lt;br /&gt;
==== Dealing with the Code Editor ====&lt;br /&gt;
The Code Editor is a tool for viewing the tests supplied and writing your own tests based on these tests.&lt;br /&gt;
&lt;br /&gt;
The editor is divided into 3 basic areas.&lt;br /&gt;
;Left - Code Editor&lt;br /&gt;
:This is the code editor where you can write your test code in the browser. When you close the app, the content in the editor is saved, so that the next time you open the app you will find your old code again.&lt;br /&gt;
&lt;br /&gt;
;Top right - Menu bar&lt;br /&gt;
:Here you will find the following functions:&lt;br /&gt;
:Selection of all existing Tests (predefined vendor Tests and your own custom Tests)&lt;br /&gt;
:Load the source code of the selected Test to the code editor&lt;br /&gt;
:Delete the selected test from the app (This is only possible for custom tests)&lt;br /&gt;
:Execute the source code (with or without cached commands in the service) in the Code Editor and show the result&lt;br /&gt;
:Clear the Code Editor&lt;br /&gt;
:Save the current Content from the code Editor as Test&lt;br /&gt;
::The title of your test is divided from the &#039;&#039;title&#039;&#039; property in your test (lower based without non-alphanumeric characters). This means: If you save another Test with the same &#039;&#039;title&#039;&#039; the value will be saved in the other test.&lt;br /&gt;
&lt;br /&gt;
;Top right - Results&lt;br /&gt;
:If you execute, save or delete a test you will get the response/results in this area&lt;br /&gt;
&lt;br /&gt;
=== Create your own Testscript ===&lt;br /&gt;
You can create your own Test scripts in a JavaScript based environment.&lt;br /&gt;
A test itself is a JavaScript object with some configurations properties and a section of &#039;&#039;freestyle&#039;&#039; code to use JavaScript habits to perform your test. If your test will be executed, an above layer will call your &#039;&#039;test()&#039;&#039; method and want to have a return object with your result.&lt;br /&gt;
&lt;br /&gt;
There already exists a global Object called &#039;&#039;&#039;tests_add&#039;&#039;&#039;. You can add your own Test as Property to this existing Object like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
   title: &#039;Check for xyz&#039;,&lt;br /&gt;
   // configuration properties&lt;br /&gt;
   &lt;br /&gt;
   test: function (cmd, result, storage) {&lt;br /&gt;
       // your custom test code&lt;br /&gt;
&lt;br /&gt;
       return {&lt;br /&gt;
           success: false,&lt;br /&gt;
           msg: &#039;....&#039;&lt;br /&gt;
       };&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The way to add a test with &amp;lt;code&amp;gt;tests_add.my_new_test = tests_add.my_new_test || {}&amp;lt;/code&amp;gt; is important so that two tests do not overwrite each other. Please also pay attention to this. In this example, we have a &#039;&#039;logical condition&#039;&#039; in the first line. If the test &#039;&#039;my_new_test&#039;&#039; already exists in the object &#039;&#039;tests_add&#039;&#039; the left side from the &#039;&#039;OR-condition&#039;&#039; is &#039;&#039;true&#039;&#039;, and the existing test takes place. Otherwise, it is &#039;&#039;false&#039;&#039; and the right side (your new test object) will be written to &#039;&#039;tests_add.my_new_test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration Properties ====&lt;br /&gt;
You must configure certain properties in your test so that the scheduler knows exactly how to handle your test.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
  title: &#039;Unknown / New devices&#039;,&lt;br /&gt;
  description: &#039;Check for unassigned devices in your installation&#039;,&lt;br /&gt;
  todo: &#039;Please check the unknown devices in your installation and acceppt or delete the devices&#039;,&lt;br /&gt;
  author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
  enabled: true,&lt;br /&gt;
  schedule: &#039;1h&#039;,&lt;br /&gt;
  commands: { ... },&lt;br /&gt;
&lt;br /&gt;
  test: function (cmd, result, storage) {&lt;br /&gt;
    // your custom test code&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Mandatory properties =====&lt;br /&gt;
&lt;br /&gt;
; title&lt;br /&gt;
: string | The title of your test, which is displayed in the UI&lt;br /&gt;
; description&lt;br /&gt;
: string | A short description of your test, which is displayed in the UI&lt;br /&gt;
; todo&lt;br /&gt;
: string | An instruction on what the user has to do if the check fails. It will be displayed above the logfile in failed tests. (You can use &#039;&#039;\r\n&#039;&#039; for line breaks)&lt;br /&gt;
: Variable &amp;lt;nowiki&amp;gt;{{VERSION}}&amp;lt;/nowiki&amp;gt; will be replaced to current Version of the app like &amp;quot;14r1&amp;quot;&lt;br /&gt;
; author&lt;br /&gt;
: string | The contact of the person who create the test&lt;br /&gt;
; schedule&lt;br /&gt;
: string | The time interval during which the test is to be carried out independently. The format is composed of a numerical value and interval value. This allows you to create combinations such as &amp;lt;code&amp;gt;5m (every 5 minutes), 10h (every 10 hours) or 1d (every day) &amp;lt;/code&amp;gt;. A special case which is also allowed is the value &#039;&#039;none&#039;&#039;. With a &#039;&#039;none&#039;&#039; value, your test will not be executed automatically, but is available in the app. So the user is able to execute your test manually.&lt;br /&gt;
: Possible interval values are:&lt;br /&gt;
: &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; (seconds)&lt;br /&gt;
: &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; (minutes)&lt;br /&gt;
: &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; (hours)&lt;br /&gt;
: &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt; (days)&lt;br /&gt;
: &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; (weeks)&lt;br /&gt;
: Please note that each execution of a test requires resources. For example, if you create a test with &#039;&#039;1m&#039;&#039; that is executed every minute, you may well create an unpleasant impact! The system automatically checks the execution time of your test against your specified interval. If your test runs for a longer time than your schedule, your &#039;&#039;schedule&#039;&#039; parameter is automatically doubled by the system.&lt;br /&gt;
: Please note the [[#Submodules|Submodule Scheduler]] with Tick and synchronous execution. For example, it is not possible to execute a test every second.&lt;br /&gt;
&lt;br /&gt;
===== Optional properties =====&lt;br /&gt;
&lt;br /&gt;
; commands&lt;br /&gt;
: object | An object in which you can list all the commands, values, etc. that you want to use later in your test. As soon as your test() method is called, the returns of these commands are passed in as parameters so that you can analyze them. For detailed documentation, please see the [[#Property_.22commands.22|commands-documentation]] below.&lt;br /&gt;
; minBuild&lt;br /&gt;
: int | The minimum build version of the app, that the Test will be executed.&lt;br /&gt;
; oneTime&lt;br /&gt;
: bool | If &#039;&#039;true&#039;&#039; the test will be self-deactivated after the first successful execution.&lt;br /&gt;
; enabled&lt;br /&gt;
: bool | If &#039;&#039;false&#039;&#039; the test will be loaded but not executed. The user will see the test in the list of test, and it is possible to enable it (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
; hidden&lt;br /&gt;
: bool | If &#039;&#039;true&#039;&#039; the test will be skipped by the system and will not be loaded (default: &#039;&#039;false&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
==== Property &amp;quot;commands&amp;quot; ====&lt;br /&gt;
The property &#039;&#039;commands&#039;&#039; is an object where you can define innovaphone specific commands that are executed before your test will be executed. The results of the given commands will be passed to your test in the parameter &#039;&#039;results&#039;&#039;. Think about that, all your commands will be cached until the &#039;&#039;schedule&#039;&#039; timeout is exceeded. This means that you will only get a new result of the command after the schedule time has elapsed in relation to the time of your last execution. The only exceptions is when the user manually re-executes a test via the UI or caching has been explicitly disabled at the command&lt;br /&gt;
&lt;br /&gt;
You have to consider a special nested notation when creating your commands, so that you can use them later.&lt;br /&gt;
&lt;br /&gt;
===== outer commands-object =====&lt;br /&gt;
Let&#039;s start with some first basic rules:&lt;br /&gt;
* &#039;&#039;commands&#039;&#039; is an object with one property per command. At this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on.&lt;br /&gt;
* Every child-property (let&#039;s call it &amp;quot;command-object&amp;quot;) is a new object which contains all needed information for this specific command&lt;br /&gt;
* The title of the property &amp;quot;command-object&amp;quot; is defined by yourself&lt;br /&gt;
** Spoiler: The title of your &amp;quot;command-object&amp;quot; should be used later if you want to read the result for a specific device&lt;br /&gt;
* You can list multiple &amp;quot;command-objects&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Up to here we have the following and can define it like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  my_command_one: {},&lt;br /&gt;
  my_command_two: {},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== single command-object =====&lt;br /&gt;
&lt;br /&gt;
Then we have some new rules per &amp;quot;command-object&amp;quot;:&lt;br /&gt;
* A property called &#039;&#039;cmd&#039;&#039; is expected. This property contains the real command which shall be executed (Remember, at this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on)&lt;br /&gt;
** Example 1: &amp;lt;code&amp;gt;cmd: &#039;CMD0/box_info.xml&#039;&amp;lt;/code&amp;gt; will give you the xml output of the general overview page&lt;br /&gt;
** Example 2: &amp;lt;code&amp;gt;cmd: &#039;!mod cmd CDR0 qs&#039;&amp;lt;/code&amp;gt; will give you the amount of buffered CDRs in the CDR0 interface&lt;br /&gt;
** Example 3: &amp;lt;code&amp;gt;cmd: &#039;cfg.txt&#039;&amp;lt;/code&amp;gt; will give you back the full configuration file&lt;br /&gt;
** If you are already firm with the innovaphone based command syntax, you will see that you can use any HTTP command which can be sent to an innovaphone device&lt;br /&gt;
* Some more properties can be defined optionally. See documentation below&lt;br /&gt;
&lt;br /&gt;
Up to here we have an idea of a specific &amp;quot;command-object&amp;quot; and can do the following now:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this command, we can collect the &amp;quot;buffered CDRs&amp;quot; on both CDR Interfaces in our boxes. Maybe you see it directly... This will not make really sense in a real setup because CDRs only generated by Gateways/PBXes. So we don&#039;t need to bother phones with these requests.&lt;br /&gt;
So from now on we take care about our defined command. There are optional parameters that we can also list inside a &amp;quot;command-object&amp;quot; to let the system know what is the to-do with this command.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
: string | Any HTTP command you can send to an innovaphone device. There is a limit of 15 seconds for every http request. If your request exceeds this limit the request will be cancelled.&lt;br /&gt;
;cat&lt;br /&gt;
: array | An optional list of device types on which the command is to be executed. If &#039;&#039;cat&#039;&#039; is empty, it means all devices in your installation.&lt;br /&gt;
: You can define the following device categories:&lt;br /&gt;
: &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; - all PBXes&lt;br /&gt;
: &amp;lt;code&amp;gt;gw&amp;lt;/code&amp;gt; - all Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;ap&amp;lt;/code&amp;gt; - all App Platforms&lt;br /&gt;
: &amp;lt;code&amp;gt;dect&amp;lt;/code&amp;gt; - all Dect Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;phone&amp;lt;/code&amp;gt; - all Phones&lt;br /&gt;
: &amp;lt;code&amp;gt;monitoring&amp;lt;/code&amp;gt; - all categories based on Monitoring settings&lt;br /&gt;
;cache&lt;br /&gt;
: bool | If you set it to &#039;&#039;false&#039;&#039; you will never get a cached value. Please use this option wisely and only if you really need it. (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s improve our example from above and get the bufferd CDRx information only from pbxes and gateways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== execution and results of commands =====&lt;br /&gt;
Up to now, we have only defined commands that are to be executed on certain devices. When your test is executed, the previously defined commands are executed and the system collects the returns in a corresponding object (called &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;) which is passed into your &amp;lt;code&amp;gt;test(cmd, results)&amp;lt;/code&amp;gt; method. There you can access the results and do whatever you want to test/analyze or whatever with the return value. You will find an example and some sample-code how to use the results-object in the description of the &#039;&#039;test() method&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== nested commands-objects =====&lt;br /&gt;
You can now send any commands and the results will be returned to you for evaluation.&lt;br /&gt;
As you may have already noticed, there is no possibility to place multiple commands in dependency. But this is the way to do this.&lt;br /&gt;
&lt;br /&gt;
For more complicated tests, it is necessary to execute several commands one after the other and to generate following commands dynamically on the basis of the result of the first command.&lt;br /&gt;
&lt;br /&gt;
For such tests, there is the possibility to specify an object &amp;quot;commands&amp;quot; within a &amp;quot;command-object&amp;quot;. From this level, you can define a dynamic function in which you can apply your own code based on the first result, and then return a new &#039;&#039;commands-object&#039;&#039;. In this return statement, you also have the option of returning another dynamic function in order to be able to create processes of any complexity. Please note that if you not return an &#039;&#039;object&#039;&#039; your return value will be discarded. The results of your nested &#039;&#039;command-objects&#039;&#039; will be passed to the &#039;&#039;test()&#039;&#039; method inside the &#039;&#039;results&#039;&#039; object.&lt;br /&gt;
&lt;br /&gt;
This is certainly not easy to understand. Therefore, let us take a closer look at it with an example.&lt;br /&gt;
&lt;br /&gt;
====== example: nested commands-object which generates the second command from the first result ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  certificates: {&lt;br /&gt;
    cmd: &#039;X509/mod_cmd.xml&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;, &#039;dect&#039;],&lt;br /&gt;
    commands: function(cmd, result) {&lt;br /&gt;
                // free style code to build the following commands&lt;br /&gt;
                var xml = cmd.parse_xml(result);&lt;br /&gt;
                //log(JSON.stringify(xml));&lt;br /&gt;
                &lt;br /&gt;
                var fingerprint;&lt;br /&gt;
                // get the fingerprint for single cert&lt;br /&gt;
                if (typeof xml.info.servercert.certificate[&#039;@fingerprint&#039;] !== &#039;undefined&#039;) {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[&#039;@fingerprint&#039;]&lt;br /&gt;
                }&lt;br /&gt;
                // use last certificates in case of multiple&lt;br /&gt;
                else {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[xml.info.servercert.certificate.length - 1][&#039;@fingerprint&#039;];&lt;br /&gt;
                }&lt;br /&gt;
                cmd.log(&#039;Fingerprint: &#039;+fingerprint);&lt;br /&gt;
                &lt;br /&gt;
                return {&lt;br /&gt;
                    certificate: {&lt;br /&gt;
                        cmd: &#039;X509/mod_cmd.xml?cmd=servercert-details&amp;amp;fingerprint=&#039;+fingerprint,&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to check which key-length is used in the device certificate. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;certificates&amp;quot; on devices (pbx, gw, dect) the command &amp;quot;X509/mod_cmd.xml&amp;quot; which will give you back the xml payload of the page [[{{NAMESPACE}}:General/Certificates]]&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to to what we need, to build a following command&lt;br /&gt;
## Here we convert xml to an object and extract the certificate fingerprint from the result of the first request&lt;br /&gt;
## then we return an object with &amp;quot;command-objects&amp;quot;&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## this second command will be executed to for every device and the xml payload contains the device certifcate of the current device. (like the popup in the UI if you click on a specific certificate)&lt;br /&gt;
#If all nested commands are processed, then your test() will be called, and you get all the results (in this case &amp;quot;certificates&amp;quot; and &amp;quot;certificate&amp;quot;) in the results-object&lt;br /&gt;
&lt;br /&gt;
====== example: nested commands-object which generates various commands from the first result ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
	config: {&lt;br /&gt;
		cmd: &#039;cfg.txt&#039;,&lt;br /&gt;
		cat: [&#039;pbx&#039;],&lt;br /&gt;
		commands: function(cmd, result) {&lt;br /&gt;
			var lines = result.split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
			var output = {};&lt;br /&gt;
			&lt;br /&gt;
			// get pbx loc&lt;br /&gt;
			var loc = false;&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				if (!lines[l].startsWith(&#039;config change PBX0&#039;)) continue; // skip non pbx line&lt;br /&gt;
				if (lines[l].includes(&#039;/mode standby&#039;)) continue; // skip slave pbxes&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/config change PBX0 (.*) \/loc ([^ ][^/]+)/);&lt;br /&gt;
				loc = match[2].substr(0, match[2].length-1);&lt;br /&gt;
				l = lines.length;&lt;br /&gt;
			}&lt;br /&gt;
			cmd.log(&#039;use pbx loc: &#039;+loc);&lt;br /&gt;
			&lt;br /&gt;
			// get user objects&lt;br /&gt;
			var regex = new RegExp(&#039;/\(loc=&#039;+loc+&#039;\)(.*)\(guid;bin=([0-9A-Za-z]+)\)/&#039;);&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				// skip if user is not from this pbx&lt;br /&gt;
				if (!lines[l].includes(&#039;(loc=&#039;+loc+&#039;)&#039;)) continue;&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/\(guid;bin=([0-9A-Za-z]+)\)/);&lt;br /&gt;
				if (!match) continue;&lt;br /&gt;
				cmd.log(&#039;user found: &#039;+match[1]);&lt;br /&gt;
				output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			return output;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to get the xml output from the advanced ui for every pbx object. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;config&amp;quot; on PBXes the get the plain configuration file&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called, and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to do what we need, to build multiple following commands&lt;br /&gt;
&lt;br /&gt;
## Here we split the config file by lines breaks and iterate the whole config&lt;br /&gt;
## then we generate an empty return object to fill it later&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## If we have checked the pbx and the userobject we add with &amp;lt;code&amp;gt;output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&amp;lt;/code&amp;gt; a specific command to the retunr value&lt;br /&gt;
&lt;br /&gt;
In the end, we have a big return object with multiple cmd&#039;s&lt;br /&gt;
In this case we will get all the results in the test() later and can do further stuff with the results.&lt;br /&gt;
&lt;br /&gt;
==== Executable method test() ====&lt;br /&gt;
The upper layer expects a method &amp;lt;code&amp;gt;test(cmd, results, storage)&amp;lt;/code&amp;gt; in your JavaScript object. This method has three parameters.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
:An object that offers you a wide range of predefined functions and options. You can see it as a kind of library, which is documented at the [[#cmd object|cmd object]].&lt;br /&gt;
&lt;br /&gt;
;results&lt;br /&gt;
:An object of the results of your commands from the given &#039;&#039;command-objects&#039;&#039; in your test definition.&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample strcuture of the results object&amp;quot; hide=&amp;quot;hide sample strcuture of the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// structure of results object&lt;br /&gt;
{&lt;br /&gt;
  // your command is the property&lt;br /&gt;
  &#039;buffered_cdr0&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  &#039;buffered_cdr1&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show best practice code to deal with the results object&amp;quot; hide=&amp;quot;hide best practice code to deal with the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// you can use this inside your function &amp;quot;test: function (cmd, results, storage)&amp;quot; to iterate all commands over all affected devices&lt;br /&gt;
        &lt;br /&gt;
Object.keys(results).forEach(function(command) {&lt;br /&gt;
  log.push(&#039;command: &#039;+command);&lt;br /&gt;
  Object.keys(results[command]).forEach(function(device) {&lt;br /&gt;
    log.push(&#039;device: &#039;+device);&lt;br /&gt;
    var output = results[command][device];&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// expected log array from the code above:&lt;br /&gt;
// $ command: buffered_cdr0&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
// $ command: buffered_cdr1&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;storage&lt;br /&gt;
:If the test has written something to the test memory during the last execution, you will get the last value back here. (Note that the storage is not available for one-time tests in the code editor. There you will always get an empty storage)&lt;br /&gt;
&lt;br /&gt;
===== return test result =====&lt;br /&gt;
Your test has to be return an object with your test result. The system expect an object with the following properties.&lt;br /&gt;
&lt;br /&gt;
; success&lt;br /&gt;
: boolean | indicates if your test was successful or not&lt;br /&gt;
; msg&lt;br /&gt;
: string | an optional short message that will be displayed in the UI as preview&lt;br /&gt;
; log&lt;br /&gt;
: array | an optional array with lines of logfile that you can use to display detailed information in the UI at your test result. Use &amp;lt;code&amp;gt;log.push()&amp;lt;/code&amp;gt; to fill up the logfile array. In the frontend, the log will be parsed and mac addresses &amp;lt;code&amp;gt;/(^|\W)([a-f0-9]{12})(\W|$)/i&amp;lt;/code&amp;gt; will be updated with an internal link to devices app. (If you want to create instead debug output to the app-instance logfile you can use &amp;lt;code&amp;gt;cmd.log()&amp;lt;/code&amp;gt;)&lt;br /&gt;
;storage&lt;br /&gt;
: string | an optional string, which can be json or similar, that is stored for this test. The next time the test is executed, the payload saved here is available inside the test again.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
test: function (cmd, results, storage) {&lt;br /&gt;
  // your stuff&lt;br /&gt;
  var count = 2;&lt;br /&gt;
 &lt;br /&gt;
  return {&lt;br /&gt;
    success: false,&lt;br /&gt;
    msg: &#039;There are &#039;+count+&#039; new/unassigned devices in your setup&#039;&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The full picture ====&lt;br /&gt;
===== Complete sample test to check buffered CDRs =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.cdrs_buffered = tests_add.cdrs_buffered || {&lt;br /&gt;
    title: &#039;Buffered CDRs&#039;,&lt;br /&gt;
    description: &#039;This test will check if CDRs on a gateway was buffered and are not transmit to the CDR target yet&#039;,&lt;br /&gt;
    todo: &#039;Check the CDR target&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    enabled: true,&lt;br /&gt;
    schedule: &#039;10m&#039;,&lt;br /&gt;
    &lt;br /&gt;
    commands: {&lt;br /&gt;
        cdr0: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr1: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr2: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR2 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr3: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR3 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr4: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR4 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results, storage) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        &lt;br /&gt;
        for (var n = 0; n &amp;lt; 5; n++) {&lt;br /&gt;
            Object.keys(results[&#039;cdr&#039;+n]).forEach(function(i){&lt;br /&gt;
                var check = calculate_cdrs(results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                // result was not good, lets create a human error message&lt;br /&gt;
                if (check !== true) {&lt;br /&gt;
                    log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+check+&#039;% - &#039;+results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                    if (success) success = false;&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;Devices with buffered CDRs exists&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    &lt;br /&gt;
        function calculate_cdrs(str) {&lt;br /&gt;
            // QS messages: 0 max 2000 chars: 0 max 300000&lt;br /&gt;
            var check = 0;&lt;br /&gt;
            str = str.split(&#039; &#039;);&lt;br /&gt;
            // log.push(str);&lt;br /&gt;
        &lt;br /&gt;
            var messages_current = str[2];&lt;br /&gt;
            var messages_max = str[4];&lt;br /&gt;
            var chars_current = str[6];&lt;br /&gt;
            var chars_max = str[8];&lt;br /&gt;
        &lt;br /&gt;
            // check messages&lt;br /&gt;
            check = cmd.percent(messages_current, messages_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            // check chars&lt;br /&gt;
            check = cmd.percent(chars_current, chars_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Complete sample test to check firmware versions =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.firmware_version = tests_add.firmware_version || {&lt;br /&gt;
    title: &#039;Supported firmware versions&#039;,&lt;br /&gt;
    description: &#039;Check if you have unsupported firmware version in use&#039;,&lt;br /&gt;
    todo: &#039;Update the firmware on affected devices&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    schedule: &#039;1d&#039;,&lt;br /&gt;
    commands: {&lt;br /&gt;
        box_info: {&lt;br /&gt;
            cmd: &#039;CMD0/box_info.xml&#039;,&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results, storage) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        var msg = &#039;&#039;;&lt;br /&gt;
        &lt;br /&gt;
        Object.keys(results.box_info).forEach(function(i){&lt;br /&gt;
            var xml = cmd.parse_xml(results.box_info[i]);&lt;br /&gt;
            if (typeof xml.info === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys[&#039;@version&#039;] === &#039;undefined&#039;) return;&lt;br /&gt;
            &lt;br /&gt;
            if (&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;6.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;7.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;8.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;9.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;10.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;12r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;13r1&#039;)&lt;br /&gt;
            ) {&lt;br /&gt;
                log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+xml.info.sys[&#039;@version&#039;]);&lt;br /&gt;
                if (success) success = false;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;You use old firmware which is no longer be supported&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cmd object ====&lt;br /&gt;
The &#039;&#039;&#039;cmd&#039;&#039;&#039; object provides you the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== get device information / system information =====&lt;br /&gt;
&lt;br /&gt;
====== get_domains() : object ======&lt;br /&gt;
You will receive all existing domains&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.get_domains();&lt;br /&gt;
console.log(domains);&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;1&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;deployAdminPasswords&amp;quot;: true,&lt;br /&gt;
   &amp;quot;isInstanceDomain&amp;quot;: true,&lt;br /&gt;
   &amp;quot;categories&amp;quot;: [ ... ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_devices() : object ======&lt;br /&gt;
You will receive all existing devices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices();&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;0_009033420623&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0_009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 dvl [13.7526/132035/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_devices_from_domain(int id) : object ======&lt;br /&gt;
You will receive all devices which are assigned to the given domain&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices_from_domain(1);&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_device(int id) : object ======&lt;br /&gt;
You will receive a specific device&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var device = cmd.get_device(2);&lt;br /&gt;
console.log(device);&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
   &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
   &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
   &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
   &amp;quot;online&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== helper functions =====&lt;br /&gt;
&lt;br /&gt;
====== percent(int value, int total) : float ======&lt;br /&gt;
Returns the number of percent of value to total&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var check = cmd.percent(50, 100);&lt;br /&gt;
console.log(check);&lt;br /&gt;
50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== parse_xml(string xml, string element = &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;) : object ======&lt;br /&gt;
Returns an object/array representation of given XML string. Note that very large XML inputs cannot be converted directly because there are some restrictions in the duktape environment. If you receive an exception with &#039;&#039;Error: RangeError: regexp executor recursion limit&#039;&#039; you have to define which element do you want to converted (See the second example).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var json = cmd.parse_xml(&#039;&amp;lt;sample&amp;gt;&amp;lt;item property_1=&amp;quot;value_1&amp;quot; property_2=&amp;quot;value_2&amp;quot;&amp;gt;content of item&amp;lt;/item&amp;gt;&amp;lt;item_short prop_1=&amp;quot;value_prop_1&amp;quot; /&amp;gt;&amp;lt;/sample&amp;gt;&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;sample&amp;quot;: {&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;@property_1&amp;quot;: &amp;quot;value_1&amp;quot;,&lt;br /&gt;
      &amp;quot;@property_2&amp;quot;: &amp;quot;value_2&amp;quot;,&lt;br /&gt;
      &amp;quot;#&amp;quot;: &amp;quot;content of item&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;item_short&amp;quot;: {&lt;br /&gt;
      &amp;quot;@prop_1&amp;quot;: &amp;quot;value_prop_1&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code with large xml payload&amp;quot; hide=&amp;quot;hide sample code with large xml payload&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var xml_registrations_on_big_pbx = &#039;\&lt;br /&gt;
  &amp;lt;show state=&amp;quot;up&amp;quot; time=&amp;quot;267993&amp;quot; loc=&amp;quot;pbx&amp;quot;&amp;gt;\&lt;br /&gt;
    &amp;lt;attrs&amp;gt;&amp;lt;/attrs&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Fax&amp;quot; guid=&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot; h323=&amp;quot;fax&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;fax&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Voicemail de&amp;quot; guid=&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot; h323=&amp;quot;voicemail-de&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.uc.voicemail.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;vm&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    ... and so on ...\&lt;br /&gt;
  &amp;lt;/show&amp;gt;&#039;;&lt;br /&gt;
var json = cmd.parse_xml(xml_registrations_on_big_pbx, &#039;reg&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Fax&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Voicemail&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== is_supported_version(string version) : object ======&lt;br /&gt;
Return if the given Version string is supported according to [[Howto:Supported innovaphone versions]].&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.is_supported_version(&#039;13r3 sr9 [13.7886/1000/0]&#039;); // return &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_version_from_build(int build) : string ======&lt;br /&gt;
Return the named version from given build number. (13r3, 14r1 or similar)&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.get_version_from_build(1410485); // return &amp;quot;14r1&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== debug =====&lt;br /&gt;
&lt;br /&gt;
====== log(string message) : void ======&lt;br /&gt;
You can write a logfile line to the app debug log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.log(&#039;my first logfile line&#039;);&lt;br /&gt;
07-26 07:58:33.179 TechAssist@slu.de (b0728708) | Test &amp;quot;sample_test&amp;quot; | my first logfile line&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Secret knowledge for good tests ===&lt;br /&gt;
; bool PBX-Object config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;no-subscribe=&amp;quot;true&amp;quot;&amp;lt;/code&amp;gt; (this is from a Trunk Object) in the config. Please note that if the attribute is &#039;&#039;missing&#039;&#039; or the value is &#039;&#039;false&#039;&#039; it is false, otherwise it is &#039;&#039;true&#039;&#039;. For example, the value &amp;lt;code&amp;gt;no-subscribe=&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
; bool Interface config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;/direct-sig on&amp;lt;/code&amp;gt; (this is from a SIP interface) in the config. Please note that they are exists bool-attribute which are &#039;&#039;true&#039;&#039; if the attribute is existing. In the case of bool-attribute the following value make no matter. For example, the attribute &amp;lt;code&amp;gt;/direct-sig off&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
&lt;br /&gt;
== Monitoring ==&lt;br /&gt;
The App supports a monitoring interface where well known IT-Monitoring Systems or other Statistics Services can connect and collect various data for the whole innovaphone installation.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
* Only devices that are known by the &#039;&#039;Devices App&#039;&#039; will be included in the monitoring data&lt;br /&gt;
* Only devices that have a non-empty &amp;quot;Name&amp;quot; in the &#039;&#039;Devices App&#039;&#039; will be included in the monitoring data&lt;br /&gt;
* For included App statistics, the DNS Name in the App Platform has to be set&lt;br /&gt;
* Depending on your external system (to support the automatic host matching magic) it can be needed that all devices has the same &#039;&#039;Name&#039;&#039; in your &#039;&#039;Devices App&#039;&#039; and your external System (Usually the FQDN is used)&lt;br /&gt;
&lt;br /&gt;
===Configurations===&lt;br /&gt;
* In the PBX Manager, you have to configure the credentials for the HTTP authorization to get monitoring data&lt;br /&gt;
* In the TechAssist App in the settings area, you can select categories (PBXes, Gateways, AP Platforms, Apps, DECT, Phones) which should be included in the monitoring data&lt;br /&gt;
* For all app services that provide statistics, the TechAssist app object must have access rights to these apps (the apps must be checked in the &amp;quot;Apps&amp;quot; tab of the PBX object)&lt;br /&gt;
&lt;br /&gt;
===Internal Timers===&lt;br /&gt;
*All Metrics will be updated every 5 minutes&lt;br /&gt;
*App Metrics will be updated every 1 minute&lt;br /&gt;
&lt;br /&gt;
===Supported Integrations===&lt;br /&gt;
We support various output formats over different interfaces. Your System can pull the information and append in the needed Interface/Format to the URL. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Example: https://apps.slu.de/slu.de/techassist/monitoring/JSON (Here is &amp;quot;JSON&amp;quot; the used interface, see below)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use an old/legacy system that only support http basic-auth instead of digest-auth you can add a &amp;quot;/basic&amp;quot; to the endpoint url. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Example: https://&amp;lt;/nowiki&amp;gt;apps.slu.de/slu.de/techassist&#039;&#039;&#039;/basic&#039;&#039;&#039;/monitoring/JSON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RAW ====&lt;br /&gt;
The interface &amp;quot;/RAW&amp;quot; provides the internal TechAssist format as JSON.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;pbx.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;metrics&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;serialnumber&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;005056001338&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;product&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;IPVA&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;version&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;15r1 dvl [15.1.0130/1000/0]&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;versionIsSupported&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;uptime&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 2747,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;CPU&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 100&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;CPU-R&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 26000&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;MEM&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 46,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0.09,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 49793&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;ETH0&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 1000000&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;47&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;ap.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;metrics&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;serialnumber&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;00155db3c306&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;product&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;AppPlatform x86_64&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;version&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;120010  (15r1 1510130 dvl )&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;versionIsSupported&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CSV ====&lt;br /&gt;
The interface &amp;quot;/CSV&amp;quot; provides a simple text based comma separated structure in the format &amp;lt;code&amp;gt;&amp;lt;Hostname&amp;gt;;&amp;lt;Metric&amp;gt;;&amp;lt;Value&amp;gt;;&amp;lt;Comment&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;online&amp;quot;;1;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;serialnumber&amp;quot;;005056001338;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;product&amp;quot;;IPVA;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;version&amp;quot;;15r1 dvl [15.1.0130/1000/0];&lt;br /&gt;
pbx.baebeca.de;&amp;quot;versionIsSupported&amp;quot;;1;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;uptime&amp;quot;;3050;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;CPU&amp;quot;;2;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;CPU-R&amp;quot;;0;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;MEM&amp;quot;;0.09;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;ETH0&amp;quot;;18;null&lt;br /&gt;
ap.baebeca.de;&amp;quot;online&amp;quot;;1;&lt;br /&gt;
ap.baebeca.de;&amp;quot;serialnumber&amp;quot;;00155db3c306;&lt;br /&gt;
ap.baebeca.de;&amp;quot;product&amp;quot;;AppPlatform x86_64;&lt;br /&gt;
ap.baebeca.de;&amp;quot;version&amp;quot;;120010  (15r1 1510130 dvl );&lt;br /&gt;
ap.baebeca.de;&amp;quot;versionIsSupported&amp;quot;;1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== JSON ====&lt;br /&gt;
The interface &amp;quot;/JSON&amp;quot; provides a JSON formatted structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pbx.baebeca.de&amp;quot;: [&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;serialnumber&amp;quot;,&amp;quot;value&amp;quot;:005056001338,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;product&amp;quot;,&amp;quot;value&amp;quot;:IPVA,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;version&amp;quot;,&amp;quot;value&amp;quot;:15r1 dvl [15.1.0130/1000/0],&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;versionIsSupported&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;uptime&amp;quot;,&amp;quot;value&amp;quot;:3050,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;CPU&amp;quot;,&amp;quot;value&amp;quot;:2,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;CPU-R&amp;quot;,&amp;quot;value&amp;quot;:0,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;MEM&amp;quot;,&amp;quot;value&amp;quot;:0.09,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;ETH0&amp;quot;,&amp;quot;value&amp;quot;:18,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;ap.baebeca.de&amp;quot;: [&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;serialnumber&amp;quot;,&amp;quot;value&amp;quot;:00155db3c306,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;product&amp;quot;,&amp;quot;value&amp;quot;:AppPlatform x86_64,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;version&amp;quot;,&amp;quot;value&amp;quot;:120010  (15r1 1510130 dvl ),&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;versionIsSupported&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Checkmk ====&lt;br /&gt;
The interface &amp;quot;/Checkmk&amp;quot; provides a native integration to your Checkmk system with [https://docs.checkmk.com/latest/en/piggyback.html Piggyback] information for all known hosts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;pbx.baebeca.de&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;check_mk&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
AgentOS: innovaphone TechAssist&lt;br /&gt;
Hostname: pbx.baebeca.de&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;uptime&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
3050&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;kernel&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
util 0&lt;br /&gt;
cpu 1728891356864 0 0 1728891356960 0 0 0 0 0 0&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;mem&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
MemTotal: 49793 kB&lt;br /&gt;
MemFree: 49747 kB&lt;br /&gt;
MemAvailable: 49747 kB&lt;br /&gt;
Buffers: 0 kB&lt;br /&gt;
Cached: 0 kB&lt;br /&gt;
SwapTotal: 0 kB&lt;br /&gt;
SwapFree: 0 kB&lt;br /&gt;
Dirty: 0 kB&lt;br /&gt;
Writeback: 0 kB&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;lnx_thermal&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;local&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
0 &amp;quot;online&amp;quot; - online=1&lt;br /&gt;
0 &amp;quot;serialnumber&amp;quot; - serialnumber=005056001338&lt;br /&gt;
0 &amp;quot;product&amp;quot; - product=IPVA&lt;br /&gt;
0 &amp;quot;version&amp;quot; - version=15r1 dvl [15.1.0130/1000/0]&lt;br /&gt;
0 &amp;quot;versionIsSupported&amp;quot; - versionIsSupported=1&lt;br /&gt;
0 &amp;quot;CPU-R&amp;quot; - CPU-R=0&lt;br /&gt;
0 &amp;quot;ETH0&amp;quot; - ETH0=18&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;innovaphone&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;ap.baebeca.de&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;check_mk&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
AgentOS: innovaphone TechAssist&lt;br /&gt;
Hostname: ap.baebeca.de&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;uptime&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;kernel&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;mem&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;lnx_thermal&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;local&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
0 &amp;quot;online&amp;quot; - online=1&lt;br /&gt;
0 &amp;quot;serialnumber&amp;quot; - serialnumber=00155db3c306&lt;br /&gt;
0 &amp;quot;product&amp;quot; - product=AppPlatform x86_64&lt;br /&gt;
0 &amp;quot;version&amp;quot; - version=120010  (15r1 1510130 dvl )&lt;br /&gt;
0 &amp;quot;versionIsSupported&amp;quot; - versionIsSupported=1&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;innovaphone&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configure your Checkmk installation =====&lt;br /&gt;
#Setup your Hosts in Checkmk&lt;br /&gt;
#*Make sure that &amp;quot;Checkmk agent / API integrations&amp;quot; in the Hostconfiguration of your Application Platform is set to &amp;quot;API integrations if configured, else Checkmk agent&amp;quot;, all other Hosts hat to bet set to &amp;quot;No API integrations, no Checkmk agent&amp;quot;.&lt;br /&gt;
#Create a new Rule for &amp;quot;Individual program call instead of agent access&amp;quot; in &amp;quot;Setup &amp;gt; Agents &amp;gt; Other integrations&amp;quot;&lt;br /&gt;
#*Command line to execute: &amp;lt;code&amp;gt;curl --digest -u &amp;quot;user:pass&amp;quot; https://ap.domain.tld/domain.de/techassist/monitoring/Checkmk&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Explicit hosts: Set this to the Host of your Application Platform&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After that, you can run the service discovery and receive new checks for your devices&lt;br /&gt;
&lt;br /&gt;
[[File:Checkmk new checks.png|frameless|500px]]&lt;br /&gt;
&lt;br /&gt;
==== Icinga ====&lt;br /&gt;
The interface &amp;quot;/Icinga&amp;quot; provides a native integration to your Icinga system for all known hosts.&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=This interface is currently being researched, and it is being checked whether icinga can read such data as expected}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_host&amp;quot;: &amp;quot;pbx.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;_ETH0_ipv4&amp;quot;: &amp;quot;10.0.102.7&amp;quot;,&lt;br /&gt;
    &amp;quot;online&amp;quot;:1,&lt;br /&gt;
    &amp;quot;serialnumber&amp;quot;:005056001338,&lt;br /&gt;
    &amp;quot;product&amp;quot;:IPVA,&lt;br /&gt;
    &amp;quot;version&amp;quot;:15r1 dvl [15.1.0130/1000/0],&lt;br /&gt;
    &amp;quot;versionIsSupported&amp;quot;:1,&lt;br /&gt;
    &amp;quot;uptime&amp;quot;:3353,&lt;br /&gt;
    &amp;quot;CPU&amp;quot;:1,&lt;br /&gt;
    &amp;quot;CPU-R&amp;quot;:0,&lt;br /&gt;
    &amp;quot;MEM&amp;quot;:0.09,&lt;br /&gt;
    &amp;quot;ETH0&amp;quot;:14&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_host&amp;quot;: &amp;quot;ap.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;_eth0_ipv4&amp;quot;: &amp;quot;10.0.102.8&amp;quot;,&lt;br /&gt;
    &amp;quot;_eth0_ipv6&amp;quot;: &amp;quot;2001:4090:e000:9a1::8&amp;quot;,&lt;br /&gt;
    &amp;quot;online&amp;quot;:1,&lt;br /&gt;
    &amp;quot;serialnumber&amp;quot;:00155db3c306,&lt;br /&gt;
    &amp;quot;product&amp;quot;:AppPlatform x86_64,&lt;br /&gt;
    &amp;quot;version&amp;quot;:120010  (15r1 1510130 dvl ),&lt;br /&gt;
    &amp;quot;versionIsSupported&amp;quot;:1&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configure your Icinga installation =====&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Startup Logfile ===&lt;br /&gt;
If you enable the traceflag &#039;&#039;App&#039;&#039; in your App instance, you will find the following logs:&lt;br /&gt;
&lt;br /&gt;
 AppService::AppStart TechAssist@slu.de&lt;br /&gt;
 App instance started 14C1363 14C1363&lt;br /&gt;
 ...&lt;br /&gt;
 // App begins to load embedded tests&lt;br /&gt;
 JavaScript: Files tests/*&lt;br /&gt;
 ...&lt;br /&gt;
 // Scheduler begins to load all the tests&lt;br /&gt;
 scheduler init&lt;br /&gt;
 init test &amp;quot;firmware_version&amp;quot;&lt;br /&gt;
 firmware_version: Test added successful&lt;br /&gt;
 init test &amp;quot;pbx_mediarelay&amp;quot;&lt;br /&gt;
 pbx_mediarelay: Test added successful&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_TechAssist&amp;diff=73781</id>
		<title>Reference15r1:Concept App Service TechAssist</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_TechAssist&amp;diff=73781"/>
		<updated>2024-10-17T11:17:11Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Configure your Checkmk installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service TechAssist]]&lt;br /&gt;
&amp;lt;!-- techassist, ticket, analyze, debug, tests --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r2&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the TechAssist app is to provide helpful tools for technicians, as well as to analyze static and runtime information of a system and check for problems and improvements. In this way, the app can help you find and solve problems and misconfigurations independently and quickly.&lt;br /&gt;
For this purpose, the app supports&lt;br /&gt;
* the execution of &#039;&#039;tests&#039;&#039;&lt;br /&gt;
** a bunch of manufacturer tests are supplied with the app&lt;br /&gt;
** you can create and save your own tests&lt;br /&gt;
** testresults can be downloaded to attach them to a support ticket&lt;br /&gt;
* a PBX license overview&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
There are no licenses needed for this app&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The TechAssist App is installed by default for every new installation and is accessible from the Config Admin template.&lt;br /&gt;
&lt;br /&gt;
=== With the PBX manager AP app installer plug-in === &lt;br /&gt;
[[File:Ap_app_installer.png]]&lt;br /&gt;
&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Techassist&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v14&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP techassist&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as display name &#039;&#039;(all character allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: TechAssist, SIP: techassist&#039;&#039;&lt;br /&gt;
&#039;&#039;Hint : The App needs access-right to one devices-api. The access to &amp;quot;devices-api&amp;quot; will be set automatically. If you want to have another devices-apis working with techassist, you have to configure it manually in the advanced UI.&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Test Engine ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
==== Technical look inside ====&lt;br /&gt;
[[File:Concept_TechAssist.png|thumb|upright=1.0|right|Technical Overview]]&lt;br /&gt;
The app service receives multiple incoming websocket connections of the app objects from the PBXes. By assigning rights to a to your desired &amp;quot;devices-apis&amp;quot; (in the Apps tab), the app service receives the corresponding rights to connect to the respectively activated DevicesApps. All managed domains and devices can then be read in via this connection. (One TechAssist can only connect with one device-api)&lt;br /&gt;
With this procedure, you can work with one DevicesApp instance and across all domains and devices in it.&lt;br /&gt;
&lt;br /&gt;
==== Submodules ====&lt;br /&gt;
The app contains various sub-modules in order to be able to carry out the tests provided by the manufacturer and also to be able to integrate custom tests created by yourself.&lt;br /&gt;
&lt;br /&gt;
;scheduler&lt;br /&gt;
: The scheduler initially loads all tests and performs a plausibility check of the individual tests. From this status onwards, the scheduler ensures that all tests are executed in the required time intervals.&lt;br /&gt;
: Inside the Scheduler the tick is 5000 milliseconds, and test are executed sequentially to prevent high system load&lt;br /&gt;
;cmd&lt;br /&gt;
: The cmd submodule (derived from &amp;quot;command&amp;quot;) can communicate with devices in the installation to query a status, the config or similar. The submodule takes care of all the information that tests from an installation want to have, consolidates them so that queries do not have to be executed multiple times and caches the results.&lt;br /&gt;
;test&lt;br /&gt;
: The test submodule is instantiated per test and provides all necessary functionalities within a test.&lt;br /&gt;
&lt;br /&gt;
==== UI Language ====&lt;br /&gt;
By design, only the app itself is available in multiple languages. The content of the tests and technical output is intentionally only available in english.&lt;br /&gt;
&lt;br /&gt;
==== Tests ====&lt;br /&gt;
The app contains a bunch of embedded test, but it is also possible to create and save your own tests.&lt;br /&gt;
&lt;br /&gt;
=== UI ===&lt;br /&gt;
==== Expert Mode ====&lt;br /&gt;
By default there are some expert information hidden in the left menu bar. You will find a switch for that in the left menu (non-mobile-view) to enable all menu items.&lt;br /&gt;
&lt;br /&gt;
==== Dealing with the Code Editor ====&lt;br /&gt;
The Code Editor is a tool for viewing the tests supplied and writing your own tests based on these tests.&lt;br /&gt;
&lt;br /&gt;
The editor is divided into 3 basic areas.&lt;br /&gt;
;Left - Code Editor&lt;br /&gt;
:This is the code editor where you can write your test code in the browser. When you close the app, the content in the editor is saved, so that the next time you open the app you will find your old code again.&lt;br /&gt;
&lt;br /&gt;
;Top right - Menu bar&lt;br /&gt;
:Here you will find the following functions:&lt;br /&gt;
:Selection of all existing Tests (predefined vendor Tests and your own custom Tests)&lt;br /&gt;
:Load the source code of the selected Test to the code editor&lt;br /&gt;
:Delete the selected test from the app (This is only possible for custom tests)&lt;br /&gt;
:Execute the source code (with or without cached commands in the service) in the Code Editor and show the result&lt;br /&gt;
:Clear the Code Editor&lt;br /&gt;
:Save the current Content from the code Editor as Test&lt;br /&gt;
::The title of your test is divided from the &#039;&#039;title&#039;&#039; property in your test (lower based without non-alphanumeric characters). This means: If you save another Test with the same &#039;&#039;title&#039;&#039; the value will be saved in the other test.&lt;br /&gt;
&lt;br /&gt;
;Top right - Results&lt;br /&gt;
:If you execute, save or delete a test you will get the response/results in this area&lt;br /&gt;
&lt;br /&gt;
=== Create your own Testscript ===&lt;br /&gt;
You can create your own Test scripts in a JavaScript based environment.&lt;br /&gt;
A test itself is a JavaScript object with some configurations properties and a section of &#039;&#039;freestyle&#039;&#039; code to use JavaScript habits to perform your test. If your test will be executed, an above layer will call your &#039;&#039;test()&#039;&#039; method and want to have a return object with your result.&lt;br /&gt;
&lt;br /&gt;
There already exists a global Object called &#039;&#039;&#039;tests_add&#039;&#039;&#039;. You can add your own Test as Property to this existing Object like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
   title: &#039;Check for xyz&#039;,&lt;br /&gt;
   // configuration properties&lt;br /&gt;
   &lt;br /&gt;
   test: function (cmd, result, storage) {&lt;br /&gt;
       // your custom test code&lt;br /&gt;
&lt;br /&gt;
       return {&lt;br /&gt;
           success: false,&lt;br /&gt;
           msg: &#039;....&#039;&lt;br /&gt;
       };&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The way to add a test with &amp;lt;code&amp;gt;tests_add.my_new_test = tests_add.my_new_test || {}&amp;lt;/code&amp;gt; is important so that two tests do not overwrite each other. Please also pay attention to this. In this example, we have a &#039;&#039;logical condition&#039;&#039; in the first line. If the test &#039;&#039;my_new_test&#039;&#039; already exists in the object &#039;&#039;tests_add&#039;&#039; the left side from the &#039;&#039;OR-condition&#039;&#039; is &#039;&#039;true&#039;&#039;, and the existing test takes place. Otherwise, it is &#039;&#039;false&#039;&#039; and the right side (your new test object) will be written to &#039;&#039;tests_add.my_new_test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration Properties ====&lt;br /&gt;
You must configure certain properties in your test so that the scheduler knows exactly how to handle your test.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
  title: &#039;Unknown / New devices&#039;,&lt;br /&gt;
  description: &#039;Check for unassigned devices in your installation&#039;,&lt;br /&gt;
  todo: &#039;Please check the unknown devices in your installation and acceppt or delete the devices&#039;,&lt;br /&gt;
  author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
  enabled: true,&lt;br /&gt;
  schedule: &#039;1h&#039;,&lt;br /&gt;
  commands: { ... },&lt;br /&gt;
&lt;br /&gt;
  test: function (cmd, result, storage) {&lt;br /&gt;
    // your custom test code&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Mandatory properties =====&lt;br /&gt;
&lt;br /&gt;
; title&lt;br /&gt;
: string | The title of your test, which is displayed in the UI&lt;br /&gt;
; description&lt;br /&gt;
: string | A short description of your test, which is displayed in the UI&lt;br /&gt;
; todo&lt;br /&gt;
: string | An instruction on what the user has to do if the check fails. It will be displayed above the logfile in failed tests. (You can use &#039;&#039;\r\n&#039;&#039; for line breaks)&lt;br /&gt;
: Variable &amp;lt;nowiki&amp;gt;{{VERSION}}&amp;lt;/nowiki&amp;gt; will be replaced to current Version of the app like &amp;quot;14r1&amp;quot;&lt;br /&gt;
; author&lt;br /&gt;
: string | The contact of the person who create the test&lt;br /&gt;
; schedule&lt;br /&gt;
: string | The time interval during which the test is to be carried out independently. The format is composed of a numerical value and interval value. This allows you to create combinations such as &amp;lt;code&amp;gt;5m (every 5 minutes), 10h (every 10 hours) or 1d (every day) &amp;lt;/code&amp;gt;. A special case which is also allowed is the value &#039;&#039;none&#039;&#039;. With a &#039;&#039;none&#039;&#039; value, your test will not be executed automatically, but is available in the app. So the user is able to execute your test manually.&lt;br /&gt;
: Possible interval values are:&lt;br /&gt;
: &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; (seconds)&lt;br /&gt;
: &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; (minutes)&lt;br /&gt;
: &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; (hours)&lt;br /&gt;
: &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt; (days)&lt;br /&gt;
: &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; (weeks)&lt;br /&gt;
: Please note that each execution of a test requires resources. For example, if you create a test with &#039;&#039;1m&#039;&#039; that is executed every minute, you may well create an unpleasant impact! The system automatically checks the execution time of your test against your specified interval. If your test runs for a longer time than your schedule, your &#039;&#039;schedule&#039;&#039; parameter is automatically doubled by the system.&lt;br /&gt;
: Please note the [[#Submodules|Submodule Scheduler]] with Tick and synchronous execution. For example, it is not possible to execute a test every second.&lt;br /&gt;
&lt;br /&gt;
===== Optional properties =====&lt;br /&gt;
&lt;br /&gt;
; commands&lt;br /&gt;
: object | An object in which you can list all the commands, values, etc. that you want to use later in your test. As soon as your test() method is called, the returns of these commands are passed in as parameters so that you can analyze them. For detailed documentation, please see the [[#Property_.22commands.22|commands-documentation]] below.&lt;br /&gt;
; minBuild&lt;br /&gt;
: int | The minimum build version of the app, that the Test will be executed.&lt;br /&gt;
; oneTime&lt;br /&gt;
: bool | If &#039;&#039;true&#039;&#039; the test will be self-deactivated after the first successful execution.&lt;br /&gt;
; enabled&lt;br /&gt;
: bool | If &#039;&#039;false&#039;&#039; the test will be loaded but not executed. The user will see the test in the list of test, and it is possible to enable it (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
; hidden&lt;br /&gt;
: bool | If &#039;&#039;true&#039;&#039; the test will be skipped by the system and will not be loaded (default: &#039;&#039;false&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
==== Property &amp;quot;commands&amp;quot; ====&lt;br /&gt;
The property &#039;&#039;commands&#039;&#039; is an object where you can define innovaphone specific commands that are executed before your test will be executed. The results of the given commands will be passed to your test in the parameter &#039;&#039;results&#039;&#039;. Think about that, all your commands will be cached until the &#039;&#039;schedule&#039;&#039; timeout is exceeded. This means that you will only get a new result of the command after the schedule time has elapsed in relation to the time of your last execution. The only exceptions is when the user manually re-executes a test via the UI or caching has been explicitly disabled at the command&lt;br /&gt;
&lt;br /&gt;
You have to consider a special nested notation when creating your commands, so that you can use them later.&lt;br /&gt;
&lt;br /&gt;
===== outer commands-object =====&lt;br /&gt;
Let&#039;s start with some first basic rules:&lt;br /&gt;
* &#039;&#039;commands&#039;&#039; is an object with one property per command. At this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on.&lt;br /&gt;
* Every child-property (let&#039;s call it &amp;quot;command-object&amp;quot;) is a new object which contains all needed information for this specific command&lt;br /&gt;
* The title of the property &amp;quot;command-object&amp;quot; is defined by yourself&lt;br /&gt;
** Spoiler: The title of your &amp;quot;command-object&amp;quot; should be used later if you want to read the result for a specific device&lt;br /&gt;
* You can list multiple &amp;quot;command-objects&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Up to here we have the following and can define it like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  my_command_one: {},&lt;br /&gt;
  my_command_two: {},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== single command-object =====&lt;br /&gt;
&lt;br /&gt;
Then we have some new rules per &amp;quot;command-object&amp;quot;:&lt;br /&gt;
* A property called &#039;&#039;cmd&#039;&#039; is expected. This property contains the real command which shall be executed (Remember, at this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on)&lt;br /&gt;
** Example 1: &amp;lt;code&amp;gt;cmd: &#039;CMD0/box_info.xml&#039;&amp;lt;/code&amp;gt; will give you the xml output of the general overview page&lt;br /&gt;
** Example 2: &amp;lt;code&amp;gt;cmd: &#039;!mod cmd CDR0 qs&#039;&amp;lt;/code&amp;gt; will give you the amount of buffered CDRs in the CDR0 interface&lt;br /&gt;
** Example 3: &amp;lt;code&amp;gt;cmd: &#039;cfg.txt&#039;&amp;lt;/code&amp;gt; will give you back the full configuration file&lt;br /&gt;
** If you are already firm with the innovaphone based command syntax, you will see that you can use any HTTP command which can be sent to an innovaphone device&lt;br /&gt;
* Some more properties can be defined optionally. See documentation below&lt;br /&gt;
&lt;br /&gt;
Up to here we have an idea of a specific &amp;quot;command-object&amp;quot; and can do the following now:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this command, we can collect the &amp;quot;buffered CDRs&amp;quot; on both CDR Interfaces in our boxes. Maybe you see it directly... This will not make really sense in a real setup because CDRs only generated by Gateways/PBXes. So we don&#039;t need to bother phones with these requests.&lt;br /&gt;
So from now on we take care about our defined command. There are optional parameters that we can also list inside a &amp;quot;command-object&amp;quot; to let the system know what is the to-do with this command.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
: string | Any HTTP command you can send to an innovaphone device. There is a limit of 15 seconds for every http request. If your request exceeds this limit the request will be cancelled.&lt;br /&gt;
;cat&lt;br /&gt;
: array | An optional list of device types on which the command is to be executed. If &#039;&#039;cat&#039;&#039; is empty, it means all devices in your installation.&lt;br /&gt;
: You can define the following device categories:&lt;br /&gt;
: &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; - all PBXes&lt;br /&gt;
: &amp;lt;code&amp;gt;gw&amp;lt;/code&amp;gt; - all Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;ap&amp;lt;/code&amp;gt; - all App Platforms&lt;br /&gt;
: &amp;lt;code&amp;gt;dect&amp;lt;/code&amp;gt; - all Dect Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;phone&amp;lt;/code&amp;gt; - all Phones&lt;br /&gt;
: &amp;lt;code&amp;gt;monitoring&amp;lt;/code&amp;gt; - all categories based on Monitoring settings&lt;br /&gt;
;cache&lt;br /&gt;
: bool | If you set it to &#039;&#039;false&#039;&#039; you will never get a cached value. Please use this option wisely and only if you really need it. (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s improve our example from above and get the bufferd CDRx information only from pbxes and gateways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== execution and results of commands =====&lt;br /&gt;
Up to now, we have only defined commands that are to be executed on certain devices. When your test is executed, the previously defined commands are executed and the system collects the returns in a corresponding object (called &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;) which is passed into your &amp;lt;code&amp;gt;test(cmd, results)&amp;lt;/code&amp;gt; method. There you can access the results and do whatever you want to test/analyze or whatever with the return value. You will find an example and some sample-code how to use the results-object in the description of the &#039;&#039;test() method&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== nested commands-objects =====&lt;br /&gt;
You can now send any commands and the results will be returned to you for evaluation.&lt;br /&gt;
As you may have already noticed, there is no possibility to place multiple commands in dependency. But this is the way to do this.&lt;br /&gt;
&lt;br /&gt;
For more complicated tests, it is necessary to execute several commands one after the other and to generate following commands dynamically on the basis of the result of the first command.&lt;br /&gt;
&lt;br /&gt;
For such tests, there is the possibility to specify an object &amp;quot;commands&amp;quot; within a &amp;quot;command-object&amp;quot;. From this level, you can define a dynamic function in which you can apply your own code based on the first result, and then return a new &#039;&#039;commands-object&#039;&#039;. In this return statement, you also have the option of returning another dynamic function in order to be able to create processes of any complexity. Please note that if you not return an &#039;&#039;object&#039;&#039; your return value will be discarded. The results of your nested &#039;&#039;command-objects&#039;&#039; will be passed to the &#039;&#039;test()&#039;&#039; method inside the &#039;&#039;results&#039;&#039; object.&lt;br /&gt;
&lt;br /&gt;
This is certainly not easy to understand. Therefore, let us take a closer look at it with an example.&lt;br /&gt;
&lt;br /&gt;
====== example: nested commands-object which generates the second command from the first result ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  certificates: {&lt;br /&gt;
    cmd: &#039;X509/mod_cmd.xml&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;, &#039;dect&#039;],&lt;br /&gt;
    commands: function(cmd, result) {&lt;br /&gt;
                // free style code to build the following commands&lt;br /&gt;
                var xml = cmd.parse_xml(result);&lt;br /&gt;
                //log(JSON.stringify(xml));&lt;br /&gt;
                &lt;br /&gt;
                var fingerprint;&lt;br /&gt;
                // get the fingerprint for single cert&lt;br /&gt;
                if (typeof xml.info.servercert.certificate[&#039;@fingerprint&#039;] !== &#039;undefined&#039;) {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[&#039;@fingerprint&#039;]&lt;br /&gt;
                }&lt;br /&gt;
                // use last certificates in case of multiple&lt;br /&gt;
                else {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[xml.info.servercert.certificate.length - 1][&#039;@fingerprint&#039;];&lt;br /&gt;
                }&lt;br /&gt;
                cmd.log(&#039;Fingerprint: &#039;+fingerprint);&lt;br /&gt;
                &lt;br /&gt;
                return {&lt;br /&gt;
                    certificate: {&lt;br /&gt;
                        cmd: &#039;X509/mod_cmd.xml?cmd=servercert-details&amp;amp;fingerprint=&#039;+fingerprint,&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to check which key-length is used in the device certificate. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;certificates&amp;quot; on devices (pbx, gw, dect) the command &amp;quot;X509/mod_cmd.xml&amp;quot; which will give you back the xml payload of the page [[{{NAMESPACE}}:General/Certificates]]&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to to what we need, to build a following command&lt;br /&gt;
## Here we convert xml to an object and extract the certificate fingerprint from the result of the first request&lt;br /&gt;
## then we return an object with &amp;quot;command-objects&amp;quot;&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## this second command will be executed to for every device and the xml payload contains the device certifcate of the current device. (like the popup in the UI if you click on a specific certificate)&lt;br /&gt;
#If all nested commands are processed, then your test() will be called, and you get all the results (in this case &amp;quot;certificates&amp;quot; and &amp;quot;certificate&amp;quot;) in the results-object&lt;br /&gt;
&lt;br /&gt;
====== example: nested commands-object which generates various commands from the first result ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
	config: {&lt;br /&gt;
		cmd: &#039;cfg.txt&#039;,&lt;br /&gt;
		cat: [&#039;pbx&#039;],&lt;br /&gt;
		commands: function(cmd, result) {&lt;br /&gt;
			var lines = result.split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
			var output = {};&lt;br /&gt;
			&lt;br /&gt;
			// get pbx loc&lt;br /&gt;
			var loc = false;&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				if (!lines[l].startsWith(&#039;config change PBX0&#039;)) continue; // skip non pbx line&lt;br /&gt;
				if (lines[l].includes(&#039;/mode standby&#039;)) continue; // skip slave pbxes&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/config change PBX0 (.*) \/loc ([^ ][^/]+)/);&lt;br /&gt;
				loc = match[2].substr(0, match[2].length-1);&lt;br /&gt;
				l = lines.length;&lt;br /&gt;
			}&lt;br /&gt;
			cmd.log(&#039;use pbx loc: &#039;+loc);&lt;br /&gt;
			&lt;br /&gt;
			// get user objects&lt;br /&gt;
			var regex = new RegExp(&#039;/\(loc=&#039;+loc+&#039;\)(.*)\(guid;bin=([0-9A-Za-z]+)\)/&#039;);&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				// skip if user is not from this pbx&lt;br /&gt;
				if (!lines[l].includes(&#039;(loc=&#039;+loc+&#039;)&#039;)) continue;&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/\(guid;bin=([0-9A-Za-z]+)\)/);&lt;br /&gt;
				if (!match) continue;&lt;br /&gt;
				cmd.log(&#039;user found: &#039;+match[1]);&lt;br /&gt;
				output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			return output;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to get the xml output from the advanced ui for every pbx object. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;config&amp;quot; on PBXes the get the plain configuration file&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called, and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to do what we need, to build multiple following commands&lt;br /&gt;
&lt;br /&gt;
## Here we split the config file by lines breaks and iterate the whole config&lt;br /&gt;
## then we generate an empty return object to fill it later&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## If we have checked the pbx and the userobject we add with &amp;lt;code&amp;gt;output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&amp;lt;/code&amp;gt; a specific command to the retunr value&lt;br /&gt;
&lt;br /&gt;
In the end, we have a big return object with multiple cmd&#039;s&lt;br /&gt;
In this case we will get all the results in the test() later and can do further stuff with the results.&lt;br /&gt;
&lt;br /&gt;
==== Executable method test() ====&lt;br /&gt;
The upper layer expects a method &amp;lt;code&amp;gt;test(cmd, results, storage)&amp;lt;/code&amp;gt; in your JavaScript object. This method has three parameters.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
:An object that offers you a wide range of predefined functions and options. You can see it as a kind of library, which is documented at the [[#cmd object|cmd object]].&lt;br /&gt;
&lt;br /&gt;
;results&lt;br /&gt;
:An object of the results of your commands from the given &#039;&#039;command-objects&#039;&#039; in your test definition.&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample strcuture of the results object&amp;quot; hide=&amp;quot;hide sample strcuture of the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// structure of results object&lt;br /&gt;
{&lt;br /&gt;
  // your command is the property&lt;br /&gt;
  &#039;buffered_cdr0&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  &#039;buffered_cdr1&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show best practice code to deal with the results object&amp;quot; hide=&amp;quot;hide best practice code to deal with the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// you can use this inside your function &amp;quot;test: function (cmd, results, storage)&amp;quot; to iterate all commands over all affected devices&lt;br /&gt;
        &lt;br /&gt;
Object.keys(results).forEach(function(command) {&lt;br /&gt;
  log.push(&#039;command: &#039;+command);&lt;br /&gt;
  Object.keys(results[command]).forEach(function(device) {&lt;br /&gt;
    log.push(&#039;device: &#039;+device);&lt;br /&gt;
    var output = results[command][device];&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// expected log array from the code above:&lt;br /&gt;
// $ command: buffered_cdr0&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
// $ command: buffered_cdr1&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;storage&lt;br /&gt;
:If the test has written something to the test memory during the last execution, you will get the last value back here. (Note that the storage is not available for one-time tests in the code editor. There you will always get an empty storage)&lt;br /&gt;
&lt;br /&gt;
===== return test result =====&lt;br /&gt;
Your test has to be return an object with your test result. The system expect an object with the following properties.&lt;br /&gt;
&lt;br /&gt;
; success&lt;br /&gt;
: boolean | indicates if your test was successful or not&lt;br /&gt;
; msg&lt;br /&gt;
: string | an optional short message that will be displayed in the UI as preview&lt;br /&gt;
; log&lt;br /&gt;
: array | an optional array with lines of logfile that you can use to display detailed information in the UI at your test result. Use &amp;lt;code&amp;gt;log.push()&amp;lt;/code&amp;gt; to fill up the logfile array. In the frontend, the log will be parsed and mac addresses &amp;lt;code&amp;gt;/(^|\W)([a-f0-9]{12})(\W|$)/i&amp;lt;/code&amp;gt; will be updated with an internal link to devices app. (If you want to create instead debug output to the app-instance logfile you can use &amp;lt;code&amp;gt;cmd.log()&amp;lt;/code&amp;gt;)&lt;br /&gt;
;storage&lt;br /&gt;
: string | an optional string, which can be json or similar, that is stored for this test. The next time the test is executed, the payload saved here is available inside the test again.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
test: function (cmd, results, storage) {&lt;br /&gt;
  // your stuff&lt;br /&gt;
  var count = 2;&lt;br /&gt;
 &lt;br /&gt;
  return {&lt;br /&gt;
    success: false,&lt;br /&gt;
    msg: &#039;There are &#039;+count+&#039; new/unassigned devices in your setup&#039;&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The full picture ====&lt;br /&gt;
===== Complete sample test to check buffered CDRs =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.cdrs_buffered = tests_add.cdrs_buffered || {&lt;br /&gt;
    title: &#039;Buffered CDRs&#039;,&lt;br /&gt;
    description: &#039;This test will check if CDRs on a gateway was buffered and are not transmit to the CDR target yet&#039;,&lt;br /&gt;
    todo: &#039;Check the CDR target&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    enabled: true,&lt;br /&gt;
    schedule: &#039;10m&#039;,&lt;br /&gt;
    &lt;br /&gt;
    commands: {&lt;br /&gt;
        cdr0: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr1: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr2: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR2 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr3: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR3 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr4: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR4 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results, storage) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        &lt;br /&gt;
        for (var n = 0; n &amp;lt; 5; n++) {&lt;br /&gt;
            Object.keys(results[&#039;cdr&#039;+n]).forEach(function(i){&lt;br /&gt;
                var check = calculate_cdrs(results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                // result was not good, lets create a human error message&lt;br /&gt;
                if (check !== true) {&lt;br /&gt;
                    log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+check+&#039;% - &#039;+results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                    if (success) success = false;&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;Devices with buffered CDRs exists&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    &lt;br /&gt;
        function calculate_cdrs(str) {&lt;br /&gt;
            // QS messages: 0 max 2000 chars: 0 max 300000&lt;br /&gt;
            var check = 0;&lt;br /&gt;
            str = str.split(&#039; &#039;);&lt;br /&gt;
            // log.push(str);&lt;br /&gt;
        &lt;br /&gt;
            var messages_current = str[2];&lt;br /&gt;
            var messages_max = str[4];&lt;br /&gt;
            var chars_current = str[6];&lt;br /&gt;
            var chars_max = str[8];&lt;br /&gt;
        &lt;br /&gt;
            // check messages&lt;br /&gt;
            check = cmd.percent(messages_current, messages_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            // check chars&lt;br /&gt;
            check = cmd.percent(chars_current, chars_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Complete sample test to check firmware versions =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.firmware_version = tests_add.firmware_version || {&lt;br /&gt;
    title: &#039;Supported firmware versions&#039;,&lt;br /&gt;
    description: &#039;Check if you have unsupported firmware version in use&#039;,&lt;br /&gt;
    todo: &#039;Update the firmware on affected devices&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    schedule: &#039;1d&#039;,&lt;br /&gt;
    commands: {&lt;br /&gt;
        box_info: {&lt;br /&gt;
            cmd: &#039;CMD0/box_info.xml&#039;,&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results, storage) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        var msg = &#039;&#039;;&lt;br /&gt;
        &lt;br /&gt;
        Object.keys(results.box_info).forEach(function(i){&lt;br /&gt;
            var xml = cmd.parse_xml(results.box_info[i]);&lt;br /&gt;
            if (typeof xml.info === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys[&#039;@version&#039;] === &#039;undefined&#039;) return;&lt;br /&gt;
            &lt;br /&gt;
            if (&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;6.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;7.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;8.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;9.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;10.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;12r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;13r1&#039;)&lt;br /&gt;
            ) {&lt;br /&gt;
                log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+xml.info.sys[&#039;@version&#039;]);&lt;br /&gt;
                if (success) success = false;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;You use old firmware which is no longer be supported&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cmd object ====&lt;br /&gt;
The &#039;&#039;&#039;cmd&#039;&#039;&#039; object provides you the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== get device information / system information =====&lt;br /&gt;
&lt;br /&gt;
====== get_domains() : object ======&lt;br /&gt;
You will receive all existing domains&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.get_domains();&lt;br /&gt;
console.log(domains);&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;1&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;deployAdminPasswords&amp;quot;: true,&lt;br /&gt;
   &amp;quot;isInstanceDomain&amp;quot;: true,&lt;br /&gt;
   &amp;quot;categories&amp;quot;: [ ... ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_devices() : object ======&lt;br /&gt;
You will receive all existing devices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices();&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;0_009033420623&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0_009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 dvl [13.7526/132035/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_devices_from_domain(int id) : object ======&lt;br /&gt;
You will receive all devices which are assigned to the given domain&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices_from_domain(1);&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_device(int id) : object ======&lt;br /&gt;
You will receive a specific device&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var device = cmd.get_device(2);&lt;br /&gt;
console.log(device);&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
   &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
   &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
   &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
   &amp;quot;online&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== helper functions =====&lt;br /&gt;
&lt;br /&gt;
====== percent(int value, int total) : float ======&lt;br /&gt;
Returns the number of percent of value to total&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var check = cmd.percent(50, 100);&lt;br /&gt;
console.log(check);&lt;br /&gt;
50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== parse_xml(string xml, string element = &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;) : object ======&lt;br /&gt;
Returns an object/array representation of given XML string. Note that very large XML inputs cannot be converted directly because there are some restrictions in the duktape environment. If you receive an exception with &#039;&#039;Error: RangeError: regexp executor recursion limit&#039;&#039; you have to define which element do you want to converted (See the second example).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var json = cmd.parse_xml(&#039;&amp;lt;sample&amp;gt;&amp;lt;item property_1=&amp;quot;value_1&amp;quot; property_2=&amp;quot;value_2&amp;quot;&amp;gt;content of item&amp;lt;/item&amp;gt;&amp;lt;item_short prop_1=&amp;quot;value_prop_1&amp;quot; /&amp;gt;&amp;lt;/sample&amp;gt;&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;sample&amp;quot;: {&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;@property_1&amp;quot;: &amp;quot;value_1&amp;quot;,&lt;br /&gt;
      &amp;quot;@property_2&amp;quot;: &amp;quot;value_2&amp;quot;,&lt;br /&gt;
      &amp;quot;#&amp;quot;: &amp;quot;content of item&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;item_short&amp;quot;: {&lt;br /&gt;
      &amp;quot;@prop_1&amp;quot;: &amp;quot;value_prop_1&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code with large xml payload&amp;quot; hide=&amp;quot;hide sample code with large xml payload&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var xml_registrations_on_big_pbx = &#039;\&lt;br /&gt;
  &amp;lt;show state=&amp;quot;up&amp;quot; time=&amp;quot;267993&amp;quot; loc=&amp;quot;pbx&amp;quot;&amp;gt;\&lt;br /&gt;
    &amp;lt;attrs&amp;gt;&amp;lt;/attrs&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Fax&amp;quot; guid=&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot; h323=&amp;quot;fax&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;fax&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Voicemail de&amp;quot; guid=&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot; h323=&amp;quot;voicemail-de&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.uc.voicemail.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;vm&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    ... and so on ...\&lt;br /&gt;
  &amp;lt;/show&amp;gt;&#039;;&lt;br /&gt;
var json = cmd.parse_xml(xml_registrations_on_big_pbx, &#039;reg&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Fax&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Voicemail&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== is_supported_version(string version) : object ======&lt;br /&gt;
Return if the given Version string is supported according to [[Howto:Supported innovaphone versions]].&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.is_supported_version(&#039;13r3 sr9 [13.7886/1000/0]&#039;); // return &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_version_from_build(int build) : string ======&lt;br /&gt;
Return the named version from given build number. (13r3, 14r1 or similar)&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.get_version_from_build(1410485); // return &amp;quot;14r1&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== debug =====&lt;br /&gt;
&lt;br /&gt;
====== log(string message) : void ======&lt;br /&gt;
You can write a logfile line to the app debug log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.log(&#039;my first logfile line&#039;);&lt;br /&gt;
07-26 07:58:33.179 TechAssist@slu.de (b0728708) | Test &amp;quot;sample_test&amp;quot; | my first logfile line&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Secret knowledge for good tests ===&lt;br /&gt;
; bool PBX-Object config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;no-subscribe=&amp;quot;true&amp;quot;&amp;lt;/code&amp;gt; (this is from a Trunk Object) in the config. Please note that if the attribute is &#039;&#039;missing&#039;&#039; or the value is &#039;&#039;false&#039;&#039; it is false, otherwise it is &#039;&#039;true&#039;&#039;. For example, the value &amp;lt;code&amp;gt;no-subscribe=&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
; bool Interface config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;/direct-sig on&amp;lt;/code&amp;gt; (this is from a SIP interface) in the config. Please note that they are exists bool-attribute which are &#039;&#039;true&#039;&#039; if the attribute is existing. In the case of bool-attribute the following value make no matter. For example, the attribute &amp;lt;code&amp;gt;/direct-sig off&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
&lt;br /&gt;
== Monitoring ==&lt;br /&gt;
The App supports a monitoring interface where well known IT-Monitoring Systems or other Statistics Services can connect and collect various data for the whole innovaphone installation.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
* Only devices that are known by the &#039;&#039;Devices App&#039;&#039; will be included in the monitoring data&lt;br /&gt;
* Only devices that have a non-empty &amp;quot;Name&amp;quot; in the &#039;&#039;Devices App&#039;&#039; will be included in the monitoring data&lt;br /&gt;
* For included App statistics, the DNS Name in the App Platform has to be set&lt;br /&gt;
* Depending on your external system (to support the automatic host matching magic) it can be needed that all devices has the same &#039;&#039;Name&#039;&#039; in your &#039;&#039;Devices App&#039;&#039; and your external System (Usually the FQDN is used)&lt;br /&gt;
&lt;br /&gt;
===Configurations===&lt;br /&gt;
* In the PBX Manager, you have to configure the credentials for the HTTP authorization to get monitoring data&lt;br /&gt;
* In the TechAssist App in the settings area, you can select categories (PBXes, Gateways, AP Platforms, Apps, DECT, Phones) which should be included in the monitoring data&lt;br /&gt;
* For all app services that provide statistics, the TechAssist app object must have access rights to these apps (the apps must be checked in the &amp;quot;Apps&amp;quot; tab of the PBX object)&lt;br /&gt;
&lt;br /&gt;
===Internal Timers===&lt;br /&gt;
*Hardware Metrics will be updated every 5 minutes&lt;br /&gt;
*App Statistics will be updated every 1 minute&lt;br /&gt;
&lt;br /&gt;
===Supported Integrations===&lt;br /&gt;
We support various output formats over different interfaces. Your System can pull the information and append in the needed Interface/Format to the URL. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Example: https://apps.slu.de/slu.de/techassist/monitoring/JSON (Here is &amp;quot;JSON&amp;quot; the used interface, see below)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use an old/legacy system that only support http basic-auth instead of digest-auth you can add a &amp;quot;/basic&amp;quot; to the endpoint url. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Example: https://&amp;lt;/nowiki&amp;gt;apps.slu.de/slu.de/techassist&#039;&#039;&#039;/basic&#039;&#039;&#039;/monitoring/JSON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RAW ====&lt;br /&gt;
The interface &amp;quot;/RAW&amp;quot; provides the internal TechAssist format as JSON.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;pbx.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;metrics&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;serialnumber&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;005056001338&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;product&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;IPVA&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;version&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;15r1 dvl [15.1.0130/1000/0]&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;versionIsSupported&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;uptime&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 2747,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;CPU&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 100&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;CPU-R&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 26000&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;MEM&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 46,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0.09,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 49793&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;ETH0&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 1000000&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;47&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;ap.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;metrics&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;serialnumber&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;00155db3c306&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;product&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;AppPlatform x86_64&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;version&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;120010  (15r1 1510130 dvl )&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;versionIsSupported&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CSV ====&lt;br /&gt;
The interface &amp;quot;/CSV&amp;quot; provides a simple text based comma separated structure in the format &amp;lt;code&amp;gt;&amp;lt;Hostname&amp;gt;;&amp;lt;Metric&amp;gt;;&amp;lt;Value&amp;gt;;&amp;lt;Comment&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;online&amp;quot;;1;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;serialnumber&amp;quot;;005056001338;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;product&amp;quot;;IPVA;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;version&amp;quot;;15r1 dvl [15.1.0130/1000/0];&lt;br /&gt;
pbx.baebeca.de;&amp;quot;versionIsSupported&amp;quot;;1;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;uptime&amp;quot;;3050;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;CPU&amp;quot;;2;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;CPU-R&amp;quot;;0;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;MEM&amp;quot;;0.09;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;ETH0&amp;quot;;18;null&lt;br /&gt;
ap.baebeca.de;&amp;quot;online&amp;quot;;1;&lt;br /&gt;
ap.baebeca.de;&amp;quot;serialnumber&amp;quot;;00155db3c306;&lt;br /&gt;
ap.baebeca.de;&amp;quot;product&amp;quot;;AppPlatform x86_64;&lt;br /&gt;
ap.baebeca.de;&amp;quot;version&amp;quot;;120010  (15r1 1510130 dvl );&lt;br /&gt;
ap.baebeca.de;&amp;quot;versionIsSupported&amp;quot;;1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== JSON ====&lt;br /&gt;
The interface &amp;quot;/JSON&amp;quot; provides a JSON formatted structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pbx.baebeca.de&amp;quot;: [&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;serialnumber&amp;quot;,&amp;quot;value&amp;quot;:005056001338,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;product&amp;quot;,&amp;quot;value&amp;quot;:IPVA,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;version&amp;quot;,&amp;quot;value&amp;quot;:15r1 dvl [15.1.0130/1000/0],&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;versionIsSupported&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;uptime&amp;quot;,&amp;quot;value&amp;quot;:3050,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;CPU&amp;quot;,&amp;quot;value&amp;quot;:2,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;CPU-R&amp;quot;,&amp;quot;value&amp;quot;:0,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;MEM&amp;quot;,&amp;quot;value&amp;quot;:0.09,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;ETH0&amp;quot;,&amp;quot;value&amp;quot;:18,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;ap.baebeca.de&amp;quot;: [&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;serialnumber&amp;quot;,&amp;quot;value&amp;quot;:00155db3c306,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;product&amp;quot;,&amp;quot;value&amp;quot;:AppPlatform x86_64,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;version&amp;quot;,&amp;quot;value&amp;quot;:120010  (15r1 1510130 dvl ),&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;versionIsSupported&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Checkmk ====&lt;br /&gt;
The interface &amp;quot;/Checkmk&amp;quot; provides a native integration to your Checkmk system with [https://docs.checkmk.com/latest/en/piggyback.html Piggyback] information for all known hosts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;pbx.baebeca.de&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;check_mk&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
AgentOS: innovaphone TechAssist&lt;br /&gt;
Hostname: pbx.baebeca.de&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;uptime&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
3050&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;kernel&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
util 0&lt;br /&gt;
cpu 1728891356864 0 0 1728891356960 0 0 0 0 0 0&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;mem&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
MemTotal: 49793 kB&lt;br /&gt;
MemFree: 49747 kB&lt;br /&gt;
MemAvailable: 49747 kB&lt;br /&gt;
Buffers: 0 kB&lt;br /&gt;
Cached: 0 kB&lt;br /&gt;
SwapTotal: 0 kB&lt;br /&gt;
SwapFree: 0 kB&lt;br /&gt;
Dirty: 0 kB&lt;br /&gt;
Writeback: 0 kB&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;lnx_thermal&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;local&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
0 &amp;quot;online&amp;quot; - online=1&lt;br /&gt;
0 &amp;quot;serialnumber&amp;quot; - serialnumber=005056001338&lt;br /&gt;
0 &amp;quot;product&amp;quot; - product=IPVA&lt;br /&gt;
0 &amp;quot;version&amp;quot; - version=15r1 dvl [15.1.0130/1000/0]&lt;br /&gt;
0 &amp;quot;versionIsSupported&amp;quot; - versionIsSupported=1&lt;br /&gt;
0 &amp;quot;CPU-R&amp;quot; - CPU-R=0&lt;br /&gt;
0 &amp;quot;ETH0&amp;quot; - ETH0=18&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;innovaphone&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;ap.baebeca.de&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;check_mk&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
AgentOS: innovaphone TechAssist&lt;br /&gt;
Hostname: ap.baebeca.de&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;uptime&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;kernel&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;mem&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;lnx_thermal&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;local&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
0 &amp;quot;online&amp;quot; - online=1&lt;br /&gt;
0 &amp;quot;serialnumber&amp;quot; - serialnumber=00155db3c306&lt;br /&gt;
0 &amp;quot;product&amp;quot; - product=AppPlatform x86_64&lt;br /&gt;
0 &amp;quot;version&amp;quot; - version=120010  (15r1 1510130 dvl )&lt;br /&gt;
0 &amp;quot;versionIsSupported&amp;quot; - versionIsSupported=1&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;innovaphone&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configure your Checkmk installation =====&lt;br /&gt;
#Setup your Hosts in Checkmk&lt;br /&gt;
#*Make sure that &amp;quot;Checkmk agent / API integrations&amp;quot; in the Hostconfiguration of your Application Platform is set to &amp;quot;API integrations if configured, else Checkmk agent&amp;quot;, all other Hosts hat to bet set to &amp;quot;No API integrations, no Checkmk agent&amp;quot;.&lt;br /&gt;
#Create a new Rule for &amp;quot;Individual program call instead of agent access&amp;quot; in &amp;quot;Setup &amp;gt; Agents &amp;gt; Other integrations&amp;quot;&lt;br /&gt;
#*Command line to execute: &amp;lt;code&amp;gt;curl --digest -u &amp;quot;user:pass&amp;quot; https://ap.domain.tld/domain.de/techassist/monitoring/Checkmk&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Explicit hosts: Set this to the Host of your Application Platform&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After that, you can run the service discovery and receive new checks for your devices&lt;br /&gt;
&lt;br /&gt;
[[File:Checkmk new checks.png|frameless|500px]]&lt;br /&gt;
&lt;br /&gt;
==== Icinga ====&lt;br /&gt;
The interface &amp;quot;/Icinga&amp;quot; provides a native integration to your Icinga system for all known hosts.&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=This interface is currently being researched, and it is being checked whether icinga can read such data as expected}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_host&amp;quot;: &amp;quot;pbx.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;_ETH0_ipv4&amp;quot;: &amp;quot;10.0.102.7&amp;quot;,&lt;br /&gt;
    &amp;quot;online&amp;quot;:1,&lt;br /&gt;
    &amp;quot;serialnumber&amp;quot;:005056001338,&lt;br /&gt;
    &amp;quot;product&amp;quot;:IPVA,&lt;br /&gt;
    &amp;quot;version&amp;quot;:15r1 dvl [15.1.0130/1000/0],&lt;br /&gt;
    &amp;quot;versionIsSupported&amp;quot;:1,&lt;br /&gt;
    &amp;quot;uptime&amp;quot;:3353,&lt;br /&gt;
    &amp;quot;CPU&amp;quot;:1,&lt;br /&gt;
    &amp;quot;CPU-R&amp;quot;:0,&lt;br /&gt;
    &amp;quot;MEM&amp;quot;:0.09,&lt;br /&gt;
    &amp;quot;ETH0&amp;quot;:14&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_host&amp;quot;: &amp;quot;ap.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;_eth0_ipv4&amp;quot;: &amp;quot;10.0.102.8&amp;quot;,&lt;br /&gt;
    &amp;quot;_eth0_ipv6&amp;quot;: &amp;quot;2001:4090:e000:9a1::8&amp;quot;,&lt;br /&gt;
    &amp;quot;online&amp;quot;:1,&lt;br /&gt;
    &amp;quot;serialnumber&amp;quot;:00155db3c306,&lt;br /&gt;
    &amp;quot;product&amp;quot;:AppPlatform x86_64,&lt;br /&gt;
    &amp;quot;version&amp;quot;:120010  (15r1 1510130 dvl ),&lt;br /&gt;
    &amp;quot;versionIsSupported&amp;quot;:1&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configure your Icinga installation =====&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Startup Logfile ===&lt;br /&gt;
If you enable the traceflag &#039;&#039;App&#039;&#039; in your App instance, you will find the following logs:&lt;br /&gt;
&lt;br /&gt;
 AppService::AppStart TechAssist@slu.de&lt;br /&gt;
 App instance started 14C1363 14C1363&lt;br /&gt;
 ...&lt;br /&gt;
 // App begins to load embedded tests&lt;br /&gt;
 JavaScript: Files tests/*&lt;br /&gt;
 ...&lt;br /&gt;
 // Scheduler begins to load all the tests&lt;br /&gt;
 scheduler init&lt;br /&gt;
 init test &amp;quot;firmware_version&amp;quot;&lt;br /&gt;
 firmware_version: Test added successful&lt;br /&gt;
 init test &amp;quot;pbx_mediarelay&amp;quot;&lt;br /&gt;
 pbx_mediarelay: Test added successful&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_TechAssist&amp;diff=73780</id>
		<title>Reference15r1:Concept App Service TechAssist</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_TechAssist&amp;diff=73780"/>
		<updated>2024-10-17T11:12:16Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Configure your Checkmk installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service TechAssist]]&lt;br /&gt;
&amp;lt;!-- techassist, ticket, analyze, debug, tests --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r2&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the TechAssist app is to provide helpful tools for technicians, as well as to analyze static and runtime information of a system and check for problems and improvements. In this way, the app can help you find and solve problems and misconfigurations independently and quickly.&lt;br /&gt;
For this purpose, the app supports&lt;br /&gt;
* the execution of &#039;&#039;tests&#039;&#039;&lt;br /&gt;
** a bunch of manufacturer tests are supplied with the app&lt;br /&gt;
** you can create and save your own tests&lt;br /&gt;
** testresults can be downloaded to attach them to a support ticket&lt;br /&gt;
* a PBX license overview&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
There are no licenses needed for this app&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The TechAssist App is installed by default for every new installation and is accessible from the Config Admin template.&lt;br /&gt;
&lt;br /&gt;
=== With the PBX manager AP app installer plug-in === &lt;br /&gt;
[[File:Ap_app_installer.png]]&lt;br /&gt;
&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Techassist&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v14&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP techassist&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as display name &#039;&#039;(all character allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: TechAssist, SIP: techassist&#039;&#039;&lt;br /&gt;
&#039;&#039;Hint : The App needs access-right to one devices-api. The access to &amp;quot;devices-api&amp;quot; will be set automatically. If you want to have another devices-apis working with techassist, you have to configure it manually in the advanced UI.&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Test Engine ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
==== Technical look inside ====&lt;br /&gt;
[[File:Concept_TechAssist.png|thumb|upright=1.0|right|Technical Overview]]&lt;br /&gt;
The app service receives multiple incoming websocket connections of the app objects from the PBXes. By assigning rights to a to your desired &amp;quot;devices-apis&amp;quot; (in the Apps tab), the app service receives the corresponding rights to connect to the respectively activated DevicesApps. All managed domains and devices can then be read in via this connection. (One TechAssist can only connect with one device-api)&lt;br /&gt;
With this procedure, you can work with one DevicesApp instance and across all domains and devices in it.&lt;br /&gt;
&lt;br /&gt;
==== Submodules ====&lt;br /&gt;
The app contains various sub-modules in order to be able to carry out the tests provided by the manufacturer and also to be able to integrate custom tests created by yourself.&lt;br /&gt;
&lt;br /&gt;
;scheduler&lt;br /&gt;
: The scheduler initially loads all tests and performs a plausibility check of the individual tests. From this status onwards, the scheduler ensures that all tests are executed in the required time intervals.&lt;br /&gt;
: Inside the Scheduler the tick is 5000 milliseconds, and test are executed sequentially to prevent high system load&lt;br /&gt;
;cmd&lt;br /&gt;
: The cmd submodule (derived from &amp;quot;command&amp;quot;) can communicate with devices in the installation to query a status, the config or similar. The submodule takes care of all the information that tests from an installation want to have, consolidates them so that queries do not have to be executed multiple times and caches the results.&lt;br /&gt;
;test&lt;br /&gt;
: The test submodule is instantiated per test and provides all necessary functionalities within a test.&lt;br /&gt;
&lt;br /&gt;
==== UI Language ====&lt;br /&gt;
By design, only the app itself is available in multiple languages. The content of the tests and technical output is intentionally only available in english.&lt;br /&gt;
&lt;br /&gt;
==== Tests ====&lt;br /&gt;
The app contains a bunch of embedded test, but it is also possible to create and save your own tests.&lt;br /&gt;
&lt;br /&gt;
=== UI ===&lt;br /&gt;
==== Expert Mode ====&lt;br /&gt;
By default there are some expert information hidden in the left menu bar. You will find a switch for that in the left menu (non-mobile-view) to enable all menu items.&lt;br /&gt;
&lt;br /&gt;
==== Dealing with the Code Editor ====&lt;br /&gt;
The Code Editor is a tool for viewing the tests supplied and writing your own tests based on these tests.&lt;br /&gt;
&lt;br /&gt;
The editor is divided into 3 basic areas.&lt;br /&gt;
;Left - Code Editor&lt;br /&gt;
:This is the code editor where you can write your test code in the browser. When you close the app, the content in the editor is saved, so that the next time you open the app you will find your old code again.&lt;br /&gt;
&lt;br /&gt;
;Top right - Menu bar&lt;br /&gt;
:Here you will find the following functions:&lt;br /&gt;
:Selection of all existing Tests (predefined vendor Tests and your own custom Tests)&lt;br /&gt;
:Load the source code of the selected Test to the code editor&lt;br /&gt;
:Delete the selected test from the app (This is only possible for custom tests)&lt;br /&gt;
:Execute the source code (with or without cached commands in the service) in the Code Editor and show the result&lt;br /&gt;
:Clear the Code Editor&lt;br /&gt;
:Save the current Content from the code Editor as Test&lt;br /&gt;
::The title of your test is divided from the &#039;&#039;title&#039;&#039; property in your test (lower based without non-alphanumeric characters). This means: If you save another Test with the same &#039;&#039;title&#039;&#039; the value will be saved in the other test.&lt;br /&gt;
&lt;br /&gt;
;Top right - Results&lt;br /&gt;
:If you execute, save or delete a test you will get the response/results in this area&lt;br /&gt;
&lt;br /&gt;
=== Create your own Testscript ===&lt;br /&gt;
You can create your own Test scripts in a JavaScript based environment.&lt;br /&gt;
A test itself is a JavaScript object with some configurations properties and a section of &#039;&#039;freestyle&#039;&#039; code to use JavaScript habits to perform your test. If your test will be executed, an above layer will call your &#039;&#039;test()&#039;&#039; method and want to have a return object with your result.&lt;br /&gt;
&lt;br /&gt;
There already exists a global Object called &#039;&#039;&#039;tests_add&#039;&#039;&#039;. You can add your own Test as Property to this existing Object like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
   title: &#039;Check for xyz&#039;,&lt;br /&gt;
   // configuration properties&lt;br /&gt;
   &lt;br /&gt;
   test: function (cmd, result, storage) {&lt;br /&gt;
       // your custom test code&lt;br /&gt;
&lt;br /&gt;
       return {&lt;br /&gt;
           success: false,&lt;br /&gt;
           msg: &#039;....&#039;&lt;br /&gt;
       };&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The way to add a test with &amp;lt;code&amp;gt;tests_add.my_new_test = tests_add.my_new_test || {}&amp;lt;/code&amp;gt; is important so that two tests do not overwrite each other. Please also pay attention to this. In this example, we have a &#039;&#039;logical condition&#039;&#039; in the first line. If the test &#039;&#039;my_new_test&#039;&#039; already exists in the object &#039;&#039;tests_add&#039;&#039; the left side from the &#039;&#039;OR-condition&#039;&#039; is &#039;&#039;true&#039;&#039;, and the existing test takes place. Otherwise, it is &#039;&#039;false&#039;&#039; and the right side (your new test object) will be written to &#039;&#039;tests_add.my_new_test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Configuration Properties ====&lt;br /&gt;
You must configure certain properties in your test so that the scheduler knows exactly how to handle your test.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
  title: &#039;Unknown / New devices&#039;,&lt;br /&gt;
  description: &#039;Check for unassigned devices in your installation&#039;,&lt;br /&gt;
  todo: &#039;Please check the unknown devices in your installation and acceppt or delete the devices&#039;,&lt;br /&gt;
  author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
  enabled: true,&lt;br /&gt;
  schedule: &#039;1h&#039;,&lt;br /&gt;
  commands: { ... },&lt;br /&gt;
&lt;br /&gt;
  test: function (cmd, result, storage) {&lt;br /&gt;
    // your custom test code&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Mandatory properties =====&lt;br /&gt;
&lt;br /&gt;
; title&lt;br /&gt;
: string | The title of your test, which is displayed in the UI&lt;br /&gt;
; description&lt;br /&gt;
: string | A short description of your test, which is displayed in the UI&lt;br /&gt;
; todo&lt;br /&gt;
: string | An instruction on what the user has to do if the check fails. It will be displayed above the logfile in failed tests. (You can use &#039;&#039;\r\n&#039;&#039; for line breaks)&lt;br /&gt;
: Variable &amp;lt;nowiki&amp;gt;{{VERSION}}&amp;lt;/nowiki&amp;gt; will be replaced to current Version of the app like &amp;quot;14r1&amp;quot;&lt;br /&gt;
; author&lt;br /&gt;
: string | The contact of the person who create the test&lt;br /&gt;
; schedule&lt;br /&gt;
: string | The time interval during which the test is to be carried out independently. The format is composed of a numerical value and interval value. This allows you to create combinations such as &amp;lt;code&amp;gt;5m (every 5 minutes), 10h (every 10 hours) or 1d (every day) &amp;lt;/code&amp;gt;. A special case which is also allowed is the value &#039;&#039;none&#039;&#039;. With a &#039;&#039;none&#039;&#039; value, your test will not be executed automatically, but is available in the app. So the user is able to execute your test manually.&lt;br /&gt;
: Possible interval values are:&lt;br /&gt;
: &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; (seconds)&lt;br /&gt;
: &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; (minutes)&lt;br /&gt;
: &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; (hours)&lt;br /&gt;
: &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt; (days)&lt;br /&gt;
: &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; (weeks)&lt;br /&gt;
: Please note that each execution of a test requires resources. For example, if you create a test with &#039;&#039;1m&#039;&#039; that is executed every minute, you may well create an unpleasant impact! The system automatically checks the execution time of your test against your specified interval. If your test runs for a longer time than your schedule, your &#039;&#039;schedule&#039;&#039; parameter is automatically doubled by the system.&lt;br /&gt;
: Please note the [[#Submodules|Submodule Scheduler]] with Tick and synchronous execution. For example, it is not possible to execute a test every second.&lt;br /&gt;
&lt;br /&gt;
===== Optional properties =====&lt;br /&gt;
&lt;br /&gt;
; commands&lt;br /&gt;
: object | An object in which you can list all the commands, values, etc. that you want to use later in your test. As soon as your test() method is called, the returns of these commands are passed in as parameters so that you can analyze them. For detailed documentation, please see the [[#Property_.22commands.22|commands-documentation]] below.&lt;br /&gt;
; minBuild&lt;br /&gt;
: int | The minimum build version of the app, that the Test will be executed.&lt;br /&gt;
; oneTime&lt;br /&gt;
: bool | If &#039;&#039;true&#039;&#039; the test will be self-deactivated after the first successful execution.&lt;br /&gt;
; enabled&lt;br /&gt;
: bool | If &#039;&#039;false&#039;&#039; the test will be loaded but not executed. The user will see the test in the list of test, and it is possible to enable it (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
; hidden&lt;br /&gt;
: bool | If &#039;&#039;true&#039;&#039; the test will be skipped by the system and will not be loaded (default: &#039;&#039;false&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
==== Property &amp;quot;commands&amp;quot; ====&lt;br /&gt;
The property &#039;&#039;commands&#039;&#039; is an object where you can define innovaphone specific commands that are executed before your test will be executed. The results of the given commands will be passed to your test in the parameter &#039;&#039;results&#039;&#039;. Think about that, all your commands will be cached until the &#039;&#039;schedule&#039;&#039; timeout is exceeded. This means that you will only get a new result of the command after the schedule time has elapsed in relation to the time of your last execution. The only exceptions is when the user manually re-executes a test via the UI or caching has been explicitly disabled at the command&lt;br /&gt;
&lt;br /&gt;
You have to consider a special nested notation when creating your commands, so that you can use them later.&lt;br /&gt;
&lt;br /&gt;
===== outer commands-object =====&lt;br /&gt;
Let&#039;s start with some first basic rules:&lt;br /&gt;
* &#039;&#039;commands&#039;&#039; is an object with one property per command. At this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on.&lt;br /&gt;
* Every child-property (let&#039;s call it &amp;quot;command-object&amp;quot;) is a new object which contains all needed information for this specific command&lt;br /&gt;
* The title of the property &amp;quot;command-object&amp;quot; is defined by yourself&lt;br /&gt;
** Spoiler: The title of your &amp;quot;command-object&amp;quot; should be used later if you want to read the result for a specific device&lt;br /&gt;
* You can list multiple &amp;quot;command-objects&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Up to here we have the following and can define it like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  my_command_one: {},&lt;br /&gt;
  my_command_two: {},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== single command-object =====&lt;br /&gt;
&lt;br /&gt;
Then we have some new rules per &amp;quot;command-object&amp;quot;:&lt;br /&gt;
* A property called &#039;&#039;cmd&#039;&#039; is expected. This property contains the real command which shall be executed (Remember, at this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on)&lt;br /&gt;
** Example 1: &amp;lt;code&amp;gt;cmd: &#039;CMD0/box_info.xml&#039;&amp;lt;/code&amp;gt; will give you the xml output of the general overview page&lt;br /&gt;
** Example 2: &amp;lt;code&amp;gt;cmd: &#039;!mod cmd CDR0 qs&#039;&amp;lt;/code&amp;gt; will give you the amount of buffered CDRs in the CDR0 interface&lt;br /&gt;
** Example 3: &amp;lt;code&amp;gt;cmd: &#039;cfg.txt&#039;&amp;lt;/code&amp;gt; will give you back the full configuration file&lt;br /&gt;
** If you are already firm with the innovaphone based command syntax, you will see that you can use any HTTP command which can be sent to an innovaphone device&lt;br /&gt;
* Some more properties can be defined optionally. See documentation below&lt;br /&gt;
&lt;br /&gt;
Up to here we have an idea of a specific &amp;quot;command-object&amp;quot; and can do the following now:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this command, we can collect the &amp;quot;buffered CDRs&amp;quot; on both CDR Interfaces in our boxes. Maybe you see it directly... This will not make really sense in a real setup because CDRs only generated by Gateways/PBXes. So we don&#039;t need to bother phones with these requests.&lt;br /&gt;
So from now on we take care about our defined command. There are optional parameters that we can also list inside a &amp;quot;command-object&amp;quot; to let the system know what is the to-do with this command.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
: string | Any HTTP command you can send to an innovaphone device. There is a limit of 15 seconds for every http request. If your request exceeds this limit the request will be cancelled.&lt;br /&gt;
;cat&lt;br /&gt;
: array | An optional list of device types on which the command is to be executed. If &#039;&#039;cat&#039;&#039; is empty, it means all devices in your installation.&lt;br /&gt;
: You can define the following device categories:&lt;br /&gt;
: &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; - all PBXes&lt;br /&gt;
: &amp;lt;code&amp;gt;gw&amp;lt;/code&amp;gt; - all Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;ap&amp;lt;/code&amp;gt; - all App Platforms&lt;br /&gt;
: &amp;lt;code&amp;gt;dect&amp;lt;/code&amp;gt; - all Dect Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;phone&amp;lt;/code&amp;gt; - all Phones&lt;br /&gt;
: &amp;lt;code&amp;gt;monitoring&amp;lt;/code&amp;gt; - all categories based on Monitoring settings&lt;br /&gt;
;cache&lt;br /&gt;
: bool | If you set it to &#039;&#039;false&#039;&#039; you will never get a cached value. Please use this option wisely and only if you really need it. (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s improve our example from above and get the bufferd CDRx information only from pbxes and gateways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== execution and results of commands =====&lt;br /&gt;
Up to now, we have only defined commands that are to be executed on certain devices. When your test is executed, the previously defined commands are executed and the system collects the returns in a corresponding object (called &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;) which is passed into your &amp;lt;code&amp;gt;test(cmd, results)&amp;lt;/code&amp;gt; method. There you can access the results and do whatever you want to test/analyze or whatever with the return value. You will find an example and some sample-code how to use the results-object in the description of the &#039;&#039;test() method&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== nested commands-objects =====&lt;br /&gt;
You can now send any commands and the results will be returned to you for evaluation.&lt;br /&gt;
As you may have already noticed, there is no possibility to place multiple commands in dependency. But this is the way to do this.&lt;br /&gt;
&lt;br /&gt;
For more complicated tests, it is necessary to execute several commands one after the other and to generate following commands dynamically on the basis of the result of the first command.&lt;br /&gt;
&lt;br /&gt;
For such tests, there is the possibility to specify an object &amp;quot;commands&amp;quot; within a &amp;quot;command-object&amp;quot;. From this level, you can define a dynamic function in which you can apply your own code based on the first result, and then return a new &#039;&#039;commands-object&#039;&#039;. In this return statement, you also have the option of returning another dynamic function in order to be able to create processes of any complexity. Please note that if you not return an &#039;&#039;object&#039;&#039; your return value will be discarded. The results of your nested &#039;&#039;command-objects&#039;&#039; will be passed to the &#039;&#039;test()&#039;&#039; method inside the &#039;&#039;results&#039;&#039; object.&lt;br /&gt;
&lt;br /&gt;
This is certainly not easy to understand. Therefore, let us take a closer look at it with an example.&lt;br /&gt;
&lt;br /&gt;
====== example: nested commands-object which generates the second command from the first result ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  certificates: {&lt;br /&gt;
    cmd: &#039;X509/mod_cmd.xml&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;, &#039;dect&#039;],&lt;br /&gt;
    commands: function(cmd, result) {&lt;br /&gt;
                // free style code to build the following commands&lt;br /&gt;
                var xml = cmd.parse_xml(result);&lt;br /&gt;
                //log(JSON.stringify(xml));&lt;br /&gt;
                &lt;br /&gt;
                var fingerprint;&lt;br /&gt;
                // get the fingerprint for single cert&lt;br /&gt;
                if (typeof xml.info.servercert.certificate[&#039;@fingerprint&#039;] !== &#039;undefined&#039;) {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[&#039;@fingerprint&#039;]&lt;br /&gt;
                }&lt;br /&gt;
                // use last certificates in case of multiple&lt;br /&gt;
                else {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[xml.info.servercert.certificate.length - 1][&#039;@fingerprint&#039;];&lt;br /&gt;
                }&lt;br /&gt;
                cmd.log(&#039;Fingerprint: &#039;+fingerprint);&lt;br /&gt;
                &lt;br /&gt;
                return {&lt;br /&gt;
                    certificate: {&lt;br /&gt;
                        cmd: &#039;X509/mod_cmd.xml?cmd=servercert-details&amp;amp;fingerprint=&#039;+fingerprint,&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to check which key-length is used in the device certificate. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;certificates&amp;quot; on devices (pbx, gw, dect) the command &amp;quot;X509/mod_cmd.xml&amp;quot; which will give you back the xml payload of the page [[{{NAMESPACE}}:General/Certificates]]&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to to what we need, to build a following command&lt;br /&gt;
## Here we convert xml to an object and extract the certificate fingerprint from the result of the first request&lt;br /&gt;
## then we return an object with &amp;quot;command-objects&amp;quot;&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## this second command will be executed to for every device and the xml payload contains the device certifcate of the current device. (like the popup in the UI if you click on a specific certificate)&lt;br /&gt;
#If all nested commands are processed, then your test() will be called, and you get all the results (in this case &amp;quot;certificates&amp;quot; and &amp;quot;certificate&amp;quot;) in the results-object&lt;br /&gt;
&lt;br /&gt;
====== example: nested commands-object which generates various commands from the first result ======&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
	config: {&lt;br /&gt;
		cmd: &#039;cfg.txt&#039;,&lt;br /&gt;
		cat: [&#039;pbx&#039;],&lt;br /&gt;
		commands: function(cmd, result) {&lt;br /&gt;
			var lines = result.split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
			var output = {};&lt;br /&gt;
			&lt;br /&gt;
			// get pbx loc&lt;br /&gt;
			var loc = false;&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				if (!lines[l].startsWith(&#039;config change PBX0&#039;)) continue; // skip non pbx line&lt;br /&gt;
				if (lines[l].includes(&#039;/mode standby&#039;)) continue; // skip slave pbxes&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/config change PBX0 (.*) \/loc ([^ ][^/]+)/);&lt;br /&gt;
				loc = match[2].substr(0, match[2].length-1);&lt;br /&gt;
				l = lines.length;&lt;br /&gt;
			}&lt;br /&gt;
			cmd.log(&#039;use pbx loc: &#039;+loc);&lt;br /&gt;
			&lt;br /&gt;
			// get user objects&lt;br /&gt;
			var regex = new RegExp(&#039;/\(loc=&#039;+loc+&#039;\)(.*)\(guid;bin=([0-9A-Za-z]+)\)/&#039;);&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				// skip if user is not from this pbx&lt;br /&gt;
				if (!lines[l].includes(&#039;(loc=&#039;+loc+&#039;)&#039;)) continue;&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/\(guid;bin=([0-9A-Za-z]+)\)/);&lt;br /&gt;
				if (!match) continue;&lt;br /&gt;
				cmd.log(&#039;user found: &#039;+match[1]);&lt;br /&gt;
				output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			return output;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to get the xml output from the advanced ui for every pbx object. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;config&amp;quot; on PBXes the get the plain configuration file&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called, and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to do what we need, to build multiple following commands&lt;br /&gt;
&lt;br /&gt;
## Here we split the config file by lines breaks and iterate the whole config&lt;br /&gt;
## then we generate an empty return object to fill it later&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## If we have checked the pbx and the userobject we add with &amp;lt;code&amp;gt;output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&amp;lt;/code&amp;gt; a specific command to the retunr value&lt;br /&gt;
&lt;br /&gt;
In the end, we have a big return object with multiple cmd&#039;s&lt;br /&gt;
In this case we will get all the results in the test() later and can do further stuff with the results.&lt;br /&gt;
&lt;br /&gt;
==== Executable method test() ====&lt;br /&gt;
The upper layer expects a method &amp;lt;code&amp;gt;test(cmd, results, storage)&amp;lt;/code&amp;gt; in your JavaScript object. This method has three parameters.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
:An object that offers you a wide range of predefined functions and options. You can see it as a kind of library, which is documented at the [[#cmd object|cmd object]].&lt;br /&gt;
&lt;br /&gt;
;results&lt;br /&gt;
:An object of the results of your commands from the given &#039;&#039;command-objects&#039;&#039; in your test definition.&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample strcuture of the results object&amp;quot; hide=&amp;quot;hide sample strcuture of the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// structure of results object&lt;br /&gt;
{&lt;br /&gt;
  // your command is the property&lt;br /&gt;
  &#039;buffered_cdr0&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  &#039;buffered_cdr1&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show best practice code to deal with the results object&amp;quot; hide=&amp;quot;hide best practice code to deal with the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// you can use this inside your function &amp;quot;test: function (cmd, results, storage)&amp;quot; to iterate all commands over all affected devices&lt;br /&gt;
        &lt;br /&gt;
Object.keys(results).forEach(function(command) {&lt;br /&gt;
  log.push(&#039;command: &#039;+command);&lt;br /&gt;
  Object.keys(results[command]).forEach(function(device) {&lt;br /&gt;
    log.push(&#039;device: &#039;+device);&lt;br /&gt;
    var output = results[command][device];&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// expected log array from the code above:&lt;br /&gt;
// $ command: buffered_cdr0&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
// $ command: buffered_cdr1&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;storage&lt;br /&gt;
:If the test has written something to the test memory during the last execution, you will get the last value back here. (Note that the storage is not available for one-time tests in the code editor. There you will always get an empty storage)&lt;br /&gt;
&lt;br /&gt;
===== return test result =====&lt;br /&gt;
Your test has to be return an object with your test result. The system expect an object with the following properties.&lt;br /&gt;
&lt;br /&gt;
; success&lt;br /&gt;
: boolean | indicates if your test was successful or not&lt;br /&gt;
; msg&lt;br /&gt;
: string | an optional short message that will be displayed in the UI as preview&lt;br /&gt;
; log&lt;br /&gt;
: array | an optional array with lines of logfile that you can use to display detailed information in the UI at your test result. Use &amp;lt;code&amp;gt;log.push()&amp;lt;/code&amp;gt; to fill up the logfile array. In the frontend, the log will be parsed and mac addresses &amp;lt;code&amp;gt;/(^|\W)([a-f0-9]{12})(\W|$)/i&amp;lt;/code&amp;gt; will be updated with an internal link to devices app. (If you want to create instead debug output to the app-instance logfile you can use &amp;lt;code&amp;gt;cmd.log()&amp;lt;/code&amp;gt;)&lt;br /&gt;
;storage&lt;br /&gt;
: string | an optional string, which can be json or similar, that is stored for this test. The next time the test is executed, the payload saved here is available inside the test again.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
test: function (cmd, results, storage) {&lt;br /&gt;
  // your stuff&lt;br /&gt;
  var count = 2;&lt;br /&gt;
 &lt;br /&gt;
  return {&lt;br /&gt;
    success: false,&lt;br /&gt;
    msg: &#039;There are &#039;+count+&#039; new/unassigned devices in your setup&#039;&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The full picture ====&lt;br /&gt;
===== Complete sample test to check buffered CDRs =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.cdrs_buffered = tests_add.cdrs_buffered || {&lt;br /&gt;
    title: &#039;Buffered CDRs&#039;,&lt;br /&gt;
    description: &#039;This test will check if CDRs on a gateway was buffered and are not transmit to the CDR target yet&#039;,&lt;br /&gt;
    todo: &#039;Check the CDR target&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    enabled: true,&lt;br /&gt;
    schedule: &#039;10m&#039;,&lt;br /&gt;
    &lt;br /&gt;
    commands: {&lt;br /&gt;
        cdr0: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr1: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr2: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR2 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr3: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR3 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr4: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR4 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results, storage) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        &lt;br /&gt;
        for (var n = 0; n &amp;lt; 5; n++) {&lt;br /&gt;
            Object.keys(results[&#039;cdr&#039;+n]).forEach(function(i){&lt;br /&gt;
                var check = calculate_cdrs(results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                // result was not good, lets create a human error message&lt;br /&gt;
                if (check !== true) {&lt;br /&gt;
                    log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+check+&#039;% - &#039;+results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                    if (success) success = false;&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;Devices with buffered CDRs exists&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    &lt;br /&gt;
        function calculate_cdrs(str) {&lt;br /&gt;
            // QS messages: 0 max 2000 chars: 0 max 300000&lt;br /&gt;
            var check = 0;&lt;br /&gt;
            str = str.split(&#039; &#039;);&lt;br /&gt;
            // log.push(str);&lt;br /&gt;
        &lt;br /&gt;
            var messages_current = str[2];&lt;br /&gt;
            var messages_max = str[4];&lt;br /&gt;
            var chars_current = str[6];&lt;br /&gt;
            var chars_max = str[8];&lt;br /&gt;
        &lt;br /&gt;
            // check messages&lt;br /&gt;
            check = cmd.percent(messages_current, messages_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            // check chars&lt;br /&gt;
            check = cmd.percent(chars_current, chars_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Complete sample test to check firmware versions =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.firmware_version = tests_add.firmware_version || {&lt;br /&gt;
    title: &#039;Supported firmware versions&#039;,&lt;br /&gt;
    description: &#039;Check if you have unsupported firmware version in use&#039;,&lt;br /&gt;
    todo: &#039;Update the firmware on affected devices&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    schedule: &#039;1d&#039;,&lt;br /&gt;
    commands: {&lt;br /&gt;
        box_info: {&lt;br /&gt;
            cmd: &#039;CMD0/box_info.xml&#039;,&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results, storage) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        var msg = &#039;&#039;;&lt;br /&gt;
        &lt;br /&gt;
        Object.keys(results.box_info).forEach(function(i){&lt;br /&gt;
            var xml = cmd.parse_xml(results.box_info[i]);&lt;br /&gt;
            if (typeof xml.info === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys[&#039;@version&#039;] === &#039;undefined&#039;) return;&lt;br /&gt;
            &lt;br /&gt;
            if (&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;6.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;7.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;8.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;9.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;10.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;12r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;13r1&#039;)&lt;br /&gt;
            ) {&lt;br /&gt;
                log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+xml.info.sys[&#039;@version&#039;]);&lt;br /&gt;
                if (success) success = false;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;You use old firmware which is no longer be supported&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cmd object ====&lt;br /&gt;
The &#039;&#039;&#039;cmd&#039;&#039;&#039; object provides you the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== get device information / system information =====&lt;br /&gt;
&lt;br /&gt;
====== get_domains() : object ======&lt;br /&gt;
You will receive all existing domains&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.get_domains();&lt;br /&gt;
console.log(domains);&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;1&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;deployAdminPasswords&amp;quot;: true,&lt;br /&gt;
   &amp;quot;isInstanceDomain&amp;quot;: true,&lt;br /&gt;
   &amp;quot;categories&amp;quot;: [ ... ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_devices() : object ======&lt;br /&gt;
You will receive all existing devices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices();&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;0_009033420623&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0_009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 dvl [13.7526/132035/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_devices_from_domain(int id) : object ======&lt;br /&gt;
You will receive all devices which are assigned to the given domain&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices_from_domain(1);&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_device(int id) : object ======&lt;br /&gt;
You will receive a specific device&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var device = cmd.get_device(2);&lt;br /&gt;
console.log(device);&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
   &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
   &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
   &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
   &amp;quot;online&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== helper functions =====&lt;br /&gt;
&lt;br /&gt;
====== percent(int value, int total) : float ======&lt;br /&gt;
Returns the number of percent of value to total&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var check = cmd.percent(50, 100);&lt;br /&gt;
console.log(check);&lt;br /&gt;
50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== parse_xml(string xml, string element = &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;) : object ======&lt;br /&gt;
Returns an object/array representation of given XML string. Note that very large XML inputs cannot be converted directly because there are some restrictions in the duktape environment. If you receive an exception with &#039;&#039;Error: RangeError: regexp executor recursion limit&#039;&#039; you have to define which element do you want to converted (See the second example).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var json = cmd.parse_xml(&#039;&amp;lt;sample&amp;gt;&amp;lt;item property_1=&amp;quot;value_1&amp;quot; property_2=&amp;quot;value_2&amp;quot;&amp;gt;content of item&amp;lt;/item&amp;gt;&amp;lt;item_short prop_1=&amp;quot;value_prop_1&amp;quot; /&amp;gt;&amp;lt;/sample&amp;gt;&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;sample&amp;quot;: {&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;@property_1&amp;quot;: &amp;quot;value_1&amp;quot;,&lt;br /&gt;
      &amp;quot;@property_2&amp;quot;: &amp;quot;value_2&amp;quot;,&lt;br /&gt;
      &amp;quot;#&amp;quot;: &amp;quot;content of item&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;item_short&amp;quot;: {&lt;br /&gt;
      &amp;quot;@prop_1&amp;quot;: &amp;quot;value_prop_1&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code with large xml payload&amp;quot; hide=&amp;quot;hide sample code with large xml payload&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var xml_registrations_on_big_pbx = &#039;\&lt;br /&gt;
  &amp;lt;show state=&amp;quot;up&amp;quot; time=&amp;quot;267993&amp;quot; loc=&amp;quot;pbx&amp;quot;&amp;gt;\&lt;br /&gt;
    &amp;lt;attrs&amp;gt;&amp;lt;/attrs&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Fax&amp;quot; guid=&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot; h323=&amp;quot;fax&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;fax&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Voicemail de&amp;quot; guid=&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot; h323=&amp;quot;voicemail-de&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.uc.voicemail.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;vm&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    ... and so on ...\&lt;br /&gt;
  &amp;lt;/show&amp;gt;&#039;;&lt;br /&gt;
var json = cmd.parse_xml(xml_registrations_on_big_pbx, &#039;reg&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Fax&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Voicemail&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== is_supported_version(string version) : object ======&lt;br /&gt;
Return if the given Version string is supported according to [[Howto:Supported innovaphone versions]].&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.is_supported_version(&#039;13r3 sr9 [13.7886/1000/0]&#039;); // return &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== get_version_from_build(int build) : string ======&lt;br /&gt;
Return the named version from given build number. (13r3, 14r1 or similar)&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.get_version_from_build(1410485); // return &amp;quot;14r1&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== debug =====&lt;br /&gt;
&lt;br /&gt;
====== log(string message) : void ======&lt;br /&gt;
You can write a logfile line to the app debug log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.log(&#039;my first logfile line&#039;);&lt;br /&gt;
07-26 07:58:33.179 TechAssist@slu.de (b0728708) | Test &amp;quot;sample_test&amp;quot; | my first logfile line&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Secret knowledge for good tests ===&lt;br /&gt;
; bool PBX-Object config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;no-subscribe=&amp;quot;true&amp;quot;&amp;lt;/code&amp;gt; (this is from a Trunk Object) in the config. Please note that if the attribute is &#039;&#039;missing&#039;&#039; or the value is &#039;&#039;false&#039;&#039; it is false, otherwise it is &#039;&#039;true&#039;&#039;. For example, the value &amp;lt;code&amp;gt;no-subscribe=&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
; bool Interface config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;/direct-sig on&amp;lt;/code&amp;gt; (this is from a SIP interface) in the config. Please note that they are exists bool-attribute which are &#039;&#039;true&#039;&#039; if the attribute is existing. In the case of bool-attribute the following value make no matter. For example, the attribute &amp;lt;code&amp;gt;/direct-sig off&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
&lt;br /&gt;
== Monitoring ==&lt;br /&gt;
The App supports a monitoring interface where well known IT-Monitoring Systems or other Statistics Services can connect and collect various data for the whole innovaphone installation.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
* Only devices that are known by the &#039;&#039;Devices App&#039;&#039; will be included in the monitoring data&lt;br /&gt;
* Only devices that have a non-empty &amp;quot;Name&amp;quot; in the &#039;&#039;Devices App&#039;&#039; will be included in the monitoring data&lt;br /&gt;
* For included App statistics, the DNS Name in the App Platform has to be set&lt;br /&gt;
* Depending on your external system (to support the automatic host matching magic) it can be needed that all devices has the same &#039;&#039;Name&#039;&#039; in your &#039;&#039;Devices App&#039;&#039; and your external System (Usually the FQDN is used)&lt;br /&gt;
&lt;br /&gt;
===Configurations===&lt;br /&gt;
* In the PBX Manager, you have to configure the credentials for the HTTP authorization to get monitoring data&lt;br /&gt;
* In the TechAssist App in the settings area, you can select categories (PBXes, Gateways, AP Platforms, Apps, DECT, Phones) which should be included in the monitoring data&lt;br /&gt;
* For all app services that provide statistics, the TechAssist app object must have access rights to these apps (the apps must be checked in the &amp;quot;Apps&amp;quot; tab of the PBX object)&lt;br /&gt;
&lt;br /&gt;
===Internal Timers===&lt;br /&gt;
*Hardware Metrics will be updated every 5 minutes&lt;br /&gt;
*App Statistics will be updated every 1 minute&lt;br /&gt;
&lt;br /&gt;
===Supported Integrations===&lt;br /&gt;
We support various output formats over different interfaces. Your System can pull the information and append in the needed Interface/Format to the URL. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Example: https://apps.slu.de/slu.de/techassist/monitoring/JSON (Here is &amp;quot;JSON&amp;quot; the used interface, see below)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use an old/legacy system that only support http basic-auth instead of digest-auth you can add a &amp;quot;/basic&amp;quot; to the endpoint url. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Example: https://&amp;lt;/nowiki&amp;gt;apps.slu.de/slu.de/techassist&#039;&#039;&#039;/basic&#039;&#039;&#039;/monitoring/JSON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== RAW ====&lt;br /&gt;
The interface &amp;quot;/RAW&amp;quot; provides the internal TechAssist format as JSON.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;pbx.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;metrics&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;serialnumber&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;005056001338&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;product&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;IPVA&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;version&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;15r1 dvl [15.1.0130/1000/0]&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;versionIsSupported&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;uptime&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 2747,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;CPU&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 100&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;CPU-R&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 26000&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;MEM&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 46,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0.09,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 49793&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;ETH0&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: null,&lt;br /&gt;
        &amp;quot;min&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;max&amp;quot;: 1000000&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;47&amp;quot;,&lt;br /&gt;
    &amp;quot;title&amp;quot;: &amp;quot;ap.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;metrics&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;online&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;serialnumber&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;00155db3c306&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;product&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;AppPlatform x86_64&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;version&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;120010  (15r1 1510130 dvl )&amp;quot;,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;versionIsSupported&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;valuePercent&amp;quot;: null,&lt;br /&gt;
        &amp;quot;comment&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;quot;min&amp;quot;: null,&lt;br /&gt;
        &amp;quot;max&amp;quot;: null&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CSV ====&lt;br /&gt;
The interface &amp;quot;/CSV&amp;quot; provides a simple text based comma separated structure in the format &amp;lt;code&amp;gt;&amp;lt;Hostname&amp;gt;;&amp;lt;Metric&amp;gt;;&amp;lt;Value&amp;gt;;&amp;lt;Comment&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;online&amp;quot;;1;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;serialnumber&amp;quot;;005056001338;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;product&amp;quot;;IPVA;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;version&amp;quot;;15r1 dvl [15.1.0130/1000/0];&lt;br /&gt;
pbx.baebeca.de;&amp;quot;versionIsSupported&amp;quot;;1;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;uptime&amp;quot;;3050;&lt;br /&gt;
pbx.baebeca.de;&amp;quot;CPU&amp;quot;;2;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;CPU-R&amp;quot;;0;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;MEM&amp;quot;;0.09;null&lt;br /&gt;
pbx.baebeca.de;&amp;quot;ETH0&amp;quot;;18;null&lt;br /&gt;
ap.baebeca.de;&amp;quot;online&amp;quot;;1;&lt;br /&gt;
ap.baebeca.de;&amp;quot;serialnumber&amp;quot;;00155db3c306;&lt;br /&gt;
ap.baebeca.de;&amp;quot;product&amp;quot;;AppPlatform x86_64;&lt;br /&gt;
ap.baebeca.de;&amp;quot;version&amp;quot;;120010  (15r1 1510130 dvl );&lt;br /&gt;
ap.baebeca.de;&amp;quot;versionIsSupported&amp;quot;;1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== JSON ====&lt;br /&gt;
The interface &amp;quot;/JSON&amp;quot; provides a JSON formatted structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pbx.baebeca.de&amp;quot;: [&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;serialnumber&amp;quot;,&amp;quot;value&amp;quot;:005056001338,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;product&amp;quot;,&amp;quot;value&amp;quot;:IPVA,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;version&amp;quot;,&amp;quot;value&amp;quot;:15r1 dvl [15.1.0130/1000/0],&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;versionIsSupported&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;uptime&amp;quot;,&amp;quot;value&amp;quot;:3050,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;CPU&amp;quot;,&amp;quot;value&amp;quot;:2,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;CPU-R&amp;quot;,&amp;quot;value&amp;quot;:0,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;MEM&amp;quot;,&amp;quot;value&amp;quot;:0.09,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;pbx.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;ETH0&amp;quot;,&amp;quot;value&amp;quot;:18,&amp;quot;comment&amp;quot;:&amp;quot;null&amp;quot;}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;ap.baebeca.de&amp;quot;: [&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;online&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;serialnumber&amp;quot;,&amp;quot;value&amp;quot;:00155db3c306,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;product&amp;quot;,&amp;quot;value&amp;quot;:AppPlatform x86_64,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;version&amp;quot;,&amp;quot;value&amp;quot;:120010  (15r1 1510130 dvl ),&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
    {&amp;quot;device&amp;quot;:&amp;quot;ap.baebeca.de&amp;quot;,&amp;quot;metric&amp;quot;:&amp;quot;versionIsSupported&amp;quot;,&amp;quot;value&amp;quot;:1,&amp;quot;comment&amp;quot;:&amp;quot;&amp;quot;},&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Checkmk ====&lt;br /&gt;
The interface &amp;quot;/Checkmk&amp;quot; provides a native integration to your Checkmk system with [https://docs.checkmk.com/latest/en/piggyback.html Piggyback] information for all known hosts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;pbx.baebeca.de&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;check_mk&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
AgentOS: innovaphone TechAssist&lt;br /&gt;
Hostname: pbx.baebeca.de&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;uptime&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
3050&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;kernel&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
util 0&lt;br /&gt;
cpu 1728891356864 0 0 1728891356960 0 0 0 0 0 0&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;mem&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
MemTotal: 49793 kB&lt;br /&gt;
MemFree: 49747 kB&lt;br /&gt;
MemAvailable: 49747 kB&lt;br /&gt;
Buffers: 0 kB&lt;br /&gt;
Cached: 0 kB&lt;br /&gt;
SwapTotal: 0 kB&lt;br /&gt;
SwapFree: 0 kB&lt;br /&gt;
Dirty: 0 kB&lt;br /&gt;
Writeback: 0 kB&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;lnx_thermal&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;local&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
0 &amp;quot;online&amp;quot; - online=1&lt;br /&gt;
0 &amp;quot;serialnumber&amp;quot; - serialnumber=005056001338&lt;br /&gt;
0 &amp;quot;product&amp;quot; - product=IPVA&lt;br /&gt;
0 &amp;quot;version&amp;quot; - version=15r1 dvl [15.1.0130/1000/0]&lt;br /&gt;
0 &amp;quot;versionIsSupported&amp;quot; - versionIsSupported=1&lt;br /&gt;
0 &amp;quot;CPU-R&amp;quot; - CPU-R=0&lt;br /&gt;
0 &amp;quot;ETH0&amp;quot; - ETH0=18&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;innovaphone&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;ap.baebeca.de&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;check_mk&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
AgentOS: innovaphone TechAssist&lt;br /&gt;
Hostname: ap.baebeca.de&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;uptime&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;kernel&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;mem&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;lnx_thermal&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;local&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
0 &amp;quot;online&amp;quot; - online=1&lt;br /&gt;
0 &amp;quot;serialnumber&amp;quot; - serialnumber=00155db3c306&lt;br /&gt;
0 &amp;quot;product&amp;quot; - product=AppPlatform x86_64&lt;br /&gt;
0 &amp;quot;version&amp;quot; - version=120010  (15r1 1510130 dvl )&lt;br /&gt;
0 &amp;quot;versionIsSupported&amp;quot; - versionIsSupported=1&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;innovaphone&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configure your Checkmk installation =====&lt;br /&gt;
#Create a new Rule for &amp;quot;Individual program call instead of agent access&amp;quot; in &amp;quot;Setup &amp;gt; Agents &amp;gt; Other integrations&amp;quot;&lt;br /&gt;
#*Command line to execute: &amp;lt;code&amp;gt;curl --digest -u &amp;quot;user:pass&amp;quot; https://ap.domain.tld/domain.de/techassist/monitoring/Checkmk&amp;lt;/code&amp;gt;&lt;br /&gt;
#*Explicit hosts: Set this to the Host of your Application Platform&lt;br /&gt;
#Make sure that &amp;quot;Checkmk agent / API integrations&amp;quot; in the Hostconfiguration of your Application Platform is set to &amp;quot;API integrations if configured, else Checkmk agent&amp;quot;, all other Hosts hat to bet set to &amp;quot;No API integrations, no Checkmk agent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
After that, you can run the service discovery and receive new checks for your devices&lt;br /&gt;
&lt;br /&gt;
[[File:Checkmk new checks.png|frameless|500px]]&lt;br /&gt;
&lt;br /&gt;
==== Icinga ====&lt;br /&gt;
The interface &amp;quot;/Icinga&amp;quot; provides a native integration to your Icinga system for all known hosts.&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=This interface is currently being researched, and it is being checked whether icinga can read such data as expected}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample output&amp;quot; hide=&amp;quot;hide sample output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_host&amp;quot;: &amp;quot;pbx.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;_ETH0_ipv4&amp;quot;: &amp;quot;10.0.102.7&amp;quot;,&lt;br /&gt;
    &amp;quot;online&amp;quot;:1,&lt;br /&gt;
    &amp;quot;serialnumber&amp;quot;:005056001338,&lt;br /&gt;
    &amp;quot;product&amp;quot;:IPVA,&lt;br /&gt;
    &amp;quot;version&amp;quot;:15r1 dvl [15.1.0130/1000/0],&lt;br /&gt;
    &amp;quot;versionIsSupported&amp;quot;:1,&lt;br /&gt;
    &amp;quot;uptime&amp;quot;:3353,&lt;br /&gt;
    &amp;quot;CPU&amp;quot;:1,&lt;br /&gt;
    &amp;quot;CPU-R&amp;quot;:0,&lt;br /&gt;
    &amp;quot;MEM&amp;quot;:0.09,&lt;br /&gt;
    &amp;quot;ETH0&amp;quot;:14&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_host&amp;quot;: &amp;quot;ap.baebeca.de&amp;quot;,&lt;br /&gt;
    &amp;quot;_eth0_ipv4&amp;quot;: &amp;quot;10.0.102.8&amp;quot;,&lt;br /&gt;
    &amp;quot;_eth0_ipv6&amp;quot;: &amp;quot;2001:4090:e000:9a1::8&amp;quot;,&lt;br /&gt;
    &amp;quot;online&amp;quot;:1,&lt;br /&gt;
    &amp;quot;serialnumber&amp;quot;:00155db3c306,&lt;br /&gt;
    &amp;quot;product&amp;quot;:AppPlatform x86_64,&lt;br /&gt;
    &amp;quot;version&amp;quot;:120010  (15r1 1510130 dvl ),&lt;br /&gt;
    &amp;quot;versionIsSupported&amp;quot;:1&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Configure your Icinga installation =====&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Startup Logfile ===&lt;br /&gt;
If you enable the traceflag &#039;&#039;App&#039;&#039; in your App instance, you will find the following logs:&lt;br /&gt;
&lt;br /&gt;
 AppService::AppStart TechAssist@slu.de&lt;br /&gt;
 App instance started 14C1363 14C1363&lt;br /&gt;
 ...&lt;br /&gt;
 // App begins to load embedded tests&lt;br /&gt;
 JavaScript: Files tests/*&lt;br /&gt;
 ...&lt;br /&gt;
 // Scheduler begins to load all the tests&lt;br /&gt;
 scheduler init&lt;br /&gt;
 init test &amp;quot;firmware_version&amp;quot;&lt;br /&gt;
 firmware_version: Test added successful&lt;br /&gt;
 init test &amp;quot;pbx_mediarelay&amp;quot;&lt;br /&gt;
 pbx_mediarelay: Test added successful&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r2:Gateway/Interfaces/SIP&amp;diff=63471</id>
		<title>Reference13r2:Gateway/Interfaces/SIP</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Gateway/Interfaces/SIP&amp;diff=63471"/>
		<updated>2022-09-23T07:59:25Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SIP Registration section ==&lt;br /&gt;
The entry fields for a &#039;&#039;&#039;SIP registration&#039;&#039;&#039; are:&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|Descriptive name for this registration.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Disable&#039;&#039;&#039;&lt;br /&gt;
|A switch to temporarily disable this interface without deleting the configuration.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
*Provider: Creates a registration at a remote SIP server (of a SIP provider)&lt;br /&gt;
*Open Federation: SIP/TLS interface without registration used to send and receive calls to federation partners.&lt;br /&gt;
*Closed Federation: Like &#039;Open Federation&#039; but even more restricted to pre-configured set of federation partners. In the &#039;Closed Federation&#039; mode, the DNS queries for resolving the domain name of the federation partner are made without the &#039;&#039;&#039;Recursion Desired&#039;&#039;&#039; (RD) Flag. This means only DNS entries configured on the local DNS server are resolved, so the list of the partners for &#039;Closed Federation&#039; must be maintained on the local DNS server.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Transport&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
*UDP: SIP signaling using UDP as transport protocol (RFC 3261).&lt;br /&gt;
*TCP: SIP signaling using TCP as transport protocol (RFC 3261).&lt;br /&gt;
*TLS: SIP signaling using TLS as transport protocol (RFC 3261). [[Howto:Security works with innovaphone]]&lt;br /&gt;
*Without registration: By default sip trunks are using with registration. Can be disabled here.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;AOR&#039;&#039;&#039;&lt;br /&gt;
|Address of Record: SIP-URI used to register. Enter the registration ID followed by the SIP provider domain name (for example 8111111e0@sipgate.de or 8111111e0@x.x.x.x:5080 if you need to use the IP-address and a different Port number).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Local Hostname&#039;&#039;&#039;&lt;br /&gt;
|The Local Domain for SIP Federation enables to select the TLS Certificate according to the Domain Name. On the incoming SIP calls the host part of the URI is removed if equals with the Local Domain configured here, and the user part is used as Name (H323-ID) or Number (E164).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Local Port&#039;&#039;&#039;&lt;br /&gt;
|The local source port for SIP signalling can be configured here. If its empty a random port will be used. &#039;&#039;Dont use the same static port on multiple SIP Accounts!&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proxy&#039;&#039;&#039;&lt;br /&gt;
|DNS name or IP address of the SIP proxy where SIP messages (REGISTER,INVITE,etc) are to be sent to. Proxy can be omitted if domain part of AOR can be used as remote signaling destination. (append &amp;quot;:&amp;lt;port&amp;gt;&amp;quot; if you need a different destination Port)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;STUN Server&#039;&#039;&#039;&lt;br /&gt;
|The STUN servers to use.  See [[{{NAMESPACE}}:IP4/General/STUN | STUN]] for details regarding the format. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Authorization ==&lt;br /&gt;
Username and password for authorization. Username can be omitted if equal to userpart of AOR.&lt;br /&gt;
&lt;br /&gt;
== Media Properties ==&lt;br /&gt;
&lt;br /&gt;
The configuration of the media properties is evaluated for calls from/to this interface to/from a physical (ISDN, analog, TEST, ...) only. If media relay is active for a call using this interface an &#039;exclusive&#039; coder config is used to prohibit the use of any other coder. This &#039;exclusive code media-relay&#039; config can be used to solve interop problems with other equipment which does not support media renegotiation, because with this config no media renegotiation will be performed.&lt;br /&gt;
&lt;br /&gt;
For more information see [[{{NAMESPACE}}:Gateway/Interfaces/Media_Properties | Media Properties]] and [[Howto:Security works with innovaphone]]&lt;br /&gt;
&lt;br /&gt;
== SIP Interop Tweaks ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Proposed Registration Interval&#039;&#039;&#039;&lt;br /&gt;
|Set in seconds, default is 120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Accept INVITE&#039;s from Anywhere&#039;&#039;&#039;&lt;br /&gt;
|If disabled, registered interfaces will reject INVITE&#039;s not coming from the SIP server with &amp;quot;305 Use Proxy&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Enforce Sending Complete&#039;&#039;&#039;&lt;br /&gt;
|Affects handling of &amp;quot;484 Address Incomplete&amp;quot; responses. If enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is cleared. If not enabled and &amp;quot;484 Address Incomplete&amp;quot; is received, the call is retained and re-initiated in case of new dialing digits.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Video&#039;&#039;&#039;&lt;br /&gt;
|Removes Video Capabilities from outgoing media offer.&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Early Media&#039;&#039;&#039;&lt;br /&gt;
|Ignore any SDP answer received before final connect response.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Information on Error&#039;&#039;&#039;&lt;br /&gt;
|Controls interworking of Q.931 DISC message. If this option is set, DISC message is always interworked into BYE request.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Inband Disconnect&#039;&#039;&#039;&lt;br /&gt;
|TBD.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;No Remote Hold Signaling&#039;&#039;&#039;&lt;br /&gt;
|Disables interworking of &amp;quot;inactive&amp;quot; into RemoteHold (affects connected SIP calls only).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Take Refer-To URI as Remote Target URI&#039;&#039;&#039;&lt;br /&gt;
|TBD.&lt;br /&gt;
|-&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;To Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Affects only outgoing diverted calls . &lt;br /&gt;
*&#039;&#039;&#039;Called Party&#039;&#039;&#039;: If set we write CDPN into To header of outgoing INVITE (and DGPN into History-Info header). &lt;br /&gt;
*&#039;&#039;&#039;Original Called Party&#039;&#039;&#039;: If set we write the DGPN into To header of outgoing INVITE (and CDPN into Request-URI).&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;From Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the local URI (From header) of outgoing calls. Applys to registered interfaces only. &lt;br /&gt;
*&#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as From-URI regardless of the actual calling party number. &lt;br /&gt;
*&#039;&#039;&#039;AOR with CGPN as Display&#039;&#039;&#039;: Fixed AOR is used as From-URI and calling party number is added as display string. &lt;br /&gt;
*&#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable From-URI with actual calling party number.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Identity Header when Sending INVITE&#039;&#039;&#039;&lt;br /&gt;
|Controls the identity header (P-Preferred-Identity, P-Asserted-Identity and Remote-Party-Id) sent on outgoing calls&lt;br /&gt;
*&#039;&#039;&#039;CGPN in user part of URI&#039;&#039;&#039;: Variable Identity-URI with actual calling party number &lt;br /&gt;
*&#039;&#039;&#039;Fixed AOR&#039;&#039;&#039;: Fixed AOR is used as Identity-URI regardless of the actual calling party number&lt;br /&gt;
*&#039;&#039;&#039;UUI&#039;&#039;&#039;: the relayed call must include &#039;&#039;user-to-user-info&#039;&#039; (UUI). This UUI is used as Identity-URI. [[Howto:How_to_customize_the_From/Identity_header_value_at_SIP_interfaces|In the UUI]], the string &amp;lt;code&amp;gt;{initiator}&amp;lt;/code&amp;gt; is replaced by the the call&#039;s &#039;&#039;diversion-info&#039;&#039; (a.k.a. &#039;&#039;leg-2-info&#039;&#039;) if available or the calling party number otherwise&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Reliability of Provisional Responses&#039;&#039;&#039;&lt;br /&gt;
|Controls the support of PRACK (RFC-3262). &lt;br /&gt;
*&#039;&#039;&#039;Supported&#039;&#039;&#039;: Supported as optional extension. &lt;br /&gt;
*&#039;&#039;&#039;Required&#039;&#039;&#039;: Required as mandatory extension. &lt;br /&gt;
*&#039;&#039;&#039;Disabled&#039;&#039;&#039;: Hide support for PRACK extension.&lt;br /&gt;
|-&lt;br /&gt;
|valign=top nowrap=true|&#039;&#039;&#039;Advanced&#039;&#039;&#039;&lt;br /&gt;
|Allows the configuration of additional, not further documented, interop tweaks(e.g. /pai on). The same tweaks can be configured also globally(i.e. not for this SIP-Interface) at the SIP(or TSIP/SIPS)-module. Any tweaks configured at the SIP-Interface will overwrite globally configured tweaks.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== More frequently used &#039;&#039;Advanced&#039;&#039; Parameters ===&lt;br /&gt;
There are some options which influence the stack behaviour to handle ambiguities in the SIP standard:&lt;br /&gt;
&lt;br /&gt;
; /pai on  : send identity URI in &amp;lt;code&amp;gt;P-Asserted-Identity&amp;lt;/code&amp;gt; header. By default, it is sent in the &amp;lt;code&amp;gt;P-Asserted-Identity&amp;lt;/code&amp;gt; header for calls from the PBX to the endpoint, in the &amp;lt;code&amp;gt;P-Preferred-Identity&amp;lt;/code&amp;gt; header otherwise&lt;br /&gt;
; /ppi on : send identity URI in &amp;lt;code&amp;gt;P-Preferred-Identity&amp;lt;/code&amp;gt; header &lt;br /&gt;
&lt;br /&gt;
Other options are available which instruct the stack to use non-standard or deprecated behaviour.  Note that this should only be used in rare cases.  Better have the vendor of your 3rd party SIP equipment fix its stack implementation:&lt;br /&gt;
&lt;br /&gt;
; /send-deprecated-diversion-header on : send call history information in the deprecated &amp;lt;code&amp;gt;Diversion&amp;lt;/code&amp;gt; header in addition to the &amp;lt;code&amp;gt;History-Info&amp;lt;/code&amp;gt; header &lt;br /&gt;
; /single-audio-description : don&#039;t send SAVP+AVP, but SAVP or AVP media description in SDP&lt;br /&gt;
; /no-authentication-info : don&#039;t send &amp;lt;code&amp;gt;Authentication-Info&amp;lt;/code&amp;gt; header in REGISTER response&lt;br /&gt;
; /send-no-historyinfo : don&#039;t send call history information (i.e. call forward) in outgoing Invite&lt;br /&gt;
; /contact-addr [option] : adjust the Contact header to a fixed value necessary in scenarios of SIP Provider trunk without registration using TCP/TLS and uses Contact Header for Authentication. Example /contact-addr x.x.x.x:5061;user=phone;transport=TLS&lt;br /&gt;
; /options-interval n : Send SIP options every &amp;quot;n&amp;quot; seconds to the configured remote SIP Address configured on the Interface.&lt;br /&gt;
&lt;br /&gt;
=== Extra Options ===&lt;br /&gt;
{{3rd_Party_Input}}&lt;br /&gt;
&lt;br /&gt;
==== Disable Interworking of Hold Notifications to SIP Provider ====&lt;br /&gt;
&lt;br /&gt;
During the tests we concluded that when interworking the hold-notify message to SIP and sending to the SIP Provider two consecutive Re-Invites with &amp;quot;send-only&amp;quot; attributes, the IMS platform replies to the second re-invite with &amp;quot;inactive&amp;quot;. By doing so this call is put on hold without any Music on Hold - just silence.&lt;br /&gt;
To avoid this behaviour we need to disable the interworking of the hold-notify message by this setting: &lt;br /&gt;
&lt;br /&gt;
 !config add SIP /no-hr-notify  (Alternative: TSIP / SIPS)&lt;br /&gt;
 !config write&lt;br /&gt;
 !config activate&lt;br /&gt;
&lt;br /&gt;
==== SIP Options Interval (Optional) ====&lt;br /&gt;
&lt;br /&gt;
Some Provider uses SIP Options to monitor the SIP Trunks, so it&#039;s mandatory that Innovaphone replies to incoming SIP Options received. This is done by default. Additionally we can also send SIP Options to the SIP Proxy and have similar mechanism for redundancy. If the remote Proxy doesn&#039;t reply to outgoing SIP Options, the Innovaphone Gateway will send the call to the next interface. To enable sending of Options - messages, the following setting must be done:&lt;br /&gt;
&lt;br /&gt;
 !config add SIP /options-interval 30  (Alternative: TSIP / SIPS)&lt;br /&gt;
 !config write&lt;br /&gt;
 !config activate&lt;br /&gt;
&lt;br /&gt;
This option will only take effect on connections &amp;quot;without registration&amp;quot;. In connections with a registration there already exist a keep alive.&lt;br /&gt;
&lt;br /&gt;
==== Remove Comfort Noise (CN) Capability from SDP ====&lt;br /&gt;
&lt;br /&gt;
During the tests we found out that some specific 3rd party devices connected to the IMS network support only a single coder/payload in the offer. When doing the coder negotiation, this devices repeat the coder negotiation until they have only 1 coder in the offer or until they reach a specific number of retries. Since Innovaphone by default always include the payload 13 (Comfort Noise) in addition to the used voice coder/payload, this would make the remote device to do multiple re-invites to try to reach the single coder/payload in the offer.&lt;br /&gt;
To avoid unnecessary signalling, we should disable the sending of Comfort Noise capability.&lt;br /&gt;
&lt;br /&gt;
 !config add SIP /rem-cn-capability  (Alternative: TSIP / SIPS)&lt;br /&gt;
 !config write&lt;br /&gt;
 !config activate&lt;br /&gt;
&lt;br /&gt;
==== Setting of P-Asserted ID instead of P-Preferred ID ====&lt;br /&gt;
&lt;br /&gt;
When using the feature of ReRouting the call (SIP 302 Move Temporary) to the SIP Trunk, the IMS platform checks the P-Asserted ID setting. By default we send as P-Preferred ID instead, so that will not work. As a result, we need to configure the following setting:&lt;br /&gt;
&lt;br /&gt;
 !config add SIP /pai  (Alternative: TSIP / SIPS)&lt;br /&gt;
 !config write&lt;br /&gt;
 !config activate&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference:IP73_WLAN_WiFi_Wireless_IP-Phone&amp;diff=61668</id>
		<title>Reference:IP73 WLAN WiFi Wireless IP-Phone</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference:IP73_WLAN_WiFi_Wireless_IP-Phone&amp;diff=61668"/>
		<updated>2022-04-06T13:09:29Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the IP73 WLAN/WiFi wireless IP phone, differences to the deprecated IP62 Wireless IP phone and a list of compatible WLAN infrastructures.&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
*innovaphone IP73 (50-00073-001)&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
To perform configuration changes on the IP73 device a desktop programming kit (IP62/IP64/IP65/IP73) (Art.No. 50-00060-021 / Prod.ID DP1-UAAA/1A1) is required. The programming kit enables to connect the IP73 handset to a PC in order the configuration changes can be done using WinPDM software.&lt;br /&gt;
&lt;br /&gt;
==Feature Comparison==&lt;br /&gt;
This chapter describes the differences in the feature sets between old and new WiFi handsets.&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;
|+ Handset Features Matrix&lt;br /&gt;
! Feature !! IP62 !! IP73 !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Signaling Protocols ||  H.323/SIP || SIP only ||&lt;br /&gt;
|-&lt;br /&gt;
| Codecs || G.711, G.722, G.729 A || Opus Wideband, G.711, G.722, G.729 A/B/AB ||&lt;br /&gt;
|-&lt;br /&gt;
| Talk Time/ Standby Time || 15 h / 100 h || 10 h / 100 h || with U-APSD&lt;br /&gt;
|-&lt;br /&gt;
| WiFi Standards || 802.11 a/b/g/n || 802.11 a/b/g/n/ac, 802.11r, 802.11k || MCS 0-7 only, Fast BSS Transition (FT or 802.11r)&lt;br /&gt;
|-&lt;br /&gt;
| SSL Certificates || customer managed || preinstalled by innovaphone/customer managed ||&lt;br /&gt;
|-&lt;br /&gt;
| call diversion || ok || only with DTMF ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Headset Connector || 2,5 mm || 3,5 mm ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Although the IP73 does not have access to a central LDAP phone book, the solution described in [[Reference9:PBX/Objects/Directory_Search]] can be used.&lt;br /&gt;
&lt;br /&gt;
==WLAN Infrastructure Compatibility==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;: Ask [mailto:presales_AT_innovaphone_D0T_com innovaphone Presales Team] for possible interop configuration recommendations and pitfalls before you order the WiFi equipment and start with the roll-out.&lt;br /&gt;
&lt;br /&gt;
Note that availability and combinations of controllers and access points may be subject to change by the manufacturer and are not in the responsability of innovaphone. Errors and omissions excepted.&lt;br /&gt;
&lt;br /&gt;
innovaphone does not support WLAN infrastructures not listed in this document.&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;
|+ Certified WLAN Platforms&lt;br /&gt;
! Vendor !! AP Model(s) !! Controller Model(s) !! latest tested SW Version&lt;br /&gt;
|-&lt;br /&gt;
| Aruba ||AP 207, 214, 215, 224, 225, 275||7000/7200/9000/MX-VA-xxx||8.6.0.5&lt;br /&gt;
|-&lt;br /&gt;
| Aruba ||AP 304, 305, 314, 315, 324, 325, 334, 335, 344, 345, 504, 505, 514, 515, 534, 554, 555||7000/7200/9000/MX-VA-xxx|| 8.7.1.1&lt;br /&gt;
|-&lt;br /&gt;
| Cisco||AP 1702, 2702, 3702, 1832, 1852, 2802, 3802, 4800, 9115, 9117, 9120, 9130||3504, 5520, 8540, vWLC, Mobility Express Solution||8.10.105&lt;br /&gt;
|-&lt;br /&gt;
| Cisco||AP 1832, 1852, 2802, 3802, 4800, 9105, 9115, 9117, 9120, 9130||3504, 5520, 8540, vWLC, Mobility Express Solution||8.10.162&lt;br /&gt;
|-&lt;br /&gt;
| Cisco||AP 1702, 2702, 3702||Catalyst 9800||17.3.3&lt;br /&gt;
|-&lt;br /&gt;
| Cisco||AP 1832, 1852, 2802, 3802, 4800, 9115, 9117, 9120, 9130, 9136||Catalyst 9800||17.7.1&lt;br /&gt;
|-&lt;br /&gt;
| Cisco Meraki||MR20/MR30H/MR33/MR42/MR42E/MR52/MR53/MR53E/MR70/MR74/MR84 (802.11ac wave 2);MR36/MR44/MR46/MR46E/MR76/MR86 (802.11ax)||-||MR 27.7.1&lt;br /&gt;
|-&lt;br /&gt;
| Extreme Networks (Enterasys/IdentiFi) ||AP 3801, 3805, 3825, 3865, 3935|| Extreme Wireless C25, C35, C2110, C5110, C5210, v2110||10.51.10&lt;br /&gt;
|-&lt;br /&gt;
| Extreme Networks (Enterasys/IdentiFi) ||AP 122, 130, 230, 250, 550, 650|| Extreme Cloud ||AP 10.0r8, Cloud 20.1.1.3&lt;br /&gt;
|-&lt;br /&gt;
| Extreme Networks (Enterasys/IdentiFi) ||AP 310i/e, 410i/e, 505i/e, 510i/e, 360i/e, 460i/e, 560|| XCC Controllers E1120, E2120, E3120, VE6120/VE6125, VE6120H||05.16.01.0025&lt;br /&gt;
|-&lt;br /&gt;
| Extreme Networks (Enterasys/IdentiFi) || AP305c/cx, 410c, 460c, 510c/cx, 650|| Extreme Cloud C25, C35, C2110, C5110, C5210, v2110||AP 10.2.4.0, Cloud 20.1.1.3&lt;br /&gt;
|-&lt;br /&gt;
| Extreme Networks (Enterasys/IdentiFi) || AP310i/e, 410i/e, 460i/e, 510i/e, 650i|| Extreme WING NX 5500, 75xx, 9500, 9510, 9600, 9610, VX9000||7.5.2.0&lt;br /&gt;
|-&lt;br /&gt;
| Fortinet||AP1010/1014/1020/822/832, APU221EV/U223EV/U321EV/U323EV/U421EV/U423EV||MC1550/3x00/4x00/5000/6000&amp;lt;br&amp;gt;FortiWLC-50D ,200D, 500D, 1000D, 3000D&amp;lt;br&amp;gt;FWC- VM-50, 200, 500, 1000, 3000||8.5-2-5&lt;br /&gt;
|-&lt;br /&gt;
| Ruckus||SmartZone ZF  R300, R310, T300, T310, R500, R510, H510, R600, R610, R710, R720||SmartZone platform, vSZ-(H,E,D), SZ100/300||5.2.0.0.699&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
as of February 2022.&lt;br /&gt;
&lt;br /&gt;
=== DAS Compatibility ===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Distributed_antenna_system Distributed Antenna Systems (DAS)] provide a cost-effective solution for extending radio coverage inside large facilities. Simply put, a DAS can be seen as a long cable starting at a base station or access point to which many antennas are connected. While the architecture can be utilized to mitigate certain coverage issues, the innovaphone IP73 was not designed to accommodate for such RF environments. Furthermore it is difficult to ascertain and ensure WLAN reliability in regard to interference, capacity, roaming, location-based services, and some important [http://en.wikipedia.org/wiki/IEEE_802.11n 802.11n] features, such as [http://en.wikipedia.org/wiki/Multiple-input_multiple-output MIMO]. As a consequence thereof, innovaphone will not endorse nor provide RF support for WiFi deployments over any Distributed Antenna System.&lt;br /&gt;
&lt;br /&gt;
=== WPA3 Compatibility ===&lt;br /&gt;
The IP73 already supports the configuration option for &#039;&#039;WPA3&#039;&#039;. However, this should not yet be actively used.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;WPA3&#039;&#039; is currently only recommended for demo purposes. Support for &#039;&#039;WPA3&#039;&#039; is implemented, but no successful interoperability tests have been performed. WPA3 is not recommended being used except for demo purposes.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
IP73 configuration is done via WinPDM-application available at [https://store.innovaphone.com the Software section of the innovaphone App Store]. Use of desktop programming kit (IP62/IP64/IP65) (50-00060-021) is required.&lt;br /&gt;
===PBX Registration===&lt;br /&gt;
====Authentication via client certificate====&lt;br /&gt;
The recommended way to register an IP73 handset at the innovaphone PBX is SIP over TLS with authentication by a client certificate. The IP73 handset is delivered with a preinstalled device certificate already trusted by an innovaphone PBX.&lt;br /&gt;
&lt;br /&gt;
Prerequisites on the PBX for such type of authentication are:&lt;br /&gt;
&lt;br /&gt;
*The issuer of the IP73 client certificate is on the Trust List of the PBX gateway&lt;br /&gt;
*The CN of the client certificate used by IP73 equals the MAC address of the IP73 itself (alternatively other CN and registration identity can be used)&lt;br /&gt;
*User Object contains a Device with a Hardware Id matching the MAC address of the IP73&lt;br /&gt;
&lt;br /&gt;
On the IP73 following settings must be configured:&lt;br /&gt;
*VoIP-&amp;gt;SIP&lt;br /&gt;
**SIP TLS client certificate: &amp;lt;select certificate with MAC address as CN&amp;gt; or &amp;lt;Automatic if preinstalled certificate is used&amp;gt;&lt;br /&gt;
**SIP Transport: TLS&lt;br /&gt;
**Primary SIP proxy: &amp;lt;IP-address of the PBX&amp;gt;&lt;br /&gt;
**SIP proxy ID: &amp;lt;PBX system name&amp;gt;&lt;br /&gt;
**SIP proxy password: &amp;lt;no password is required&amp;gt;&lt;br /&gt;
**Registration and Authentication identity: MAC address&lt;br /&gt;
&lt;br /&gt;
====Authentication via username/hardware id and password====&lt;br /&gt;
*VoIP-&amp;gt;General-&amp;gt;Endpoint ID: username or hardware id on User Object&lt;br /&gt;
*VoIP-&amp;gt;SIP&lt;br /&gt;
**SIP Transport: TCP or UDP&lt;br /&gt;
**SIP proxy password: &amp;lt;password on the User Object or PBX System password, depending on Users Device configuration&amp;gt;&lt;br /&gt;
**Registration and Authentication identity: Endpoint ID&lt;br /&gt;
&lt;br /&gt;
=== ICE/TURN ===&lt;br /&gt;
ICE is enabled by default. It is required to provide STUN and TURN server configuration under VoIP-&amp;gt;General to secure correct negotiation of media channels.&lt;br /&gt;
&lt;br /&gt;
=== Factory Reset ===&lt;br /&gt;
You can use the local &#039;&#039;Admin menu&#039;&#039; on the Phone or the WinPDM Software (Rightclick on the device) to make a Factory Reset.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Log Options can be configured in the WinPDM software, under Device-&amp;gt;Log.&lt;br /&gt;
&lt;br /&gt;
===Remote PCAP Tracing===&lt;br /&gt;
You can activate the remote PCAP interface and Trace flags directly in the phone configuration (Admin Menu :: Logging :: Mode) or via WinPDM under Device-&amp;gt;Log-&amp;gt;PCAP capturing: RPCAP.&lt;br /&gt;
&lt;br /&gt;
 Only IP traces are available via RPCAP, no innovaphone or device internal traces are logged.&lt;br /&gt;
&lt;br /&gt;
===PCAP to file via USB Tracing===&lt;br /&gt;
It is possible to store PCAP trace file in the &#039;&#039;pcap&#039;&#039; folder on the handset by setting in the phone configuration (Admin Menu :: Logging :: Mode) or via WinPDM under Device-&amp;gt;Log-&amp;gt;PCAP capturing the option &amp;quot;PCAP to file&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To access the file set Device -&amp;gt; General -&amp;gt; USB behavior to &amp;quot;Ask&amp;quot; and select &amp;quot;File transfer&amp;quot;, when connect the handset to the WinPDM. Navigate to the folder &#039;&#039;pcap&#039;&#039; on the &#039;&#039;Handset diagnostics&#039;&#039; drive.&lt;br /&gt;
&lt;br /&gt;
===Trace Options===&lt;br /&gt;
Following additional trace options are available:&lt;br /&gt;
&lt;br /&gt;
*WLAN Trace&lt;br /&gt;
*Configuration Trace&lt;br /&gt;
*GUI Trace&lt;br /&gt;
*GLI Trace&lt;br /&gt;
*Unite Trace&lt;br /&gt;
*VoIP Trace&lt;br /&gt;
*System Trace&lt;br /&gt;
*Protector Trace&lt;br /&gt;
*SaS Trace&lt;br /&gt;
*Bluetooth Trace&lt;br /&gt;
&lt;br /&gt;
 The resulting traces are available via USB file transfer and are encrypted. The encrypted log files can be encrypted by support only.&lt;br /&gt;
&lt;br /&gt;
===Logging via Syslog, SFTP or logfile===&lt;br /&gt;
&lt;br /&gt;
The handset can be configured to send Syslog messages to a Syslog server, an SFTP server or to a local logfile located in the folder &#039;&#039;tracelog&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The configuration is available via WinPDM Device -&amp;gt; Log -&amp;gt; Syslog or SFTP.&lt;br /&gt;
&lt;br /&gt;
===Handset Error Messages===&lt;br /&gt;
&lt;br /&gt;
====No network====&lt;br /&gt;
The &#039;&#039;No network&#039;&#039; message indicates missing WLAN connection. It can be caused by wrong settings for SSID, Security, reg. domain and WLAN channels or lack of coverage.&lt;br /&gt;
&lt;br /&gt;
====No access====&lt;br /&gt;
The &#039;&#039;No access&#039;&#039; message is caused by missing IP connectivity to the PBX or wrong configuration for authentication at the PBX.&lt;br /&gt;
&lt;br /&gt;
== Shortcuts ==&lt;br /&gt;
&lt;br /&gt;
There are additional hidden tools for information and analysing are available.&lt;br /&gt;
&lt;br /&gt;
;Handset Device Information&lt;br /&gt;
:&#039;&#039;*#34#&#039;&#039; in the main display&lt;br /&gt;
&lt;br /&gt;
;RSSI Indicator&lt;br /&gt;
:&#039;&#039;*#76#&#039;&#039; in the main display. Type again to exit.&lt;br /&gt;
: Here you find the following information in the display:&lt;br /&gt;
:* Line 1: SSID&lt;br /&gt;
:* Line 2: Current AP&lt;br /&gt;
:* Line 3: Current AP MAC&lt;br /&gt;
:* Line 4: Previous AP&lt;br /&gt;
:* Line 5: Previous AP MAC&lt;br /&gt;
&lt;br /&gt;
;Site Survey Tool&lt;br /&gt;
:&#039;&#039;*#77#&#039;&#039; in the main display.&lt;br /&gt;
&lt;br /&gt;
;Admin Menu&lt;br /&gt;
: Go to the &#039;&#039;Settings menu&#039;&#039; and type in &#039;&#039;40022&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
*A registration via Reverse Proxy with TLS authentication is not supported at the moment. A workaround with username/password can be implemented. A fix of the PBX software will follow.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
*[[IP73 Technical Data EN]]&lt;br /&gt;
*[[Reference:IP62 WLAN WiFi Wireless IP-Phone]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r1:Firewall_Settings&amp;diff=57351</id>
		<title>Howto13r1:Firewall Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r1:Firewall_Settings&amp;diff=57351"/>
		<updated>2020-10-14T06:41:21Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Keywords: firewall settings, ports, workload, turn config, policies, firewall rules, firewall --&amp;gt;&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
V13 and up&lt;br /&gt;
&lt;br /&gt;
==Scenario: Reverse Proxy in a DMZ==&lt;br /&gt;
&lt;br /&gt;
Here we would like to give an overview of the necessary ports and protocols for a reverse proxy in a DMZ.&lt;br /&gt;
&lt;br /&gt;
The scenario would be that a reverse proxy is used in a DMZ. The DMZ has a link to the WAN and LAN.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
*Before you can setup your Firewall you have to read the book [[Course13:IT_Connect_-_10.0_Reverse_Proxy|Reverse Proxy]] in the [[Special:Prefixindex/Course13:|V13 IT Connect Training]].&lt;br /&gt;
* If you already have used some of the port forwards from the collumn &#039;&#039;WAN ⇒ DMZ&#039;&#039; for other Systems you have to combine all forwards in the reverse Proxy or use a separate ip address&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
! style=&amp;quot;background-color: #EAECF0;text-align:center&amp;quot;|WAN &amp;amp;rArr; DMZ (Reverse Proxy) !! style=&amp;quot;background-color: #EAECF0;text-align:center&amp;quot;|DMZ (Reverse Proxy) &amp;amp;rArr; inside (PBX) !! style=&amp;quot;background-color: #EAECF0;text-align:center&amp;quot;|DMZ (Reverse Proxy) &amp;amp;rArr; inside (Application Platform) !! style=&amp;quot;background-color: #EAECF0;text-align:center&amp;quot;|inside &amp;amp;rArr; DMZ (Reverse Proxy) !! style=&amp;quot;background-color: #EAECF0;text-align:center&amp;quot;|DMZ (Reverse Proxy) &amp;amp;rArr; WAN&lt;br /&gt;
|-&lt;br /&gt;
| STUN/TURN (udp/tcp/3478) || / || / || STUN/TURN (udp/tcp/3478) || /&lt;br /&gt;
|-&lt;br /&gt;
| LDAPS (tcp/636)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally LDAP (tcp/389) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer LDAP lookups&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| LDAPS (tcp/636)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally LDAP (tcp/389) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer LDAP lookups&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| LDAPS (tcp/636)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally LDAP (tcp/389) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer LDAP lookups&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| / &lt;br /&gt;
|| /&lt;br /&gt;
|-&lt;br /&gt;
| HTTPS (tcp/443)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally HTTP (tcp/80) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer myApps&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;please also allow wss/ws (websocket) connections&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| HTTPS (tcp/443)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally HTTP (tcp/80) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer myApps&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;please also allow wss/ws (websocket) connections&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| HTTPS (tcp/443)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally HTTP (tcp/80) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer myApps&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;please also allow wss/ws (websocket) connections&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| HTTPS (tcp/&amp;lt;your custom port&amp;gt;)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;Advanced UI admin access&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| / &lt;br /&gt;
|-&lt;br /&gt;
| H.323 (tcp/1300)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally H.323 (tcp/1720) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer Phone registrations&amp;lt;/span&amp;gt;&#039;&#039; &lt;br /&gt;
|| H.323 (tcp/1300)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally H.323 (tcp/1720) if you need plaintext or username/password auths with invalid certificates&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to offer Phone registrations&amp;lt;/span&amp;gt;&#039;&#039; &lt;br /&gt;
|| / &lt;br /&gt;
|| / &lt;br /&gt;
|| /&lt;br /&gt;
|-&lt;br /&gt;
| SIPS (tcp/5061)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally SIP (tcp/5060) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed &#039;&#039;&#039;only&#039;&#039;&#039; if you want to accept SIP registrations, i.e. for 3rd. Party SIP phones but not for SIP-Trunks&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| SIPS (tcp/5061)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally SIP (tcp/5060) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed &#039;&#039;&#039;only&#039;&#039;&#039; if you want to accept SIP registrations, i.e. for 3rd. Party SIP phones but not for SIP-Trunks&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|| / &lt;br /&gt;
|| /&lt;br /&gt;
|| SIPS (tcp/5061)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;optionally SIP (tcp/5060) if you need plaintext&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to register a SIP Trunk from the RP to Provider and your Provider doesn&#039;t support TURN&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| / || / || / || RTP (udp/16384-32767)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to register a SIP Trunk from the RP to Provider and your Provider doesn&#039;t support TURN&amp;lt;/span&amp;gt;&#039;&#039; &lt;br /&gt;
|| RTP (udp/xxx)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;negotiated in context of the outgoing sip/udp connecxtion&amp;lt;/span&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;amp;bull; &amp;lt;span style=&amp;quot;font-size:11px;&amp;quot;&amp;gt;needed if you want to register a SIP Trunk from the RP to Provider and your Provider doesn&#039;t Support TURN&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== The complete Workload Picture === &lt;br /&gt;
&lt;br /&gt;
[[Image:V13-workload.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Howto:Innovaphones_public_services]]&lt;br /&gt;
* [[Course13:IT_Connect_-_10.0_Reverse_Proxy]]&lt;br /&gt;
* [[Course12:Advanced_-_Reverse_Proxy]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Service_Voicemail&amp;diff=57143</id>
		<title>Reference13r1:Concept App Service Voicemail</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Service_Voicemail&amp;diff=57143"/>
		<updated>2020-09-15T09:18:05Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Services Voicemail is an App Service which can be installed on an innovaphone App Platform. It is used to store, delete and play the voicemails from the pbx. &lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
* Database for voicemails&lt;br /&gt;
* Visual Voicemail notification in myApps, Voicemail App on all myApps capable devices&lt;br /&gt;
* Delete, Play and Download Voicemails&lt;br /&gt;
* MWI on IP phones&lt;br /&gt;
* Email notification with a .wav attachment of the voicemail file&lt;br /&gt;
* Available languages German, Danish, Dutch, English, Finnish, French, Italian, Norwegian, Polish, Portiuguese, Swedish, Spanish, and Czech&lt;br /&gt;
* Custom XML voicemail scripts can be enabled&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
innovaphone PBX and App Platform from on version 13r1&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
&lt;br /&gt;
=App Services=&lt;br /&gt;
&lt;br /&gt;
== innovaphone-voicemail==&lt;br /&gt;
Main app to manage the voicemails. &lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
=Known Problems=&lt;br /&gt;
== Incomplete attachments in email notification == &lt;br /&gt;
For details see [[Support:V13r1_voicemail_-_incomplete_attachments_in_email_notification]]&lt;br /&gt;
= Related Articles =&lt;br /&gt;
&amp;lt;!--optional bullet list, remove section if not needed--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r1:Firmware_Upgrade_V12r2_V13r1&amp;diff=52569</id>
		<title>Howto13r1:Firmware Upgrade V12r2 V13r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r1:Firmware_Upgrade_V12r2_V13r1&amp;diff=52569"/>
		<updated>2019-06-28T10:46:07Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Possible Migration scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Possible Migration scenarios  == &lt;br /&gt;
&lt;br /&gt;
* PBX without Linux Application Platform or external  Linux Application Platform &lt;br /&gt;
** Update PBX&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
*** On local SSD (if Gateway is SSD capable) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*PBX with Linux Application Platform on local SSD or CF-card&lt;br /&gt;
** Update PBX&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
***On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
* Virtual PBX (IPVA) without Linux Application Platform or external Linux Application Platform&lt;br /&gt;
** Update PBX (IPVA)&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
*** On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare)[http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes that will be performed during the install/migration process:&#039;&#039;&#039;&lt;br /&gt;
* CDR0 will be changed&lt;br /&gt;
* DNS0 will be changed&lt;br /&gt;
* LOG0 will be changed&lt;br /&gt;
* IP0 /priority-tos will be changed&lt;br /&gt;
* HTTP Client Authenticated URLs 1-n will be changed, depending on number of installed voicemails&lt;br /&gt;
* HTTP, HTTPS Ports will be changed&lt;br /&gt;
* STUN Server will be changed&lt;br /&gt;
* TURN Server will be changed (Turn User &amp;amp; PW) &lt;br /&gt;
* LDAP Server will be changed to &amp;quot;Force TLS&amp;quot;, there for all replications and other LDAP accesses need to be changed to TLS&lt;br /&gt;
* No of Regs w/o Pwd will be changed to &amp;quot;0&amp;quot;&lt;br /&gt;
* PBX Object number will be changed to **1 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
All changes can be changed back to another or original value after the migration process manually if necessary.&amp;lt;br&amp;gt;&lt;br /&gt;
Make sure you store all these values upfront with a backup or manually.&lt;br /&gt;
Always make a backup before you start a migration process.&amp;lt;br&amp;gt;&lt;br /&gt;
We advice to update all devices to the latest available Minor Release firmware version within your existing release before updating to V13.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;In this scenario example we show you the Migration steps: PBX with Linux Application Platform on a local SSD and we install an additional Gateway with SSD for the new AP Platform&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Additional components who are necessary:&lt;br /&gt;
* IPxx11 Gateway with new SSD&lt;br /&gt;
* v13 Licenses&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparation before you start ==&lt;br /&gt;
* You have to disable &#039;&#039;Force HTTPS&#039;&#039; in the [[Reference13r1:Services/HTTP/Server|configuration]] before the update, because the installer is HTTP only&lt;br /&gt;
** If you have forgot it and cannot reach the installer you have to access the advanced UI directly via https://ip/admin.xml?xsl=admin.xsl to deactivate it. After that you can open the installer&lt;br /&gt;
&lt;br /&gt;
== App Platform ==&lt;br /&gt;
&lt;br /&gt;
At first install the gateway with the new Application Platform.&lt;br /&gt;
&lt;br /&gt;
We assume it is in factory default. When a V13 firmware is already installed, you can access the gateway via its IP-address and you will get in the install GUI and can start the install process.  If this is not the case, you can perform an update of the firmware to v13r1 via Maintenance, Update.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: If an V13r1 is installed but you don&#039;t get the install gui immediately you can open it via [http://ipaddress/install.htm http://ipaddress/install.htm]&lt;br /&gt;
* &#039;&#039;&#039;Install switch from HTTPS to HTTP, please be careful if you have deactivated HTTP, the redirection will fail&#039;&#039;&#039; !!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If not no secure passwords should be assigned automatically, you can use the default passwords by using the URL with a password switch [http://ipaddress/install.htm?stdpwd=on http://ipaddress/install.htm?stdpwd=on]. We recommend the use of secure passwords&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the install doesn&#039;t start in your desired language or you want another language during the install process as the OS-language, use an appropriate language switch, for example ?lang=nl for Dutch or ?lang=en for English&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As first you will be asked for the username and password of the gateway.&lt;br /&gt;
&lt;br /&gt;
As long as these are on the default values, you don&#039;t have to enter a value or just enter this default value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: On the right pane of the install you find the explanations for the parameters that you can fill out.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In the second step the install method will be asked.&amp;lt;br&amp;gt;&lt;br /&gt;
Here we select &amp;quot;Only update and network settings&amp;quot; to prepare the gateway for the installation of the App Platform.&lt;br /&gt;
&lt;br /&gt;
[[Image:Only update and network settings.png]]&lt;br /&gt;
&lt;br /&gt;
In the step &amp;quot;innovaphone PBX Installation&amp;quot; you enter the necessary network settings of the gateway and the IP address of the App Platform.&lt;br /&gt;
&lt;br /&gt;
It is also possible to update the gateway to the latest possible firmware version.&lt;br /&gt;
&lt;br /&gt;
Be aware that if you choose for an update of the firmware, a restart will occur.&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone PBX installation.png]]&lt;br /&gt;
&lt;br /&gt;
In the next step the App Platform will be downloaded and installed and started.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
== PBX ==&lt;br /&gt;
&lt;br /&gt;
After the App Platform is installed and started, we will follow-up with the update of the PBX (Master, in Distributed Systems).&lt;br /&gt;
&lt;br /&gt;
To proceed we need to install the latest version of the V13r1 firmware on the existing PBX.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If the firmware V13r1 is installed, you can access the gateway via its IP-address and you enter into the install process.&lt;br /&gt;
&lt;br /&gt;
As first you will be asked for the username and password of the gateway.&lt;br /&gt;
&lt;br /&gt;
Here you enter the credential of the existing admin user (most of the time it is admin)  of the gateway.&lt;br /&gt;
&lt;br /&gt;
The install will recognize that it is an existing PBX configuration and provides you with the appropriate Update scenarios.&lt;br /&gt;
&lt;br /&gt;
We choose for &amp;quot;Update existing PBX with installation of an external App Platform&amp;quot; as the selected scenario.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Be sure that you don&#039;t have any Object with H323 Name: &amp;quot;AP&amp;quot; in your config. If so you will have problems in connecting the AP Platform.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Update existing PBX with installation of an external App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the step &amp;quot;innovaphone PBX Installation&amp;quot; you enter the necessary network settings of the gateway.&lt;br /&gt;
&lt;br /&gt;
It is also possible to update the gateway to the latest possible firmware version.&lt;br /&gt;
&lt;br /&gt;
Be aware that if you choose for an update of the firmware, a restart will occur.&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone PBX installation2.png]]&lt;br /&gt;
&lt;br /&gt;
In the step, &amp;quot;Connect to external App Platform&amp;quot; we connect the PBX with the pre-defines gateway with the App Platform.&lt;br /&gt;
&lt;br /&gt;
To proceed we enter the IP-address off the App-Platform and its password.&lt;br /&gt;
&lt;br /&gt;
After pressing connect and a successful connection it will show connected.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: The default password for the App-Platform is &amp;quot;pwd&amp;quot;. If you don&#039;t enter  a password the default password will be used automatically.  If you changed the password on the App-Platform into a more secure password yourself before starting the Install to update the PBX, Be sure you use this same password to connect. Otherwise the connection will fail and the install can&#039;t proceed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Tip: With the search option you can searh for available App-platform in your network that are installed on a gateway. It is required that this gateway was in default factory setting.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A search is not possible for an App-platforms that runs on a virtual machine. This can only be accessed via its IP-address.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Connect to external App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tip: When the next step will follow with  &amp;quot;Connect to Devices&amp;quot; the there was already an entry in the advanced user interface in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General/Devices Registration&#039;&#039;). Clear this entry and restart the Install process again.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following step &amp;quot;innovaphone PBX Options&amp;quot; you enter the configuration just as you have seen and learned during the iT Connect op iT Update training.&lt;br /&gt;
&lt;br /&gt;
Here the PBX name and Domain name (System name) should match with your configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: As user please add an additional (not existing) new user as myApps Admin. Name and mail cannot be in use already.&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Tip: At the moment only lower case PBX names can be used. In case the PBX you want to update is using upper case you have to change it to lower case (at the moment) and your phones will loose registration. Later on you have to change the PBX entries of all objects to lower case.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In the following step &amp;quot;Emergency Administrator password, please save secure&amp;quot; the passwords will NOT be created randomly as you have learned during the iT Connect Training. The existing passwords of the PBX system remain as they are.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following steps the configurations will be done as learned during your iT Connect Training.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
After finishing all the install steps, you can login into the system with the previously define myApps Admin in the myApps client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: If you cant login with the myApps Admin User, go to the Advanced User Interface ([https://ip.addr/admin.xml?xsl=admin.xsl https://ip.addr/admin.xml?xsl=admin.xsl]) and assign an existing user object the Template &amp;quot;Config Admin&amp;quot;. You can then login with this user into myApps.&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As mentioned in the beginning , know you can change your saved and special settings back to its original state if this is necessary for your configuration.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To give the existing users the possibility to use the innovaphone myApps, you should inherit the existing templates to the new template &amp;quot;Config User&amp;quot;. If the user didn&#039;t have any template at all, then assign them  o the template &amp;quot;Config User&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: The Users are only seen in Users App if they have the &amp;quot;Visible&amp;quot; flag in Visibility set. This is mostly done by Config Templates. So be aware that if you have another Config Template in use (that has not set the Visibility flag) even if you inheritate it from Config User it will not overwrite the older settings. So choose here the Visibility flag afterwards.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Image:Change template.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Assign Administrative users to the new template &amp;quot;Config Admin&amp;quot;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: In case you are using Apps that need a License the selectable box under License only appear after uploading the necessary license. In test mode everything works. So in case you are using test mode it is better to first upload your licenses, select the license boxes and than deactivate your test mode!&lt;br /&gt;
&lt;br /&gt;
== Provisioning ==&lt;br /&gt;
&lt;br /&gt;
If you want to use Provisioning and you are using Update Server/PHP Update Server 2 you have to consider that your phone needs to reach config.innovaphone.com via Update URL.&amp;lt;br&amp;gt;&lt;br /&gt;
That means that if you already provide an Update URL via DHCP that the Provisioning process will not be possible. Therefore delete the Update URL in your DHCP Server. &amp;lt;br&amp;gt;&lt;br /&gt;
In case you are using Update Server/PHP Update Server 2 for Certificates etc. your phone needs to reach your old Update Server after provisioning again. (further details will follow)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please Check: [[Reference13r1:Services/Update]]&lt;br /&gt;
&lt;br /&gt;
== Assign Hardware of a User to a phone or softwarephone App ==&lt;br /&gt;
&lt;br /&gt;
This can be done by the administrator in UsersAdmin App.&amp;lt;br&amp;gt; &lt;br /&gt;
Alternative the User can do this via his Profile. At the instruction from myApps the user can be shown on which point he can assign the app. &lt;br /&gt;
&lt;br /&gt;
[[Image:Profile PhoneApp.png]]&lt;br /&gt;
&lt;br /&gt;
== Reverse Proxy ==&lt;br /&gt;
&lt;br /&gt;
Via the advanced user interface install the latest V13r1 firmware.&lt;br /&gt;
&lt;br /&gt;
In the next step we need the Devices App URL. Via the advanced user interface, in  General/Devices Registration/Devices App URL.&lt;br /&gt;
&lt;br /&gt;
Copy this URL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Device Registration2.png]]&lt;br /&gt;
&lt;br /&gt;
Paste this URL in the advanced user interface of the Reverse Proxy in the field General/Devices Registration/Devices App URL.&lt;br /&gt;
&lt;br /&gt;
From now on this device can be found in the Devices App in Devices.&lt;br /&gt;
&lt;br /&gt;
The MAC address and a wrench symbol will be displayed.&lt;br /&gt;
&lt;br /&gt;
Here you can now assign  a meaningful name and the domain to the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices.png]]&lt;br /&gt;
&lt;br /&gt;
Via Categories you should assign this gateway also to the appropriate Category.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices2.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Now the device configurations are assigned to all devices and the corresponding category(s)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These include at least:  Alarmserver Global, Media Global, NTP-settings&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Via the PBX Manager App and the Reverse Proxy plugin you can now configure the Reverse Proxy.&lt;br /&gt;
&lt;br /&gt;
You should add here a new Host entry for the App Platform in the Reverse Proxy via the option &amp;quot;Add Host&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The DNS name of the App Platform will be displayed in the next step. Select the DNS name and it will be added to the Reverse Proxy entries.&lt;br /&gt;
&lt;br /&gt;
Via the advanced user interface you have to change the hostnames for every PBX (Slaves and Standby).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the first http forward field you need to enter the following string  /PBX0/APPCLIENT/appclient.htm and forward it  to the appropriate IP-address with the port numbers 80 and 443 and tag the checkbox Default.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At least the following entries  should be available as shown in the picture  below.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Reverse Proxy Entries.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STUN / TURN / Slave / Standby / DECT ==&lt;br /&gt;
&lt;br /&gt;
If you  want to have access to the gateway to enter the install process, you have to enter the admin credentials to login.&lt;br /&gt;
&lt;br /&gt;
In the next step select &amp;quot;Manual Configuration&amp;quot; and you will enter the Advanced User Interface.&lt;br /&gt;
&lt;br /&gt;
Install the latest V13r1 firmware.&lt;br /&gt;
&lt;br /&gt;
In the following step we need the Device URL which can be found on two different ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
# Via the App Manager, in Settings/General/Devices app URL , we copy the complete URL &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:App Manager.png]]&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Via the Advanced User Interface of the PBX&lt;br /&gt;
In General/Devices Registration/Devices App URL copy the complete URL.&lt;br /&gt;
&lt;br /&gt;
[[Image:Device Registration2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paste this URL via the Advanced User Interface of the Reverse Proxy Gateway in General/Devices Registration/Devices App URL .&lt;br /&gt;
&lt;br /&gt;
Now you can find this Gateway in the Devices App within Devices. It will be displayed with its MAC-address and a wrench symbol.&lt;br /&gt;
&lt;br /&gt;
Here you can now assign  a meaningful name and the domain to the device.&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices.png]]&lt;br /&gt;
&lt;br /&gt;
Via Category you should assign the Gateway to the appropriate category.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Now the device configurations are assigned to all devices and the corresponding category(s)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These include at least:  Alarmserver Global, Media Global, NTP-settings&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: For a Slave, Standby PBX or DECT you should select TLS as Replication protocol.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
=== SNMP disabled by default ===&lt;br /&gt;
Up and including v12r2, SNMP was by default activated on a innovaphone device. In v13 it is by default deactivated, it can be activated by a new [[Reference13r1:Services/SNMP | Enable Checkmark]]. As a result, if you upgrade to v13 firmware SNMP is deactivated and needs to be enabled if SNMP is needed in the customer setup.&lt;br /&gt;
&lt;br /&gt;
===Config line size was increased to 32KB===&lt;br /&gt;
&lt;br /&gt;
Downgrade from 13r1 to 12r2 (or older firmware) will result in objects with a too large [[Howto:Config_size_Limitations#Global | config line]] being dropped.&lt;br /&gt;
&lt;br /&gt;
===PBX name in v13 can&#039;t include uppercase letter===&lt;br /&gt;
&lt;br /&gt;
So you should change it in your configuration in V12 before the upgrade of PBX.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* For the known issues, please have a look into our [http://wiki.innovaphone.com/index.php?title=Support:DVL-Roadmap_Firmware_13r1 Support:DVL-Roadmap Firmware 13r1]&lt;br /&gt;
* [[Support:IP10x/IP11x_VLAN_configuration_disturbs_various_functions_in_V13r1_beta/final/sr1]]&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Guideline V5 to V6 upgrade]]&lt;br /&gt;
*[[Howto:Upgrade Issues V5 to V6]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V6 V7]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V7 V8]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V8 V9]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V9 V10]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V10 V11r1]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V11r1 V11r2]]&lt;br /&gt;
*[[Support:Special_Precaution_required_when_upgrading_IPxx11_Gateways_from_pre-SR14_Firmware_Versions]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V11r2 V12r1]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r1 V12r2]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r1:Firmware_Upgrade_V12r2_V13r1&amp;diff=52568</id>
		<title>Howto13r1:Firmware Upgrade V12r2 V13r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r1:Firmware_Upgrade_V12r2_V13r1&amp;diff=52568"/>
		<updated>2019-06-28T10:44:47Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Possible Migration scenarios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Possible Migration scenarios  == &lt;br /&gt;
&lt;br /&gt;
* PBX without Linux Application Platform or external  Linux Application Platform &lt;br /&gt;
** Update PBX&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
*** On local SSD (if Gateway is SSD capable) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*PBX with Linux Application Platform on local SSD or CF-card&lt;br /&gt;
** Update PBX&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
***On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
* Virtual PBX (IPVA) without Linux Application Platform or external Linux Application Platform&lt;br /&gt;
** Update PBX (IPVA)&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
*** On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare)[http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes that will be performed during the install/migration process:&#039;&#039;&#039;&lt;br /&gt;
* CDR0 will be changed&lt;br /&gt;
* DNS0 will be changed&lt;br /&gt;
* LOG0 will be changed&lt;br /&gt;
* IP0 /priority-tos will be changed&lt;br /&gt;
* HTTP Client Authenticated URLs 1-x will be changed, depending on number of installed voicemails&lt;br /&gt;
* HTTP, HTTPS Ports will be changed&lt;br /&gt;
* STUN Server will be changed&lt;br /&gt;
* TURN Server will be changed (Turn User &amp;amp; PW) &lt;br /&gt;
* LDAP Server will be changed to &amp;quot;Force TLS&amp;quot;, there for all replications and other LDAP accesses need to be changed to TLS&lt;br /&gt;
* No of Regs w/o Pwd will be changed to &amp;quot;0&amp;quot;&lt;br /&gt;
* PBX Object number will be changed to **1 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
All changes can be changed back to another or original value after the migration process manually if necessary.&amp;lt;br&amp;gt;&lt;br /&gt;
Make sure you store all these values upfront with a backup or manually.&lt;br /&gt;
Always make a backup before you start a migration process.&amp;lt;br&amp;gt;&lt;br /&gt;
We advice to update all devices to the latest available Minor Release firmware version within your existing release before updating to V13.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;In this scenario example we show you the Migration steps: PBX with Linux Application Platform on a local SSD and we install an additional Gateway with SSD for the new AP Platform&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Additional components who are necessary:&lt;br /&gt;
* IPxx11 Gateway with new SSD&lt;br /&gt;
* v13 Licenses&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparation before you start ==&lt;br /&gt;
* You have to disable &#039;&#039;Force HTTPS&#039;&#039; in the [[Reference13r1:Services/HTTP/Server|configuration]] before the update, because the installer is HTTP only&lt;br /&gt;
** If you have forgot it and cannot reach the installer you have to access the advanced UI directly via https://ip/admin.xml?xsl=admin.xsl to deactivate it. After that you can open the installer&lt;br /&gt;
&lt;br /&gt;
== App Platform ==&lt;br /&gt;
&lt;br /&gt;
At first install the gateway with the new Application Platform.&lt;br /&gt;
&lt;br /&gt;
We assume it is in factory default. When a V13 firmware is already installed, you can access the gateway via its IP-address and you will get in the install GUI and can start the install process.  If this is not the case, you can perform an update of the firmware to v13r1 via Maintenance, Update.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: If an V13r1 is installed but you don&#039;t get the install gui immediately you can open it via [http://ipaddress/install.htm http://ipaddress/install.htm]&lt;br /&gt;
* &#039;&#039;&#039;Install switch from HTTPS to HTTP, please be careful if you have deactivated HTTP, the redirection will fail&#039;&#039;&#039; !!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If not no secure passwords should be assigned automatically, you can use the default passwords by using the URL with a password switch [http://ipaddress/install.htm?stdpwd=on http://ipaddress/install.htm?stdpwd=on]. We recommend the use of secure passwords&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the install doesn&#039;t start in your desired language or you want another language during the install process as the OS-language, use an appropriate language switch, for example ?lang=nl for Dutch or ?lang=en for English&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As first you will be asked for the username and password of the gateway.&lt;br /&gt;
&lt;br /&gt;
As long as these are on the default values, you don&#039;t have to enter a value or just enter this default value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: On the right pane of the install you find the explanations for the parameters that you can fill out.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In the second step the install method will be asked.&amp;lt;br&amp;gt;&lt;br /&gt;
Here we select &amp;quot;Only update and network settings&amp;quot; to prepare the gateway for the installation of the App Platform.&lt;br /&gt;
&lt;br /&gt;
[[Image:Only update and network settings.png]]&lt;br /&gt;
&lt;br /&gt;
In the step &amp;quot;innovaphone PBX Installation&amp;quot; you enter the necessary network settings of the gateway and the IP address of the App Platform.&lt;br /&gt;
&lt;br /&gt;
It is also possible to update the gateway to the latest possible firmware version.&lt;br /&gt;
&lt;br /&gt;
Be aware that if you choose for an update of the firmware, a restart will occur.&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone PBX installation.png]]&lt;br /&gt;
&lt;br /&gt;
In the next step the App Platform will be downloaded and installed and started.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
== PBX ==&lt;br /&gt;
&lt;br /&gt;
After the App Platform is installed and started, we will follow-up with the update of the PBX (Master, in Distributed Systems).&lt;br /&gt;
&lt;br /&gt;
To proceed we need to install the latest version of the V13r1 firmware on the existing PBX.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If the firmware V13r1 is installed, you can access the gateway via its IP-address and you enter into the install process.&lt;br /&gt;
&lt;br /&gt;
As first you will be asked for the username and password of the gateway.&lt;br /&gt;
&lt;br /&gt;
Here you enter the credential of the existing admin user (most of the time it is admin)  of the gateway.&lt;br /&gt;
&lt;br /&gt;
The install will recognize that it is an existing PBX configuration and provides you with the appropriate Update scenarios.&lt;br /&gt;
&lt;br /&gt;
We choose for &amp;quot;Update existing PBX with installation of an external App Platform&amp;quot; as the selected scenario.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Be sure that you don&#039;t have any Object with H323 Name: &amp;quot;AP&amp;quot; in your config. If so you will have problems in connecting the AP Platform.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Update existing PBX with installation of an external App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the step &amp;quot;innovaphone PBX Installation&amp;quot; you enter the necessary network settings of the gateway.&lt;br /&gt;
&lt;br /&gt;
It is also possible to update the gateway to the latest possible firmware version.&lt;br /&gt;
&lt;br /&gt;
Be aware that if you choose for an update of the firmware, a restart will occur.&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone PBX installation2.png]]&lt;br /&gt;
&lt;br /&gt;
In the step, &amp;quot;Connect to external App Platform&amp;quot; we connect the PBX with the pre-defines gateway with the App Platform.&lt;br /&gt;
&lt;br /&gt;
To proceed we enter the IP-address off the App-Platform and its password.&lt;br /&gt;
&lt;br /&gt;
After pressing connect and a successful connection it will show connected.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: The default password for the App-Platform is &amp;quot;pwd&amp;quot;. If you don&#039;t enter  a password the default password will be used automatically.  If you changed the password on the App-Platform into a more secure password yourself before starting the Install to update the PBX, Be sure you use this same password to connect. Otherwise the connection will fail and the install can&#039;t proceed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Tip: With the search option you can searh for available App-platform in your network that are installed on a gateway. It is required that this gateway was in default factory setting.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A search is not possible for an App-platforms that runs on a virtual machine. This can only be accessed via its IP-address.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Connect to external App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tip: When the next step will follow with  &amp;quot;Connect to Devices&amp;quot; the there was already an entry in the advanced user interface in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General/Devices Registration&#039;&#039;). Clear this entry and restart the Install process again.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following step &amp;quot;innovaphone PBX Options&amp;quot; you enter the configuration just as you have seen and learned during the iT Connect op iT Update training.&lt;br /&gt;
&lt;br /&gt;
Here the PBX name and Domain name (System name) should match with your configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: As user please add an additional (not existing) new user as myApps Admin. Name and mail cannot be in use already.&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Tip: At the moment only lower case PBX names can be used. In case the PBX you want to update is using upper case you have to change it to lower case (at the moment) and your phones will loose registration. Later on you have to change the PBX entries of all objects to lower case.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In the following step &amp;quot;Emergency Administrator password, please save secure&amp;quot; the passwords will NOT be created randomly as you have learned during the iT Connect Training. The existing passwords of the PBX system remain as they are.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following steps the configurations will be done as learned during your iT Connect Training.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
After finishing all the install steps, you can login into the system with the previously define myApps Admin in the myApps client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: If you cant login with the myApps Admin User, go to the Advanced User Interface ([https://ip.addr/admin.xml?xsl=admin.xsl https://ip.addr/admin.xml?xsl=admin.xsl]) and assign an existing user object the Template &amp;quot;Config Admin&amp;quot;. You can then login with this user into myApps.&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As mentioned in the beginning , know you can change your saved and special settings back to its original state if this is necessary for your configuration.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To give the existing users the possibility to use the innovaphone myApps, you should inherit the existing templates to the new template &amp;quot;Config User&amp;quot;. If the user didn&#039;t have any template at all, then assign them  o the template &amp;quot;Config User&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: The Users are only seen in Users App if they have the &amp;quot;Visible&amp;quot; flag in Visibility set. This is mostly done by Config Templates. So be aware that if you have another Config Template in use (that has not set the Visibility flag) even if you inheritate it from Config User it will not overwrite the older settings. So choose here the Visibility flag afterwards.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Image:Change template.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Assign Administrative users to the new template &amp;quot;Config Admin&amp;quot;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: In case you are using Apps that need a License the selectable box under License only appear after uploading the necessary license. In test mode everything works. So in case you are using test mode it is better to first upload your licenses, select the license boxes and than deactivate your test mode!&lt;br /&gt;
&lt;br /&gt;
== Provisioning ==&lt;br /&gt;
&lt;br /&gt;
If you want to use Provisioning and you are using Update Server/PHP Update Server 2 you have to consider that your phone needs to reach config.innovaphone.com via Update URL.&amp;lt;br&amp;gt;&lt;br /&gt;
That means that if you already provide an Update URL via DHCP that the Provisioning process will not be possible. Therefore delete the Update URL in your DHCP Server. &amp;lt;br&amp;gt;&lt;br /&gt;
In case you are using Update Server/PHP Update Server 2 for Certificates etc. your phone needs to reach your old Update Server after provisioning again. (further details will follow)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please Check: [[Reference13r1:Services/Update]]&lt;br /&gt;
&lt;br /&gt;
== Assign Hardware of a User to a phone or softwarephone App ==&lt;br /&gt;
&lt;br /&gt;
This can be done by the administrator in UsersAdmin App.&amp;lt;br&amp;gt; &lt;br /&gt;
Alternative the User can do this via his Profile. At the instruction from myApps the user can be shown on which point he can assign the app. &lt;br /&gt;
&lt;br /&gt;
[[Image:Profile PhoneApp.png]]&lt;br /&gt;
&lt;br /&gt;
== Reverse Proxy ==&lt;br /&gt;
&lt;br /&gt;
Via the advanced user interface install the latest V13r1 firmware.&lt;br /&gt;
&lt;br /&gt;
In the next step we need the Devices App URL. Via the advanced user interface, in  General/Devices Registration/Devices App URL.&lt;br /&gt;
&lt;br /&gt;
Copy this URL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Device Registration2.png]]&lt;br /&gt;
&lt;br /&gt;
Paste this URL in the advanced user interface of the Reverse Proxy in the field General/Devices Registration/Devices App URL.&lt;br /&gt;
&lt;br /&gt;
From now on this device can be found in the Devices App in Devices.&lt;br /&gt;
&lt;br /&gt;
The MAC address and a wrench symbol will be displayed.&lt;br /&gt;
&lt;br /&gt;
Here you can now assign  a meaningful name and the domain to the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices.png]]&lt;br /&gt;
&lt;br /&gt;
Via Categories you should assign this gateway also to the appropriate Category.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices2.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Now the device configurations are assigned to all devices and the corresponding category(s)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These include at least:  Alarmserver Global, Media Global, NTP-settings&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Via the PBX Manager App and the Reverse Proxy plugin you can now configure the Reverse Proxy.&lt;br /&gt;
&lt;br /&gt;
You should add here a new Host entry for the App Platform in the Reverse Proxy via the option &amp;quot;Add Host&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The DNS name of the App Platform will be displayed in the next step. Select the DNS name and it will be added to the Reverse Proxy entries.&lt;br /&gt;
&lt;br /&gt;
Via the advanced user interface you have to change the hostnames for every PBX (Slaves and Standby).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the first http forward field you need to enter the following string  /PBX0/APPCLIENT/appclient.htm and forward it  to the appropriate IP-address with the port numbers 80 and 443 and tag the checkbox Default.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At least the following entries  should be available as shown in the picture  below.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Reverse Proxy Entries.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STUN / TURN / Slave / Standby / DECT ==&lt;br /&gt;
&lt;br /&gt;
If you  want to have access to the gateway to enter the install process, you have to enter the admin credentials to login.&lt;br /&gt;
&lt;br /&gt;
In the next step select &amp;quot;Manual Configuration&amp;quot; and you will enter the Advanced User Interface.&lt;br /&gt;
&lt;br /&gt;
Install the latest V13r1 firmware.&lt;br /&gt;
&lt;br /&gt;
In the following step we need the Device URL which can be found on two different ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
# Via the App Manager, in Settings/General/Devices app URL , we copy the complete URL &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:App Manager.png]]&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Via the Advanced User Interface of the PBX&lt;br /&gt;
In General/Devices Registration/Devices App URL copy the complete URL.&lt;br /&gt;
&lt;br /&gt;
[[Image:Device Registration2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paste this URL via the Advanced User Interface of the Reverse Proxy Gateway in General/Devices Registration/Devices App URL .&lt;br /&gt;
&lt;br /&gt;
Now you can find this Gateway in the Devices App within Devices. It will be displayed with its MAC-address and a wrench symbol.&lt;br /&gt;
&lt;br /&gt;
Here you can now assign  a meaningful name and the domain to the device.&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices.png]]&lt;br /&gt;
&lt;br /&gt;
Via Category you should assign the Gateway to the appropriate category.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Now the device configurations are assigned to all devices and the corresponding category(s)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These include at least:  Alarmserver Global, Media Global, NTP-settings&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: For a Slave, Standby PBX or DECT you should select TLS as Replication protocol.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
=== SNMP disabled by default ===&lt;br /&gt;
Up and including v12r2, SNMP was by default activated on a innovaphone device. In v13 it is by default deactivated, it can be activated by a new [[Reference13r1:Services/SNMP | Enable Checkmark]]. As a result, if you upgrade to v13 firmware SNMP is deactivated and needs to be enabled if SNMP is needed in the customer setup.&lt;br /&gt;
&lt;br /&gt;
===Config line size was increased to 32KB===&lt;br /&gt;
&lt;br /&gt;
Downgrade from 13r1 to 12r2 (or older firmware) will result in objects with a too large [[Howto:Config_size_Limitations#Global | config line]] being dropped.&lt;br /&gt;
&lt;br /&gt;
===PBX name in v13 can&#039;t include uppercase letter===&lt;br /&gt;
&lt;br /&gt;
So you should change it in your configuration in V12 before the upgrade of PBX.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* For the known issues, please have a look into our [http://wiki.innovaphone.com/index.php?title=Support:DVL-Roadmap_Firmware_13r1 Support:DVL-Roadmap Firmware 13r1]&lt;br /&gt;
* [[Support:IP10x/IP11x_VLAN_configuration_disturbs_various_functions_in_V13r1_beta/final/sr1]]&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Guideline V5 to V6 upgrade]]&lt;br /&gt;
*[[Howto:Upgrade Issues V5 to V6]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V6 V7]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V7 V8]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V8 V9]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V9 V10]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V10 V11r1]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V11r1 V11r2]]&lt;br /&gt;
*[[Support:Special_Precaution_required_when_upgrading_IPxx11_Gateways_from_pre-SR14_Firmware_Versions]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V11r2 V12r1]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r1 V12r2]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r1:Firmware_Upgrade_V12r2_V13r1&amp;diff=52567</id>
		<title>Howto13r1:Firmware Upgrade V12r2 V13r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r1:Firmware_Upgrade_V12r2_V13r1&amp;diff=52567"/>
		<updated>2019-06-28T10:44:25Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Possible Migration scenarios  == &lt;br /&gt;
&lt;br /&gt;
* PBX without Linux Application Platform or external  Linux Application Platform &lt;br /&gt;
** Update PBX&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
*** On local SSD (if Gateway is SSD capable) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*PBX with Linux Application Platform on local SSD or CF-card&lt;br /&gt;
** Update PBX&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
***On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare) [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
* Virtual PBX (IPVA) without Linux Application Platform or external Linux Application Platform&lt;br /&gt;
** Update PBX (IPVA)&lt;br /&gt;
** Installation App Platform (see below for more details)&lt;br /&gt;
*** On external Gateway with SSD [http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#ARM_Gateway Installation of AP Platform on SSD]  &lt;br /&gt;
*** On virtual machine (Hyper-V or VMWare)[http://wiki.innovaphone.com/index.php?title=Reference13r1:Concept_App_Platform#App_Platform_-_x86-64_.28Virtual_Machine.29 Installation of Virtual App Platform] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changes that will be performed during the install/migration process:&#039;&#039;&#039;&lt;br /&gt;
* CDR0 will be changed&lt;br /&gt;
* DNS0 will be changed&lt;br /&gt;
* LOG0 will be changed&lt;br /&gt;
* IP0 /priority-tos will be changed&lt;br /&gt;
* HTTP Client Authenticated URLs 1- will be changed, depending on number of installed voicemails&lt;br /&gt;
* HTTP, HTTPS Ports will be changed&lt;br /&gt;
* STUN Server will be changed&lt;br /&gt;
* TURN Server will be changed (Turn User &amp;amp; PW) &lt;br /&gt;
* LDAP Server will be changed to &amp;quot;Force TLS&amp;quot;, there for all replications and other LDAP accesses need to be changed to TLS&lt;br /&gt;
* No of Regs w/o Pwd will be changed to &amp;quot;0&amp;quot;&lt;br /&gt;
* PBX Object number will be changed to **1 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
All changes can be changed back to another or original value after the migration process manually if necessary.&amp;lt;br&amp;gt;&lt;br /&gt;
Make sure you store all these values upfront with a backup or manually.&lt;br /&gt;
Always make a backup before you start a migration process.&amp;lt;br&amp;gt;&lt;br /&gt;
We advice to update all devices to the latest available Minor Release firmware version within your existing release before updating to V13.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;In this scenario example we show you the Migration steps: PBX with Linux Application Platform on a local SSD and we install an additional Gateway with SSD for the new AP Platform&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Additional components who are necessary:&lt;br /&gt;
* IPxx11 Gateway with new SSD&lt;br /&gt;
* v13 Licenses&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preparation before you start ==&lt;br /&gt;
* You have to disable &#039;&#039;Force HTTPS&#039;&#039; in the [[Reference13r1:Services/HTTP/Server|configuration]] before the update, because the installer is HTTP only&lt;br /&gt;
** If you have forgot it and cannot reach the installer you have to access the advanced UI directly via https://ip/admin.xml?xsl=admin.xsl to deactivate it. After that you can open the installer&lt;br /&gt;
&lt;br /&gt;
== App Platform ==&lt;br /&gt;
&lt;br /&gt;
At first install the gateway with the new Application Platform.&lt;br /&gt;
&lt;br /&gt;
We assume it is in factory default. When a V13 firmware is already installed, you can access the gateway via its IP-address and you will get in the install GUI and can start the install process.  If this is not the case, you can perform an update of the firmware to v13r1 via Maintenance, Update.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: If an V13r1 is installed but you don&#039;t get the install gui immediately you can open it via [http://ipaddress/install.htm http://ipaddress/install.htm]&lt;br /&gt;
* &#039;&#039;&#039;Install switch from HTTPS to HTTP, please be careful if you have deactivated HTTP, the redirection will fail&#039;&#039;&#039; !!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If not no secure passwords should be assigned automatically, you can use the default passwords by using the URL with a password switch [http://ipaddress/install.htm?stdpwd=on http://ipaddress/install.htm?stdpwd=on]. We recommend the use of secure passwords&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the install doesn&#039;t start in your desired language or you want another language during the install process as the OS-language, use an appropriate language switch, for example ?lang=nl for Dutch or ?lang=en for English&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As first you will be asked for the username and password of the gateway.&lt;br /&gt;
&lt;br /&gt;
As long as these are on the default values, you don&#039;t have to enter a value or just enter this default value.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: On the right pane of the install you find the explanations for the parameters that you can fill out.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In the second step the install method will be asked.&amp;lt;br&amp;gt;&lt;br /&gt;
Here we select &amp;quot;Only update and network settings&amp;quot; to prepare the gateway for the installation of the App Platform.&lt;br /&gt;
&lt;br /&gt;
[[Image:Only update and network settings.png]]&lt;br /&gt;
&lt;br /&gt;
In the step &amp;quot;innovaphone PBX Installation&amp;quot; you enter the necessary network settings of the gateway and the IP address of the App Platform.&lt;br /&gt;
&lt;br /&gt;
It is also possible to update the gateway to the latest possible firmware version.&lt;br /&gt;
&lt;br /&gt;
Be aware that if you choose for an update of the firmware, a restart will occur.&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone PBX installation.png]]&lt;br /&gt;
&lt;br /&gt;
In the next step the App Platform will be downloaded and installed and started.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
== PBX ==&lt;br /&gt;
&lt;br /&gt;
After the App Platform is installed and started, we will follow-up with the update of the PBX (Master, in Distributed Systems).&lt;br /&gt;
&lt;br /&gt;
To proceed we need to install the latest version of the V13r1 firmware on the existing PBX.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If the firmware V13r1 is installed, you can access the gateway via its IP-address and you enter into the install process.&lt;br /&gt;
&lt;br /&gt;
As first you will be asked for the username and password of the gateway.&lt;br /&gt;
&lt;br /&gt;
Here you enter the credential of the existing admin user (most of the time it is admin)  of the gateway.&lt;br /&gt;
&lt;br /&gt;
The install will recognize that it is an existing PBX configuration and provides you with the appropriate Update scenarios.&lt;br /&gt;
&lt;br /&gt;
We choose for &amp;quot;Update existing PBX with installation of an external App Platform&amp;quot; as the selected scenario.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Be sure that you don&#039;t have any Object with H323 Name: &amp;quot;AP&amp;quot; in your config. If so you will have problems in connecting the AP Platform.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Update existing PBX with installation of an external App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the step &amp;quot;innovaphone PBX Installation&amp;quot; you enter the necessary network settings of the gateway.&lt;br /&gt;
&lt;br /&gt;
It is also possible to update the gateway to the latest possible firmware version.&lt;br /&gt;
&lt;br /&gt;
Be aware that if you choose for an update of the firmware, a restart will occur.&lt;br /&gt;
&lt;br /&gt;
[[Image:innovaphone PBX installation2.png]]&lt;br /&gt;
&lt;br /&gt;
In the step, &amp;quot;Connect to external App Platform&amp;quot; we connect the PBX with the pre-defines gateway with the App Platform.&lt;br /&gt;
&lt;br /&gt;
To proceed we enter the IP-address off the App-Platform and its password.&lt;br /&gt;
&lt;br /&gt;
After pressing connect and a successful connection it will show connected.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: The default password for the App-Platform is &amp;quot;pwd&amp;quot;. If you don&#039;t enter  a password the default password will be used automatically.  If you changed the password on the App-Platform into a more secure password yourself before starting the Install to update the PBX, Be sure you use this same password to connect. Otherwise the connection will fail and the install can&#039;t proceed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Tip: With the search option you can searh for available App-platform in your network that are installed on a gateway. It is required that this gateway was in default factory setting.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A search is not possible for an App-platforms that runs on a virtual machine. This can only be accessed via its IP-address.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Connect to external App Platform.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tip: When the next step will follow with  &amp;quot;Connect to Devices&amp;quot; the there was already an entry in the advanced user interface in&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;General/Devices Registration&#039;&#039;). Clear this entry and restart the Install process again.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following step &amp;quot;innovaphone PBX Options&amp;quot; you enter the configuration just as you have seen and learned during the iT Connect op iT Update training.&lt;br /&gt;
&lt;br /&gt;
Here the PBX name and Domain name (System name) should match with your configuration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: As user please add an additional (not existing) new user as myApps Admin. Name and mail cannot be in use already.&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Tip: At the moment only lower case PBX names can be used. In case the PBX you want to update is using upper case you have to change it to lower case (at the moment) and your phones will loose registration. Later on you have to change the PBX entries of all objects to lower case.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In the following step &amp;quot;Emergency Administrator password, please save secure&amp;quot; the passwords will NOT be created randomly as you have learned during the iT Connect Training. The existing passwords of the PBX system remain as they are.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the following steps the configurations will be done as learned during your iT Connect Training.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
After finishing all the install steps, you can login into the system with the previously define myApps Admin in the myApps client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: If you cant login with the myApps Admin User, go to the Advanced User Interface ([https://ip.addr/admin.xml?xsl=admin.xsl https://ip.addr/admin.xml?xsl=admin.xsl]) and assign an existing user object the Template &amp;quot;Config Admin&amp;quot;. You can then login with this user into myApps.&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As mentioned in the beginning , know you can change your saved and special settings back to its original state if this is necessary for your configuration.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To give the existing users the possibility to use the innovaphone myApps, you should inherit the existing templates to the new template &amp;quot;Config User&amp;quot;. If the user didn&#039;t have any template at all, then assign them  o the template &amp;quot;Config User&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: The Users are only seen in Users App if they have the &amp;quot;Visible&amp;quot; flag in Visibility set. This is mostly done by Config Templates. So be aware that if you have another Config Template in use (that has not set the Visibility flag) even if you inheritate it from Config User it will not overwrite the older settings. So choose here the Visibility flag afterwards.&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Image:Change template.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Assign Administrative users to the new template &amp;quot;Config Admin&amp;quot;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: In case you are using Apps that need a License the selectable box under License only appear after uploading the necessary license. In test mode everything works. So in case you are using test mode it is better to first upload your licenses, select the license boxes and than deactivate your test mode!&lt;br /&gt;
&lt;br /&gt;
== Provisioning ==&lt;br /&gt;
&lt;br /&gt;
If you want to use Provisioning and you are using Update Server/PHP Update Server 2 you have to consider that your phone needs to reach config.innovaphone.com via Update URL.&amp;lt;br&amp;gt;&lt;br /&gt;
That means that if you already provide an Update URL via DHCP that the Provisioning process will not be possible. Therefore delete the Update URL in your DHCP Server. &amp;lt;br&amp;gt;&lt;br /&gt;
In case you are using Update Server/PHP Update Server 2 for Certificates etc. your phone needs to reach your old Update Server after provisioning again. (further details will follow)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please Check: [[Reference13r1:Services/Update]]&lt;br /&gt;
&lt;br /&gt;
== Assign Hardware of a User to a phone or softwarephone App ==&lt;br /&gt;
&lt;br /&gt;
This can be done by the administrator in UsersAdmin App.&amp;lt;br&amp;gt; &lt;br /&gt;
Alternative the User can do this via his Profile. At the instruction from myApps the user can be shown on which point he can assign the app. &lt;br /&gt;
&lt;br /&gt;
[[Image:Profile PhoneApp.png]]&lt;br /&gt;
&lt;br /&gt;
== Reverse Proxy ==&lt;br /&gt;
&lt;br /&gt;
Via the advanced user interface install the latest V13r1 firmware.&lt;br /&gt;
&lt;br /&gt;
In the next step we need the Devices App URL. Via the advanced user interface, in  General/Devices Registration/Devices App URL.&lt;br /&gt;
&lt;br /&gt;
Copy this URL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Device Registration2.png]]&lt;br /&gt;
&lt;br /&gt;
Paste this URL in the advanced user interface of the Reverse Proxy in the field General/Devices Registration/Devices App URL.&lt;br /&gt;
&lt;br /&gt;
From now on this device can be found in the Devices App in Devices.&lt;br /&gt;
&lt;br /&gt;
The MAC address and a wrench symbol will be displayed.&lt;br /&gt;
&lt;br /&gt;
Here you can now assign  a meaningful name and the domain to the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices.png]]&lt;br /&gt;
&lt;br /&gt;
Via Categories you should assign this gateway also to the appropriate Category.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices2.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Now the device configurations are assigned to all devices and the corresponding category(s)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These include at least:  Alarmserver Global, Media Global, NTP-settings&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Via the PBX Manager App and the Reverse Proxy plugin you can now configure the Reverse Proxy.&lt;br /&gt;
&lt;br /&gt;
You should add here a new Host entry for the App Platform in the Reverse Proxy via the option &amp;quot;Add Host&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The DNS name of the App Platform will be displayed in the next step. Select the DNS name and it will be added to the Reverse Proxy entries.&lt;br /&gt;
&lt;br /&gt;
Via the advanced user interface you have to change the hostnames for every PBX (Slaves and Standby).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the first http forward field you need to enter the following string  /PBX0/APPCLIENT/appclient.htm and forward it  to the appropriate IP-address with the port numbers 80 and 443 and tag the checkbox Default.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At least the following entries  should be available as shown in the picture  below.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Reverse Proxy Entries.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STUN / TURN / Slave / Standby / DECT ==&lt;br /&gt;
&lt;br /&gt;
If you  want to have access to the gateway to enter the install process, you have to enter the admin credentials to login.&lt;br /&gt;
&lt;br /&gt;
In the next step select &amp;quot;Manual Configuration&amp;quot; and you will enter the Advanced User Interface.&lt;br /&gt;
&lt;br /&gt;
Install the latest V13r1 firmware.&lt;br /&gt;
&lt;br /&gt;
In the following step we need the Device URL which can be found on two different ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
# Via the App Manager, in Settings/General/Devices app URL , we copy the complete URL &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:App Manager.png]]&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Via the Advanced User Interface of the PBX&lt;br /&gt;
In General/Devices Registration/Devices App URL copy the complete URL.&lt;br /&gt;
&lt;br /&gt;
[[Image:Device Registration2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paste this URL via the Advanced User Interface of the Reverse Proxy Gateway in General/Devices Registration/Devices App URL .&lt;br /&gt;
&lt;br /&gt;
Now you can find this Gateway in the Devices App within Devices. It will be displayed with its MAC-address and a wrench symbol.&lt;br /&gt;
&lt;br /&gt;
Here you can now assign  a meaningful name and the domain to the device.&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices.png]]&lt;br /&gt;
&lt;br /&gt;
Via Category you should assign the Gateway to the appropriate category.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Devices2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: Now the device configurations are assigned to all devices and the corresponding category(s)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;These include at least:  Alarmserver Global, Media Global, NTP-settings&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tip: For a Slave, Standby PBX or DECT you should select TLS as Replication protocol.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
=== SNMP disabled by default ===&lt;br /&gt;
Up and including v12r2, SNMP was by default activated on a innovaphone device. In v13 it is by default deactivated, it can be activated by a new [[Reference13r1:Services/SNMP | Enable Checkmark]]. As a result, if you upgrade to v13 firmware SNMP is deactivated and needs to be enabled if SNMP is needed in the customer setup.&lt;br /&gt;
&lt;br /&gt;
===Config line size was increased to 32KB===&lt;br /&gt;
&lt;br /&gt;
Downgrade from 13r1 to 12r2 (or older firmware) will result in objects with a too large [[Howto:Config_size_Limitations#Global | config line]] being dropped.&lt;br /&gt;
&lt;br /&gt;
===PBX name in v13 can&#039;t include uppercase letter===&lt;br /&gt;
&lt;br /&gt;
So you should change it in your configuration in V12 before the upgrade of PBX.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* For the known issues, please have a look into our [http://wiki.innovaphone.com/index.php?title=Support:DVL-Roadmap_Firmware_13r1 Support:DVL-Roadmap Firmware 13r1]&lt;br /&gt;
* [[Support:IP10x/IP11x_VLAN_configuration_disturbs_various_functions_in_V13r1_beta/final/sr1]]&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Guideline V5 to V6 upgrade]]&lt;br /&gt;
*[[Howto:Upgrade Issues V5 to V6]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V6 V7]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V7 V8]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V8 V9]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V9 V10]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V10 V11r1]]&lt;br /&gt;
*[[Howto:Firmware Upgrade V11r1 V11r2]]&lt;br /&gt;
*[[Support:Special_Precaution_required_when_upgrading_IPxx11_Gateways_from_pre-SR14_Firmware_Versions]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V11r2 V12r1]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r1 V12r2]]&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:App-Platform/Installation&amp;diff=51784</id>
		<title>Reference13r1:App-Platform/Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:App-Platform/Installation&amp;diff=51784"/>
		<updated>2019-04-16T11:40:21Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The innovaphone App Platform can be automatically installed in one single step here.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* IP settings configured under [http://wiki.innovaphone.com/index.php?title=Reference13r1:App_Platform/IP App Platform/IP]&lt;br /&gt;
* Proxy ARP enabled under [http://wiki.innovaphone.com/index.php?title=Reference13r1:IP4/ETH/IP IP4/ETH/IP]&lt;br /&gt;
* mSATA module for an IPx11 or a CF card on an IPx10&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The default image URL is found by searching for a linux.json file on https://store.innovaphone.com/release/download&lt;br /&gt;
In this case, your device must have internet access!&lt;br /&gt;
&lt;br /&gt;
You can also enter a direct URL to a remote or local webserver with the image file, e.g. http://store.innovaphone.com/beta/download/app-platform/80003/app-platform-armel.img&lt;br /&gt;
&lt;br /&gt;
The following steps are executed during installation:&lt;br /&gt;
&lt;br /&gt;
* download of the image through HTTP&lt;br /&gt;
* upload of the image to the SSD/CF card&lt;br /&gt;
* configuration of ram disk and starting of the ramdisk&lt;br /&gt;
* the ram disk creates a new partition with the real size of the disk&lt;br /&gt;
* starting of the new rootfs partition&lt;br /&gt;
&lt;br /&gt;
After the installation, the App Platform can be directly accessed through it&#039;s IP address.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
This can&#039;t be used to install the former Linux Application Platform!&lt;br /&gt;
Please refer to [http://wiki.innovaphone.com/index.php?title=Reference9:Concept_Linux_Application_Platform Concept Linux Application Platform] in this case.&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r1:App-Platform/Installation&amp;diff=51652</id>
		<title>Reference13r1:App-Platform/Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r1:App-Platform/Installation&amp;diff=51652"/>
		<updated>2019-04-01T07:22:55Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The innovaphone App Platform can be automatically installed in one single step here.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* IP settings configured under [http://wiki.innovaphone.com/index.php?title=Reference13r1:App_Platform/IP App Platform/IP]&lt;br /&gt;
* Proxy ARP enabled under [http://wiki.innovaphone.com/index.php?title=Reference13r1:IP4/ETH/IP IP4/ETH/IP]&lt;br /&gt;
* mSATA module for an IPx11 or a CF card on an IPx10&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The default image URL is found by searching for a linux.json file on https://store.innovaphone.com/release/download&lt;br /&gt;
In this case, your device must have internet access!&lt;br /&gt;
&lt;br /&gt;
You can also enter a direct URL to a remote or local webserver with the image file, e.g. http://store.innovaphone.com/alpha/download/app-platform/70004/app-platform-armel.img&lt;br /&gt;
&lt;br /&gt;
The following steps are executed during installation:&lt;br /&gt;
&lt;br /&gt;
* download of the image through HTTP&lt;br /&gt;
* upload of the image to the SSD/CF card&lt;br /&gt;
* configuration of ram disk and starting of the ramdisk&lt;br /&gt;
* the ram disk creates a new partition with the real size of the disk&lt;br /&gt;
* starting of the new rootfs partition&lt;br /&gt;
&lt;br /&gt;
After the installation, the App Platform can be directly accessed through it&#039;s IP address.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
This can&#039;t be used to install the former Linux Application Platform!&lt;br /&gt;
Please refer to [http://wiki.innovaphone.com/index.php?title=Reference9:Concept_Linux_Application_Platform Concept Linux Application Platform] in this case.&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51616</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51616"/>
		<updated>2019-03-20T14:24:10Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:HiMed_PBX_Innovaphone.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Config_User_HiMed.png]]&lt;br /&gt;
&lt;br /&gt;
=== HiMed configuration ===&lt;br /&gt;
[[Image:Himed_Config.JPG]]&lt;br /&gt;
[[Image:Himed_Config-Stellplatz.JPG]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:HiMed.png&amp;diff=51536</id>
		<title>File:HiMed.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:HiMed.png&amp;diff=51536"/>
		<updated>2019-03-13T10:26:06Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51535</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51535"/>
		<updated>2019-03-13T10:25:53Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Vendor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* HiMed 10.51 Pro20&lt;br /&gt;
* innovaphone V12R2 SR21&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:HiMed.png]] [https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested with the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:HiMed - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | https://w3.siemens.com/mcms/topics/en/himed/Pages/contact-form.aspx&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51534</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51534"/>
		<updated>2019-03-13T10:20:22Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* innovaphone configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:HiMed_PBX_Innovaphone.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Config_User_HiMed.png]]&lt;br /&gt;
&lt;br /&gt;
=== HiMed configuration ===&lt;br /&gt;
[[Image:Himed_Config.JPG]]&lt;br /&gt;
[[Image:Himed_Config-Stellplatz.JPG]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Config_User_HiMed.png&amp;diff=51533</id>
		<title>File:Config User HiMed.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Config_User_HiMed.png&amp;diff=51533"/>
		<updated>2019-03-13T10:20:02Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51532</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51532"/>
		<updated>2019-03-13T10:19:37Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* innovaphone configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:HiMed_PBX_Innovaphone.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Config_User_HiMedpng.png]]&lt;br /&gt;
&lt;br /&gt;
=== HiMed configuration ===&lt;br /&gt;
[[Image:Himed_Config.JPG]]&lt;br /&gt;
[[Image:Himed_Config-Stellplatz.JPG]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51531</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51531"/>
		<updated>2019-03-13T10:15:18Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Test Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:HiMed_PBX_Innovaphone.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:HiMed_PBX_Innovaphone.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== HiMed configuration ===&lt;br /&gt;
[[Image:Himed_Config.JPG]]&lt;br /&gt;
[[Image:Himed_Config-Stellplatz.JPG]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51530</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51530"/>
		<updated>2019-03-13T10:13:37Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Konftel 300IP configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:HiMed_PBX_Innovaphone.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== HiMed configuration ===&lt;br /&gt;
[[Image:Himed_Config.JPG]]&lt;br /&gt;
[[Image:Himed_Config-Stellplatz.JPG]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Himed_Config-Stellplatz.JPG&amp;diff=51529</id>
		<title>File:Himed Config-Stellplatz.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Himed_Config-Stellplatz.JPG&amp;diff=51529"/>
		<updated>2019-03-13T10:12:36Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Himed_Config.JPG&amp;diff=51528</id>
		<title>File:Himed Config.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Himed_Config.JPG&amp;diff=51528"/>
		<updated>2019-03-13T10:12:19Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51527</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51527"/>
		<updated>2019-03-13T10:08:51Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* innovaphone configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:HiMed_PBX_Innovaphone.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:HiMed_PBX_Innovaphone.jpg&amp;diff=51526</id>
		<title>File:HiMed PBX Innovaphone.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:HiMed_PBX_Innovaphone.jpg&amp;diff=51526"/>
		<updated>2019-03-13T10:08:07Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51525</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51525"/>
		<updated>2019-03-13T09:51:17Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51524</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51524"/>
		<updated>2019-03-13T09:50:16Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51523</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51523"/>
		<updated>2019-03-13T09:49:24Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|RFC 2833&lt;br /&gt;
|Yes&lt;br /&gt;
|SIP Info&lt;br /&gt;
|No&lt;br /&gt;
|inband-DTMF&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51522</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51522"/>
		<updated>2019-03-13T09:40:51Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on incoming call&lt;br /&gt;
|CGPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on outgoing call&lt;br /&gt;
|CDPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51501</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51501"/>
		<updated>2019-03-08T13:34:04Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Template:Compat Status &amp;quot;tested&amp;quot;}}--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;in progress&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;engineered_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;rec._prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;tested&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;rejected&amp;quot;}} --&amp;gt;&lt;br /&gt;
{{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;-no-certificate}}&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on incoming call&lt;br /&gt;
|CGPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on outgoing call&lt;br /&gt;
|CDPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51500</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51500"/>
		<updated>2019-03-08T11:56:34Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Template:Compat Status &amp;quot;tested&amp;quot;}}--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;in progress&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;engineered_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;rec._prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;tested&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;rejected&amp;quot;}} --&amp;gt;&lt;br /&gt;
{{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;-no-certificate}}&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on incoming call&lt;br /&gt;
|CGPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on outgoing call&lt;br /&gt;
|CDPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device has speed dial keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has programmable function keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has partner keys&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CTI Features (with SOAP / TAPI / myPBX) ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|User Call - outgoing call &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Connect - Answer incoming call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|User Reject - Reject alerting call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Disconnect - Disconnect active call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold - Put connected call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold Retrieve - Retrieve call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult (Alerting only)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Blind Transfer&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3PTY - Make 3rd Party Call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Connected Number Update on Display&lt;br /&gt;
|DUT: No myPBX: Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51499</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51499"/>
		<updated>2019-03-08T11:47:00Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Template:Compat Status &amp;quot;tested&amp;quot;}}--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;in progress&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;engineered_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;rec._prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;tested&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;rejected&amp;quot;}} --&amp;gt;&lt;br /&gt;
{{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;-no-certificate}}&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on incoming call&lt;br /&gt;
|CGPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on outgoing call&lt;br /&gt;
|CDPN&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTMF Features ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|CFU Activate/Deactivate			&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFB Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFNR Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Group &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Directed		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Park/Unpark		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Park To/Unpark From		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Busy&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Cancel&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Join Group/Leave Group&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Join All Groups/Leave All Groups&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility/Disable mobility		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility cw/Disable mobility cw		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Set presence&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Features==&lt;br /&gt;
&lt;br /&gt;
===Directory===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device built-in directory&lt;br /&gt;
|----&lt;br /&gt;
|Exists&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device has speed dial keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has programmable function keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has partner keys&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CTI Features (with SOAP / TAPI / myPBX) ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|User Call - outgoing call &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Connect - Answer incoming call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|User Reject - Reject alerting call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Disconnect - Disconnect active call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold - Put connected call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold Retrieve - Retrieve call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult (Alerting only)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Blind Transfer&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3PTY - Make 3rd Party Call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Connected Number Update on Display&lt;br /&gt;
|DUT: No myPBX: Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51498</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51498"/>
		<updated>2019-03-08T11:29:34Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Certification Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* HiMed 10.51 Pro20&lt;br /&gt;
* innovaphone V12R2 SR21&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested with the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:HiMed - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | https://w3.siemens.com/mcms/topics/en/himed/Pages/contact-form.aspx&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51497</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51497"/>
		<updated>2019-03-08T11:29:26Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Certification Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Template:Compat Status &amp;quot;tested&amp;quot;}}--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;in progress&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;engineered_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;rec._prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;tested&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;rejected&amp;quot;}} --&amp;gt;&lt;br /&gt;
{{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;-no-certificate}}&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of February, 2019.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SNTP config has TZ string for timezone/dst autoconfig&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Fixed registrations works &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers w/o Extension (just by name)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|PBX redirect (UserObject on Master/Phone at Slave registered)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Physical Location (@PBX) correct?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device sends NAT - keepalive messages&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device refreshes the PBX registration&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports HTTPS&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Supported menu languages&lt;br /&gt;
|Dansk, Turkce, Español, Nederlands, English, &amp;lt;br&amp;gt;Deutsch, Português, Suomi, Italiano, Svenska, &amp;lt;br&amp;gt;Greek, Français, Norsk, Polski, Russian&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device sets up an early media channel for incoming calls&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device sets up an early media channel for outgoing calls&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id name&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id display info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Fax using T.38&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Reverse Media Negotiation&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on incoming call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on outgoing call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports distinctive ringing&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports asymetric codec negotiation&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports codec renegotiation during a conversation&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case of busy CDPN&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case of not existing CDPN&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3party conference possible&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports display updates during call(needed for Directory Search object)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Registration redirecting works?&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Incoming SRTP call - SRTP not enabled on DUT&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Incoming SRTP call - SRTP enabled on DUT&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTMF Features ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|CFU Activate/Deactivate			&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFB Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFNR Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Group &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Directed		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Park/Unpark		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Park To/Unpark From		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Busy&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Cancel&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Join Group/Leave Group&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Join All Groups/Leave All Groups&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility/Disable mobility		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility cw/Disable mobility cw		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Set presence&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Features==&lt;br /&gt;
&lt;br /&gt;
===Directory===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device built-in directory&lt;br /&gt;
|----&lt;br /&gt;
|Exists&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device has speed dial keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has programmable function keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has partner keys&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CTI Features (with SOAP / TAPI / myPBX) ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|User Call - outgoing call &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Connect - Answer incoming call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|User Reject - Reject alerting call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Disconnect - Disconnect active call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold - Put connected call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold Retrieve - Retrieve call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult (Alerting only)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Blind Transfer&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3PTY - Make 3rd Party Call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Connected Number Update on Display&lt;br /&gt;
|DUT: No myPBX: Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51496</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51496"/>
		<updated>2019-03-08T11:28:14Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Template:Compat Status &amp;quot;tested&amp;quot;}}--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;in progress&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;engineered_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;rec._prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;tested&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;rejected&amp;quot;}} --&amp;gt;&lt;br /&gt;
{{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;-no-certificate}}&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 20th of December, 2016.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 10.51 Pro20&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2 SR21&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SNTP config has TZ string for timezone/dst autoconfig&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Fixed registrations works &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers w/o Extension (just by name)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|PBX redirect (UserObject on Master/Phone at Slave registered)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Physical Location (@PBX) correct?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device sends NAT - keepalive messages&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device refreshes the PBX registration&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports HTTPS&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Supported menu languages&lt;br /&gt;
|Dansk, Turkce, Español, Nederlands, English, &amp;lt;br&amp;gt;Deutsch, Português, Suomi, Italiano, Svenska, &amp;lt;br&amp;gt;Greek, Français, Norsk, Polski, Russian&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device sets up an early media channel for incoming calls&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device sets up an early media channel for outgoing calls&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id name&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id display info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Fax using T.38&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Reverse Media Negotiation&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on incoming call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on outgoing call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports distinctive ringing&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports asymetric codec negotiation&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports codec renegotiation during a conversation&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case of busy CDPN&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case of not existing CDPN&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3party conference possible&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports display updates during call(needed for Directory Search object)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Registration redirecting works?&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Incoming SRTP call - SRTP not enabled on DUT&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Incoming SRTP call - SRTP enabled on DUT&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTMF Features ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|CFU Activate/Deactivate			&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFB Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFNR Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Group &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Directed		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Park/Unpark		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Park To/Unpark From		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Busy&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Cancel&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Join Group/Leave Group&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Join All Groups/Leave All Groups&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility/Disable mobility		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility cw/Disable mobility cw		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Set presence&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Features==&lt;br /&gt;
&lt;br /&gt;
===Directory===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device built-in directory&lt;br /&gt;
|----&lt;br /&gt;
|Exists&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device has speed dial keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has programmable function keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has partner keys&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CTI Features (with SOAP / TAPI / myPBX) ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|User Call - outgoing call &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Connect - Answer incoming call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|User Reject - Reject alerting call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Disconnect - Disconnect active call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold - Put connected call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold Retrieve - Retrieve call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult (Alerting only)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Blind Transfer&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3PTY - Make 3rd Party Call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Connected Number Update on Display&lt;br /&gt;
|DUT: No myPBX: Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51495</id>
		<title>Howto:HiMed - Testreport</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Testreport&amp;diff=51495"/>
		<updated>2019-03-08T11:26:07Z</updated>

		<summary type="html">&lt;p&gt;Twl: New page: ==Summary==    ==Certification Status==  &amp;lt;!--{{Template:Compat Status &amp;quot;tested&amp;quot;}}--&amp;gt; &amp;lt;!-- {{Template:Compat Status &amp;quot;in progress&amp;quot;}} --&amp;gt; &amp;lt;!-- {{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;|certifi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--{{Template:Compat Status &amp;quot;tested&amp;quot;}}--&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;in progress&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;engineered_prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat_Status_&amp;quot;rec._prod.&amp;quot;|certificate=Tpl_sip.business_Toplink_SIP_Provider_-_product-cert.pdf}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;tested&amp;quot;}} --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{Template:Compat Status &amp;quot;rejected&amp;quot;}} --&amp;gt;&lt;br /&gt;
{{Template:Compat_Status_&amp;quot;referral_prod.&amp;quot;-no-certificate}}&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 20th of December, 2016.&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
Firmware Version:&lt;br /&gt;
 2.5.23&lt;br /&gt;
&lt;br /&gt;
innovaphone Firmware:&lt;br /&gt;
 12R2&lt;br /&gt;
&lt;br /&gt;
== Test Setup ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Testreport_Terminals_SIP_or_H323_1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Device Setup==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result&lt;br /&gt;
|----&lt;br /&gt;
|DHCP is default&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|SNTP config has TZ string for timezone/dst autoconfig&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DHCP yields correct default gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Fixed registrations works &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers w/o Extension (just by name)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers by extension&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers with password&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device registers multiple identities&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|PBX redirect (UserObject on Master/Phone at Slave registered)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Physical Location (@PBX) correct?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports STUN protocol&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device sends NAT - keepalive messages&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device usable in [[Howto:Hosting | hosting]] scenarios?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device refreshes the PBX registration&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIP over TCP&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SRTP&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports SIPS (SIP over TLS)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports HTTPS&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports VAD (Voice activity detection)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Supported menu languages&lt;br /&gt;
|Dansk, Turkce, Español, Nederlands, English, &amp;lt;br&amp;gt;Deutsch, Português, Suomi, Italiano, Svenska, &amp;lt;br&amp;gt;Greek, Français, Norsk, Polski, Russian&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
=== Basic Call ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|call using g711a&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g711u&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g729&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|call using g722&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Overlapped sending&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device sets up an early media channel for incoming calls&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device sets up an early media channel for outgoing calls&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id name&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows called id display info&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Fax using T.38&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|CGPN can be suppressed&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Reverse Media Negotiation&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on incoming call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows CDPN/CGPN on outgoing call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows connected number&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows diverting number&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports distinctive ringing&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device supports asymetric codec negotiation&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports codec renegotiation during a conversation&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case of busy CDPN&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case of not existing CDPN&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device shows correct display message in case that the call is declined&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3party conference possible&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device supports display updates during call(needed for Directory Search object)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Long Time Call (&amp;gt;30 min) works?&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Registration redirecting works?&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|Incoming SRTP call - SRTP not enabled on DUT&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Incoming SRTP call - SRTP enabled on DUT&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Voice Quality OK?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DTMF ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones sent correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|DTMF tones received correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hold/Retrieve ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device handles incoming hold correctly&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Device can put a call on hold using correctly(inactive or sendonly)&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
||inno1 calls inno2. inno1 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blind Transfer (alerting only)===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to testphone.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls testphone. testphone transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|testphone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DTMF Features ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|CFU Activate/Deactivate			&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFB Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|CFNR Activate/Deactivate		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Group &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Pickup Directed		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Park/Unpark		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Park To/Unpark From		&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Busy&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Call Completion Cancel&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Join Group/Leave Group&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Join All Groups/Leave All Groups&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility/Disable mobility		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Enable mobility cw/Disable mobility cw		&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Set presence&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other Features==&lt;br /&gt;
&lt;br /&gt;
===Directory===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device built-in directory&lt;br /&gt;
|----&lt;br /&gt;
|Exists&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|External LDAP Server supported&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Can be dialled from&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|Does CLI resolution&lt;br /&gt;
|N/A&lt;br /&gt;
|----&lt;br /&gt;
|display update if directory object is used?&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Keys===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|Device has speed dial keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has programmable function keys&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Device has partner keys&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CTI Features (with SOAP / TAPI / myPBX) ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|User Call - outgoing call &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Connect - Answer incoming call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|User Reject - Reject alerting call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Disconnect - Disconnect active call&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold - Put connected call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Hold Retrieve - Retrieve call on hold &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult &lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Transfer with Consult (Alerting only)&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|User Transfer - Blind Transfer&lt;br /&gt;
|Yes&lt;br /&gt;
|----&lt;br /&gt;
|3PTY - Make 3rd Party Call&lt;br /&gt;
|No&lt;br /&gt;
|----&lt;br /&gt;
|Connected Number Update on Display&lt;br /&gt;
|DUT: No myPBX: Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_PBX.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Konftel 300IP configuration ===&lt;br /&gt;
[[Image:Konftel300IP_Innovaphone_config.png]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51494</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51494"/>
		<updated>2019-03-08T11:25:22Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* HiMed 10.51 Pro20&lt;br /&gt;
* innovaphone V12R2 SR21&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested with the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:HiMed - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | https://w3.siemens.com/mcms/topics/en/himed/Pages/contact-form.aspx&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51493</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51493"/>
		<updated>2019-03-08T11:22:30Z</updated>

		<summary type="html">&lt;p&gt;Twl: /* Vendor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* HiMed 10.51 Pro20&lt;br /&gt;
* innovaphone V12R2 SR21&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested with the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | https://w3.siemens.com/mcms/topics/en/himed/Pages/contact-form.aspx&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51492</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51492"/>
		<updated>2019-03-08T11:21:20Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* HiMed 10.51 Pro20&lt;br /&gt;
* innovaphone V12R2 SR21&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [http://www.konftel.com Konftel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested with the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | https://w3.siemens.com/mcms/topics/en/himed/Pages/contact-form.aspx&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51491</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51491"/>
		<updated>2019-03-08T11:19:17Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* HiMed 10.51 Pro20&lt;br /&gt;
* innovaphone V12R2 SR21&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [http://www.konftel.com Konftel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested with the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | http://www.konftel.com/Support/Contact-Support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51490</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51490"/>
		<updated>2019-03-08T11:11:25Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
*OmniSound®&lt;br /&gt;
*HD audio&lt;br /&gt;
*Local 5-way conference&lt;br /&gt;
*Supports expansion microphones&lt;br /&gt;
*Free software upgrades&lt;br /&gt;
*Built-in bridging function&lt;br /&gt;
*Expandable for PA System&lt;br /&gt;
*Connection for Wireless headset&lt;br /&gt;
*User profiles&lt;br /&gt;
*Phonebook (LDAP)&lt;br /&gt;
*Web-based configuration&lt;br /&gt;
*PoE (Power over Ethernet)&lt;br /&gt;
*SD call recording&lt;br /&gt;
*Conference guide&lt;br /&gt;
*Two-year warranty&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* Konftel 300IP: 2.5.23&lt;br /&gt;
* innovaphone V1xSRxy&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [http://www.konftel.com Konftel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested with the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | http://www.konftel.com/Support/Contact-Support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51489</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51489"/>
		<updated>2019-03-08T11:10:05Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
*OmniSound®&lt;br /&gt;
*HD audio&lt;br /&gt;
*Local 5-way conference&lt;br /&gt;
*Supports expansion microphones&lt;br /&gt;
*Free software upgrades&lt;br /&gt;
*Built-in bridging function&lt;br /&gt;
*Expandable for PA System&lt;br /&gt;
*Connection for Wireless headset&lt;br /&gt;
*User profiles&lt;br /&gt;
*Phonebook (LDAP)&lt;br /&gt;
*Web-based configuration&lt;br /&gt;
*PoE (Power over Ethernet)&lt;br /&gt;
*SD call recording&lt;br /&gt;
*Conference guide&lt;br /&gt;
*Two-year warranty&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* Konftel 300IP: 2.5.23&lt;br /&gt;
* innovaphone V1xSRxy&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [http://www.konftel.com Konftel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===The HiMed Solution - An offering for all Stakeholders===&lt;br /&gt;
&lt;br /&gt;
The HiMed Cockpit multimedia terminal offers patients an unprecedented level of convenience. In addition to making phone calls, watching TV, listening to the radio and watching films, patients can now also surf the internet, retrieve information via the patient portal and use existing applications without leaving their bed. An integrated webcam even makes it possible for friends and relatives to pay a virtual visit to the hospital. The Cockpit can be easily and variably integrated in the patient rooms and can be used as BYOD access point.&lt;br /&gt;
&lt;br /&gt;
The Cockpit helps doctors and nurses by supporting the interactive processes at the patient’s bedside. The direct link to the hospital information system means that data (e. g. from the electronic patient records) can be viewed instantly and the necessary action can be taken. Information and Instructions can also be entered immediately.&lt;br /&gt;
&lt;br /&gt;
The Cockpit can be easily integrated into the patient’s room using the existing infrastructure in the building. This saves both time and money. Additional revenue is generated from the services offered such as telephone, TV, video on demand and the internet, while optimizing the processes at the patient’s bedside enhances the efficiency and attractiveness of the hospital.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested by the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | http://www.konftel.com/Support/Contact-Support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51488</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51488"/>
		<updated>2019-03-08T11:08:12Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
HiMed Siemens[https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
*OmniSound®&lt;br /&gt;
*HD audio&lt;br /&gt;
*Local 5-way conference&lt;br /&gt;
*Supports expansion microphones&lt;br /&gt;
*Free software upgrades&lt;br /&gt;
*Built-in bridging function&lt;br /&gt;
*Expandable for PA System&lt;br /&gt;
*Connection for Wireless headset&lt;br /&gt;
*User profiles&lt;br /&gt;
*Phonebook (LDAP)&lt;br /&gt;
*Web-based configuration&lt;br /&gt;
*PoE (Power over Ethernet)&lt;br /&gt;
*SD call recording&lt;br /&gt;
*Conference guide&lt;br /&gt;
*Two-year warranty&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* Konftel 300IP: 2.5.23&lt;br /&gt;
* innovaphone V1xSRxy&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [http://www.konftel.com Konftel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===HiMed===&lt;br /&gt;
The multimedia terminal HiMed Cockpit offers patients comfort in a new dimension. In addition to phoning, watching TV, listening to the radio and watching movies, patients can surf the Internet, get information through a patient portal and use existing bedside treatments. The integrated webcam even allows a virtual hospital visit of relatives. The cockpit can be easily and variably brought into the patient room and can be used as an access point for BYOD - for mobile devices brought along.&lt;br /&gt;
&lt;br /&gt;
For the medical and nursing area, the cockpit actively supports the processes at the bedside. By linking to the hospital information system, information (eg from the electronic patient record) can be viewed directly on the bed and required measures and inputs can be carried out immediately.&lt;br /&gt;
&lt;br /&gt;
The cockpit can be easily and directly introduced into the patient room. House-wide, the existing infrastructure can be used for this purpose. This saves money and time. In addition, the income from the services offered, such as telephone, TV, video on demand and the Internet, as well as the optimization of processes at the bedside increase the profitability and attractiveness of the house.&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested by the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | http://www.konftel.com/Support/Contact-Support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51487</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51487"/>
		<updated>2019-03-08T10:23:06Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
Siemens HiMed [https://w3.siemens.com/mcms/topics/de/himed/seiten/default.aspx]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
*OmniSound®&lt;br /&gt;
*HD audio&lt;br /&gt;
*Local 5-way conference&lt;br /&gt;
*Supports expansion microphones&lt;br /&gt;
*Free software upgrades&lt;br /&gt;
*Built-in bridging function&lt;br /&gt;
*Expandable for PA System&lt;br /&gt;
*Connection for Wireless headset&lt;br /&gt;
*User profiles&lt;br /&gt;
*Phonebook (LDAP)&lt;br /&gt;
*Web-based configuration&lt;br /&gt;
*PoE (Power over Ethernet)&lt;br /&gt;
*SD call recording&lt;br /&gt;
*Conference guide&lt;br /&gt;
*Two-year warranty&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* Konftel 300IP: 2.5.23&lt;br /&gt;
* innovaphone V1xSRxy&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [http://www.konftel.com Konftel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===Konftel 300IP for innovative conference calls===&lt;br /&gt;
The Konftel 300IP is a flexible SIP-based conference phone, perfect for companies that use IP voice services. Its clear, natural sound comes from OmniSound, Konftel’s patented wideband audio technology. The stylishly designed Konftel 300IP is packed with intelligent features for more efficient conference calls. &lt;br /&gt;
&lt;br /&gt;
Record and store meetings on a SD memory card. Use the conference guide to call pre-programmed groups with just a few simple pushes of a button. Conveniently import and export contact details via the Web interface. Create your own phone book with the personal user profile feature. &lt;br /&gt;
&lt;br /&gt;
The Konftel 300IP is also ideal for larger conferences since it can accommodate expansion microphones, an external wireless headset and a PA system. With the Konftel 300IP your company will have a conference phone that combines all the benefits of IP voice service with innovative new features.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested by the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | http://www.konftel.com/Support/Contact-Support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51486</id>
		<title>Howto:HiMed - Siemens - 3rd Party Product</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:HiMed_-_Siemens_-_3rd_Party_Product&amp;diff=51486"/>
		<updated>2019-03-08T10:20:34Z</updated>

		<summary type="html">&lt;p&gt;Twl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Siemens.png||200px|right]]&lt;br /&gt;
[[Image:HiMed.png||200px|right]]&lt;br /&gt;
&lt;br /&gt;
==Product Name==&lt;br /&gt;
Siemens HiMed [http://www.konftel.com/Products/Konftel300IP Product site]&lt;br /&gt;
&lt;br /&gt;
==Certification Status==&lt;br /&gt;
&lt;br /&gt;
Testing of this product has been finalized 28th of Februar, 2019.&lt;br /&gt;
&lt;br /&gt;
==Category==&lt;br /&gt;
&lt;br /&gt;
{{Category:3rdParty_Terminals}}&lt;br /&gt;
[[Category:Referral Product|{{PAGENAME}}]]&lt;br /&gt;
[[Category:3rdParty_Terminals|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - place here a short and concise list of features that are supported by your product &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
Summary of the most important features:&lt;br /&gt;
*OmniSound®&lt;br /&gt;
*HD audio&lt;br /&gt;
*Local 5-way conference&lt;br /&gt;
*Supports expansion microphones&lt;br /&gt;
*Free software upgrades&lt;br /&gt;
*Built-in bridging function&lt;br /&gt;
*Expandable for PA System&lt;br /&gt;
*Connection for Wireless headset&lt;br /&gt;
*User profiles&lt;br /&gt;
*Phonebook (LDAP)&lt;br /&gt;
*Web-based configuration&lt;br /&gt;
*PoE (Power over Ethernet)&lt;br /&gt;
*SD call recording&lt;br /&gt;
*Conference guide&lt;br /&gt;
*Two-year warranty&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - version of software that was tested, as declared by the vendor or reseller(in case of customer testimonial), please not if patches have been applied&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
* Konftel 300IP: 2.5.23&lt;br /&gt;
* innovaphone V1xSRxy&lt;br /&gt;
&lt;br /&gt;
==Vendor==&lt;br /&gt;
&amp;lt;!-- by vendor&lt;br /&gt;
   - Official name of your company, at best linked to your companies web site url, Official name of the vendors web site &lt;br /&gt;
   - you may also add a logo&lt;br /&gt;
     - upload your company logo (.png preferred, suitable size)&lt;br /&gt;
     - replace logo below with yours &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Konftel_logo.png]] [http://www.konftel.com Konftel]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===Konftel 300IP for innovative conference calls===&lt;br /&gt;
The Konftel 300IP is a flexible SIP-based conference phone, perfect for companies that use IP voice services. Its clear, natural sound comes from OmniSound, Konftel’s patented wideband audio technology. The stylishly designed Konftel 300IP is packed with intelligent features for more efficient conference calls. &lt;br /&gt;
&lt;br /&gt;
Record and store meetings on a SD memory card. Use the conference guide to call pre-programmed groups with just a few simple pushes of a button. Conveniently import and export contact details via the Web interface. Create your own phone book with the personal user profile feature. &lt;br /&gt;
&lt;br /&gt;
The Konftel 300IP is also ideal for larger conferences since it can accommodate expansion microphones, an external wireless headset and a PA system. With the Konftel 300IP your company will have a conference phone that combines all the benefits of IP voice service with innovative new features.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   - add remarks regarding the product, such as special features, firmware versions or licenses required on the inno side, &lt;br /&gt;
     parts of the product that has not been tested or limitations discovered.  very short and concise (everything else is in &lt;br /&gt;
     the test report) &lt;br /&gt;
   - add link to product test report here&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- by inno:&lt;br /&gt;
   as an alternative, if the product has been tested by the vendor&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
This solution has been tested by the vendor.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Howto:Konftel 300IP - Testreport]]&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
&amp;lt;!-- by vendor:&lt;br /&gt;
   - add name, address, phone, fax, email, web of primary recommended sales contact&lt;br /&gt;
     if suitable, you may consider specifying several contacs, depending on your sales structure &lt;br /&gt;
     (e.g. by country or vertical market)&lt;br /&gt;
   - in case of a customer testimonial the contact details of the reseller are not disclosed here. As contact person should act sales@innovaphone.com. In order to find the reseller responsible for this product, enter also the corresponding mantis ticket number in invisible tags. &lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| colspan=99 | http://www.konftel.com/Support/Contact-Support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compat|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Twl</name></author>
	</entry>
</feed>