feat(telegram): enforce canonical product routing
This commit is contained in:
@@ -9,8 +9,8 @@
|
||||
|
||||
from src.core.config import settings
|
||||
from src.core.logging import get_logger
|
||||
|
||||
from .base import (
|
||||
ExecutionStatus,
|
||||
NotificationMessage,
|
||||
NotificationProvider,
|
||||
NotificationResult,
|
||||
@@ -60,16 +60,54 @@ class TelegramWebhookProvider(NotificationProvider):
|
||||
message="Telegram bot token or chat_id not configured",
|
||||
)
|
||||
try:
|
||||
from src.services.telegram_gateway import get_telegram_gateway
|
||||
from src.services.telegram_gateway import (
|
||||
_telegram_send_delivery_succeeded,
|
||||
get_telegram_gateway,
|
||||
)
|
||||
|
||||
gateway = get_telegram_gateway()
|
||||
text = self._format(message)
|
||||
resp = await gateway.send_alert_notification(text=text, parse_mode="HTML")
|
||||
resp = await gateway.send_alert_notification(
|
||||
text=text,
|
||||
parse_mode="HTML",
|
||||
product_id="awoooi",
|
||||
signal_family="incident_lifecycle",
|
||||
severity="P1",
|
||||
)
|
||||
response_data = resp if isinstance(resp, dict) else None
|
||||
if not _telegram_send_delivery_succeeded(resp):
|
||||
delivery_status = (
|
||||
str(resp.get("_awooop_delivery_status") or "")
|
||||
if isinstance(resp, dict)
|
||||
else ""
|
||||
)
|
||||
provider_send_performed = (
|
||||
resp.get("_awooop_provider_send_performed")
|
||||
if isinstance(resp, dict)
|
||||
else None
|
||||
)
|
||||
if (
|
||||
delivery_status == "blocked_no_egress"
|
||||
or provider_send_performed is False
|
||||
):
|
||||
return NotificationResult(
|
||||
status=NotificationStatus.SKIPPED,
|
||||
provider=self.name,
|
||||
message="Telegram notification blocked before provider send",
|
||||
response_data=response_data,
|
||||
)
|
||||
return NotificationResult(
|
||||
status=NotificationStatus.FAILED,
|
||||
provider=self.name,
|
||||
message="Telegram provider did not acknowledge delivery",
|
||||
response_data=response_data,
|
||||
error="delivery_not_acknowledged",
|
||||
)
|
||||
return NotificationResult(
|
||||
status=NotificationStatus.SUCCESS,
|
||||
provider=self.name,
|
||||
message="Telegram notification sent",
|
||||
response_data=resp if isinstance(resp, dict) else None,
|
||||
response_data=response_data,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception("telegram_notification_exception", error=str(e))
|
||||
@@ -88,8 +126,13 @@ class TelegramWebhookProvider(NotificationProvider):
|
||||
from src.services.telegram_gateway import get_telegram_gateway
|
||||
|
||||
gw = get_telegram_gateway()
|
||||
await gw.send_alert_notification(text="🔔 AWOOOI Telegram provider 連線測試")
|
||||
return True
|
||||
result = await gw.send_alert_notification(
|
||||
text="AWOOOI Telegram provider no-egress policy probe",
|
||||
product_id="awoooi",
|
||||
signal_family="product_raw_monitoring",
|
||||
severity="P3",
|
||||
)
|
||||
return bool(result.get("ok"))
|
||||
except Exception as e:
|
||||
logger.error("telegram_connection_test_failed", error=str(e))
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user