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 |
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 |
CassandraQueried |
Counter |
Incremented when a query is sent to Cassandra. |
CassandraQueryFailed |
Counter |
Incremented when a query to Cassandra fails. |
CassandraResponseReceived |
Counter |
Incremented when the response from Cassandra is a non-empty result set. |
CassandraErrorReceived |
Counter |
Incremented when a Cassandra Response is found to be an error. |
CassandraEmptyResultSetReceived |
Counter |
Incremented when the response from Cassandra is an empty result set. |
CassandraActivityEndedBeforeResponse |
Counter |
Incremented when a Cassandra session is ended while outstanding queries await a response. |
ActivityEndEventReceived |
Counter |
Incremented each time the feature receives an Activity End Event. |
Behaviour
Name |
|
---|---|
Applicable contexts |
SIP service |
Prerequisite features |
|
The MMTel Conference Subscription feature is used in conjunction with the MMTel Conference View Update` and MMTel Conference features. It provides a means for UEs to subscribe to “conference” event package notifications for a conference managed by the MMTel Conference feature.
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 an incoming SUBSCRIBE
message; it will trigger a query to Cassandra to check the conference state and then wait for a response.
Once the waiting feature receives a CassandraQueryResultEvent
, a NOTIFY
will be sent detailing the complete state of the conference.
In the case where the feature is triggered by an incoming SUBSCRIBE
message and a CassandraErrorEvent
occurs, a 408
response will be sent.
In the case where the feature is triggered on the expiry of the polling timer; it will trigger a query to Cassandra to check the conference state and then wait for a response.
Once the waiting feature receives a CassandraQueryResultEvent
, the feature will check if the conference state has changed since the last expiry of the polling timer; if the conference state has been modified, it will send a NOTIFY
containing the current state of the conference.
If an CassandraErrorEvent
is received after a query is triggered by the expiry of the polling timer, it will simply reset the polling 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.
The feature will end, and clean up any active Cassandra activity, if it receives an EndActivityEvent
.
Interaction with MMTel Conference feature
MMTel Conference View Update` and MMTel Conference Subscription features share the data stored in the Cassandra database 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 removing data associated with conference from the database.
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 State
The current view of a conference is stored in Cassandra. A conference is considered active and therefore a successful subscription, if at least one conference exists in the database with the requested ConferenceID
and its ConferenceEnded
value being false
. Information about the conference is then used to create the body of outgoing NOTIFY messages.
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.