Reference16r1:Concept App Service Users
The App Services Users is an App Service which can be installed on an innovaphone App Platform. It is used to administrate the users on a innovaphone PBX and also stores additional profile information. It provides Apps for users and for admins for various purposes.
Applies To
- innovaphone PBX from version 13r1
Technical Overview
Apps
Profile App (innovaphone-profile)
This is an App, where the user can edit his own profile data. Here the personal data, the profile picture, the privacy filters and the call forwarding can be edited. Also leave and join groups is possible from this app. The provisioning of Phones, Softphones and Hostdesking can be done too.
It is possible to configure the mode "account" on the Profile PBX Object. Then if the "account" mode is assigned to an user, no right menu will be displayed and only the account tab will be available for the given user.
Parameters:
- Websocket
- to establish the connection with the PbxAdminApi
- TableUsers
- gives access to the replication of users from and to the PBX
- Admin
- gives access to the PbxAdminApi, needed to get data from the PBX such as the config templates, the DNS name of the PBX, the current domain...
- Services
- needed to use the Devices API (com.innovaphone.devices), so the phones can be provisioned
- Devices-API
- gives access to the Devices App, which is needed for the provisioning of phones
Users App (innovaphone-users)
This is an App, where all the users on the App Service Database are displayed (except the ones that have unchecked the Visible attribute on Profile for the current domain).
Users Admin App (innovaphone-usersadmin)
This is the administration app for the App Service. There all the users and unverified users on the current App Service can be managed. The provisioning of Phones, Softphones and Hostdesking can also be done here for several users at once. The configuration parameters can also be set here (i.e. the password policy 1.upper case letters | 2.lower case letters | 3.numeric digits | 4.special characters, SMTP settings, privacy settings...). The verification link will only be valid for 24 hours, after that a new registration must be started.
From V16r1 onwards, valid special characters for passwords are: !@#$%^&*()_-+={}|;:<>/?`
Starting with 16r1 you also can configure OAuth2 Authentications. You can have a look into our HowTo Article for assistance: Howto16r1:Configure OAuth2 E-Mail
Users APIs (innovaphone-usersapis)
This is a hidden App, which provides the Search API (com.innovaphone.search) and the Avatar API (com.innovaphone.avatar). The Search API is used by Phone, Softphone and Chat to search users from the App Service Database. The Avatar API is used by myApps, Phone, Softphone, Chat, Users and Fax to obtain the profile pictures.
Parameters:
- Hidden
- UsersAPIs must be a hidden App
- Websocket
- to establish the authentication parameters for the Avatar API (com.innovaphone.avatar)
PBX Manager Plugins
Users
With the Users plugin App objects can be created, edited and deleted for Users, UsersAdmin, UsersAPIs and Profile Apps on the PBX. Some configuration parameters can be edited here too on "Change Configuration". These are:
- Which Profile App use as default
- if there is more than one Profile App, the one selected here will be linked to the "Edit Profile" button on myApps.
- Allow to create a user account using a web registration form
- if this option is enable, on myApps Login the link to the registration form will be displayed.
- Allow users to reset the password using a web form
- if this option is enable, on myApps Login the link to the password forgotten form will be displayed.
- Allow users to delete their own accounts
- if this option is enable, a "Delete account" button will be displayed on Profile.
Import/Export with CSV/XML on Users Admin App
General
- Before importing, each user is checked against the existing users. A user is not imported if its ID (cn) or username (h323) already exists, or if its extension conflicts with an existing extension in the same node. This means existing users are not updated by an import.
- The password is not imported. Imported users get the default import password from the app configuration. In CSV files a password can be given in an optional &pwd column.
CSV
The CSV file uses a semicolon ; as field separator. Quoting is not supported, so values must not contain a semicolon. The file must be UTF-8 with BOM (as written by the export); files without BOM are read as ISO-8859-1.
The first line is the header line. Each column contains a designator which defines the field that the column values are assigned to. The columns can be in any order. The columns &cn, &h323, &e164, &config, &node and &pbx are mandatory in the header, otherwise the import is aborted. Rows without ID or username are skipped.
| Designator | Field | Example | Remark |
|---|---|---|---|
| &cn | ID | Mario Rossi | Mandatory, must be unique. &n is accepted for older files |
| &h323 | Username | mro | Mandatory, used as key, must be unique |
| &pwd | Password | Optional, not exported. If missing, the default import password is used | |
| &fn | First name | Mario | |
| &ln | Last name | Rossi | |
| &e164 | Extension | 13 | Mandatory column, must be unique within the node |
| &config | Config Template | Config User | Mandatory column |
| &node | Node | root | Mandatory column |
| &pbx | PBX Name | hq | Mandatory column |
| pseudo/&type | Executive/Secretary | executive | Either "executive" (Executive/Secretary object) or "" (empty, normal user) |
| &dn | Display Name | Dottore Mario Rossi | |
| &em | mario.rossi.dvl-ckl2@class.local | Must be unique. One address per user | |
| grp/&name | Group name | group1 | |
| grp/&mode | Group mode | active | Either "active" or "" (empty) |
| grp/&dyn | Dynamically in, out or static | in | Either "in" (user is currently in the group), "out" (user is currently off the group) or "" (empty, user is statically in the group) |
| grp/&active | Group active | true | Either "true" (active member), "false" (not active member) or "" (empty, same as "false") |
| device/&hw | Hardware Id | 0090333e407e | |
| device/&text | Name | Phone IP112 | |
| device/&app | App | phone | |
| device/&admin | PBX Pwd | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| device/&nofilter | No IP Filter | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| device/&tls | TLS Only | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| device/&nomob | No Mobility | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| device/&trusted | Reverse Proxy | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| device/&sreg | Single Reg. | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| device/&mr | Media Relay | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| device/&nosrtp | No SRTP | true | Either "true" (checked), "false" (not checked) or "" (empty, same as false) |
| gws/&name | DECT system | dect1 | |
| gws/&idle | Idle Display | Mario | |
| gws/&ipei | IPEI | 0123456789 | |
| gws/&ac | AC | 1234 |
Each row holds one group, one device and (from 17) one DECT entry. To import more of them for a user, add further rows with the same username; for these rows only the grp/, device/ and (from 17) gws/ columns are used.
The CSV export writes all columns above except &pwd, but only the first group, device and (from 17) DECT entry of each user. Visibility (allow), call diversions and mobility are only supported with XML.
Example:
&cn;&h323;&e164;&config;&node;&pbx;pseudo/&type;&dn;&em;&fn;&ln;grp/&name;grp/&mode;grp/&dyn;grp/&active;device/&hw;device/&text;device/&app;device/&admin;device/&nofilter;device/&tls;device/&nomob;device/&trusted;gws/&name;gws/&idle;gws/&ipei;gws/&ac Mario Rossi;mro;13;Config User;root;hq;;Dottore Mario Rossi;mario.rossi.dvl-ckl2@class.local;Mario;Rossi;group1;active;in;true;0090333e407e;Phone IP112;phone;true;;;;;dect1;Mario;0123456789;1234 Boss;boss;14;Config User;root;hq;executive;Boss;;;;;;;;;;;;;;;;;;;;
XML
With the XML format, more complete information about the users can be provided. A user is only imported if it has the attributes h323, node and loc. Objects with a pseudo element other than <pseudo type="executive"/> are skipped.
User
| Attribute | Field | Example | Remark |
|---|---|---|---|
| cn | ID | Mario Rossi | Must be unique |
| guid | GUID | ac47a659-8a81-4595-9e73-9afba80d9d31 | Exported only, ignored on import (a new GUID is created) |
| h323 | Username | mro | Mandatory, used as key, must be unique |
| fn | First name | Mario | |
| ln | Last name | Rossi | |
| e164 | Extension | 13 | Must be unique within the node |
| pwd, pwdx | Password, encrypted password | Exported only, ignored on import | |
| apps-my | List of apps attached to homescreen | "users,chat,phone" | Must be separated by , |
| config | Config Template | ConfigUser | |
| node | Node | root | Mandatory |
| loc | PBX Name | master | Mandatory |
| dn | Display Name | Dottore Mario Rossi | |
| mario.rossi.dvl-ckl2@class.local | Must be unique. Multiple addresses must be separated by ; |
Pseudo
Optional child element of user.
| Attribute | Field | Example | Remark |
|---|---|---|---|
| type | Executive/Secretary | executive | Only "executive" is supported. Users with any other pseudo type are skipped |
Device
| Attribute | Field | Example | Remark |
|---|---|---|---|
| hw | Hardware ID | SwPh_mro_60929ce7 | |
| text | Name | Softphone | |
| app | App | softphone | |
| admin | PBX Pwd | true | Either "true" (checked) or not present (not checked) |
| no-filter | No IP Filter | true | Either "true" (checked) or not present (not checked) |
| tls | TLS only | true | Either "true" (checked) or not present (not checked) |
| no-mob | No Mobility | true | Either "true" (checked) or not present (not checked) |
| trusted | Reverse Proxy | true | Either "true" (checked) or not present (not checked) |
| sreg | Single Reg. | true | Either "true" (checked) or not present (not checked) |
| mr | Media Relay | true | Either "true" (checked) or not present (not checked) |
| nosrtp | No SRTP | true | Either "true" (checked) or not present (not checked) |
Allow
| Attribute | Field | Example | Remark |
|---|---|---|---|
| name | Name of the visibility filter | @test1.com | |
| grp | Name is a group | true | Either "true" (name is a group) or not present |
| _online | Online | true | Inverted: "true" means online is NOT checked, not present means online is checked |
| visible | Visible | true | Either "true" (checked) or not present (not checked) |
| presence | Presence | true | Either "true" (checked) or not present (not checked) |
| otf | On the phone | true | Either "true" (checked) or not present (not checked) |
| note | Presence note | true | Either "true" (checked) or not present (not checked) |
| dialog | Calls | true | Either "true" (checked) or not present (not checked) |
| ids | Calls with Number | true | Either "true" (checked) or not present (not checked) |
Grp
| Attribute | Field | Example | Remark |
|---|---|---|---|
| name | Name of the group | grp1 | |
| mode | Active | active | Either "active" (checked) or not present (not checked) |
| dyn | Dynamically in, out or static | in | Either "in" (dynamically in), "out" (dynamically out) or not present (static) |
| active | Active | true | Either "true" (checked) or not present (not checked) |
Cd
| Attribute / Element | Field | Example | Remark |
|---|---|---|---|
| type | Call diversion type | cfu | Either "cfu" (always), "cfb" (busy) or "cfnr" (no response) |
| precedence | Precedence | true | Either "true" (checked) or not present (not checked) |
| bool | Boolean | booltest | |
| bool-not | Not | true | Either "true" (checked) or not present (not checked) |
| <ep> | Name/Number to forward the call | <ep e164="1234"/> | Mandatory child element with attribute e164 or h323 |
| <src> | Filters applied | <src type="do"><ep e164="789" ext="true" fwd="clid"/></src> | Optional child element |
Fork
| Attribute | Field | Example | Remark |
|---|---|---|---|
| hw | Hardware ID | Smartphone | |
| bool | Boolean | booltest | |
| bool-not | Not | true | Either "true" (checked) or not present (not checked) |
| e164 | Number | 1234 | |
| h323 | Name | user0 | |
| mobility | Mobility object | Mobility | |
| delay | Delay | 30 | |
| min | Min-Alert | 10 | |
| max | Max-Alert | 20 | |
| cw | Call-Waiting | true | Either "true" (checked) or not present (not checked) |
| off | Disable | true | Either "true" (checked) or not present (not checked) |
Gws
DECT configuration of the user. Only available from version 17; not exported by 16r1 or lower.
| Attribute | Field | Example | Remark |
|---|---|---|---|
| name | DECT system | dect1 | |
| idle | Idle Display | Mario | |
| ipei | IPEI | 0123456789 | |
| ac | AC | 1234 |
Example
<?xml version="1.0" encoding="utf-8"?>
<info>
<user cn="Mario Rossi" guid="ac47a659-8a81-4595-9e73-9afba80d9d31" h323="mro" fn="Mario" ln="Rossi" e164="13" pwd="********" pwdx="...87"
apps-my="users,chat,phone,dev%3ASwPh_mro_60929ce7" email="mario.rossi.dvl-ckl2@class.local" node="root" loc="master" config="ConfigUser">
<device hw="SwPh_mro_60929ce7" text="Softphone" app="softphone" admin="true" no-filter="true" tls="true" no-mob="true" trusted="true"/>
<allow name="@test1.com" visible="true" presence="true" otf="true" note="true" dialog="true"/>
<allow name="department" grp="true" visible="true" _online="true" dialog="true" ids="true"/>
<grp name="grp1" mode="active" dyn="in"/>
<grp name="grp2"/>
<cd type="cfu" bool="booltest">
<ep e164="1234"/>
<src type="do"><ep e164="789" ext="true" fwd="clid"/></src>
</cd>
<cd type="cfb">
<ep h323="user0"/>
</cd>
<fork hw="Smartphone" e164="1234" bool="booltest" mobility="Mobility" delay="20" min="20" max="20"/>
<gws name="dect1" idle="Mario" ipei="0123456789" ac="1234"/>
</user>
<user cn="Boss" h323="boss" e164="14" node="root" loc="master">
<pseudo type="executive"/>
</user>
</info>
