Reference12r2:Concept Push Notifications for myPBX iOS and Android: Difference between revisions

From innovaphone wiki
Jump to navigation Jump to search
 
(68 intermediate revisions by 10 users not shown)
Line 1: Line 1:
[[Category:Concept|iOS Softwarephone]]
[[Category:Concept|iOS Softwarephone]]
With firmware version 12r2 sr20 the PBX is able to send Push notifications to the Apple Push Notification service (APNs). As a result, incoming calls are also indicated when the myPBX app is not started or runs in the background mode. The PBX is using a service provided by innovaphone AG at ''services.innovaphone.com'' to send the push notifications to Apple APNs. No call meta data is transmitted, the push notification is only used to wake up the myPBX app.
With firmware version 12r2 sr20 the PBX is able to send Push notifications to the Apple (APNs) or Android Push Notification services. As a result, incoming calls are also indicated when the myPBX app is not started or runs in the background mode. The PBX is using a service provided by innovaphone AG at ''push.innovaphone.com'' to send the push notifications to the vendors Notification Service. No call meta data is transmitted, the push notification is only used to wake up the myPBX app. Only one Push object is needed for a system.


== Requirements ==
== Requirements ==
Line 7: Line 7:
* Internet access via HTTPS
* Internet access via HTTPS


=== myPBX iOS ===
=== myPBX for iOS or Android ===
* Version 12r2sr20 [125501] or higher
* iOS since Version 12r2sr20
* Android since Version 12r2sr23


=== iOS ===
=== Smartphone ===
* Version 12.0.1 or higher
* iOS Version 12.0.1 or higher
* Android Version 6.0 or higher


== Configuration ==
== Configuration ==
=== PBX ===
=== PBX ===
* Check the '''System Name''' of the PBX - it must be globally unique. We recommend to use the DNS domain name of the company using the PBX.
* Check the '''System Name''' of the PBX - it must be globally unique. We recommend using the DNS domain name of the company using the PBX.
* If not already done, [[Howto:Fix_a_Device_with_a_self-signed_Device_Certificate | create a certificate for your IPVA]]. This is not needed for gateway-based PBXs
* Create a new PBX object of type [[Reference12r2:PBX/Objects/Push|Push]].
** The Name of the Push object is case-sensitive and will be used in the User objects to identify the push service.
** Set any password, it is not used for authentication but needed in the v12 PBX to start the websocket connection to the Push-URL
** Navigate to the Push tab of the Push object and configure as Push-URL <code>https://push.innovaphone.com/push/ws</code> and click on OK
* Navigate to [[Reference9:General/Certificates]] and trust to certificate ''*.innovaphone.com'' that should appear on the list of rejected certificates. You have to do this on every slave and/or standby PBX.
(as of version 12r2 SR22 the certificate ''*.innovaphone.com'' is already included in the firmware, so you can skip this step)


* Create a new PBX object of type [[Reference12r2:PBX/Objects/Push|Push]]. The Name of the Push object is case sensitive and will be used in the User objects to identify the push service. Do not use Internet Explorer or Edge
[[Image:Rejected certs.png]]
* The trust list should look like this afterwards:
[[Image:Trusted certs.png]]
 
=== User Objects ===
* For each user who is to receive push notifications on his myPBX-application, the ''Name'' of the push-object must be entered in his userobject at the ''Push'' field in the ''User'' tab.
 
=== iOS specific settings ===
* On the iOS device make sure to allow push notifications for the myPBX app.
 
=== Android specific settings ===
Push notifications are now better supported. There are new parameters in myPBX for Android "Settings/App Settings/Push notifications".


* Make sure to click on ''OK'' or ''Apply'' button before proceeding with next steps.
* Auto: (default setting) Operation without push with transition to "Active" at the first reception of a push notification.


* Navigate to the Push tab of the Push object and provide a valid E-Mail address that can be used to send an HTTP link for verification.
* On: Operation with Push. myPBX terminates after 10 seconds of idle time and switches to "Active" the first time a push notification is received.
** E-Mail must not be an E-Mail already used as E-Mail of another object.
* Press ''Connect'' button, '''do not close the window''' until E-Mail verification is done.


* Wait for the E-Mail and open the verification link in the browser.
* Off: Operation without Push. myPBX tries to keep the registration permanently active.


* Press ''OK'' button after ''Connect succeeded'' appears.
* Active: Operation with Push. Notifications have already been received successfully.


