Spaces:
Build error
Build error
# webhook_handler.py | |
from dataclasses import dataclass | |
from typing import List, Dict, Any | |
import time | |
import logging | |
from fastapi import Request, status | |
from fastapi.responses import JSONResponse | |
logger = logging.getLogger(__name__) | |
class WebhookResponse: | |
request_id: str | |
results: List[Dict] | |
class WebhookHandler: | |
def __init__(self, message_handler): | |
self.message_handler = message_handler | |
self.logger = logging.getLogger(__name__) | |
async def process_webhook(self, payload: dict, whatsapp_token: str, whatsapp_url:str,gemini_api:str, rag_system:Any = None, agentMemory:Any = None, memory:Any = None) -> WebhookResponse: | |
request_id = f"req_{int(time.time()*1000)}" | |
results = [] | |
# self.logger.info(f"Processing webhook request {payload}") | |
try: | |
entries = payload.get("entry", []) | |
for entry in entries: | |
entry_id = entry.get("id") | |
# self.logger.info(f"Processing entry_id: {entry_id}") | |
changes = entry.get("changes", []) | |
for change in changes: | |
messages = change.get("value", {}).get("messages", []) | |
# self.logger.info(f"message length: {len(messages)}") | |
for message in messages: | |
# self.logger.info(f"Processing message: {message}") | |
response = await self.message_handler.handle( | |
raw_message=message, | |
whatsapp_token=whatsapp_token, | |
whatsapp_url=whatsapp_url, | |
gemini_api=gemini_api, | |
rag_system=rag_system, | |
agentMemory = agentMemory, | |
memory = memory | |
) | |
results.append(response) | |
except Exception as e: | |
self.logger.error(f"Error processing webhook: {str(e)}") | |
return WebhookResponse( | |
request_id=request_id, | |
results=[{"status": "error", "error": str(e)}] | |
) | |
self.logger.info(f"Webhook processing completed - Results: {len(results)}") | |
return WebhookResponse(request_id=request_id, results=results) |