Reference14r2:Concept myApps platform services

From innovaphone wiki
Jump to navigation Jump to search
There are also other versions of this article available: Reference13r1 | Reference13r2 | Reference13r3 | Reference14r1 | Reference14r2 (this version)


myApps platform services provide various operating system specific services which can be used by other Apps running in the myApps client. Those services typically are not available in the browser's JavaScript environment and hence must be implemented in native platform code. Therefore, the platform services are installed as native executable on the respective platform.

When myApps is started in a web browser (and hence has no access to the platform services), some Apps will use WebRTC services implemented by the browser instead. For ease of reference, features available in this scenario are also described here.

On windows, the platform services also come with their own web browser in which the myApps web App will be started then. This browser is based on google's Chromium open source software.

Applies To

  • myApps
  • myApps for Windows
  • myApps for macOS
  • myApps for iOS
  • myApps for Android
  • myApps Web App (WebRTC)

version 14r2

Features

Not all features are available or required on all platforms.

Feature Description Availability
Windows iOS Android macOS Browser[1]
audio manage local audio devices to record and playback audio conversations ✔ (audio available but devices managed by web browser)
video manage local displays and cameras to capture and render video live stream ✔ (video available but devices managed by web browser)
ringer manage local ringing device
application sharing
  presenter share an application
  consumer view an application shared by the peer
hot keys capture key presses for quick invocation of phone apps (e.g. dial selected number)
tel: and sip: URI handler intercept clicks on tel: and sip: links in web sites to invoke phone apps
user activity set presence state according to user activity [2]
docking myApps can be docked persistently to the right or left edge of your screens
multi-windowing Apps can be launched in separate windows
recording Calls can be recorded to recording app
notifications
  display notifications display notifications with OS standard mechanism
  push notifications receive push notifications while myApps is not running [3]
  chat and apps display notifications for chat and other apps
  calls display notifications for incoming calls [4]
phone book access access local phone book
office presence provider maps PBX presence state to Microsoft office presence state
external application start start arbitrary external applications for calls
app proxy a caching proxy that provides app persistence
auto update automatically updates myApps platform services to the same version the PBX has [5]
three party conference initiate 3-pty-conference using Softphone-App
exclude VPN disable use of VPN connections for audio/video/appsharing
  1. This refers to the myApps web application running in a browser with no platform services available
  2. limited, see User activity below
  3. The browser needs to be running in order to receive push notifications.
  4. Call notifications are only displayed locally while the phone or softphone app is started.
  5. The then-current web app is always loaded from the PBX upon startup and hence up-to-date by definition

Requirements

  • innovaphone PBX 14r2 and up

Hardware

Recommended hardware requirements

  • Processor: Dual-core 2Ghz or higher
  • RAM: 4 Gb

myApps for Windows

  • Windows 10 and up
  • Windows Server 2016 and later versions

32 & 64 bit Windows

  • 32 bit Windows: install the myAppsSetup32.msi from the App Store
  • 64 bit Windows: install the myAppsSetup.msi from the App Store
    • the 64 bit variant still installs into Program Files (x86), as the main myApps.exe is still a 32bit application
    • the 64 bit variant just contains an additional 64 bit binary for the outlook search

Windows N editions

Windows N editions are missing the Media Feature Pack which is pre installed on other Windows versions.

Please install the pack from Microsoft (Windows 10 pack) before you install myApps. The installer will check if the file C:\Windows\SysWOW64\mfplat.dll exist on your system.

Make sure to install the correct pack depending on your Windows version! There are different packs for Windows 10 1703, 1803, 1809 and 32bit or 64bit etc.

NB: Sometimes the myApps installation will not work even though the media pack is already installed. This is because the installer has no read access to check if the package is already installed. If the above-mentioned file exists and the installer asks to install the Windows Media Feature Pack nevertheless, you have to start the myApps install with administrative rights.

Terminal Server environments

Audio driver was removed if myApps discovers that it is running in a terminal server environment like Citrix.

The audio driver is needed for the Softphone App but the Softphone App should not use an audio driver at the server side because the audio devices are plugged locally and there would be a delay sending and receiving audio data with the server.

If a customer wants to use the Softphone App at the server side he needs to make use of the myApps Plugin for virtual desktops solution:

Reference14r2:MyApps_Plugin_for_Virtual_Desktops

myApps for macOS

  • macOS 10.13 or higher

myApps for iOS

  • iOS 12 or higher

myApps for Android

  • Android 6.0 or higher. Android 6.x may need an update of the Chrome browser.

Licenses

  • No license needed for myApps platform services

Overview

myApps platform services is a native executable that is installed using the standard mechanisms on the respective operating system. It provides various advanced services which can be used by the myApps web client code as well as the Apps running in the myApps context.

