from typing import Any, Dict def get_nested(data: Dict[str, Any], *keys: str) -> Any: current: Any = data for key in keys: if not isinstance(current, dict): return None current = current.get(key) return current def clean_email_reply_text(content: str) -> str: text = str(content or "").replace("\r\n", "\n").replace("\r", "\n").strip() cut_markers = [ "\nDe:", "\nEnviada:", "\nEnviado:", "\nAssunto:", "\nPara:", "\nCc:", "\nÀs ", "\nOn ", "\nFrom:", "\nSent:", "\nSubject:", "\nTo:", "\n-----Original Message-----", "\n________________________________", ] cut_at = len(text) for marker in cut_markers: idx = text.find(marker) if idx != -1: cut_at = min(cut_at, idx) cleaned = text[:cut_at].strip() lines = [] for line in cleaned.split("\n"): if line.strip().startswith(">"): continue lines.append(line) return "\n".join(lines).strip() def extract_chatwoot_content(payload: Dict[str, Any], message: Dict[str, Any]) -> str: content = ( get_nested(message, "content_attributes", "email", "html_content", "reply") or get_nested(message, "content_attributes", "email", "text_content", "reply") or get_nested(payload, "content_attributes", "email", "html_content", "reply") or get_nested(payload, "content_attributes", "email", "text_content", "reply") or message.get("processed_message_content") or message.get("content") or payload.get("content") or "" ) return clean_email_reply_text(str(content or ""))