This book explains more advanced properties and behaviour of the PBX user object as well as their related function keys. Most of them apply to many of the PBX object types.
To begin with
To start this part of the exercise, be sure to load the
more_pbx_details start configurations to the devices.
This will add a few users to your PBX on the
IP411LEFT and register your phones. Be sure to wait for all your phones to
be registered before you proceed.
Upgrade
Resetting the whole system has also removed the App platform of your dvl-ckl2.net domain, unfortunately. But never mind, this is quickly resolved bycalling the Install again.
However, on the first page, you will notice a difference:
Install has determined that you already have a PBX on the box. So it won't go into
create-everything-from-scratch mode. This is the same that would happen if you upgrade an existing V12 PBX: Instead of replacing your configuration, it will ask you how to perform an
upgrade. You want to select the
Upgrade the existing PBX with installation of a local App Platform mode for the install. This will upgrade the existing PBX and will install an App platform on the same box.
The
Upgrade the existing PBX with installation of an external App Platform mode will do almost the same thing. However, instead of installing the AP on the same box, it will install it on a separate box. But that's not what we will do here in this course.
Conflicts
When you start
Install after choosing the right mode, you will notice
an error message.
Install will create a number of objects and if there would be a conflict with an existing object, it will not start. You must first remove or rename (if you need it for later reference) it.
In our case, you can simply remove the existing object and start over again with the
Install.
Install parameters
Here are the parameters to provide to the
Install (they are the same as shown on the course home page).
| Upgrade the existing PBX with installation of a local App Platform | | | turn on | | | |
| | | | | | | |
| Network settings | | | leave everything as-is | | | |
| | | | | | | |
| Terms of use of innovaphone Software | | | Confirm the terms of agreement | | | |
| | | | | | | |
| Display name | | | Christoph Künkel | | | |
| Email address | | | dvl-ckl2@class.local | | | |
| Account | | | ckl | | | |
| Password | | | ip411 | | | |
| Domain name | | | should already be fine dvl-ckl2.net | | | |
| PBX location name | | | should already be fine hq | | | |
| Use DNS to access myApps | | | turn on | | | |
| DNS name of this PBX / DNS name of the App Platform | | | use defaults | | | |
| Firewall | | | leave empty | | | |
| VM | | | en | | | |
| Outside line | | | 0 | | | |
| International prefix | | | 00 | | | |
| National prefix | | | 0 | | | |
| Area code | | | 621 | | | |
| Country code | | | 49 | | | |
| | | | | | | |
| Email account | | | turn off | | | |
| | | | | | | |
| Test mode | | | turn on | | | |
Logging in to myApps
When the Install has finished, it will redirect you to the myApps login page. You can use user john.doe with password ip411 to log in.
Note that the UI will probably show up in your browser language, not in English. If you want to change it (as you may want the screenshots in moodle to match the UI), simply add an "lang=en" option to the address in the address bar, or use the link call
http://hq.dvl-ckl2.net/PBX0/APPCLIENT/appclient.htm?lang=en.
Making your AP known to moodle
As you might recall from
Setting up the Application Platform, in order for moodle to be able to see your devices (to check the configuration you have done), these devices need to connect to moodle.
For this to work for your new application platform, you need to tell your AP how to reach moodle. The URL for this is set in the
Devices app URL 2 field in the
Settings /
General. Obviously you wouldn't do this in real life.
Configure
wss://training-apps.training.innovaphone.com/class.net/Trainee-Devices/sysclients in the
Devices app URL 2 field.
As soon as you have done this correctly, the complaint about the missing APPPLATFORM on the
Devices page will disappear.
Add devices to Devices
If you now start
Devices and switch to the
Devices tab, you will see that almost all of your devices are listed but all except the AP and your IP411LEFT are shown with such a
strange exclamation mark. This indicates that these devices have connected to your
Devices instance (because they have it
configured as Devices App URL in
General/Devices-Registration (moodle was nice enough to configure this for you
).
Of course, Devices won't accept these devices as it has no knowledge whatsoever about them. Could be an enemy device attempting an attack by illegitimately joining your domain. So what you have to do is to explicitly and manually join them to your domain (you have already seen this in topic 2).
You can do this right away:
- select your IP111 (the Edit area will open)
- click in to the Domain field (a list of domains will pop up - you only have one, dvl-ckl2.net)
- select this domain and then click OK
You approved the device and
the exclamation mark is gone. You can now access the
Admin UI tab for example and manage the device from within the
Devices App.
Setting the categories
But there is still one thing to do: setting the category.
To set the category for the newly joined device:
- switch to the Categories area
- click in to the Category name field (a list of available categories which have been created by the Install will pop up)
- select hq IP Phone (as your IP111 is an IP phone)
- click on the + sign next to the drop-down field (admittedly, this is not obvious: if you fail to do this, your category setting won't be store)
Of course you need to join all the other phones too, use the same category.
But what about adding the remaining IP811 to our installation?
Although we don't need to use it in this book, we can try adding it as an exercise. You should know how to proceed by now, do ya?
Adding the IP811
Right, you knew how to do it, no?
And you probably already did so:
- moodle did not set the Devices App URL in General / Devices-Registration, so you need to do it (the URL to use is wss://apps.dvl-ckl2.net/dvl-ckl2.net/devices/sysclients as we already discussed in the Adding your devices to "Devices" part of Setting up the Application Platform
- you then can join it to your domain and
- finally assign an appropriate category to the IP811 (yes, hq Gateway is a good idea)
And what about the IP411RIGHT?
Well, the IP411RIGHT is more like an infrastructure device in this course. It provides vital functions like DHCP and DNS server, possibly also the VPN tunnel. So if there is no apparent need, we better don't touch it at all.
Basic PBX functions
In the remainder of this book, we will look in to some basic PBX functions related to normal extensions (that is, PBX objects of type User).
In the next book then, we'll look in to how additional PBX objects can be used to extend functionality.
Call Forwardings
The innovaphone PBX supports a number of
call forwarding types. Call forwarding destinations
can be configured using its extension (
No, the
Number field in the destinations object properties) or its name (
Name, the
Name field in the destinations object properties). Be sure not to use the target's
Long Name instead of the
Name!
This can be done by the administrator in the PBX's PBX / Objects list.
Btw: call diversion and call forwarding are often used as synonyms.
End-users can do it in their own
Profile App in the
Call diversions section. When a user turns off one of the diversions it will be removed from the PBX configuration. However, the
Users App service (which implements the
Profile App) will still have it stored, so the user can conveniently restore it by simply moving the switch back.
Calls to Objects with no Endpoint registered to
An innovaphone PBX has all the call forwarding types known from legacy PBX systems. A special case though is a call to an object where there is no endpoint registered at all for. This situation triggers the CFNR.
Rejecting Calls
Users can reject alerting calls on the phone (depending on the phone e.g. using the
reject symbol or by pressing the disconnect key). This will trigger a CFB.
In your PBX, you will find a User object called Henry Jekyll, with no phone registered to it.
Please
- configure a call forward for this user to John Doe as long as there is no phone registered with Henry Jekyll
- from Jane Doe's IP112 call Henry (15)
John's phone should ring
Once you have done the test, you can register the analog phone with Henry Jekyll's user. We have prepared the interface registration on the IP411LEFT's TEL1 interface:
- open the TEL1 settings on Gateway / Interfaces
- clear the Disable check-mark
- the TEL1 interface (and hence the analog phone) will now register with Henry
- if you call Henry (15) again, the analog phone will ring instead of John's phone
Forwarding Loops
It is quite easy to unintentionally configure
call forwarding loops. Such a loop is detected by the PBX when they are executed (not when they are set) causing the caller to receive a
busy message.
A special case is a CFU directly to yourself. This will be ignored on execution time.
Forwardings based on presence
The PBX also has a mode where call forwarding is turned on and off depending on the user's presence state (as seen and set in myApps):
- a CFB is triggered whenever the user's presence state is busy or do not disturb
- a CFNR is triggered whenever the user's presence state is Away
This mode can be enabled
An interesting case is the Standard button which appears as soon as the user has moved the switch to the on or off position: by clicking on it, the explicit configuration for the user is removed and reset to the configuration as inherited from the user's configuration template.
The
Busy (CFB) or
No response (CFNR) entries
must be set and their switch must be enabled so that presence based call forwarding can be triggered.
Conditional Forwardings
Call Forwarding can be made depending on some properties of the call to be forwarded.
CGPN
When an Only or Only Not rule is configured for a call forwarding, the call is only forwarded if the start of its source number matches the rule's
No entry (or the calling name, which is the calling objects
Name property value, entirely matches the rule's
Name entry).
The calling number provided with the call as well as all the diverting numbers are matched against the rule's
No.
Internal / External Calls
Although external calls could be matched as Only From 0, calling numbers are not always safe. External calls can be matched better using the Ext. / Int. switch.
How to match the from property
When matching names or numbers set in the from field of a CFx, you can select if the rule shall be executed only if the original caller (Clid) or one of the (up to 2) forwarders (Fwd) or both (Both, which is the default) match.
- a CFU to Jane (12) for all calls originated by Edward (11)
- a CFU to Richard (13) for all calls diverted by Edward (11)
and a call forward set for Edward (11):
Forwarding a direct call
- call from Edward (11) arrives at John with Clid 11 and Fwd <empty>
- so the call originator (Clid) condition 11 matches and the CFU to Jane (12) is executed
Forwarding a forwarded call
- call from Jane (12) arrives at Edward (11) with Clid 12 and Fwd <empty>
- Edward, having an unconditional CFU to John (14) forwards the call to John
- call arrives at John with Clid 12 and Fwd 11
- so the call originator (Clid) condition 11 does not match and the CFU to Jane (12) is not executed
- but the call forwarder (Fwd) condition (11) matches and the CFU to Richard (13) is executed
Please configure a
call forward unconditional for user
John Doe that forwards calls coming either directly or indirectly from
Richard Roe to
Edward Hyde (and no other calls).
Dynamic Conditions
Call forwards can be made
dependant on dynamic conditions (e.g. the time of day). This is done by selecting a condition object (a.k.a.
boolean object) for the
Bool property of the call forward setting.
The call forward is triggered only if the condition described in the boolean object is met (or is not met, if the
Not check mark is ticked too).
You will find a
sample boolean object called
if-Working hours in your start configuration on the
PBX / Objects. This object is configured so that it is "true" during working hours.
Please modify the CFU you created for
John Doe in the last step so that it is executed
out of working hours only.
As you probably recall from your
IT Connect training, Boolean objects can also be edited in myApps. Logged in as
John Doe, you will find
the Business hours App. But unfortunately, there is no
if-Working hours App available !?
Fix the system configuration so that the
if-Working hours App is available to all administrators and on
John Doe's home screen!
The
if-Working hours object resembles the
Business hours object that was created by the
Install. However, it is a bit more powerful (you may want to compare them both in the advanced UI and in the
Time switches PbxManager plugin). In the remainder of this course, we'll use the
if-Working hours object so you might remove the
Business hours objectso as not to get confused. But it is not mandatory as you can have as many
Boolean objects as you want!
Implicit Forwarding
Various
implicit Call Forwardings are set in the
Trunk object configuration. Those apply to incoming calls through the trunk to a destination where the call forwarding condition is met.
This is a convenient way to configure the handling of standard call forwarding situations such as CFB (Busy) and CFNR (No Answer) globally. In addition, special situations like calls to incomplete (Incomplete), wrong (Invalid) extensions or calls which were rejected by the user after alert (Rejected) can be handled. If you use the Name field to specify the target here, it must correspond to the Name property of the target object.
Most of those implicit forwards are of course optional, the PBX works fine without setting those. However, one of them, Loopback, you will want to consider for sure! This setting handles external calls to an extension which is the access code for your trunk (most often 0). This is most often used to call the switchboard (e.g. +49 7031 73009 - 0). If you don't set this, external callers will be able to call in to your PBX and straight call out to the trunk again. This way, you will bear the cost!
Note that implicit forwarding settings apply to incoming calls to local extensions whereas call forwarding set on the trunk apply to outgoing calls to the trunk!
In your
IT Connect training, you have already seen these same settings in the
PbxManager's Trunks plug-in. So you need to use the advanced UI for this only if you need to use one of the more exotic options to the trunk.
In your configuration, you will see a
Trunk Line PBX object called
Trunk. Please configure this trunk so that incoming calls from extern through this trunk
- which are not answered
- as well as those which call out to an external number again
will be delivered to the user Edward Hyde.
All these target settings are available both in the
Trunks PbxManager plugin and the advanced UI (in the
Trunk tab of the PBX
Trunk object editor).
Disabling Forwarding
Any call forwarding can be disabled explicitly by configuring a minus (-) as call forwarding destination No. This does make sense for CFNR and CFB only.
This will also disable implicit forwardings imposed by the Trunk line object.
This feature is essential on fax lines when you set Busy (CFB) or No Answer (CFNR) globally on the trunk line. If for example, such calls are forwarded to the switchboard, an incoming fax to a busy fax device would be forwarded to the switchboard too. This will probably not make the receptionist happy! You should therefore disable call forwards of both types for the fax line.
In your configuration, you will find a PBX object called
Facsimile which is intended to be used as a fax device. Please make sure that calls to this extension are not forwarded when the fax is busy or does not answer.
Object Specific Handling of Call Forwarding
Call Forwarding might be handled specially by objects of a certain object type.
For example, a
CFB set on a trunk (remember: call forwards set on a trunk will be evaluated when you call
to the trunk, that is, for outgoing calls) will not trigger when the trunk already has an active call as a CFB on an user object would. Instead, it is triggered when the object called through the trunk (usually an external number) is busy. You should refer to the
Call Diversions section for the respective objects for details (see
PBX/Objects for a list of all object descriptions).
Setting Call Forwarding on the Phone
Call forwarding information is stored in the PBX (well, actually active call forwardings are stored there. User-specific defaults for currently disabled forwardings are stored in the database of the Users App service instance) and therefore cannot be set by administrators from the PBX configuration interface.
However, for end users, it is much more convenient to set them either from the Profile App in myapps (we have seen this before) or directly from the phone. As H.323/H.450 defines a standard to communicate call forwarding settings between an endpoint and the PBX, H.323 based devices can be used for this. innovaphone phones allow end-users to do this through the Call Settings page in the telephony app:
To configure a diversion, press long on the respective button. This opens the edit field. Once configured, you activate/deactivate this diversion with a short press.
Default forward destinations for use on phones can be set in the
Favorite Diversions properties of the phone's
Phone / User-1 / Preferences tab. As these phone settings are drawn from the
respective user's (in this case John Doe) Phone settings and those in turn are inherited from the user's
Config Template (
Config Admin in this case) and this ultimately inherits from
Config User, you can easily deploy defaults for all of your users.
As said before, call forwards are stored and executed in the PBX. For this, a protocol is needed to send the call forward settings to the PBX form the phone (H.323) or myApps (WebSocket). In SIP, there is no such protocol available and some SIP endpoints will instead perform limited call forwarding procedures autonomously. Setting the PBX's call forwarding settings from these phones is not possible thus. Note that it works however the other way round: call forwards set in the PBX are also functional when using SIP phones.
Administrative call forwards
However, only basic
call forwarding settings can be set both this way and in the
Profile App. Conditional forwarding properties cannot be set. Because they can't be set, they don't show up on the phone. For this reason, these
call forwarding settings are sometimes referred to as administrative
call forwarding. If they are set in the PBX, they are not visible to the end user and cannot be changed or deleted by the user.
Obviously, if administrative
call forwards are not visible to the user, there may be contradictory user settings. By default, user settings (more precisely, those without filters or conditions, and thus non-administrative) take precedence over administrative settings unless the
Takes precedence checkbox is checked in the administrative setting.
Call Forward related function key
innovaphone phones feature a
function key type
Call-Forwarding. This function key provides a very convenient way of switching between a pre-defined set of call forwards (such as e.g. in-office, on-the road etc.).
This feature is not available when the phone is registered via SIP.
To add a Call Forwarding function key, you would open Phone / User-1 / Function-Keys on the admin UI. In the Add Key section you enter a key number (functions keys are number column-wise in the phone UI), select Call Forwarding from the Type drop-down and click on Add.
You can define up to 4 independent
forward settings of call forward destinations (CFU (Always), CFB (Busy) and CFNR (No Response)). The user can toggle through the defined combinations using the function key. The current state is shown to the user by labelling the function key with the respective
Text value.
The current status of the call forward setting is retrieved from the PBX and matched to the defined sets. If none matches, the idle state is assumed.
To practice, define a
Call Forwarding function key #
8 on the
IP111 with 2 separate call forward settings to toggle through as follows:
Text | Type | Target Number |
Out of Office | CFU | 11 |
Busy | CFNR | 13 |
When no call forward is active, No CF shall be displayed.
Deploying CF function keys
Like before with the call forward default settings, these function key setting are part of the Phone configuration which can be inherited from a template.
- Disable Modification on Phone can be used so that end-users can not modify the function key's settings. This is useful when you want to enforce a certain policy
- Apply 'Always' Setting Only can be used so that end-users can only toggle through the CFU settings. This is useful if you need to enforce a uniform policy for CFNR or CFB (to voicemail for example) but let end-users have the freedom to forward to individual destinations when they leave the office for example
The CFNR Timeout
The general timeout for the CFNR function is set in the
Response Timeout property in the
PBX / Config / General tab of the PBX.
If not set, the timeout is set to 15 seconds. It can be overridden for each individual PBX object (e.g.
PBX/Objects/User) in the
Response Timeout field of the object's properties.
Limiting Call Forwarding
You will learn how to set up filter in one of the next chapters. The filter is evaluated on call forward time, not on call forwarding setup time.
This allows for example to disable costly call forwards to external recipients (such as mobile phones).
Call Transfers
In contrast to call forwarding, call transfers are initiated by the end user on a call by call basis. A transfer can be initiated in alerting and connected state, both blind transfer and consultation transfer is available, as well as call deflection.
Blind Transfer
A blind transfer can be initiated by one of the menu buttons which appear during an alerting or connected call:
The first step can also be done by hitting the ''redial'' key on the phone.
The call is redirected to the new destination right away and thus disappears from the transferring phone.
Consultation Transfer
For a consultation transfer (which is available for a
connected call only), the call is put on hold, a new call is placed to the intended destination. The 2 calls are then transferred by either putting the receiver on hook (transfer by on-hook can be disabled by setting the
No Call Transfer on Hook-On property in the
Phone / Preferences tab of the phone) or via the
R / 4 R-key sequence or by using a
Transfer function key (function keys can be defined in the
Phone / User-1 / Function-Keys tab.
When a consultation transfer is initiated while the consultation call is still in alerting state (called party has not yet picked up), it is sometimes referred to as semi-blind transfer or semi-attended transfer.
The Redirect Function Key
The
Redirect function key essentially performs a blind transfer of an alerting call, much like pressing the redial key would do. This is also known as
call deflection or
call redirection.
By default, when there is an active (connected) call when the function key is pressed, the redirection is performed on the first waiting call. This is convenient to get rid of call waiting on a call-by-call basis (as opposed to setting a CFB).
If the Redirect Active Call property is set in the function key configuration, the active call is redirected instead.
The Recall Timer
When a blind transfer or semi-blind transfer or call redirection is attempted but there is no response to it, the call can be transferred back to the original transferrer. This feature needs to be enabled by
setting the
Recall Timeout property in the
PBX / Config / General tab of the PBX.
To practice, configure your PBX so that blind transfers will re-call after 10 seconds.
The
Install does not set this property.
Filter
Filter provide a generic and flexible means to define
call filters. They are configured in the PBX's
PBX / Config / Filter configuration tab.
A filter defines a set of number prefixes which are matched against a called party number. This can be used for restricting call destinations for PBX objects (usually Users) and to limit call forwards set for an object. Each such rule can yield ok (in which case the call is allowed) or nok (in which case it is rejected).
This can be done by defining one or more of such
Call-Filter rules in
PBX / Config / Filter and assigning those filters to individual users. By default, only the
unknown filter is defined. It is used by the legacy
unknown registration mechanism (ZAD which we talked about earlier).
The
Install would add
three more useful filters: normal, national and intern. The
normal filter is intended as a standard for users with unrestricted call permissions. The latter two are, as their names suggests, for users which are not allowed to do
long-distance calls or external calls at all.
Filter | Number | Next | Effect |
normal | empty | empty | A "do nothing rule". All called numbers are allowed |
unknown | 0 | nok | In our installation, 0 is the number that to access the trunk line. The rule disallows all calls which start with this number |
national | 000 | nok | In our installation, 0 is the number that to access the trunk line. 00 is the national prefix (as we have defined it in PBX/Config/General). So numbers beginning with 000 are international calls (which are not allowed for the national filter) |
intern | 011 | ok | when the intern filter is applied, no call to the trunk line is allowed. However, all the emergency numbers starting with 11 (like 110, 112 etc.) are exempted. |
| 0 | nok | All remaining numbers which start with 0 are disallowed for the intern filter |
If you are wondering: you also could have used
ok as
Next for the normal filter.
Filters are generally checked at execution time, not at configuration time (so for a diversion filter, the diversion can be set although it is not allowed by the filter).
You apply the filters in
the User tab of the PBX
User object for each user individually.
However, both filter settings (
Filter and
Diversion Filter) are inherited from
Config Template objects for the user, so you can set them also in
the Templates PbxManager plugin. This is usually more convenient as the setting most often is set uniformly as a policy for groups of users. And handling this situation is exactly what configuration templates are made for.
Conditional filters
Filters can be made dependent on the current status of a boolean object at match time. If one of the numbers matches the head of the called number, the filter is applied to the call.
Another use of filters is for the prevention of call forwards. You would
apply the same filter as
Diversion Filter to make sure external call forwards are disallowed outside of business hours.
We have an appropriate
Boolean object already in our configuration (
if-Working hours). Please configure a filter that inhibits calls to the trunk line (0) off working hours and assign it specifically to
John Doe.
Multiple Filter Conditions
The filter we have configured in the previous chapter has a significant drawback: it inhibits all calls to extern. What if a user need to call the fire brigade off working hours? We clearly must enhance the filter to allow for some exceptional numbers.
This can be done by specifying more than one condition. All conditions of a single filter are checked until one is found that matches and specifies nok or ok in the Next column. If no condition matches, the call is allowed.
To fix the problem, we can create a list of conditions where the most significant appears first and so forth.
We can fix our fire brigade problem by specifying a condition that allows calls to emergency numbers like the fire brigade (112 in Germany) before the more generic rule that inhibits 0.
Please enhance our filter accordingly!
Chaining Filters
Filters can be chained so that similar patterns do not need to be specified multiple times.
The idea is to specify another filter in the Next column instead of allowing (ok) or disallowing (nok) the call. If such a condition matches, the matching part of the number is removed (for the purpose of further checking) and the chained filter is applied on the remaining number.
Disallowing incoming external Calls
Filters are applied to the called party number to control who a particular user object can call. To control who can call a particular user, the appropriate filter would have to be set for all potential callers.
A common case of restricting incoming calls is to not allow any direct calls to an extension from the outside world. This can be achieved by simply
setting the
Reject ext. Calls check mark on the
User object (or a template that the user inherits from).
Filters on Trunk Objects
As with other objects, it is possible to
set a Filter for a Trunk object too. Although the tool tip suggests that this affects outgoing calls, it actually is applied on incoming calls. This is because from the PBX's perspective, an incoming call is an outgoing call from the trunk to another PBX object. So the filter works like for any other PBX object in fact.
Manipulating the Number sent
When an endpoint registers with a user object and then makes a call, the call will normally pass the user object's Number property as CGPN.
Changing the CGPN
It is possible to change the CGPN by setting the
Send Number property of the calling object.
In a help desk scenario, you may want to set the Send Number property to the help desk number for all agents to ensure that their individual extensions are not sent as calling party numbers to the called customers.
Suppressing the CGPN
As an alternative, a call can be initiated with the calling line id explicitly suppressed (CLIR). This must be done by the calling endpoint (i.e. the phone). There are several options to do this.
Setting the User Default
Users can set their CLIR preference in the telephony app on hard-phones:
The available options are Always (CLIR on), Never (CLIR off) and Once (CLIR on for next call).
This is also available in the Phone / User-1 / Preferences tab's Hide own Number property (of course, only CLIR on/off is available there).
As you already know, such preferences can be set on the phone or in the
Phone config of the user (that is, in the PBX
User object). As the
Phone config is inherited from the template, you can also set it in an appropriate template.
When you redial a number from your phone's call list, the CLIR setting of that original call is used again, even if the Hide own number function has been deactivated in the meantime.
Using a Function Key
An equivalent setting can be done by configuring a
Hide Own Number function key in the phone's
Phone / User-1 / Function-Keys tab. When the key is in the
Active state, calls will have their CGPN suppressed.
No CLIR on Internal calls
Sometimes you want to suppress the CGPN only for external calls. Internally however, the CGPN should be shown. This can be done by using CLIR (with one of the methods described above) and
set the
No CLIR on Internal calls property in
PBX / Config / General.
NB: it is possible to change CLIR on outgoing external calls from "unknown" to a fixed extension. This allows you to configure CLIR for certain users (with or without
No CLIR on Internal calls property in the PBX) so that these users will signal a fixed extension (e.g. -0) externally. We will not do exercise it in this course, if you are interested, see
Number In in
Gateway/CGPN-Maps.
To practice, change the
Hide own number setting on
John Doe's phone to
Always (when John is calling, "unknown" should be displayed as calling party at the receiving end).
Then configure the PBX so that John is shown as CGPN again when he calls internally.
Limit the Number of concurrent calls
The Busy On ... Calls property allows to reject calls to the object when there are already as much calls in this direction active for this object (counting all calls from all endpoints registered with this object) as configured for this property. Setting it to 1 for example will make sure no additional call is sent to an endpoint registered with this PBX (user) object, as long as there is already one. However, such an endpoint can still place multiple concurrent outgoing calls.
This is useful to cope with devices that do not handle call waiting situations gracefully.
Please note that when Busy On ... Calls is set to 1, there will be no call waiting situation on the user's device, as the extraneous calls are never sent to the device. As a result, such calls will also not be listed in the devices call list (although they will be listed in myApps's call list)! It is thus generally not recommended to use this setting for users with innovaphone telephones. They should rather be handled using the phone's call waiting configuration (see next chapter).
Gateways and Trunks
For objects of type
Gateway or
Trunk Line, the property is called
Max Calls. In contrast to the
Busy On ... Calls property, calls both
from and
to the object will be counted as extraneous and rejected. This effectively limits the total number of calls
to and from the object (as opposed to only the calls
to the object).
Call Waiting
When a call is signalled to an endpoint and there is already an active call, then this is referred to as call waiting. The handling of such a situation depends on the endpoint used.
The
Call Waiting property in the phone's
Phone / User-1 / Preferences settings defines how an innovaphone phone handles this situation. When set to
disabled, a
user busy will be signalled to the caller. When set to one of the
enabled modes, alerting is signalled to the caller and the call is presented to the phones user. The
default tone option will alert the user every so often with a call waiting tone. The
beep once option will alert the user with a call waiting tone only once, whereas the
silent option will play no call waiting tone at all.
The
Call Waiting function key allows the user to turn call waiting on and off conveniently. Call waiting is turned off in
idle state.
Twin Phones
Sometimes, multiple phones are registered to a single user object, for example when a user has both a fixed line and a mobile (DECT, Wifi) phone sharing the same number. In this scenario, additional incoming calls should be signalled to the active phone only, as otherwise the phone the user is currently not using would ring. Setting Busy On ... Calls doesn't help really as it would inhibit the call waiting to the currently active phone.
To handle this scenario,
set the
Twin Phones property in the user's object properties. If so, additional calls are signalled to the currently busy phones only, leaving it to this phone to handle the call waiting situation.
Note that you can't use
Busy On ... Calls if
Twin Phones is checked in a
User object. So if you try to set it for e.g.
John Doe, you will note that it is silently discarded when you hit
Apply.
Twin Phones is checked in the Config User template which is inherited by the Config Admin template which is used as Config Template in John Doe's User record. Although the Install has ticked it in the Config User template, you can not modify it using the Templates PbxManager plugin. This is because there are only very few situations where it is advisable to turn it off for a user. If need be, you can overwrite it in the User record directly or you can edit the template using the advanced UI.
Transfer between Twin Phones
When a twin phone calls its own extension, the call is not sent to the calling phone but to all others registered to the object. This allows a user to transfer a call from one of his twin phones to another (e.g. from the fixed line phone to the DECT phone to leave the desk while keeping the call).
Do not Disturb
An innovaphone phone can be brought into
do not disturb mode (DnD) by either pressing the
micro off key on the phone in idle mode or using the
Do not Disturb function key.
In DnD mode, the phone will not ring on incoming calls. There are
various modes available, either in the
Action area of the
Do not Disturb function key configuration or in the
Do Not Disturb area of the phone's
Phone / User-1 / Preferences settings.
The modes include the option to send an absent message to callers while the phone is in DnD mode. This message can also be defined via the phone's Menu / Settings / Account Settings / Do not disturb / Out of Office Msg. menu.
Hiding an Object from the PBX Directory
When an object is created in the PBX, its properties are available from the PBX via LDAP. Phones will take advantage of this and include the new object in their so-called PBX Directory.
Directories are used whenever an outgoing call is initiated with a name dialled instead of a number. Even more, the directories may be searched for a matching number when an incoming call without name identification is received (depending on the Disable Phonenumber Look-up setting).
Sometimes however, the object information should rather be hidden to other users so that they cannot locate the object via the directory. In this case,
set the Hide from LDAP object property in the PBX object you want to hide from the directory.
You have a PBX object in your configuration that is called Facsimile. The Facsimile has Number 9, so you will see it in the search result list when you simply press the 9 key on the phone (or you long-press 3 three times to get an f).
You may consider it useless to call the fax from a phone, so let us exclude it from the phone's directory search result !
Note that the
Hide from LDAP property is also honored by the
com.innovaphone.search API provider implemented in the
Users App service.
However, since Users will only replicate PBX User and Executive objects anyway, PBX objects with other types can't be seen in Users. This is the reason why you can't see the Facsimile object in Users even if Hide from LDAP is not ticked in the object.
Applying basic Properties to a number of Objects
When many objects share similar properties, a
Config Template object can be
created and
applied to other PBX objects. These objects will then share the settings present in the template, unless they are not explicitly overridden in the receiving object.
A template can
reference another template. Note that this cannot be nested (that is, the referenced template must not in turn reference a 3rd template).
Some but not all of the properties that can be inherited from a Confg Template object can be edited in the Templates PbxManager plugin.
If the Config Template should be valid on all of your PBXs (if you have more than one), leave PBX and Node empty (this is actually how the Install created the Config User and Config Admin templates - as it is a very rare situation that you don't want to make a template available in all PBXs).
To practice, please create a
Config Template PBX object called
Config Standard on your
PBX / Objects that has the properties of the
Config User template and adds some more. Be sure to hide it from directory search results. Set a
Response Timeout of
5 seconds (you will note that this is an option which is not available in the
Templates PbxManager plugin). Assign this template to user
Jane Doe. Finally, set a CFNR with target
No 11 for
Jane Doe.
Managing Phone Configurations
Phone configurations can be stored on the respective phones directly. This can be done in the phone's registration specific settings, for example Phone / User-1 / Preferences.
While this is easy and convenient, it turns out to be a problem when many phones need to be managed. Often, similar settings shall be applied to several phones, which is difficult and error prone to do. Also, when a phone is replaced, its configuration needs to be restored from a recent backup.
This is why the user-specific part of the phone configuration can be stored in the PBX. To
enable this feature, tick the
Store Phone Config check-mark in the user object's
User configuration tab (as the
Install has done when creating the
Config User template).
You will find a link in the Phone column of the PBX's PBX / Objects tab (it is called either + if there is no config yet or config). The UI opened when you click on this column looks exactly like the UI the phone provides to set phone-local configuration. However, it will set the phone configuration as part of the PBX's User object. This configuration is then used by all (innovaphone) phones which register with this User object!
If you configure phone-related settings both in the PBX and on the phone directly, the settings on the phone will override the settings received from the PBX. If the
Store Phone Config check-mark is ticked in the respective PBX
User object, changes done on the phone will be replicated back to the
User object in the PBX.
When you need to set these options for many users (which is very likely!), you can set them in a
Config Template object rather and assign it to the users. We'll look at this in the next chapter.
Cleaning up existing Phone Configurations
When you set the Store Phone Config check-mark, normally, any existing configuration on a phone is retrieved and saved in the PBX's phone configuration. This ensures that existing configurations on the phone are not lost. The phone configuration is cleared then (so that all configuration is now stored on the PBX).
Using Templates for Phone Configurations
If the object itself has a phone configuration stored in the PBX, the template's and the object's configuration are merged and then applied to the actual phone.
We already configured
a Call Forwarding function key on the IP111. Since the IP111 is registered with
John Doe and
John Doe has the
Store Phone Config check-mark set (which actually was inherited from the
Config User template), the function key setting was already replicated back to
John Doe's
Phone configuration in the PBX.
Now that we know about phone configurations in PBX Config Template and User objects, we want to remove this configuration from the User object and re-configure it in our Config User template so that it is available for all users.
So please proceed as follows:
Have a look at Edward Hyde's home screen on the IP232 (you may need to switch to the home screen by touching the home symbol):
Now if you also had an
old IP240, you'd see
no function key displayed at all
This is because we only have 7 function keys next to the display on the IP240. Function
key 8 on an IP240 refers to the topmost function key in the row on the right side of the phone.
All defined function key settings are assigned to all the available function keys on a specific phone model.
Groups
You cannot set groups for users in
UsersAdmin. But you can
assign group members in the
Groups PBX Manager plugin.
What a group is
A group defines a set of PBX objects that in some way belong together. This is used a lot in the PBX, for example to define call pickup groups. The administrator would assign group membership to all team members and then allow pickup for this group.
Group membership alone does not do anything, neither passive nor active membership. However, groups are used to configure various other features.
A single object may belong to many groups.
Inner Group Relationships
Not all group members are the same, as group membership can be active or passive.
When a group member is active, it can somehow be viewed as a group leader. In our call pickup example, active members of the group can pick calls from passive members - but not the other way round.
There can be more than one active member in a group. In fact, all members of a group can be active. In our pickup example that would mean that all group members can pick calls from all other group members.
Objects can be an active member in one group and a passive member in another. Objects can also be active members of more than one group.
Limitations
Groups are limited to 2000 members. Groups are known to a single PBX only. If another PBX has a group even with the same name, it is a different group.
Group names can be chosen freely. However, for better manageability, we recommend to use group names that clearly indicate that the name is for a group (such as group-pickup-team1 for example).
While it is possible to use the Name of existing PBX objects as a group name, it is not recommended!
Defining groups is costly. The PBX needs to track record of all group memberships and thus consumes internal memory (RAM). So do not assign users to groups unless it is really necessary!
Active group membership is even more costly, as it requires the PBX to check group members in many situations and thus consumes CPU cycles! So do not assign users active group membership unless it is really necessary!
The Partner Function Key
The
Partner function key allows to pick alerting calls from other users. Normally, each partner function key is explicitly bound to one other PBX object (the
partner object). The partner object must be configured in the
Partner Identification properties of the
function key definition.
Subscriptions
The Partner key uses a mechanism known as subscription to obtain the partner's call information. In addition to that, it can optionally also subscribe for Presence information. This is controlled by ticking (or un-ticking) the Subscribe for Dialog Info and Subscribe for Presence check-marks.
Still, the subscribing user must be entitled to the information. Otherwise, the subscription will not receive any information.
Groups
When the subscribing user is an active member in the same group as the subscribed-to user, subscription rights are granted.
Visibility
The following are available for visibility right entries:
- the the Group check-mark is ticked and Name is a group name:
Each active member of the group is granted visibility - otherwise the Name in the entry is an @ followed by a domain name (e.g. @dvl-ckl2.net) an:
Users from that domain are granted visibility. The domain of a PBX user is the value of the System Name property in PBX / Config - if the Use as Domain check-mark is ticked - otherwise the Name in the entry is a single @:
This is a catch-all and is effective if no other entry matches - the Name in the entry is the Name of another user (name or name@domain):
this particular user is granted visibility
The following visibility options are available:
- Online: see if the user has a myApps client running
- Presence: see presence activity
- Presence note: see the presence note
- On the phone: see if the user has an active phone call
- Calls: see call information without peers
- Calls with numbers: see also call peers (in addition the Calls information)
- Visible: see that the user exists (e.g. find it in the Users App)
Calls or Calls with numbers is required to perform a call pickup. The option On the phone is not enough!
Operation
When a call alerts at the partner object, the function key will signal it and pressing the key will have this call alert on the users phone. Depending on the various check-marks in the definition, the behavior of the function key can be modified.
The Hide calling Party in alerting State, Hide calling Party in ringback State and Show connected Party in busy State control the display of calling/called party information.
The Do not pick up an alerting Call disables the call pickup function.
However, the Partner function key can do much more as we will see in the next chapters.
Using template inheritance
Partner function keys seem to be a useful thing to have and we should provide them for all of our users. A straight forward approach is to configure it in a template.
There is only one problem: when we do this in a template, then every user that inherits the template has a Partner function key, which is good. But they all will share the same configuration and thus will have the same partner! This does not sound that useful.
This is the point to play around a bit with template inheritance. As we said before, settings in a template can be overridden on a per-user level by specifying the same settings (but with different values) in the user object.
We can take advantage of this to resolve our
Partner key issue:
- Add a Partner function key to template Config User at position 4
- set Text for the Idle State to Partner #1
- tick the Subscribe for Dialog Info, Subscribe for Presence and Show connected Party in busy State check-marks
At this point, the Partner #1 key appears on all the phones. However, they are still not functional as we have not defined any Partner Identification.
- open John Doe's phone configuration from the PBX's object list
- you see the Partner #1 key definition, which is inherited from the template
- open the definition and type Richard as Text in the Idle State and richard.roe as Name in the Partner Identification
- from Edward Hyde's phone, call Richard Roe (13), do not take the call
You expected to see Edward's call to Richard so you can pick it? Not so!
- there are no settings specifically set for him
- he inherits visibility settings from the Config User template
- in these settings, On the phone is granted to everyone in the system (@dvl-ckl2.net) but Calls and Calls with Number are not
As we have discussed above, either Calls or Calls with Number is required for the pickup to work.
So to fix it:
- tick the Calls with Number check-mark in the Config User template's Visibility settings
- power cycle John Doe's IP111 (this is the fastest way to re-do the partner key subscription )
- call again from Edward to Richard (13), dont' take the call
At this point, you will see the call
indicated on
John Doe's phone and you can pick it.
Pretty neat already, however, do we still need to configure all the Partner Identification in to all those user objects? Sounds like an administrators nightmare!
But there is a fairly reasonable alternative:
- on Jane Doe's IP112 press and hold the function key next to the Partner #1 label
- the function key editor opens
- press the key on the right side of the Text: field
- enter johnny into the Text: field
- enter 14 (John Doe's Number) into the Number: field (you need to scroll down a bit)
- save your settings
- the function key label now has changed to johnny
Jane could have done that herself
- from Edward Hyde's phone, call John Doe (14)
Monitoring the Partner's Busy State
As we have seen, when the Partner key is configured correctly, it will not only show alerting calls that may be picked up. It will also show active (that is, connected) calls along with the connected parties number (depending on key configuration, the Show connected party in busy state property must be set in the Partner function key properties).
Monitoring the Partner's Presence State
Busy vs. Presence State
A user's presence state is different from his busy state. The busy state includes phone usage information only, that is, if the user has a call, if it is alerting or connected, which numbers are involved. The presence state instead only has a condensed notion of the user's phone activity (the so-called on-the-phone state element). However, in addition to that, further information such as an activity (available, away, busy, do not disturb), a user defined note or the general ability to receive instant messages may be included in the presence state. In fact, presence states can be utterly complex, but most software currently available will only make use of the elements mentioned.
In the PBX, the users
presence state can be edited in the
Presence column of the
PBX / Objects list.
The end user can also edit it directly by pressing the button next to the presence state
shown on the upper left edge of the phone's home screen.
Also, end users can of course set their presence in myApps. However, please note that myApps limits the possible activities to Available, Away, Busy and Do not disturb. All other activities are treated as Away.
Group pickup
Like for monitoring a partner, a Partner key can also be used for monitoring groups. You would simply
- configure the name of the group, prefixed with a dot (.) as Name in the Partner Identification section. The dot indicates to the PBX that the Name is a group and not a user
- select Default as Partner Type
- tick Subscribe for Dialog Info to obtain the call information for the group
Subscribing to a group is like subscribing to all the users that belong to the group. So with this configuration, you can pick calls from each user in the group with a single function key.
If you configure the same partner key for the group
group-Team-2 on
Jane Doe's user object, the pickup will not work. The reason is that the group member must be active to be able to pick the call.
Calling the Partner and Intrusion
When there is no alerting call for the partner object, pressing the Partner function key will initiate a call to the partner.
The function key can be configured such that when the partner is already engaged in a conversation, the call is initiated as an intrusion call. An intrusion call connects immediately and creates an implicit 3 way conference between the active call before the intrusion and the intrusion call. The intruder is then part of the intruded call.
Intrusion must also be enabled on the intruding phone by
setting the Enable Call Intrusion option in the phones
Phone / User-1 / Preferences settings. Of course, as with all such options, this can also be set in the PBX user object's phone configuration or in an inherited template.
By default, both parties of the original call will hear an intrusion tone. This can be disabled though
using the No Local Intrusion Tone property in the
Phone / Preferences configuration tab of the respective phones.
Let us configure call intrusion for
Jane Doe to
John Doe.
- enable call intrusion for Jane Doe's phone (tick Enable Call Intrusion in Phone / User-1 / Preferences)
- configure call intrusion on Jane Doe's Partner function key in conference mode (tick Perform Intrusion if Partner is busy and select Type Conference)
- From John Doe's IP111, call Edward Hyde (11), take the call
- The call is indicated at Jane Doe's function key
- Press the Partner function key on Jane Doe's IP112
Note that when Jane talks, both John and Edward will hear her. When you change the Type setting in Jane's function key definition to Silent Monitoring and intrude the next call, Jane will not be heard by neither John nor Edward.
Group Pickup
Group Pickup is an alternative to using the Partner function key as we did before. This method is rarely used. For this reason, it will not be practiced in this course.
This chapter and its subchapters are for reference only. The configuration is not practically performed here in the course and is therefore skipped.
Pickup using feature codes
If the
DTMF Features Codes are enabled for an analog FXS interface (or a DECT gateway), an endpoint attached to this interface can initiate a group pickup by dialing the
*0# feature code. If there is an alerting call in one of the groups the caller is an active member of, this will pick up the previously alerting call right away.
It is also possible to pickup a specific call if more than one are currently alerting. This is done by dialing the *0*<user># feature code, where <user> is the extension of the object the call is alerting on (note that those codes can be defined differently, these are the default values).
For innovaphone IP phone users, it is usually more convenient to use the
Pickup or
Partner function key.
For 3rd party IP phones (which are neither connected to an FXS nor to DECT), the same features may be enabled by creating a DTMF Features object in the PBX. This is useful for H.323 devices that do not support call pickup and for SIP devices (where there is no standard for call pickup).
We have our analog phone registered to user
Henry Jekyll. To test the call feature codes
- turn on Features Codes Support for TEL1 in Gateway / Interfaces/TEL1
Note that once you did that, the table of feature codes appears in Gateway / General - don't change anything there
- create a group group-Team-1 by assigning active membership to Henry Jekyll
- assign the same active group membership to Edward Hyde
- from John Doe's IP111, call Edward Hyde (11) and don't take the call
- use the analog phone (which is registered to Henry Jekyll) to call *0#. This connects you to John Doe
- hang up and call again but the other way round (from Edward Hyde to John Doe (14)) and don't take the call
- use the analog phone to call *0# again. This does not connect you to John Doe. This is because Henry Jekyll has no rights to pick up a call from John Doe (as John Doe is not in one of the active groups of Henry Jekyll)
Pickup using the Pickup Function Key
innovaphone phones can do pickups via the
Pickup function key. This function key will be idle as long as there is no pick-able call and go to the active state when there is one.
When in active state, the alerting call will be signaled to the user (there are several options available like issuing an audible alert or hiding the involved party numbers). When the function key is used in active state, the PBX will send the call to be picked to the picking phone too. The user can then examine the detailed call info presented with the new call and decide whether to really pick the call or not. This is in contrast to how the DTMF pickup feature code works, as this will connect the picked call right away.
For this to work, the picking user must be an
active member in one of the groups the picked user is in. For the picked user
passive (that is, non-active) group membership is enough (note the asterisk (*) behind the group name for active membership).
Let us implement the call pickup scenario using function keys.
- put Jane Doe, John Doe and Richard Roe in to group group-Team-2. Make sure only John Doe is an active member
- configure a Pickup function key in the Config User template on position 6
- use No alerting team call as Text for the Idle State
- use Team call! as Text for the Active State
- set Audible Signal after alerting [sec] to 5
- set the Name of Group to be monitored to group-Team-2
- From Jane Doe, call Richard Roe (13) this time. Do not take the call
- You will see the alerting call indicated on John Doe's phone
- Let the call alert a few seconds. After 5 seconds of alerting, a short tone can be heard on the other phone (this is due to the Audible Signal after alerting [sec] configuration in the function key)
- On John Doe's phone, hit the button next to the 12->13 label
- The call from Jane Doe to Richard Roe will now alert at John Doe's phone too
- You can now go off-hook on John Doe's phone and you are connected to Jane Doe
Asymmetric Pickup
Group call pickup scenarios can be asymmetric. It is possible to configure a scenario where user A can pick a call from user B but not vice versa.
This is implemented mixing active and passive group assignments. Active members can pick calls from other active or passive members, passive members can not.
We have seen that Henry Jekyll was not able to pick up a call from John Doe. This was not particular surprising, as the two were not member of the same group.
We have also seen that John Doe can pick up a call ringing at Richard Roe. Does it work the other way round?
Let us see if
Richard Roe can pick a call alerting at
John Doe's phone
- from Jane Doe call John Doe (14), don't take the call
- the call is not signaled to Richard Roe's phone, so the Pickup function key remains in the idle state
So why is that?
Although both
Richard Roe and
John Doe are
members of the same group group-Team-2,
Richard Roe can take no calls for this group as he is not an active member.
The Dial Function Key
The
Dial function key defines a quick dial key to a fixed destination number. By default, when a call is present, the previously active call is put on hold and a new call to the destination is created (this is like the
Partner function key behaves in this situation).
However, when the Send in Active Call property is set in the function key configuration, no new call will be created in this case. The digits from its Number property are sent within the current call instead. If the call was already connected, the digits are sent as DTMF. If not, the digits are sent like single digits sent in overlapped dialling mode.
When no call is present, and the Prepare property is set in the function key configuration, the phone will go into the prepared dialing mode just like as if you had dialed the digits of the destination number on the phone's keypad. You then have the chance to edit the number before you go off hook and initiate the call.
We decide to provide a
Dial function key for all users which calls to the fire brigade! As you already guessed, we will put this into the template we already have:
- Add a Dial function key to the Config User template on position (Key) #3
- Set the Text to Fire Alarm
- Set the Number to 0112 (0 will be our trunk line access code, 112 is the fire brigade (at least in Germany))
All users now can quickly issue an alarm, even from within a call.
Announcement Calls
When the
Announcement property is set in the
function key configuration, the call will be sent as an
announcement call. Such a call will be connected right away. There is no need for the recipient to go off hook for this. Instead, the phone goes into hands-free mode.
The destination phone may choose to reject any incoming announcement call for a given registration by
setting the Reject property in the
Announcement Calls / Incoming section. Also, by setting the
Reject if Busy property announcement calls are only rejected when the phone already is busy with another call.
By default, the announcement call is connected and the destination phone's microphone is turned off. This way, silent surveillance of a room is inhibited. If surveillance is desired, the destination phone needs to
set the Micro On property.
A phone can be configured to accept any call as an announcement call, even those that have not been initiated as such. This can be done by setting the Treat Incoming as Announcement property for this phone.
Unless the Reject if Busy property is set, any announcement call takes precedence over currently active calls (except if the currently active call is an announcement call too). That is, any currently active call on the destination phone when an announcement call comes in is put on hold and the connected announcement will become the active call.
Jane Doe is
Edward Hyde's secretary. This is why she needs to be able to perform announcement calls to him. As he often works a little off his phone, he wants to be able to talk to
Jane Doe right away in such calls, without going off-hook. However,
Jane should not disturb
Edward when he already is engaged in a call.