Spaces:
Running
Running
| from fastapi import FastAPI, Request | |
| from datetime import datetime, timezone, timedelta | |
| app = FastAPI() | |
| async def receive_webhook(request: Request): | |
| payload = await request.json() | |
| print("📥 Webhook received:") | |
| # Define GMT+3 offset | |
| gmt_plus_3 = timezone(timedelta(hours=3)) | |
| # Top-level fields | |
| print(f"Request ID: {payload.get('request_id')}") | |
| print(f"Object: {payload.get('object')}") | |
| print(f"Time (Unix): {payload.get('time')}") | |
| try: | |
| formatted_time = datetime.fromtimestamp(payload.get('time'), gmt_plus_3).strftime('%Y-%m-%d %H:%M:%S GMT+3') | |
| print(f"Time (Formatted): {formatted_time}") | |
| except Exception: | |
| print("Time (Formatted): Invalid timestamp") | |
| print("----") | |
| # Loop through entries | |
| for entry in payload.get('entry', []): | |
| print(f"Lead ID: {entry.get('id')}") | |
| print(f"Page ID: {entry.get('page_id')}") | |
| print(f"Page Name: {entry.get('page_name')}") | |
| print(f"Campaign ID: {entry.get('campaign_id')}") | |
| print(f"Campaign Name: {entry.get('campaign_name')}") | |
| print(f"Ad Group ID: {entry.get('adgroup_id')}") | |
| print(f"Ad Group Name: {entry.get('adgroup_name')}") | |
| print(f"Ad ID: {entry.get('ad_id')}") | |
| print(f"Ad Name: {entry.get('ad_name')}") | |
| create_ts = entry.get('create_time') | |
| print(f"Create Time (Unix): {create_ts}") | |
| try: | |
| formatted_create_time = datetime.fromtimestamp(create_ts, gmt_plus_3).strftime('%Y-%m-%d %H:%M:%S GMT+3') | |
| print(f"Create Time (Formatted): {formatted_create_time}") | |
| except Exception: | |
| print("Create Time (Formatted): Invalid timestamp") | |
| print(f"Advertiser ID: {entry.get('advertiser_id')}") | |
| print(f"Advertiser Name: {entry.get('advertiser_name')}") | |
| print(f"Library ID: {entry.get('library_id')}") | |
| print(f"Lead Source: {entry.get('lead_source')}") | |
| print("----") | |
| # Lead field values | |
| for change in entry.get('changes', []): | |
| print(f"{change.get('field').capitalize()}: {change.get('value')}") | |
| print("----") | |
| return {"status": "ok"} |