Also, on Windows, the platform services come with their own, dedicated browser to run myApps in. This browser is based on Chromium. On iOS, macOS and Android, it is based upon native embedded web view facilities (such as WKWebView) instead.

Components

RTP service for audio, video and data

The RTP service provides audio, video and data (app sharing) VoIP RTP endpoints (e.g. for softphones). It supports STUN, TURN, ICE, SRTP, DTLS. Note however that unlike WebRTC, these endpoints do not require ICE and DTLS. In other words, they can communicate also with non-compliant (i.e. older) VoIP devices.

Note that the available capabilities when not running the myApps platform services depend on the used browser's WebRTC implementation. See your browser documentation for details.

Apps can request RTP channels using the Media Protocol's AllocChannel message.

RTP ports
audio 50000 -> 50099
video 50100 -> 50199
data 50200 -> 50299


The RTP service will enumerate all local interfaces and create local HOST candidates for ICE. There is an option however to disregard VPN interfaces (more precisely such interfaces with type of IF_TYPE_PPP or IF_TYPE_TUNNEL). This can eliminate quality issues when RTP data is transmitted through TCP based VPN tunnels.

SRFLX and RELAY candidates are obtained using the STUN and TURN server configuration passed by the App (e.g the softphone App) as part of the AllocChannel request. {"mt":"AllocChannel","channel":"81429cba-396d-43de-8a76-ec020ba8796e","iceServers":[{"urls":"turn:myturn.domaincom:4077?transport=udp","username":"turnuser","credential":"pwd","credentialType":"password"},{"urls":"stun:mystun.domain.com:4077"}],"dn":"Foo Bar","type":"RemoteRtp","kind":"video"}

Codecs

The installed myApps launchers provide codecs that can be used by softphone apps for media streams. When running in a web browser the codecs depend on the browser version and operating system. See the documentation of your browser for details.

The following codecs are supported:

Codec Windows-Launcher Android iOS macOS Firefox (Browser) Chrome (Browser) Edge (Browser) Safari (Browser) Opera (Browser)
Audio
G711A
G711u
G722
G729 X X X X X
G729A X X X X X
G729B X X X X X
G729AB X X X X X
OPUS-NB X
OPUS-WB X
Video
VP8 X
VP9 ✔** X X ✔** ✔** ✔** ✔** X ✔**
H264 ✔**
Application Sharing
Share X X
Watch ✔* ✔* X

* small presentation only
** only for 1:1 calls, not for conferences

Video capture

The default resolution for video capture is 1280x720 if available. Otherwise, 640x480, 352x288 or 320x240 will be used. The frame rate is 30 fps if available, otherwise 15 fps. The resulting average bandwidth could reach 1 Mbps.

Application sharing

Screen content will be transmitted by the presenter.

Device handling

The RTP service enumerates microphones, loudspeaker, cameras and ringing devices and notifies apps when devices come and go. It is up to the apps using the devices to store preferences.

The RTP service also enables some extended features (such as hook switch or volume control) for supported USB headsets or Bluetooth headsets connected to myApps. The supported headset-SDKs determine which headset vendors are recommended to be used with the myApps softphone app.

For this to work, the following vendor specific development kits are integrated in our myApps client, be ware that the SDK are updated within our Service release :

SDK Vendor Supported OS SDK Version innovaphone Service Release
Jabra MacOS 1.12.2.0 13r3sr9
Windows 1.12.2.0 13r3sr10
Epos (formerly Sennheiser) MacOS 12.4.0.5478 14r1sr3
Windows n.a. - to be installed separately 13r3sr10
Poly (formerly Plantronics) MacOS 3.25.53799.37131 13r3sr9
Windows 3.25.53800.37131 13r3sr10
Yealink MacOS 3.1.1.20 14r1sr3
Windows 3.1.1.20 14r1sr3

Notes:

  • It is possible to inhibit the start of the Sennheiser SDK (SenncomSDK.exe) using the DISABLEHEADSETS directive of the installer (see MSI parameters below).
  • Starting with V13r3sr10, the Epos-SDK needs to be installed separately using the Epos Connect software to ensure full compatibility between current Epos headset models and native myApps-Windows client. For details refer to this article.
Ring tones

Ring tones can be played. Apps can choose the tone from a pre-defined list of ring tones.

On Windows, custom ring tones can be uploaded as .mp3 files to the ringtones sub-directory of myApps' roaming directory (which usually is in C:\Users\...\AppData\Roaming\innovaphone\myApps\ringtones).

On Android, custom ring tones can be added to the system via Android settings.

On iOS, custom ring tones can be uploaded as .mp3 files to the Ringtones subdirectory of the myApps file share that is available in iTunes if the iPhone has been connected via USB.

On macOS, custom ring tones can be uploaded as .mp3 files to ~/Library/Containers/com.innovaphone.client-macos/Data/Documents/Ringtones.

Debugging

For extended debugging, turn on the Audio, Media and AppSharing traces in myApps.

Hot keys

On Windows and macOS systems, myApps platform services can listen for hot keys and invoke certain functions. Invocation is done by sending API messages to myApps which passes it to an appropriate API provider (in the cases described here, this will be a phone or softphone or rcc App typically. See Client APIs and default apps for more details about this mechanism.

The hot keys can be specified using the advanced settings user interface (see UI elements below. Any of the function keys F1 to F11 (optionally combined with up to two modifier keys alt, ctrl, shift or win) can be chosen for each function. If you do not want to start the call with "Hotkey+Enter" because you would have to wait for the focus, the hotkey can also be pressed twice and the number is dialled directly.

dial selected number
Initiates a call using the currently selected text as target.
A PrepareCall message with the text argument set to the selected text and the adjust argument set to true will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":"mt":"PrepareCall","text":"13","adjust":true}}
accept call
Accepts a currently alerting call.
A ConnectCall message will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"ConnectCall"}}
reject/disconnect call
Rejects a currently alerting call or disconnects an active call.
A DisconnectCall message will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"DisconnectCall"}}

URL Handler

On Windows systems, two URI-handler are installed with the myApps platform services. Windows will call up this URI handler when a user clicks on an appropriate link, for example in a web site.

