import logging from fastapi import Request, status from fastapi.responses import JSONResponse, Response from fastapi.exceptions import HTTPException from app.services.cache import MessageCache from app.services.download_media import download_whatsapp_media from app.utils.handle_message import handle_message from app.utils.load_env import ACCESS_TOKEN import time logger = logging.getLogger(__name__) message_cache = MessageCache() user_chats = {} # async def webhook(request: Request): # request_id = f"req_{int(time.time()*1000)}" # payload = await request.json() # logger.info(f"Processing webhook request {payload}") # processed_count = 0 # error_count = 0 # results = [] # entries = payload.get("entry", []) # for entry in entries: # entry_id = entry.get("id") # logger.info(f"Processing entry_id: {entry_id}") # changes = entry.get("changes", []) # for change in changes: # messages = change.get("value", {}).get("messages", []) # media = {} # for message in messages: # logger.info(f"Processing message: {message}") # response = await handle_message(message=message, user_chats = user_chats, message_cache = message_cache, access_token = ACCESS_TOKEN) # results.append(response) # response_data = { # "request_id": request_id, # # "processed": processed_count, # # "errors": error_count, # "results": results, # } # logger.info(f"Webhook processing completed - Processed: {processed_count}, Errors: {error_count}") # return JSONResponse(content=response_data, status_code=status.HTTP_200_OK) async def verify_webhook(request: Request): mode = request.query_params.get('hub.mode') token = request.query_params.get('hub.verify_token') challenge = request.query_params.get('hub.challenge') if mode == 'subscribe' and token == 'test': return Response(content=challenge, media_type="text/plain") else: raise HTTPException(status_code=403, detail="Verification failed")