Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
|
@@ -122,6 +122,50 @@ def call_ai_bot(message: str):
|
|
| 122 |
# Webhook receiver
|
| 123 |
# =========================
|
| 124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
@app.post("/recieve")
|
| 126 |
async def webhook_receiver(req: Request):
|
| 127 |
try:
|
|
@@ -147,12 +191,13 @@ async def webhook_receiver(req: Request):
|
|
| 147 |
chat_id = sender_data.get("chatId") # ده اللي لازم تبعت له الرد
|
| 148 |
msg_data = body.get("messageData") or {}
|
| 149 |
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
|
| 154 |
print(">>> instance_wid:", instance_wid)
|
| 155 |
print(">>> chat_id:", chat_id)
|
|
|
|
| 156 |
print(">>> text_message:", text_message)
|
| 157 |
|
| 158 |
# لو مفيش chat_id أو مفيش رسالة نصية، نوقف
|
|
@@ -270,4 +315,4 @@ async def complaints_proxy(req: Request):
|
|
| 270 |
"gas_status": gas_resp.status_code,
|
| 271 |
"raw": (gas_resp.text or "")[:1500]
|
| 272 |
}
|
| 273 |
-
)
|
|
|
|
| 122 |
# Webhook receiver
|
| 123 |
# =========================
|
| 124 |
|
| 125 |
+
def extract_text_message(msg_data: dict) -> str:
|
| 126 |
+
"""
|
| 127 |
+
يحاول يطلع النص من messageData مهما كان typeMessage
|
| 128 |
+
"""
|
| 129 |
+
if not isinstance(msg_data, dict):
|
| 130 |
+
return ""
|
| 131 |
+
|
| 132 |
+
t = (msg_data.get("typeMessage") or "").strip()
|
| 133 |
+
|
| 134 |
+
# 1) textMessage
|
| 135 |
+
if t == "textMessage":
|
| 136 |
+
return ((msg_data.get("textMessageData") or {}).get("textMessage") or "").strip()
|
| 137 |
+
|
| 138 |
+
# 2) extendedTextMessage (شائع جدًا)
|
| 139 |
+
if t == "extendedTextMessage":
|
| 140 |
+
return ((msg_data.get("extendedTextMessageData") or {}).get("text") or "").strip()
|
| 141 |
+
|
| 142 |
+
# 3) quotedMessage / reply (لو جاي مع رد)
|
| 143 |
+
if t == "quotedMessage":
|
| 144 |
+
q = msg_data.get("quotedMessageData") or {}
|
| 145 |
+
# أحيانًا يبقى جوّه نفس المفاتيح
|
| 146 |
+
return (
|
| 147 |
+
(q.get("textMessage") or "")
|
| 148 |
+
or (q.get("text") or "")
|
| 149 |
+
or ""
|
| 150 |
+
).strip()
|
| 151 |
+
|
| 152 |
+
# 4) fallback عام: جرّب مفاتيح محتملة
|
| 153 |
+
# بعض الـ payloads بيكون النص تحت key = "text" أو "message"
|
| 154 |
+
for path in [
|
| 155 |
+
("textMessageData", "textMessage"),
|
| 156 |
+
("extendedTextMessageData", "text"),
|
| 157 |
+
("textMessageData", "text"),
|
| 158 |
+
("message",),
|
| 159 |
+
("text",),
|
| 160 |
+
]:
|
| 161 |
+
cur = msg_data
|
| 162 |
+
for k in path:
|
| 163 |
+
cur = cur.get(k) if isinstance(cur, dict) else None
|
| 164 |
+
if isinstance(cur, str) and cur.strip():
|
| 165 |
+
return cur.strip()
|
| 166 |
+
|
| 167 |
+
return ""
|
| 168 |
+
|
| 169 |
@app.post("/recieve")
|
| 170 |
async def webhook_receiver(req: Request):
|
| 171 |
try:
|
|
|
|
| 191 |
chat_id = sender_data.get("chatId") # ده اللي لازم تبعت له الرد
|
| 192 |
msg_data = body.get("messageData") or {}
|
| 193 |
|
| 194 |
+
type_message = (msg_data.get("typeMessage") or "")
|
| 195 |
+
text_message = extract_text_message(msg_data)
|
| 196 |
+
|
| 197 |
|
| 198 |
print(">>> instance_wid:", instance_wid)
|
| 199 |
print(">>> chat_id:", chat_id)
|
| 200 |
+
print(">>> typeMessage:", type_message)
|
| 201 |
print(">>> text_message:", text_message)
|
| 202 |
|
| 203 |
# لو مفيش chat_id أو مفيش رسالة نصية، نوقف
|
|
|
|
| 315 |
"gas_status": gas_resp.status_code,
|
| 316 |
"raw": (gas_resp.text or "")[:1500]
|
| 317 |
}
|
| 318 |
+
)
|