The handler will the send an API message to myApps which passes it to an appropriate API provider (in the cases described here, this will be a phone or softphone or rcc App typically. See Client APIs and default apps for more details about this mechanism.

tel URI
call a number, e.g. tel:4711
A PrepareCall message with the num argument set to the selected text and the adjust argument set to true will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"StartCall","num":"4711","adjust":true}}
sip URI
call a SIP name, e.g. sip:zkl@innovaphone.com
A PrepareCall message with the sip argument set to the selected text and the adjust argument set to true will be sent to the com.innovaphone.phone API.
{"mt":"ApiRequest","apiId":"com.innovaphone.phone","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"StartCall","sip":"zkl@innovaphone.com","adjust":true}}
im URI
start chat with SIP name, e.g. im:zkl@innovaphone.com
A StartChat message with the sip argument set to the selected text will be sent to the com.innovaphone.chat API.
{"mt":"ApiRequest","apiId":"com.innovaphone.chat","consumer":"@local-ae2fc2ab74-3f1e-4ab9-b215-d42f213520317","msg":{"mt":"StartChat","sip":"zkl@innovaphone.com"}}

On macOS systems myApps might be made the default application to handle tel URI e.g. tel:4711 via Apple FaceTime. Open the "FaceTime" menu "Settings..." and select myApps as "Default for phone calls".

On iOS tel URIs are always dialed via GSM. Therefore myApps iOS also reacts to URI schemes com.innovaphone.tel, com.innovaphone.sip and com.innovaphone.im, e.g. com.innovaphone.tel:4711, com.innovaphone.sip:zkl@innovaphone.com, com.innovaphone.im:zkl@innovaphone.com.

User activity

On Windows and macOS systems, the myApps platform services can monitor user keyboard/mouse activity and change the user's presence state after a certain amount of inactivity. The timeout can be specified using the advanced settings user interface (see UI elements below.

myApps will then send a SetUserActivity message to the PBX using the myApps protocol.

{"mt":"SetUserActivity","inactive":true}

This will change the status property of the im: contact for the user's own presence and hence result in a presence update from the PBX to myApps

{"mt":"UpdateOwnPresence","presence":[{...},{"contact":"im:","activity":"","status":"closed"}]}

The closed status is reflected in the grey status color when displaying a contact Myapps-inactive.png.

On iOS and Android, the state is set to inactive as soon as the App is brought to background. When myApps platform services are not available (i.e. when running the web application in a browser solely) a limited user activity monitoring is available: the state is set to active when the web page is not used for more than 5 minutes.

Recording

The new launcher offers the possibility to record the audio of incoming and outgoing calls. In order to activate that functionality the URL of the recording instance must be configured in either the PBX (PBX->myApps->Config: Recording URL) or the softphone App (Settings->Audio Recording (URL))

PBX-Recording-Settings.png Recording-Softphone-Settings.png.

As long as that URL is configured the audio data of all calls are stored as pcap-files under that URL. If the URL points to a CF device in the PBX, write access must be granted for that URL (PBX->Services->HTTP->Server:Public compact flash access) and if the URL points to the recording app, the files can be accessed via the recording app recording.


Under PBX->myApps the administrator can set a certain default behaviour of the audio recording like whether or not the recording should start automatically at the beginning of the call (Recording by Default ON/OFF), only calls with external numbers should be recorded (Record external calls only) or whether or not the user should be able to start/stop the recording himself (Allow user incall recording control). Except for the last parameter these parameters can also be modified by the user in its softphone settings if the administrator doesn't set the FORCE flag.

If the user was allowed by the admin to control the recording a recording switch is active during the call when the "Media" Panel is opened. There the audio recording may be stopped and continued at will. A red recording notice is shown in the top right corner when the recording actually takes place.

Recording-incall-switch.png

Notifications

The myApps platform services can use the OS specific notification mechanism (e.g. desktop notifications on Windows) to display messages (e.g. incoming new chat message) to the user.

Note that the actual rendering of the notification is under control of the OS. Therefore, myApps must be allowed to show notifications and its appearance can be restricted by OS native settings.

Microsoft Windows Notifications

Microsoft Windows Server editions (2016, 2019, 2022) are just capable of showing a single IncomingCall notification at the same time (we couldn't find a workaround for this limitation).
An IncomingCall notification is visible the whole time instead of being moved to the action center after a certain time.

A notification about a missed call uses the IncomingCall type so that this notification is visible until the user returns.
Due to the above limitation, on a new arriving call such a missed call notification is transformed to a default notification which will be moved to the action center automatically.

On non server editions, you can have multiple IncomingCall notifications at the same time (so two parallel incoming calls will be indeed notified at the same time), but the missed call notification handling is the same on both platforms!

Thus there will be always just one missed call notification visible and previous missed calls can be found inside your action center!

To see myApps notifications, ensure:

  • System -> Notifications
    • enable notifications
    • disable "Do not disturb" or allow myApps as priority application while "Do not disturb" is active
    • enable notifications for myApps in the list of applications
  • System -> Focus
    • if a focus session is active and the "Do not disturb" is activated during a focus session, make sure that myApps is a priority application (see above)

macOS Notifications

Notifications are the same as on Windows. The difference is, that for macOS, notifications need to be allowed in the system settings. Go to Notifications - myApps, select Banner and enable all check marks.

Local phonebook access

Contact Search: The myApps platform services implement an API provider for the com.innovaphone.search API]. They perform search capabilities on the OS' local phone books which can be used by Apps like the phoneapp.

Apps would send a Search request to the API:

{"mt":"ApiRequest","consumer":"dev:SwPh_zkl_5e42e884","provider":"*","src":"4","msg":{"mt":"Search","type":"contact","search":"john doe"},"apiId":"com.innovaphone.search"}

Search results are delivered as SearchInfo messages:

{"mt":"ApiResult","src":"3","provider":"@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0","consumer":"dev:SwPh_zkl_5e42e884","client":"@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea","msg":{"mt":"SearchInfo","relevance":2000,"adjust":true,"type":"contact","contact":{"givenname":"John","sn":"Doe","company":"ACME","position":"Head of everything","telephonenumber":["11111","22222"],"homephone":["+4944444","33333"],"mobile":["+49 (123) 55555"]}},"api":"com.innovaphone.search"}

Reverse Lookup: The myApps platform services implement an API provider for the com.innovaphone.phonelookup API. They perform search capabilities on the OS' local phone books which can be used by Apps like the phoneapp.

Apps would send a Lookup request to the API:

{"mt":"ApiRequest","consumer":"dev:SwPh_zkl_5e42e884","provider":"*","src":"4","msg":{ mt: "Lookup", prefixIntl: "000", prefixNtl: "00", prefixExt:"0", area: "7031", country: "49", lookup: "0004970311234567" },"apiId":"com.innovaphone.lookup"}

Search results are delivered as LookupInfo messages:

{"mt":"ApiResult","src":"3","provider":"@local-8125d22e37-519d-4056-bfe5-c52ef2ae8fabb0","consumer":"dev:SwPh_zkl_5e42e884","client":"@client-f62702dd86-be3f-47fc-b4bc-7a21627b75b2ea","msg":{mt: "LookupInfo", dn: "Jake Blues", contact: { telephonenumber: ["0004970311234567"], givenname: "Jake", sn: "Blues", company: "Blues Brothers"

Windows

On Windows, the search and lookup are performed in all of the user's Outlook contact folders. As opposed to the search implemented in the Contacts and Users App, all items are returned which match any of the search words (i.e. searching for a b will return items matching either a or b).

searched properties
firstname, lastname
returned properties
Following Outlook contact phone number properties are returned (if available):
  • OFFICE_TELEPHONE_NUMBER as telephonenumber
  • OFFICE2_TELEPHONE_NUMBER as telephonenumber
  • HOME_TELEPHONE_NUMBER as homephone
  • HOME2_TELEPHONE_NUMBER as homephone
  • MOBILE_TELEPHONE_NUMBER as mobile
  • BUSINESS_FAX_NUMBER as facsimiletelephonenumber

Note that contact information is cached in the search provider. Updated contacts may therefore become effective after a while only. Outlook search will create its own trace file myAppsOutlookSearch-date-time.txt in the standard trace directory.

This search provider is always installed and can be disabled. There is no need (nor possibility) to enable it in the Apps tab of the PBX's user object. Also, no App object needs to be created for it.

Android/iOS

The search and lookup are performed in the contacts.

macOS

The search and lookup are performed in the contacts. If you wish to disable local contact lookup, go to system settings - Security & Privacy and disable the access to contacts for myapps.

Microsoft Office integration

The myApps platform services has a office presence provider that can provide the user's presence state to Office applications. See myApps Office Integration for details.

This feature is installed by default. However, it can be disabled using the OFFICEPRESENCE MSI Parameter. Also, a check-mark is available in the setup dialog.

Call an external application for calls

Phone Apps (such as the phoneapp or softphone) can initiate the start of an external application when a new call appears (either incoming or outgoing). The actual spawning of the application is done by the myApps platform service. Also, the application properties (such as e.g. the executable's path) is configured in the myApps platform services (see Advanced settings in the UI elements section below).

A number of arguments can be passed to the application by substituting $-variables in the Parameter field:

$n
phone number as dialed (called party number for outgoing calls) or received (calling party number for incoming calls)
$N
called or calling party number in national format (e.g. 07031730090)
$I
called or calling party number in international format (e.g. +497031730090)
note that both $N and $I only work if $n includes both subscriber number and area code (e.g. 07031730090). Otherwise they are equal to $n
$d
display name of peer (if known)
$u
URI name of the peer (if available eg with a federation call)
$c
conference id
this is a globally unique ID for this call and may be used to relate the call to the guid found in the CallInfo structure in the SOAP-API and RCC-API . Also, corresponding CDRs can be related using the event tag's conf attribute.

The start of an external application can be requested using the com.innovaphone.externalapps API.

Some setup examples are shown here.

Push

Mobile operating systems usually inhibit network operation of apps which run in the background or are closed by the user. This is done in order to reduce battery consumption. Unfortunately, this also stops such apps to maintain a registration by regularly sending keep alive messages to a server (in our case to the PBX). As a result, myApps will be disconnected from the PBX. When the PBX determines that there is an event for the application which needs a response, it needs to wake up the app using a dedicated channel provided by the operating system. This mechanism is know as push. When running on iOS or Android, myApps supports push.

For push to work, a push object needs to be configured in the PBX . Also, it needs to be enabled on the mobile phone for the myApps app. This mechanism is quite similar in v12 and v13, so you can refer to Reference14r2:Concept_Push_Notifications_for_iOS_and_Android for more details.

Also, helpful hints can be found in Howto:Troubleshoot v13 Push with myApps for Android and iOS.

App Proxy

myApps runs further Apps (such as e.g. the phoneapp) as a web page in an IFRAME of the browser myApps is running in. The App's page code is loaded either from the PBX or from an application platform (AP). This however would mean that the App's IFRAME would remain empty (a dead white screen) when the PBX or AP is not available. To make sure the App can start-up anyway, the myApps platform services feature the so-called App Proxy. This is a caching proxy that caches all the App code so it is available even in case of network failure. When myApps runs in the context of the platform services, Apps are therefore not loaded from the App source directly, but from the local App proxy.

The cached files are stored in the PCs local file system in the C:\Users\...\AppData\Local\innovaphone\myApps\appproxy</path>. There is no configuration required. However, if myApps seems to run with outdated or corrupt cached copies of the App, you can safely delete the entire directory.

Auto update

On Windows and on macOS, the myApps platform services can auto-update themselves to a common version. This is controlled by the Launcher Software Update settings under PBX/Config/myApps in the PBX.

When myApps is started or the user logs in or myApps needs to re-connect to the PBX, the platform services will use the com.innovaphone.client API to learn the desired version (launcherUpdateBuild, which is part of the API's model). If this differs from the current version, the platform services will try to download the respective new version.

{
   "mt": "ApiUpdate",
   "apis": {
       "com.innovaphone.client": {
           "@client": {
               "title": "innovaphone myApps",
               "model": {
                   "launcher": true,
                   "launcherUpdateBuild": "134906",
                   "appStoreUrl": "http://store.innovaphone.com/release/download/"
               }
           }
       }
   }
}

The installation of the downloaded version is done by the innovaphonemyAppsUpdateService. This service is installed and enabled during the initial installation of the myApps platform services. To disable auto-update, either leave the Launcher Software Update settings empty or set the service's start mode to disabled in the Windows services control panel.

Note that on Windows the update service does not work on terminal servers. Administrators must do myApps base services updates using standard windows mechanisms.

Note that on macOS if myApps has been installed from the Apple Store it is assumed that auto update from the PBX is not desired and disabled therefore.

On Android/iOS/macOS updates can be downloaded from the respective app store.

The Devices app can not update software installed on Windows PCs directly. However, when the PBX is updated using an update job in the Devices App, the Launcher Software Update settings will be updated accordingly and hence the myApps base services will ultimately also be updated to the same version.

Auto update flow on Windows

  • On start of myApps, myApps checks if an update is available and ready for installation
    • if yes, the update is installed directly, without user interaction (a popup is shown during the installation)
    • if not, myApps starts
  • if an update is available while myApps is already running, an update notification will be shown which let's the user choose to install the update now or later (the notification will then popup again after one hour)

UI elements

There are a few user interfaces provided by the platform services:

tray-icon (Windows only)

Myapps-tray.png
Allows to
  • terminate myApps
  • toggle the autostart state
  • toggle the show in task bar state
  • open the trace folder

PBX connect form

Myapps-connect.png
Allows the user to specify the connect data for the PBX (i.e. IP address or DNS name)

Advanced settings

Myapps-settings0.png
Myapps-settings.png Myapps-settings2.png Myapps-settings3.png
Allows to modify various platform dependant settings (such as e.g. the hotkey selection on Windows)

Interfaces

Provided APIs

com.innovaphone.search
access to local phone book entries by the Local phonebook access component.
com.innovaphone.launcher
display of OS specific user notifications and receipt of related user actions
com.innovaphone.notificationhandler
reports back click on a notification.
com.innovaphone.externalapps
to start external applications, see Call an external application for calls above

Used APIs

com.innovaphone.phone
used to initiate new or manipulate existing calls by the Hot keys and URL handler components.
com.innovaphone.chat
used to start a new chat by the URL handler component.
com.innovaphone.client
the model is used to learn the update settings, see Auto update above

Protocols

Media Protocol
used by apps to allocate RTP channels, see RTP service for audio, video and data above

Related App Services

none

Known limitations

Incoming call as banner on myApps for iOS
Since iOS 14 the iOS CallKit presents incoming calls as a banner leaving the original green answer button of myApps visible. Use only the blue button of the banner to accept the call or change iPhone Settings, App "Phone", "Incoming Calls" to "Full Screen" to hide the myApps user interface again during call answering.
Call answer in speakerphone mode even with active Bluetooth headset on myApps for iOS
This causes unwanted speakerphone operation if the smartphone is used with a Bluetooth car audio system. The behaviour can be changed by selecting Bluetooth Headset in this setting:
iOS Settings->Accessibility->Touch->Call Audio Routing: Automatic / Bluetooth Headset / Speaker
iOS Einstellungen->Bedienungshilfen->Tippen->Anrufaudioausgabe: Automatisch / Bluetooth-Headset / Lautsprecher
Windows Server 2016 (Windows 10 Build 1607)
windows just shows the first notification. Further notifications aren't displayed until the previous ones are removed from the notification center. Current windows builds do not show this behaviour anymore.
Problems on Mac computers with Yealink USB headsets
we have received reports that myApps quits unexpectedly on some Mac computers when a Yealink headset is plugged in. Unfortunately, we could not find out the cause yet. If you use Yealink USB headsets and have a similar issue, please open a support ticket and send myApps traces.
Poly / Plantronics headset buttons only functional if myApps is started with Rosetta
myApps macOS supports Apple M1/M2 hardware natively. However, the Poly / Plantronics headset SDK is only available for Intel platform and thus myApps needs to be started via Apple's Intel emulator Rosetta if a Poly / Plantronics headset is used. This is done with right-click on the myApps executable, Information, Open with Rosetta.
Windows surface devices may not work correctly
Chromium does not get touch keyboard events. USB Keyboards may not be recognized either.

Installation

Windows

myApps platform services are installed on Windows using the .msi file found in the myApps Windows package from store.innovaphone.com.

myApps can update itself automatically, see Auto update above.

MSI Parameters and install options

The MSI installer of myApps for Windows supports the following parameters and can be edited with Microsoft Orca. You can add your parameters in the table property.

SERVER (REG_SZ)
the PBX's server URL
OFFICEPRESENCE (REG_DWORD)
false to disable presence integration in Microsoft Office
this is also available as a check-mark when running the install manually
DISABLEHEADSETS (REG_DWORD)
true to disable headsets support, see Device handling above
EXTERNALAPPS (REG_SZ)
pre-define external applications, see Call an external application for calls above
e.g. "{""externalApps"":[{""id"":0,""name"":""Wireshark"",""path"":""C:\\Program Files\\Wireshark\\Wireshark.exe"",""param"":""test $I""}]}"
FORCERESTART (REG_DWORD)
true (or any string ...) kills myApps during the installation and restarts it for the currently logged in user, if it was running
DISABLELOCALHOST (REG_DWORD)
true to disable use of localhost string to access the local webserver. Use 127.0.0.1 instead
EXCLUDEINTERFACES (REG_SZ)
some VPN interfaces are not detected by Windows as IF_TYPE_PPP or IF_TYPE_TUNNEL and therefore the media outside VPN setting is not taking effect. With this option interfaces can be pre-defined that will not be used for media. Interfaces must be comma separated
e.g. EXCLUDEINTERFACES="172,192.168,10.10"

Current settings are stored in the registry at Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps or at Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\innovaphone\myApps

Boolean values like OfficePresence are stored in registry entries with type REG_DWORD and values 1 or 0. 0 disables the setting and 1 enables it.

iOS

myApps platform services are installed on iOS by loading innovaphone myApps from the App Store.

Configuration via MDM

the PBX's server URL can be pre-configured by specifying this dictionary in the MDM

   <plist>
       <dict>
           <key>server</key>
           <string>pbx.example.com</string>
       </dict>
   </plist>

macOS

myApps platform services might be installed directly from the Apple store. An installer package myapps.pkg and a disk image myapps.dmg is also available from the innovaphone app store. Install myapps.pkg by double-click on the file and follow the instructions of the installer. myApps becomes available in the Applications folder and can be opened by double-click. Or download and open myapps.dmg and double klick myApps. If desired integrate it into the app dock by right click, Options, Keep in the dock.

If installed from the innovaphone app store, myApps can update itself automatically, see Auto update above.

If installed from the Apple store, macOS notifies about updates on the Apple store. myApps Auto update is disabled then.

If a clean-install of the client is necessary, the folder "/Users/username/Library/Containers/myapps" needs to be deleted. To be on the safe side also delete it from the trash bin.

Configuration via MDM

the PBX's server URL can be pre-configured by specifying this dictionary in the MDM

   <plist>
       <dict>
           <key>server</key>
           <string>pbx.example.com</string>
       </dict>
   </plist>

Preferences

macOS supports preference settings that can be set via a shell command or via Mac remote management

> defaults write com.innovaphone.client-ios-14r1 server "PBX-server-URL"

The following parameters and can be set through this method:

server
the PBX's server URL

Using Sennheiser headsets

If you use Sennheiser headsets, you should also install the then-current DSEA_SDK_vversion.pkg package, after you installed the myApps client. Without that, audio will still work, but not the controls on the headset. You will need to keep that up-to-date yourself, as it is not updated by myApps's auto-update function.

Android

myApps platform services are installed on Android by loading innovaphone myApps from the Play Store.

Configuration via MDM

the PBX's server URL can be pre-configured by specifying a property "server" with string value "pbx.example.com" in the MDM.

Configuration

Server configuration

When opening myApps for the first time, the user is prompted for the Server. Usually only the hostname (DNS host name or IP address) needs to be configured.

But there are more options for special PBX configurations.

Non-standard HTTPS port
If the PBX uses a non-standard HTTPS port, it must be appended to the host name separated by a colon (:).
Example: pbx.example.com:4444 (expands to https://pbx.example.com:4444/PBX0/APPCLIENT/appclient.htm)
DynPBX module name
If the PBX is a DynPBX, the module id must be appended to PBX0 separated - (/).
Example: pbx.example.com/PBX0-1 (expands to https://pbx.example.com/PBX0-1/APPCLIENT/appclient.htm)
Softphone physical location
If user defined physical location shall be used for softphone, you can append it using a parameter #phys=.
Example: pbx.example.com#phys=slave (expands to https://pbx.example.com/PBX0/APPCLIENT/appclient.htm#phys=slave)

Example 1: PBX pbx.example.com with standard configuration

pbx.example.com

Example 2: PBX slave.example with DynPBX module ID 1, HTTPS port 4444 and physical location master

slave.example.com:4444/PBX0-1#phys=master

HTTP proxy support

myApps platform services do support operation via HTTP proxy now. If one or more proxies have been configured in the network settings of the operating system for the active network connection, HTTP CONNECT tunnels are established.

On Windows user name and password can be specified for the tunnel servers as generic credentials in the credentials manager (Anmeldeinformationsverwaltung). The name of the credentials must be the tunnel server hostname.

On Android user name and password can be specified through Android Settings, Accounts by adding a myApps HTTP Proxy Credentials account. The name of the account must be the tunnel server hostname.

Platform specific settings

When myApps runs under the myApps platform services, it will show various platform specific settings as part of its burger menu, so the user can set them. See Advanced settings in UI elements above.

Some options can also be set globally for all myApps clients in the PBX's PBX/Config/myApps Client Settings

Option Description Where to set Availability
User menu PBX Client Settings Windows iOS Android macOS
Autostart Launch myApps on login
Appear offline after controls after which idle time a user is considered inactive. See User activity above
Hotkeys Hotkeys for call dial, accept, reject. See Hot keys above
Docking Docking mode (left, right, none). See ?? above
Desktop notifications Turn on/off platform notifications. See Notifications above
VPN Disable VPN address for ICE candidate selection. See RTP ports above
Show in taskbar Show myApps in the taskbar in addition to it's tray icon.
Log flags turn on/off certain trace levels. See Troubleshooting below.
External applications define the applications available for Apps to be started. See Call an external application for calls above.
Ring in headset send ring tone for incoming to headset instead of loudspeaker.

Start parameters for Windows

On Windows, it is not possible to pass start parameters from the Chromium documentation to the myApps process.

OS Settings for Windows

Windows settings can influence the display of Desktop notifications. See Change notification settings in Windows 10 for details.

OS settings for Android

Events
The appearance of notifications can be controlled here.
Call accounts
For proper incoming call signaling, the call account myApps needs to be enabled. Note that on Samsung smartphones the call account switch likely toggles back and a few tries may need to be done until it persists. Please double-check the state.
Preferred Calling Account
Choose which calling account (myApps/SIM/..) should be used for outgoing calls initiated from within the native phone app / phone book.
Background data, unlimited data usage
Grant background data use to enable myApps to connect to the PBX immediately on an incoming call.
Overlaying
This setting is not needed if call account myApps has been enabled. Should there be a reason for not enabling call account myApps, the permission for overlaying needs to be granted on Android 10 or higher for proper call signaling.

Note: If no SIM card is installed some Android smartphones exhibit a problem dialing from the smartphone contacts. The contacts app shows a choice Select SIM card for this call but all possible dialers are greyed out. In this case make myApps the default phone app in Android settings Apps, Default apps, Telephony.

OS settings for iOS

Notifications
The appearance of notifications can be controlled in iOS Settings, myApps.

OS settings for macOS

Notifications
The appearance of notifications can be controlled in macOS Preferences, Notifications, myApps.

Troubleshooting

myApps platform services can write various traces for debugging. Trace can be turned on and off selectively in the Advanced settings.

The following trace flags can be set:

(Recommended trace options are: App, Browser, ICE, TURN, Signaling and Audio. Please do not activate other flags unless innovaphone support says otherwise)

Abbreviation code description
App 0x000000001 logs from the App Service itself
DNS 0x000000008 logs DNS requests and results
HTTP client 0x000000080 http client logs
TLS 0x000000400 TLS logs
TCP 0x000000800 TCP logs
LDS 0x000001000 local domain sockets
WebSocket client 0x000004000 logs outgoing websocket connections
App WebSocket 0x000008000 logs app websocket connections (e.g. from PBX objects to an App Service or from the UI to the App Service)
UDP 0x000200000 UDP logs
DTLS 0x000400000 logs DTLS handshake and messages
Media 0x000800000 logs media events
Media channel 0x001000000 logs RTP/SCTP media connections
ICE 0x002000000 logs ICE messages between peers
TURN 0x004000000 logs TURN messages between peers
AppSharing 0x008000000 logs AppSharing connection
Audio 0x010000000 logs Audio connection and headset events
Video 0x020000000 logs video connection and webcam events
Browser 0x040000000 logs Chromium events
AppProxy 0x080000000 logs requests which are proxied between the local webserver and the remote server
Webserver 0x200000000 enables webserver specific logs
Browser Console 0x400000000 logs browser console events
Signaling 0x800000000 enables logs in the signaling module for debugging calls

code can be or'ed and used as value for the Log flags field in PBX/Config/myApps/Client Settings.

Windows
On Windows, traces are written to the C:\Users\[UserName]\AppData\Local\innovaphone\myApps directory. If you start myApps with --log-size as parameter, you can define the maximum size of a log file (e.g. --log-size=100000000 would be 100MB for each file)
  • myApps-date-time.txt : main log file for the platform services
  • myAppsOutlookSearch-date-time.txt : log file for the Outlook phone book access
  • myAppsHookController-date-time.txt : log file for the hot-key interceptor (see Hot keys)
myApps update installation traces are written to the %windir%\temp\ directory.
  • myAppsInstall.txt: MSI installation file
myApps update service traces are written to the %ALLUSERSPROFILE%\innovaphone\myAppsUpdateService directory.
  • myAppsUpdateService-date-time.txt: myApps update service traces
Android
traces can be sent by e-mail.
also, an Android device might also be connected to a PC via an USB cable to get the traces. The files can be found in Android/data/com.innovaphone.clientandroid/files
iOS
traces can be sent by e-mail.
macOS
traces can be sent by e-mail.
also, the files can be found in ~/Library/Containers/com.innovaphone.client-ios/Data/Documents/. Press Alt+N followed by space to get tilde ~.

Known Problems

Known Problems

Related Articles