Mobile Application
The mobile operator application is publicly available in the Apple App Store and Google Play. To use it, provisioning (initial setup) is required, during which the profile of a specific UCS user is inserted into the application.
The application uses PUSH notifications, which are authorized using the certificates of the application developer. These certificates cannot be provided directly to UCS users; therefore, notifications are delivered through the INSOFT service.
Initial Setup
- Contact INSOFT and request the credentials for the UCS service.
- Enter the received credentials in the administration interface under ☰ System → Parameters → UCS. These include: INSOFT services URL, INSOFT services Client ID, and INSOFT services PSK.
- Verify that the address for external access to UCS is correctly set: ☰ System → Parameters → Networking → System public hostname
- For the roles of users (☰ System → Roles) who will use the mobile application, configure the following parameters:
- DISA number for outgoing calls – the UCS phone number through which the application makes outgoing calls in GSM mode. When this mode is used, calls are routed through UCS, which allows them to be recorded and enables showing a caller ID different from the mobile phone number.
- Available application features – features of the application available to users:
- dial – calling (softphone as well as GSM calls)
- chat – company chat
- call history – history of completed calls
- Require FaceID – biometric authentication is required each time the application is opened
- Allow VoIP calls (uPhone) – enable softphone functionality
- For self-service provisioning by the user, it is necessary to enable QR code generation in the operator application.
In the file
/etc/ucs/operator/config.js, set the parameterwindow.ucsOperator.ff.passwordlessLogintotrue. Then deploy the changes with the command:ucs-operator-deploy
Provisioning by E-mail
If self-service provisioning using QR codes is not enabled, it is possible to send the user an e-mail with a link that inserts the profile into the application.
The text of the e-mail is configured in the administration interface under: ☰ System → Parameters → UCS → UCS Mobile Application provisioning e-mail
Sending the e-mail to the user is done through the administration interface: ☰ System → Users → 🔑 → Mobile device application → Send provisioning e-mail
Application Firewall
The interface for mobile phones can be placed on a separate server running Traefik, and possibly also a STUN server and uPhone.
Traefik
The minimal Traefik configuration is the distribution file 05_uauth.yaml, in which you set
http.middlewares.uAuth.forwardAuth.address = "https://ucs.zakaznik.cz:3000" and
http.services.auth.loadBalancer.servres[].url = "https://ucs.zakaznik.cz:5639".
http:
routers:
ucsApiWs:
tls: {} # Accessible only via HTTPS
rule: "PathPrefix(`/ws`)"
middlewares:
- https
- cors
- uAuth
service: ucsApi
ucsApiOptions:
tls: {} # Accessible only via HTTPS
rule: "Path(`/`) && Method(`OPTIONS`)"
middlewares:
- https
- cors
service: ucsApi
services:
ucsApi:
loadBalancer:
servers:
- url: "https://ucs.zakaznik.cz"
http:
routers:
ucsCoreSecure:
tls: {} # Accessible only via HTTPS
rule: "PathPrefix(`/JSON`)"
middlewares:
- https
- cors
- uAuth
service: ucsCore
services:
ucsCore:
loadBalancer:
servers:
- url: "http://ucs.zakaznik.cz"
http:
routers:
lightLogHttp:
tls: {} # Accessible only via HTTPS
rule: "PathPrefix(`/llog/http`)"
middlewares:
- https
- cors
- uAuth
service: lightLogHttp
services:
lightLogHttp:
loadBalancer:
servers:
- url: "http://ucs.zakaznik.cz"
STUN server
The STUN/ICE server can run on a private IP; in that case, the external-ip parameter must be set.
For the local uPhone to correctly detect the public IP address, the server needs to listen on the
private IP (not on the loopback 127.0.0.1).
listening-ip=10.20.30.40
external-ip=80.70.60.50
min-port=10000
max-port=20000
no-tcp
no-tls
no-dtls
no-tcp-relay
syslog
stun-only
uPhone
Only the parameters that require attention are listed here. The range of stun_candidate_min_port
and stun_candidate_max_port must match the min-port and max-port range of the STUN server.
The IP address of the stun_server parameter must not be 127.0.0.1.
[sip]
interface = ens123
[webrtc]
stun_server = stun:10.20.30.40:3478
stun_candidate_min_port = 10000
stun_candidate_max_port = 20000
[nats]
url = nats://10.20.30.10:4222