Spaces:
Build error
Build error
| 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") | |