- What it does
- Configuration
- What you need
- Setting up subscriber data
- Setting up call forwarding
- I want to…
- Set the limit for how many times a call can be forwarded
- Reject calls that exceed the forwarding limit
- Forward calls that exceed the forwarding limit to a fixed URI
- Allow forwarding to special URIs even when forwarding limits have been reached
- Add to the set of SIP error response codes that trigger the CFNRc
- Allow CFNRc to still be triggered after receiving an 180 Ringing response
- Set a default destination to use if a subscriber’s forwarding rule does not specify a destination
- Set the default timeout for triggering CFNR
- Disable the MMTel call forwarding service when the call is being delivered over a circuit-switched network
- Allow the subscriber’s forwarding rules to override the operator’s rules
- Play an announcement to the caller when the call is forwarded
- Add the 'orig' tag to the Route header of forwarded SIP INVITE requests
- Prevent the 'orig' tag from being added to the Route header of forwarded SIP INVITE requests
- Include a 'hi-target-param' of type 'mp' in the History-Info header that is added to forwarded SIP INVITE requests
- I want to…
What it does
MMTel Communications Diversion (CDIV) is a service that redirects incoming calls according to rules set by the network operator and/or the subscriber. Each of these rules specifies the particular condition or conditions that should trigger it, and the destination to forward to when the rule is triggered. The rules are subscriber specific and are therefore configured in the HSS rather than the Rhino VoLTE TAS.
Forwarding rules
Each forwarding rule must correspond to one of five different types of forwarding. Each forwarding type is triggered under different circumstances. The types are:
Name | Acronym | Trigger Condition |
---|---|---|
Communication Forwarding Unconditional |
CFU |
Triggers immediately upon receipt of an incoming call. |
Communication Forwarding on Busy user |
CFB |
Receipt of a |
Communication Forwarding on no Reply |
CFNR |
A |
Communication Forwarding on Subscriber Not Reachable |
CFNRc |
Receipt of a SIP response with any of these status codes: |
Communication Forwarding on Not Logged-in |
CFNL |
Receipt of an incoming call when the called party is not currently registered on the network. |
Additional conditions
In addition to the basic types above, additional conditions can be placed on forwarding rules:
Name | Description |
---|---|
media |
Makes a forwarding rule conditional on the specific media types appearing in the SDP for the call. |
validity |
Makes a forwarding rule conditional on the date and time the call is received. |
Forwarding action
In addition to its conditions, each forwarding rule should have a forward-to
action.
This action contains a number of parameters that detail how to handle forwarding when the rule’s conditions are met.
The supported fields are:
Name | Description |
---|---|
target |
The URI to forward to. |
notify-caller |
Determines whether to send a |
reveal-identity-to-caller |
Determines whether the identity of the forward-to target should be revealed to the calling party. |
reveal-served-user-identity-to-caller |
Determines whether the identity of the original called party should be revealed to the calling party. |
reveal-identity-to-target |
Determines whether the identity of the original called party should be revealed to the forward-to target. |
Communication Deflection
Communication Deflection (CD) is another type of MMTel call forwarding that, unlike the others, is not triggered through forwarding rules.
Instead it is triggered by receipt of a 302 Moved Temporarily
SIP response from the called party.
For this type of forwarding, the response itself contains the destination to forward to.
No reply timer
As described above, CFNR is triggered after a 180 Ringing
response, either by a 408 Request Timeout
response or by the no reply timer expiring.
The no reply timer is started on receipt of the 180 Ringing
response, and expires after a period of time derived from either:
-
the
communication-forwarding-on-no-reply-timer
setting in subscriber HSS configuration (this option takes priority) or -
the period of time specified in global configuration in the
no-reply-timeout-seconds
field.
Forwarding limits
The number of times that a single call can be forwarded can be limited with the max-diversions
field.
If the limit is reached, there are several options for how to handle the call.
This is configured in the max-diversion-action
field.
The options are:
Option | Behaviour |
---|---|
REJECT |
Terminates the call. |
DELIVER_TO_FIXED_DESTINATION |
Makes a final attempt to forward the call to the destination given in the
|
DELIVER_TO_SUBSCRIBERS_VOICEMAIL_SERVER |
Makes a final attempt to forward the call to the subscriber’s specified voicemail server. This option requires that the subscriber’s voicemail server URI has been set in their Metaswitch-TAS-Services document in the HSS. |
It is also possible to specify a list of known URIs in the diversion-limit-exempt-uris
field that can be forwarded to, even when the forwarding limit is reached.
Interactions with other services
Call barring
The MMTel call barring service always takes precedence over call forwarding. If an incoming call is barred, the call will be terminated without forwarding.
Voicemail forwarding
Voicemail forwarding is closely related to the MMTel call forwarding service. There are certain situations that can trigger either service, for example, if the called party is already on a call. In such cases MMTel call forwarding takes precedence, and will evaluate the provisioned forwarding rules for the called party. Voicemail forwarding will be triggered if there are no forwarding rules that result in the call being forwarded.
There are certain situations where the MMTel call forwarding service may be suppressed, for example, when routing to a CS network where MSC is expected to handle call forwarding. In these situations the Voicemail Forwarding service will also be suppressed. |
Terminating Access Domain Selection (T-ADS)
If T-ADS attempts to connect the call over the circuit switched (CS) network and the attempt fails, it is possible that call forwarding could be triggered twice. The first time for call forwarding behavior in the CS core network, the second time for MMTel call forwarding.
For this reason it is possible to disable MMTel call forwarding for calls that are terminating in a CS network, see below.
Configuration
The example for sentinel-volte-gsm-config.yaml and
example for sentinel-volte-cdma-config.yaml show example configuration
relevant to call forwarding in the sentinel-volte/mmtel/call-diversion/mmtel-call-diversion
section.
What you need
-
❏ The maximum limit for the number of forwards that should be allowed for a single call.
-
❏ The preferred option for handling a call that has reached the maximum number of forwards.
-
❏ Any URIs that can be forwarded to, even when forwarding limits have been reached.
-
❏ Optionally, a default URI to forward to if a rule without an explicit target is triggered.
-
❏ The default length of time to allow the call to ring before triggering CFNR.
-
❏ Whether MMTel call forwarding should be disabled for calls that terminate in a CS network.
-
❏ Whether subscribers' forwarding rules should take precedence over the operator’s rules.
-
❏ Whether CFNRc should be allowed to trigger after the call starts ringing.
-
❏ Any SIP response status codes that should trigger CFNRc besides the standard ones.
-
❏ Whether an
orig
tag should be added to outbound forwarded SIPINVITE
requests. -
❏ Whether a
hi-target-param
of typemp
should be included in the History-Info for a forwarded message.
Setting up subscriber data
Both subscriber and operator defined forwarding rules, along with a subscriber specific setting for the no reply timer are configured in the HSS inside the MMTel-Services XML document for the subscriber.
You can find a detailed description of what this configuration looks like in the 3GPP technical specification for the MMTel call forwarding service, see section 4.9 of 3GPP TS 24.604.
Not all of the rule conditions listed in the technical specification are supported by the Rhino VoLTE TAS. Only the following conditions may be used: busy, not-registered, cp:validity, media, no-answer, rule-deactivated, and not-reachable.
Similarly there are also forward-to action parameters listed in the specification that are not supported by the Rhino VoLTE TAS. The following parameters may be used: target, notify-caller, reveal-identity-to-caller, reveal-served-user-identity-to-caller, and reveal-identity-to-target.
Setting up call forwarding
I want to…
Set the limit for how many times a call can be forwarded
In the mmtel-call-diversion
section,
set max-diversions
to the desired limit:
max-diversions: 10
Reject calls that exceed the forwarding limit
In the mmtel-call-diversion
section,
set max-diversion-action
to reject the call:
max-diversion-action: REJECT
Forward calls that exceed the forwarding limit to a fixed URI
-
In the
mmtel-call-diversion
section, setmax-diversion-action
to deliver the call to a fixed destination:
max-diversion-action: DELIVER_TO_FIXED_DESTINATION
-
In the
mmtel-call-diversion
section, setmax-diversion-fixed-destination
to the desired SIP or tel URI:
max-diversion-fixed-destination: tel:+123456789
Allow forwarding to special URIs even when forwarding limits have been reached
In the mmtel-call-diversion
section,
add the desired SIP and/or tel URIs to the list of diversion-limit-exempt-uris
:
diversion-limit-exempt-uris:
- sip:voicemail@example.com
- tel:+123456789
Add to the set of SIP error response codes that trigger the CFNRc
In the mmtel-call-diversion
section,
add the desired codes to the list of additional-not-reachable-status-codes
:
additional-not-reachable-status-codes:
- 404
- 480
Allow CFNRc to still be triggered after receiving an 180 Ringing response
In the mmtel-call-diversion
section,
set allow-not-reachable-during-alerting
:
allow-not-reachable-during-alerting: true
Set a default destination to use if a subscriber’s forwarding rule does not specify a destination
In the mmtel-call-diversion
section,
set default-target-uri
to the desired SIP or tel URI:
default-target-uri: sip:default-target@example.com
Set the default timeout for triggering CFNR
In the mmtel-call-diversion
section,
set no-reply-timeout-seconds
to the desired timeout:
no-reply-timeout-seconds: 15
Disable the MMTel call forwarding service when the call is being delivered over a circuit-switched network
In the mmtel-call-diversion
section,
set suppress-for-cs-terminating-domain
to true
:
suppress-for-cs-terminating-domain: true
Allow the subscriber’s forwarding rules to override the operator’s rules
In the mmtel-call-diversion
section,
set prefer-subscriber
to true
:
prefer-subscriber: true
Play an announcement to the caller when the call is forwarded
MMTel call forwarding configuration only needs the announcement ID of the announcement to be played. The details of that announcement should be configured beforehand. For details about how to do this, see Announcements.
-
If it is not already present, add an
announcement
section directly undercall-diversion
.
call-diversion:
announcement:
-
In the
announcement
section, set theannouncement-id
to the ID for the desired announcement:
announcement-id: 12
Add the 'orig' tag to the Route header of forwarded SIP INVITE requests
In the mmtel-call-diversion
section,
set add-orig-tag
to true
:
add-orig-tag: true
Prevent the 'orig' tag from being added to the Route header of forwarded SIP INVITE requests
In the mmtel-call-diversion
section,
set add-orig-tag
to false
:
add-orig-tag: false
Include a 'hi-target-param' of type 'mp' in the History-Info header that is added to forwarded SIP INVITE requests
In the mmtel-call-diversion
section,
set add-mp-param
to true
:
add-mp-param: true