import logging from datetime import datetime import events from bot import telegram as bot from intradesk import formatter log = logging.getLogger(__name__) def handle_webhook(payload: dict): try: task_id = payload.get("Id") op_type = payload.get("Event", {}).get("OperationType", "") fields = payload.get("Fields", {}) number = fields.get("Number", "?") if not task_id: log.warning("Webhook payload missing Id — skipped") return if op_type not in ("Created", "Updated"): log.debug(f"OperationType '{op_type}' — skipped") return changes, comments = formatter.parse_lifetime(fields) full_text = formatter.format_notification(payload) events.broadcast({ "type": "webhook", "timestamp": datetime.utcnow().strftime("%d.%m.%Y %H:%M:%S"), "task_id": task_id, "task_number": number, "operation": op_type, "raw": payload, "parsed": { "changes": changes, "comments": comments, }, "formatted": full_text, }) closed = formatter.is_final(fields) if op_type == "Created": bot.send_or_edit(task_id, number, full_text, closed=closed) else: summary = formatter.format_update_summary(changes, comments) bot.send_or_edit(task_id, number, full_text, summary, closed=closed) except Exception: log.exception("Error while handling webhook")