VietCat commited on
Commit
7e07b08
·
1 Parent(s): 72767d1

fix duplicate message

Browse files
Files changed (2) hide show
  1. app/facebook.py +2 -1
  2. app/main.py +10 -6
app/facebook.py CHANGED
@@ -54,6 +54,8 @@ class FacebookClient:
54
  Input: page_access_token (str), recipient_id (str), message (str)
55
  Output: dict (response từ Facebook API)
56
  """
 
 
57
  url = f"https://graph.facebook.com/v18.0/me/messages?access_token={page_access_token}"
58
 
59
  payload = {
@@ -62,7 +64,6 @@ class FacebookClient:
62
  }
63
 
64
  try:
65
- logger.debug(f"Đang gửi tin nhắn đến Facebook Messenger....\n\t{message}")
66
  response = await self._client.post(url, json=payload)
67
  response.raise_for_status()
68
  return response.json()
 
54
  Input: page_access_token (str), recipient_id (str), message (str)
55
  Output: dict (response từ Facebook API)
56
  """
57
+
58
+ logger.debug(f"Đang gửi tin nhắn đến Facebook Messenger....\n\t{message}")
59
  url = f"https://graph.facebook.com/v18.0/me/messages?access_token={page_access_token}"
60
 
61
  payload = {
 
64
  }
65
 
66
  try:
 
67
  response = await self._client.post(url, json=payload)
68
  response.raise_for_status()
69
  return response.json()
app/main.py CHANGED
@@ -286,7 +286,9 @@ async def process_message(message_data: Dict[str, Any]):
286
  hanh_vi_vi_pham = hanh_vi_vi_pham.strip()
287
 
288
  logger.info(f"[DEBUG] Phương tiện: {keywords} - Hành vi: {hanh_vi_vi_pham} - Mục đích: {muc_dich}")
289
-
 
 
290
  # 4. Update lại conversation với thông tin đầy đủ
291
  update_kwargs = {
292
  'conversation_id': conv['conversation_id'],
@@ -310,10 +312,10 @@ async def process_message(message_data: Dict[str, Any]):
310
  # 5. Xử lý logic nghiệp vụ
311
  response = await process_business_logic(conv, page_token)
312
  logger.info(f"[DEBUG] Message history sau khi process: {conv}")
313
-
314
  # 6. Gửi response và cập nhật final state
315
  await facebook_client.send_message(page_token, sender_id, response)
316
- await loop.run_in_executor(executor, lambda: sheets_client.log_conversation(**update_kwargs))
317
  return
318
 
319
  async def process_business_logic(log_kwargs: Dict[str, Any], page_token: str) -> str:
@@ -423,9 +425,9 @@ async def format_search_results(question: str, matches: List[Dict[str, Any]]) ->
423
  prompt = (
424
  "Bạn là một trợ lý AI có kiến thức pháp luật, hãy trả lời câu hỏi dựa trên các đoạn luật sau. "
425
  "Chỉ sử dụng thông tin có trong các đoạn, không tự đoán.\n"
426
- f"Các đoạn luật liên quan:\n{full_result_text}"
427
- "\nHãy trả lời ngắn gọn, dễ hiểu, trích dẫn rõ ràng thông tin từ các đoạn luật nếu cần."
428
- f"\nCâu hỏi của người dùng: {question}\n"
429
  )
430
 
431
  logger.info(f"[DEBUG] prompt:\n {prompt}")
@@ -435,6 +437,8 @@ async def format_search_results(question: str, matches: List[Dict[str, Any]]) ->
435
  answer = await llm_client.generate_text(prompt)
436
  if answer and answer.strip():
437
  return answer.strip()
 
 
438
  except Exception as e:
439
  logger.error(f"LLM không sẵn sàng: {e}\n{traceback.format_exc()}")
440
  # Fallback: trả về tổng hợp các đoạn luật như cũ
 
286
  hanh_vi_vi_pham = hanh_vi_vi_pham.strip()
287
 
288
  logger.info(f"[DEBUG] Phương tiện: {keywords} - Hành vi: {hanh_vi_vi_pham} - Mục đích: {muc_dich}")
289
+
290
+ await facebook_client.send_message(page_token, sender_id, "Mình đang phân tích câu hỏi của bạn. Sắp xong rồi\nCảm ơn sự kiên nhẫn của bạn!")
291
+
292
  # 4. Update lại conversation với thông tin đầy đủ
293
  update_kwargs = {
294
  'conversation_id': conv['conversation_id'],
 
312
  # 5. Xử lý logic nghiệp vụ
313
  response = await process_business_logic(conv, page_token)
314
  logger.info(f"[DEBUG] Message history sau khi process: {conv}")
315
+
316
  # 6. Gửi response và cập nhật final state
317
  await facebook_client.send_message(page_token, sender_id, response)
318
+ await loop.run_in_executor(executor, lambda: sheets_client.log_conversation(**conv))
319
  return
320
 
321
  async def process_business_logic(log_kwargs: Dict[str, Any], page_token: str) -> str:
 
425
  prompt = (
426
  "Bạn là một trợ lý AI có kiến thức pháp luật, hãy trả lời câu hỏi dựa trên các đoạn luật sau. "
427
  "Chỉ sử dụng thông tin có trong các đoạn, không tự đoán.\n"
428
+ f"\nCác đoạn luật liên quan:\n{full_result_text}"
429
+ "\n\nHãy trả lời ngắn gọn, dễ hiểu, trích dẫn rõ ràng thông tin từ các đoạn luật nếu cần."
430
+ f"\n\nCâu hỏi của người dùng: {question}\n"
431
  )
432
 
433
  logger.info(f"[DEBUG] prompt:\n {prompt}")
 
437
  answer = await llm_client.generate_text(prompt)
438
  if answer and answer.strip():
439
  return answer.strip()
440
+ else:
441
+ logger.error(f"LLM không trả về câu trả lời phù hợp: \n\tanswer: {answer}")
442
  except Exception as e:
443
  logger.error(f"LLM không sẵn sàng: {e}\n{traceback.format_exc()}")
444
  # Fallback: trả về tổng hợp các đoạn luật như cũ