Chuyển tới nội dung chính

Subscription Manager Agent

The Subscription Manager Agent handles NGSI-LD subscriptions and user notification preferences.

📋 Overview

PropertyValue
Modulesrc.agents.notification.subscription_manager_agent
ClassSubscriptionManagerAgent
AuthorUIP Team
Version1.0.0

🎯 Purpose

  • Manage NGSI-LD subscriptions in Stellio
  • Handle user notification preferences by topic
  • Route notifications to appropriate handlers
  • Track subscription lifecycle and health

🚀 Usage

Create Subscription

from src.agents.notification.subscription_manager_agent import SubscriptionManagerAgent

manager = SubscriptionManagerAgent()

# Create NGSI-LD subscription
subscription = await manager.create_subscription({
"type": "Subscription",
"entities": [{"type": "TrafficCamera"}],
"watchedAttributes": ["status", "vehicleCount"],
"notification": {
"endpoint": {
"uri": "http://localhost:8080/notifications"
}
},
"q": "vehicleCount>100"
})

User Subscription

# Subscribe user to alerts
await manager.subscribe_user(
user_id="USER_001",
topics=["accidents", "congestion"],
channels=["email", "push"],
preferences={
"severity_threshold": "medium",
"zones": ["district_1"]
}
)

List Subscriptions

# Get all active subscriptions
subscriptions = await manager.list_subscriptions()

# Get user's subscriptions
user_subs = await manager.get_user_subscriptions("USER_001")

⚙️ Configuration

# config/subscriptions.yaml
subscription_manager:
enabled: true

# Stellio settings
stellio:
url: "http://localhost:8080"
subscription_endpoint: "/ngsi-ld/v1/subscriptions"

# Default subscription settings
defaults:
throttling: 5 # seconds
expires_in_days: 30
notification_format: "normalized"

# Topics
topics:
accidents:
entity_type: "TrafficAccident"
attributes: ["severity", "location", "status"]
congestion:
entity_type: "CongestionZone"
attributes: ["level", "affectedRoads"]

📊 Subscription Types

TypeDescriptionNotification
entity_changesTrack entity updatesReal-time
threshold_alertsValue exceeds thresholdImmediate
scheduled_reportsPeriodic summariesScheduled
geofence_eventsLocation-basedReal-time

🔄 Subscription Lifecycle

graph LR
A[Create] --> B[Active]
B --> C[Triggered]
C --> B
B --> D[Paused]
D --> B
B --> E[Expired]
E --> F[Deleted]

See the complete agents reference for all available agents.