Mr-Help commited on
Commit
b2a7019
·
verified ·
1 Parent(s): 41f2352

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +49 -4
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
- text_message = ""
151
- if msg_data.get("typeMessage") == "textMessage":
152
- text_message = ((msg_data.get("textMessageData") or {}).get("textMessage") or "").strip()
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
+ )