This feature provides a means for UEs to subscribe to “conference” event package notifications for a conference .
Feature cheat-sheet
B2BUA Instance | SAS Support | Originating / Terminating | Point(s) in Session Plan | Network Operator Data | Subscriber Data | Stateful or Stateless | POJO Feature or SBB Feature |
---|---|---|---|---|---|---|---|
MMTEL |
Yes |
Both |
|
Yes |
No |
Stateful |
POJO with FSMs |
Source Code
This feature’s source code is available in the Sentinel VoLTE SDK in the mmtel-conferencing
module pack.
It can be viewed by using the create-module
command in the SDK with that module pack, for example:
> create-module new-conf-module opencloud#mmtel-conferencing#volte/4.0.0;4.0.0.0
This command will prompt you for information needed to create the new modules, once completed the original source for the feature can be found in the new modules.
The module-pack includes the following modules relevant to this feature:
Module Name | Description |
---|---|
mmtel-conferencing |
Group module for the feature that includes all of the modules listed below. |
mmtel-conf-library |
Contains common code for the conference modules. |
mmtel-conf-subscription-profile |
Contains the profile specification for the feature configuration profile table. |
mmtel-conf-view-profile |
Contains the profile specification for the profile table used to track information about a conference. |
mmtel-conf-event-schema-library |
Generates java code for the conference event XML schema. |
mmtel-conf-subscription |
Contains the feature itself. |
Subscriber data
Not applicable; the feature is generally available unless disabled at the network level.
Network data
Data is stored in the MMTelCONFSubscriptionConfigurationTable
profile
Parameter | Type | Default | Description |
---|---|---|---|
DefaultSubscriptionExpirySecs |
Integer |
3600 |
Expires value is used if SUBSCRIBE doesn’t contain Expires header |
MinSubscriptionExpirySecs |
Integer |
5 |
SUBSCRIBE requests with a Expires value lower than this are are rejected |
PollingIntervalSecs |
Integer |
5 |
Frequency of polls for changes to conference view |
Statistics
MMTelCONFSubscription
statistics are tracked by the sentinel.volte.sip
SBB and can be found under the following parameter set: SLEE-Usage → sentinel.volte.sip service → sentinel.volte.sip SBB → feature → MMTelCONFSubscription
Name | Type | Description |
---|---|---|
Started |
Counter |
Incremented each time the feature runs. |
FailedToStart |
Counter |
Incremented when Sentinel VoLTE encounters an error while attempting to start the feature. |
IssuedWarning |
Counter |
Incremented when a non-fatal problem is encountered and the feature issues a warning. |
FailedDuringExecution |
Counter |
Incremented when a fatal problem is encountered and the feature cannot execute correctly. |
TimedOut |
Counter |
Incremented when the feature takes too long to complete and Sentinel VoLTE aborts execution. |
SubscriptionStarted |
Counter |
Incremented when a subscription is successfully initiated. |
SubscriptionRefreshed |
Counter |
Incremented when an in-progress subscription is refreshed with a new |
SubscriptionEnded |
Counter |
Incremented when an in-progress subscription is ended with a |
SubscriptionRejected |
Counter |
Incremented when a |
NewSubscriptionRequestedInNewDialog |
Counter |
Incremented when a subscription is initiated by a |
NewSubscriptionRequestedInExistingDialog |
Counter |
Incremented when a subscription is initiated by a |
NotifySent |
Counter |
Incremented each time the feature generates and sends a |
Behaviour
Name |
|
---|---|
Applicable contexts |
SIP service |
Prerequisite features |
|
The MMTel Conference Subscription feature is to be used in conjunction with the MMTel Conference feature. It provides a means for UEs to subscribe to “conference” event package notifications for a conference managed by the MMTel Conference feature. Currently no distinction is made between conference and non conference participants.
Notifications are triggered by changes in the state of the conference for example when a participant joins or leaves.
The feature is triggered initially on an incoming SUBSCRIBE
and is subsequently triggered by a re-SUBSCRIBE
attempt or on the expiry of the features polling timer.
In the case where the feature is triggered by a incoming SUBSCRIBE
message a NOTIFY
will be sent detailing the complete state of the conference.
In the case where the feature is triggered on the expiry of the polling timer a NOTIFY
containing the current state of the conference will only be sent if the conference view has been modified since the last expiry of the timer.
The feature may also be triggered by BYE
requests and REFER
requests that have a Refer-To
method of BYE
, this affects subscriptions that are created in the INVITE
dialog for the conference and will trigger the same behaviour as a polling timer expiry.
Interaction with MMTel Conference feature
MMTel Conference and MMTel Conference Subscription features share the data stored in the MMTelCONFView profiles associated with a given conference if there is at least one active subscription session for the associated conferenceID
. The data is updated in the MMTel Conference feature when the conference is modified and is subsequently read by the MMTel Conference Subscription feature when it periodically polls for state changes. The ConferenceViewRemovalDelay in the MMTel Conference feature’s configuration provides a mechanism to allow all subscription sessions associated with MMTel Conference Subscription feature for the ended conference to complete before the MMTelCONFView profiles are removed. There is a configurable delay in the MMTel Conference feature for how long the profiles should remain for after the conference ends. Generally the PollingIntervalSecs
of MMTel Conference Subscription should be lower than this delay.
Conference view
The current view of a conference is stored as a series of read-only profiles (one for each participant) within the MMTelCONFViewTable. A conference is considered active and therefore a subscription successful if at least one profile exists with the requested ConferenceID
and ConferenceEnded
is false
. Profiles from this table are used to create the body of outgoing NOTIFY messages.
Configuration profile table name | Description | Profile naming |
---|---|---|
MMTelCONFViewTable |
Stores the current state of a participant within a conference |
${CONFERENCE_ID}__${CONNECTION_ID} |
Parameter | Type | Description |
---|---|---|
ConferenceEndpointStatusInternal |
String Current |
Status of a participant connected, disconnected or on-hold |
ConferenceID |
String Unique |
16 character alpha-numeric string prefixed by “mmtel-conf-” (common amongst all participants) |
ConnectionID |
String Unique |
Identifier for a participant as the uniqueness of ParticipantID cannot be guaranteed |
ParticipantID |
String URI |
Identifying the participant |
ParticipantDisplayText |
String |
Participant display text |
EndpointID |
String Unique |
Identifier for the endpoint |
ConferenceEnded |
Boolean |
|
LastUpdateTime |
Long |
Timestamp representing the last time the profile was updated |
ParticipantRequestedPrivacy |
Boolean |
|
Conference Subscription Privacy
If a conference moderator or participant includes the Privacy header with a value of id
or user
during conference establishment, the MMTel Conference Subscription feature anonymizes their identity in subscription NOTIFY
messages.
For the moderator, the Privacy header on the initial INVITE to the conference focus determines the subscription privacy setting. For participants, the Privacy header on the 200 response to the Conference Leg INVITE determines the subscription privacy setting.
An anonymized subscriber identity takes the form sip:anonymous@anonymous.invalid
.
If multiple subscribers in a conference have Privacy set then unique anonymous values are used, e.g. sip:anonymous_1@anonymous.invalid
and sip:anonymous_2@anonymous.invalid
A typical subscription NOTIFY
message XML body with anonymous participants is shown in the example below.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<conference-info xmlns="urn:ietf:params:xml:ns:conference-info" entity="mmtelconf101exmuAr6awKdkUaTRMf34QA" state="full" version="3">
<conference-description/>
<users>
<user entity="sip:anonymous@anonymous.invalid" state="full">
<display-text>Anonymous</display-text>
<endpoint entity="sip:anonymous@anonymous.invalid">
<status>connected</status>
</endpoint>
</user>
<user entity="sip:anonymous_1@anonymous.invalid" state="full">
<display-text>Anonymous_1</display-text>
<endpoint entity="sip:anonymous_1@anonymous.invalid">
<status>connected</status>
</endpoint>
</user>
<user entity="sip:anonymous_2@anonymous.invalid" state="full">
<display-text>Anonymous_2</display-text>
<endpoint entity="sip:anonymous_2@anonymous.invalid">
<status>disconnected</status>
</endpoint>
</user>
</users>
</conference-info>
Conference event schema
Event Package for Conference State and the associated schema are used to convey the current state of the conference for subscribed resources. The feature will always render the complete state of the conference regardless of subscription state.