Release v4928.1.4.2 stable
This commit is contained in:
65
app/message_cleaner.py
Normal file
65
app/message_cleaner.py
Normal file
@@ -0,0 +1,65 @@
|
||||
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 ""))
|
||||
Reference in New Issue
Block a user