diff --git a/apps/api/src/services/telegram_gateway.py b/apps/api/src/services/telegram_gateway.py index 17e3fcd2..bcb6ba98 100644 --- a/apps/api/src/services/telegram_gateway.py +++ b/apps/api/src/services/telegram_gateway.py @@ -4961,6 +4961,41 @@ class TelegramGateway: payload["reply_markup"] = reply_markup return await self._send_request("sendMessage", payload) + # ========================================================================= + # 2026-05-04 Claude Sonnet 4.6: send_text 公開 wrapper(修復 drift_adopt_telegram_failed) + # ========================================================================= + + async def send_text( + self, + text: str, + chat_id: int | str | None = None, + parse_mode: str = "HTML", + disable_web_page_preview: bool = True, + ) -> dict: + """ + 公開 send_text wrapper — 委派至 _send_request('sendMessage', ...) + + 給 drift_adopt_service / drift_remediator / runbook_generator / + signoz_webhook 等服務使用的通用純文字送出方法。 + 預設送往 alert_chat_id(SRE 群組)。 + + Args: + text: 訊息內容(最多 4096 字元) + chat_id: 目標 chat ID,None 時使用 alert_chat_id + parse_mode: 解析模式(預設 HTML) + disable_web_page_preview: 是否關閉網頁預覽 + + Returns: + dict: Telegram API 回應 + """ + payload: dict = { + "chat_id": chat_id or self.alert_chat_id, + "text": text[:4096], + "parse_mode": parse_mode, + "disable_web_page_preview": disable_web_page_preview, + } + return await self._send_request("sendMessage", payload) + # ========================================================================= # 2026-04-24 Claude Sonnet 4.6 (ADR-095 WS4): Hermes NL 回覆 # =========================================================================