* Navigate to [[Reference9:General/Certificates]] and trust to certificate ''*.innovaphone.com'' that should appear on the list of rejected certificates. You have to do this on every slave and/or standby PBX.
==How it works==
*First of all the mobile phone opens a connection to Apple or Google. If the phone is in a restricted Wi-Fi network (and has no GSM/LTE data connection to receive Push notifications), the appropriate ports of the firewall needs to opened as explained in the documentation of [https://support.apple.com/en-us/HT203609 apple] or [https://firebase.google.com/docs/cloud-messaging/concept-options#ports_and_your_firewall google].
*If the app is in the background and the user receives an incoming call, the App needs to be woken.
*Therefore the PBX sends a push request to innovaphones Push instance (push.innovaphone.com)
*push.innovaphone.com forwards the request to the Apple or Google Push service.
*The respective vendor sends the push request to the mobile phone and uses the ports opened in the first step.
*The app then registers at the PBX via H.323.
*In the last step the incoming call is sent (using the H.323 registration) to the mobile phone.


[[Image:Rejected certs.png]]
[[Image:push.gif]]


=== Privacy ===
When using the Push service the PBX will send following data/information to [[Howto:Innovaphones_public_services|innovaphone]]:


* The trust list should look like this afterwards:
* Notification Type (plain)
[[Image:Trusted certs.png]]
** ''call'' or ''notification''


* On a User object where a myPBX client is registering, navigate to the ''User'' tab and put the Name of the Push object in to the ''Push'' field.
* Detailed informations (enrypted)
** ''call''
*** number
*** name
*** callflow
** ''notification''
*** title
*** content


=== myPBX iOS ===
The informations will send from the PBX to the Smartphone via the innovaphone Push-Service and forwarded to the Google/Apple push system. The Smartphone receives a decryption key via websocket or H323 (you have to use the secure version to transmit the key encrypted) from the PBX. Neither the push service at innovaphone nor the Apple / Google push system can read the encrypted information.
* On the iOS device make sure to allow push notifications for the myPBX app.


== Troubleshooting ==
== Troubleshooting ==
* Check the trust list for certificate of the innovaphone AG.
=== Initial configuration ===
* Make sure the PBX can resolve the DNS host ''services.innovaphone.com''.
* Check the trust list for the certificate of the innovaphone AG.
* Make sure the PBX can reach ''services.innovaphone.com'' via HTTPS.
* Make sure the PBX can resolve the DNS host ''push.innovaphone.com''.
* Make sure the PBX can reach ''push.innovaphone.com'' via HTTPS and Secure Websocket.
* Make sure you do not use Internet Explorer or Edge.
* Make sure you do not use Internet Explorer or Edge.
* Make sure the mail used for Push is not used by another PBX object.
* Make sure the mail used for Push is not used by another PBX object.
* If there are problems with setting up the Push Service or if individual subscribers can not be reached, open a Support Ticket.
* If there are problems with setting up the Push Service or if individual subscribers can not be reached, open a Support Ticket.
* Only if you are not sure if the push service is operational at the moment, open a support ticket and send an email to ''push-support@innovaphone.com''.
* Make sure the myPBX App has Push Notifications allowed in the OS settings.
** iOS: Also make sure, the iOS device has a valid GSM data connection or a WiFi connection with the internet, especially TCP port 5223 (see [https://developer.apple.com/library/archive/technotes/tn2265/_index.html Troubleshooting Push Notifications] article by Apple).
* if nothing helps, open a support ticket with the PBX configuration with standard password and the Email address used to register the push object.
 
=== Push looses connected state ===
* If the push object was already connected, and for some reason (after a firmware update or network connection problems), the object is not connected anymore, please check that PBX can reach and resolve "push.innovaphone.com" and the innovaphone AG certificate is still in the trust list.
 
===myPBX for Android push configuration checks ===
 
Go through the following steps, to check that in your Android phone, Push is configured correctly.
 
[[Image:Concept_Push_Notifications_for_myPBX_iOS_and_Android_1.jpg]]
 
Open myPBX, and check that the registration for the user is up, press the wheel symbol on the top left, then App Settings
# Tap "Calling account" and check that myPBX slide is enabled (to the right)
#Back to the App settings page and tap on "Data Saver" and check that "background data" is enabled.
#Back on the app settings page, tap on "overlaying" and check that "Allow display over other apps" is enabled.
#Check that "push notifications" is enabled (on)
 
On Huawei devices starting 2020 it might be necessary to clear the cache of the app "HMS Core" in order to make push notifications work.
 
===myPBX for iOS push configuration checks ===
Go through the following steps, to check that in your iPhone, Push is configured correctly.
#Open your Settings app
#Tap Notifications on the left-hand side of your screen.
#Find the myPBX app and make sure notifications are allowed
===innovaphone Push Service check===
Consult [https://status.innovaphone.com/ innovaphone services overview] to check if any unexpected service outage concerning push exists


== Known limitations ==
== Known limitations ==
Line 56: Line 117:


=== Call accept time for users with myPBX client only ===
=== Call accept time for users with myPBX client only ===
In case no other endpoints are registered on the User object, but only the myPBX iOS client, the PBX will not provide any alerting message to the calling party, until the myPBX client on the iOS device restores the registration to the PBX via push notification. In case no registration appears after 10 seconds, the PBX will send "no user responding" as cause code to the calling party.
In case no other endpoints are registered on the User object, but only the myPBX client, the PBX will not provide any alerting message to the calling party, until the myPBX client on the device restores the registration to the PBX via push notification. In case no registration appears after 10 seconds, the PBX will send "no user responding" as cause code to the calling party.
 
=== Push is not working if no device registered and a CFNR is configured  ===
In case no endpoints are registered on the User object, and there is also a CFNR configured. The Push will not be executed and as result the CFNR will be exectuted immediately.
 
This is a known limitation and is under investigation.
 
A temporary workarround which will fix this issue has been found.
Solution: Create a Forking on the users object to its own number !
 
Push will work and if the device is able to register within 10 seconds the myPBX app will ring and the CFNR will be executed with the configured timer.
 
 
=== Push does work even when the myPBX app is switched off ===
The Push mechanism will also work when the myPBX app is turned off. This can lead to complains about receiving calls after working ours or during holidays.
 
There is one solution to prevent the myPBX app from ringing. During Off-bussines hours you can select the DND do not disturb option. Calls will be still signaled, but the phone will not ring.
 
For longer periods or if you don't want the myPBX to receive calls at all during Holidays.
 
First shut it down within the app (and swipe to close) so that the myPBX is realy not running anymore.
Then in the iPhone settings, within notifactions, disable the notification for myPBX.
This will prevent the myPBX app to be started again.
 
An alternative method introduced in August 2019 to prevent myPBX from being started is to configure "Settings", "App settings", "Start automatically" to "Never". Whenever myPBX is closed via the button on the settings screen, a push notification will not start it. Once myPBX has been opened again, push notifications will continue to take effect.
 
This is a way how the user can stop the push-functionality themself. Of course, after the holiday they have to enable the push notification in the iPhone again themself.
 
=== Same systemname in second, third, or multiple PBX with v12r2 ===
 
Note: The information below only applies to PBX systems with v12r2, in v13r1 and higher this limitation no longer exists.
 
Try to avoid having the same systemname in different PBX's. If you can't avoid it and the Customer has the same systemname in more than one PBX and there is no replication between theses PBX's like in a master-slave scenario or if it is a separate master with the same systemname:
 
The customer is NOT able to setup a Push Object like described in this wiki in the second system or even the setup will result in a disconnect of the Push object in the first system.
 
In this case there are two options to solve this problem without that the customer has to change the systemname.
 
Option 1: 
 
innovaphone has to add the systemname/domain manual in the Push Admin and create a secret password and send this to the customer.
 
The Customer has to create a Push Object different as described in the wiki. In all systems where they create the Push Object, they must use the by innovaphone created password and leave the emailaddress field empty!
 
For this scenario you have to create a Support Ticket
 
Option 2:
 
Option2 is only possible if the PBX password of the different systems is exactly the same.
 
The customer can copy the Push object from the config of the first working Push object into the config of the second system.
 
This can be done by download both configs. Copy & paste the Pushobject to the config of the system without Push Object.
 
Upload the config. Be aware a system reboot is necessary.
 
=== Customer uses HTTP-Proxy for Internet access ===
The WebSocket client does not support HTTP-Proxy connections, more specific HTTP Tunneling using HTTP CONNECT - therefore Push notifications will not work. See also: [[Reference13r1:Services/HTTP/Client#Proxy_Servers]]
 
== Related Articles ==
* [[Howto:Innovaphones_public_services]]
* [[Howto:Troubleshoot v13 Push with myApps for Android and iOS]]
* [[Support:12r2/13r1_legacy_push_server_will_be_migrated_to_push.innovaphone.com]]

Latest revision as of 16:48, 5 February 2024

With firmware version 12r2 sr20 the PBX is able to send Push notifications to the Apple (APNs) or Android Push Notification services. As a result, incoming calls are also indicated when the myPBX app is not started or runs in the background mode. The PBX is using a service provided by innovaphone AG at push.innovaphone.com to send the push notifications to the vendors Notification Service. No call meta data is transmitted, the push notification is only used to wake up the myPBX app. Only one Push object is needed for a system.

Requirements

PBX

  • Firmware version 12r2sr20 [125501] or higher
  • Internet access via HTTPS

myPBX for iOS or Android

  • iOS since Version 12r2sr20
  • Android since Version 12r2sr23

Smartphone

  • iOS Version 12.0.1 or higher
  • Android Version 6.0 or higher

Configuration

PBX

  • Check the System Name of the PBX - it must be globally unique. We recommend using the DNS domain name of the company using the PBX.
  • If not already done, create a certificate for your IPVA. This is not needed for gateway-based PBXs
  • Create a new PBX object of type Push.
    • The Name of the Push object is case-sensitive and will be used in the User objects to identify the push service.
    • Set any password, it is not used for authentication but needed in the v12 PBX to start the websocket connection to the Push-URL
    • Navigate to the Push tab of the Push object and configure as Push-URL https://push.innovaphone.com/push/ws and click on OK
  • Navigate to Reference9:General/Certificates and trust to certificate *.innovaphone.com that should appear on the list of rejected certificates. You have to do this on every slave and/or standby PBX.

(as of version 12r2 SR22 the certificate *.innovaphone.com is already included in the firmware, so you can skip this step)

Rejected certs.png

  • The trust list should look like this afterwards:

Trusted certs.png

User Objects

  • For each user who is to receive push notifications on his myPBX-application, the Name of the push-object must be entered in his userobject at the Push field in the User tab.

iOS specific settings

  • On the iOS device make sure to allow push notifications for the myPBX app.

Android specific settings

Push notifications are now better supported. There are new parameters in myPBX for Android "Settings/App Settings/Push notifications".

  • Auto: (default setting) Operation without push with transition to "Active" at the first reception of a push notification.
  • On: Operation with Push. myPBX terminates after 10 seconds of idle time and switches to "Active" the first time a push notification is received.
  • Off: Operation without Push. myPBX tries to keep the registration permanently active.
  • Active: Operation with Push. Notifications have already been received successfully.

How it works

  • First of all the mobile phone opens a connection to Apple or Google. If the phone is in a restricted Wi-Fi network (and has no GSM/LTE data connection to receive Push notifications), the appropriate ports of the firewall needs to opened as explained in the documentation of apple or google.
  • If the app is in the background and the user receives an incoming call, the App needs to be woken.
  • Therefore the PBX sends a push request to innovaphones Push instance (push.innovaphone.com)
  • push.innovaphone.com forwards the request to the Apple or Google Push service.
  • The respective vendor sends the push request to the mobile phone and uses the ports opened in the first step.
  • The app then registers at the PBX via H.323.
  • In the last step the incoming call is sent (using the H.323 registration) to the mobile phone.

Push.gif

Privacy

When using the Push service the PBX will send following data/information to innovaphone:

  • Notification Type (plain)
    • call or notification
  • Detailed informations (enrypted)
    • call
      • number
      • name
      • callflow
    • notification
      • title
      • content

The informations will send from the PBX to the Smartphone via the innovaphone Push-Service and forwarded to the Google/Apple push system. The Smartphone receives a decryption key via websocket or H323 (you have to use the secure version to transmit the key encrypted) from the PBX. Neither the push service at innovaphone nor the Apple / Google push system can read the encrypted information.

Troubleshooting

Initial configuration

  • Check the trust list for the certificate of the innovaphone AG.
  • Make sure the PBX can resolve the DNS host push.innovaphone.com.
  • Make sure the PBX can reach push.innovaphone.com via HTTPS and Secure Websocket.
  • Make sure you do not use Internet Explorer or Edge.
  • Make sure the mail used for Push is not used by another PBX object.
  • If there are problems with setting up the Push Service or if individual subscribers can not be reached, open a Support Ticket.
  • Make sure the myPBX App has Push Notifications allowed in the OS settings.
    • iOS: Also make sure, the iOS device has a valid GSM data connection or a WiFi connection with the internet, especially TCP port 5223 (see Troubleshooting Push Notifications article by Apple).
  • if nothing helps, open a support ticket with the PBX configuration with standard password and the Email address used to register the push object.

Push looses connected state

  • If the push object was already connected, and for some reason (after a firmware update or network connection problems), the object is not connected anymore, please check that PBX can reach and resolve "push.innovaphone.com" and the innovaphone AG certificate is still in the trust list.

myPBX for Android push configuration checks

Go through the following steps, to check that in your Android phone, Push is configured correctly.

Concept Push Notifications for myPBX iOS and Android 1.jpg

Open myPBX, and check that the registration for the user is up, press the wheel symbol on the top left, then App Settings

  1. Tap "Calling account" and check that myPBX slide is enabled (to the right)
  2. Back to the App settings page and tap on "Data Saver" and check that "background data" is enabled.
  3. Back on the app settings page, tap on "overlaying" and check that "Allow display over other apps" is enabled.
  4. Check that "push notifications" is enabled (on)

On Huawei devices starting 2020 it might be necessary to clear the cache of the app "HMS Core" in order to make push notifications work.

myPBX for iOS push configuration checks

Go through the following steps, to check that in your iPhone, Push is configured correctly.

  1. Open your Settings app
  2. Tap Notifications on the left-hand side of your screen.
  3. Find the myPBX app and make sure notifications are allowed

innovaphone Push Service check

Consult innovaphone services overview to check if any unexpected service outage concerning push exists

Known limitations

Push object creation and configuration of the connection is not working with Internet Explorer/Edge.

Use Firefox or Chrome to create and configure the Push object.

Call accept time for users with myPBX client only

In case no other endpoints are registered on the User object, but only the myPBX client, the PBX will not provide any alerting message to the calling party, until the myPBX client on the device restores the registration to the PBX via push notification. In case no registration appears after 10 seconds, the PBX will send "no user responding" as cause code to the calling party.

Push is not working if no device registered and a CFNR is configured

In case no endpoints are registered on the User object, and there is also a CFNR configured. The Push will not be executed and as result the CFNR will be exectuted immediately.

This is a known limitation and is under investigation.

A temporary workarround which will fix this issue has been found.

Solution: Create a Forking on the users object to its own number !

Push will work and if the device is able to register within 10 seconds the myPBX app will ring and the CFNR will be executed with the configured timer.


Push does work even when the myPBX app is switched off

The Push mechanism will also work when the myPBX app is turned off. This can lead to complains about receiving calls after working ours or during holidays.

There is one solution to prevent the myPBX app from ringing. During Off-bussines hours you can select the DND do not disturb option. Calls will be still signaled, but the phone will not ring.

For longer periods or if you don't want the myPBX to receive calls at all during Holidays.

First shut it down within the app (and swipe to close) so that the myPBX is realy not running anymore. Then in the iPhone settings, within notifactions, disable the notification for myPBX. This will prevent the myPBX app to be started again.

An alternative method introduced in August 2019 to prevent myPBX from being started is to configure "Settings", "App settings", "Start automatically" to "Never". Whenever myPBX is closed via the button on the settings screen, a push notification will not start it. Once myPBX has been opened again, push notifications will continue to take effect.

This is a way how the user can stop the push-functionality themself. Of course, after the holiday they have to enable the push notification in the iPhone again themself.

Same systemname in second, third, or multiple PBX with v12r2

Note: The information below only applies to PBX systems with v12r2, in v13r1 and higher this limitation no longer exists.

Try to avoid having the same systemname in different PBX's. If you can't avoid it and the Customer has the same systemname in more than one PBX and there is no replication between theses PBX's like in a master-slave scenario or if it is a separate master with the same systemname:

The customer is NOT able to setup a Push Object like described in this wiki in the second system or even the setup will result in a disconnect of the Push object in the first system.

In this case there are two options to solve this problem without that the customer has to change the systemname.

Option 1:

innovaphone has to add the systemname/domain manual in the Push Admin and create a secret password and send this to the customer.

The Customer has to create a Push Object different as described in the wiki. In all systems where they create the Push Object, they must use the by innovaphone created password and leave the emailaddress field empty!

For this scenario you have to create a Support Ticket

Option 2:

Option2 is only possible if the PBX password of the different systems is exactly the same.

The customer can copy the Push object from the config of the first working Push object into the config of the second system.

This can be done by download both configs. Copy & paste the Pushobject to the config of the system without Push Object.

Upload the config. Be aware a system reboot is necessary.

Customer uses HTTP-Proxy for Internet access

The WebSocket client does not support HTTP-Proxy connections, more specific HTTP Tunneling using HTTP CONNECT - therefore Push notifications will not work. See also: Reference13r1:Services/HTTP/Client#Proxy_Servers

Related Articles