Browse Source

feat: Add image attachment URL to Telegram notifications

unknown 2 tháng trước cách đây
mục cha
commit
958d0ca5bb
2 tập tin đã thay đổi với 10 bổ sung4 xóa
  1. 1 1
      backend/routers/chat.py
  2. 9 3
      backend/services/event_hooks.py

+ 1 - 1
backend/routers/chat.py

@@ -133,7 +133,7 @@ async def post_order_message(
         from services import event_hooks
         await global_manager.notify_admins()
         await global_manager.notify_admins_new_message(order_id, message or "Image uploaded")
-        event_hooks.on_message_received(order_id, user_id, message or "Image uploaded")
+        event_hooks.on_message_received(order_id, user_id, message or "Image uploaded", db_file_path)
         
     return {
         "id": msg_id, 

+ 9 - 3
backend/services/event_hooks.py

@@ -40,12 +40,12 @@ def on_order_status_changed(order_id: int, status: str, order_data: dict, send_n
         import notifications
         notifications.notify_status_change(user_email, order_id, status, first_name, lang)
 
-def on_message_received(order_id: int, user_id: int, message: str):
+def on_message_received(order_id: int, user_id: int, message: str, image_url: str = None):
     """
     Hook triggered when a client sends a message to an order chat.
     Duplicates message to Redis for Telegram notification.
     """
-    print(f"EVENT: New message for Order {order_id} from User {user_id}: {message[:20]}...")
+    print(f"EVENT: New message for Order {order_id} from User {user_id}: {str(message)[:20]}...")
     
     r = _get_redis()
     if r and config.TELEGRAM_CHAT_ID:
@@ -54,9 +54,15 @@ def on_message_received(order_id: int, user_id: int, message: str):
             user_res = db.execute_query("SELECT first_name, last_name FROM users WHERE id = %s", (user_id,))
             name = f"{user_res[0].get('first_name', 'User')} {user_res[0].get('last_name', '')}".strip() if user_res else "Client"
             
+            msg_text = message if message else "Image uploaded"
+            full_msg = f"💬 <b>Новое сообщение</b>\nЗаказ: #{order_id}\nОт: <b>{name}</b>\n\n{msg_text}"
+            
+            if image_url:
+                full_msg += f"\n\n🖼️ <b>Вложение:</b> {config.FRONTEND_URL}/api/{image_url}"
+                
             payload = {
                 "id": config.TELEGRAM_CHAT_ID,
-                "message": f"💬 <b>Новое сообщение</b>\nЗаказ: #{order_id}\nОт: <b>{name}</b>\n\n{message}"
+                "message": full_msg
             }
             r.rpush("messages_queue", json.dumps(payload, ensure_ascii=False))
         except Exception as e: