From 0e659072c076ea2ef262f214d0d602ffd1991e9d Mon Sep 17 00:00:00 2001 From: Jonas Linter Date: Mon, 13 Oct 2025 13:45:19 +0200 Subject: [PATCH] Added capi test. Data is received in facebook --- alpinebits_capi_test.db | Bin 0 -> 192512 bytes test_capi.py | 291 ++++++++++++++++++++++++++++++++++++++++ test_handshake.py | 29 ---- 3 files changed, 291 insertions(+), 29 deletions(-) create mode 100644 alpinebits_capi_test.db create mode 100644 test_capi.py delete mode 100644 test_handshake.py diff --git a/alpinebits_capi_test.db b/alpinebits_capi_test.db new file mode 100644 index 0000000000000000000000000000000000000000..2f725834bc8bc5c96f6dfeb185419e9271fed11f GIT binary patch literal 192512 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 Og4^6tYc|8`%Krl2m7V+m literal 0 HcmV?d00001 diff --git a/test_capi.py b/test_capi.py new file mode 100644 index 0000000..6eed501 --- /dev/null +++ b/test_capi.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +"""Test sending a test event to the Conversions Api from Meta.""" + +import asyncio +import json +import logging +import time + +from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine +from sqlalchemy.orm import sessionmaker +from src.alpine_bits_python.customer_service import CustomerService +from src.alpine_bits_python.db import Base +from src.alpine_bits_python.reservation_service import ReservationService + +# Set up logging +logging.basicConfig( + level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" +) +logger = logging.getLogger(__name__) + +TEST_CODE = "TEST54726" + +# Meta CAPI configuration (placeholder values) +PIXEL_ID = "539512870322352" +ACCESS_TOKEN = "EAATsRaQOv94BPoib5XUn9ZBjNPfeZB4JlKJR1LYtiMdzbEoIa7XFDmHq3pY8UvOcHnbNYDraym107hwRd3EfzO8EpQ5ZB5C4OfF7KJ41KIrfQntkoWrCYcQReecd4vhzVk82hjm55yGDhkxzuNuzG85FZCT0nZB6VyIxZAVLR2estoUSAoQ06J742aMkZCN2AZDZD" +CAPI_ENDPOINT = f"https://graph.facebook.com/v19.0/{PIXEL_ID}/events" + + +async def load_test_data_from_db(): + """Load reservations and hashed customers from the database.""" + # Connect to the test database + db_url = "sqlite+aiosqlite:///alpinebits_capi_test.db" + engine = create_async_engine(db_url, echo=False) + + # Create tables if they don't exist + async with engine.begin() as conn: + await conn.run_sync(Base.metadata.create_all) + + # Create async session + async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) + + async with async_session() as session: + # Initialize services + reservation_service = ReservationService(session) + customer_service = CustomerService(session) + + # Get all reservations with customers + reservations_with_customers = ( + await reservation_service.get_reservations_with_filters() + ) + + if not reservations_with_customers: + logger.warning("No reservations found in database") + return [] + + logger.info("Found %d reservations", len(reservations_with_customers)) + + # Prepare data with hashed customer info + result = [] + for reservation, customer in reservations_with_customers: + # Get hashed customer data + hashed_customer = await customer_service.get_hashed_customer(customer.id) + + result.append( + { + "reservation": reservation, + "customer": customer, + "hashed_customer": hashed_customer, + } + ) + + await engine.dispose() + return result + + +def _build_user_data(hashed_customer): + """Build user_data dict from hashed customer information. + + Args: + hashed_customer: HashedCustomer database object with SHA256 hashed PII + + Returns: + dict: User data for Meta Conversions API + + """ + user_data = {} + if not hashed_customer: + return user_data + + # Map hashed customer fields to Meta CAPI field names + field_mapping = { + "hashed_email": "em", + "hashed_phone": "ph", + "hashed_given_name": "fn", + "hashed_surname": "ln", + "hashed_city": "ct", + "hashed_postal_code": "zp", + "hashed_country_code": "country", + "hashed_gender": "ge", + "hashed_birth_date": "db", + } + + for source_field, target_field in field_mapping.items(): + value = getattr(hashed_customer, source_field, None) + if value: + user_data[target_field] = value + + return user_data + + +def _build_custom_data(reservation, booking_value): + """Build custom_data dict from reservation information. + + Args: + reservation: Reservation database object + booking_value: Booking value in EUR + + Returns: + dict: Custom data for Meta Conversions API + + """ + custom_data = { + "currency": "EUR", + "value": booking_value, + "content_type": "hotel_booking", + } + + # Add optional reservation details + optional_fields = { + "hotel_code": "hotel_code", + "hotel_name": "hotel_name", + "num_adults": "num_adults", + "num_children": "num_children", + } + + for source_field, target_field in optional_fields.items(): + value = getattr(reservation, source_field, None) + if value: + custom_data[target_field] = value + + # Add date fields with ISO format + if reservation.start_date: + custom_data["checkin_date"] = reservation.start_date.isoformat() + if reservation.end_date: + custom_data["checkout_date"] = reservation.end_date.isoformat() + + return custom_data + + +def _add_utm_parameters(custom_data, reservation): + """Add UTM parameters to custom_data if available. + + Args: + custom_data: Custom data dict to modify + reservation: Reservation database object + + """ + utm_fields = ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content"] + if any(getattr(reservation, field, None) for field in utm_fields): + for field in utm_fields: + custom_data[field] = getattr(reservation, field, None) + + +def _format_fbc(fbclid, timestamp): + """Format Facebook Click ID (fbclid) to fbc parameter. + + The fbc format is: fb.{subdomain_index}.{timestamp_ms}.{fbclid} + + Args: + fbclid: Facebook Click ID from the ad URL + timestamp: DateTime object from reservation creation + + Returns: + str: Formatted fbc value for Meta Conversions API + + """ + # Extract timestamp in milliseconds + timestamp_ms = int(timestamp.timestamp() * 1000) + # Subdomain index is typically 1 + subdomain_index = 1 + return f"fb.{subdomain_index}.{timestamp_ms}.{fbclid}" + + +def create_meta_capi_event(reservation, customer, hashed_customer): + """Create a Meta Conversions API event from reservation and customer data. + + Args: + reservation: Reservation database object + customer: Customer database object (currently unused) + hashed_customer: HashedCustomer database object with SHA256 hashed PII + + Returns: + dict: Formatted event for Meta Conversions API + + """ + del customer # Currently unused but kept for API consistency + # Calculate booking value (example: random value between 500-2000 EUR) + booking_value = 1250.00 # Euro + + # Current timestamp + event_time = int(time.time()) + + # Build user_data with hashed customer information + user_data = _build_user_data(hashed_customer) + + # Add tracking parameters if available + if reservation.fbclid and reservation.created_at: + # Format fbclid as fbc parameter + user_data["fbc"] = _format_fbc(reservation.fbclid, reservation.created_at) + if reservation.gclid: + user_data["gclid"] = reservation.gclid + + # Build custom_data + custom_data = _build_custom_data(reservation, booking_value) + + # Add UTM parameters to event + _add_utm_parameters(custom_data, reservation) + + # Return the event + return { + "event_name": "Purchase", + "event_time": event_time, + "event_id": reservation.unique_id, # Unique event ID for deduplication + "event_source_url": "https://example.com/booking-confirmation", + "action_source": "website", + "user_data": user_data, + "custom_data": custom_data, + } + + +async def send_test_event(): + """Load data from DB and create test Meta CAPI event.""" + logger.info("Loading test data from database...") + + # Load data + test_data = await load_test_data_from_db() + + if not test_data: + logger.error("No test data available. Please add reservations to the database.") + return + + # Use the first reservation for testing + data = test_data[0] + reservation = data["reservation"] + customer = data["customer"] + hashed_customer = data["hashed_customer"] + + logger.info("Using reservation: %s", reservation.unique_id) + logger.info("Customer: %s %s", customer.given_name, customer.surname) + + # Create the event + event = create_meta_capi_event(reservation, customer, hashed_customer) + + # Create the full payload with test_event_code at top level + payload = { + "data": [event], + "test_event_code": TEST_CODE, + } + + # Log the event (pretty print) + separator = "=" * 80 + logger.info("\n%s", separator) + logger.info("META CONVERSIONS API EVENT") + logger.info("%s", separator) + logger.info("\nEndpoint: %s", CAPI_ENDPOINT) + logger.info("\nPayload:\n%s", json.dumps(payload, indent=2)) + logger.info("\n%s", separator) + + logger.info("\nNOTE: This is a test event. To actually send it:") + logger.info("1. Set PIXEL_ID to your Meta Pixel ID") + logger.info("2. Set ACCESS_TOKEN to your Meta access token") + logger.info("3. Uncomment the httpx.post() call below") + logger.info( + "4. Test the event at: https://developers.facebook.com/tools/events_manager/" + ) + logger.info(" Use test event code: %s", TEST_CODE) + + # Uncomment to actually send the event + + # async with httpx.AsyncClient() as client: + # response = await client.post( + # CAPI_ENDPOINT, + # json=payload, + # params={"access_token": ACCESS_TOKEN}, + # ) + # logger.info("Response status: %s", response.status_code) + # logger.info("Response body: %s", response.text) + + +if __name__ == "__main__": + asyncio.run(send_test_event()) diff --git a/test_handshake.py b/test_handshake.py deleted file mode 100644 index 4d7fb15..0000000 --- a/test_handshake.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python3 -"""Test the handshake functionality with the real AlpineBits sample file.""" - -import asyncio - -from alpine_bits_python.alpinebits_server import AlpineBitsServer - - -async def main(): - - # Create server instance - server = AlpineBitsServer() - - # Read the sample handshake request - with open( - "AlpineBits-HotelData-2024-10/files/samples/Handshake/Handshake-OTA_PingRQ.xml", - ) as f: - ping_request_xml = f.read() - - - # Handle the ping request - await server.handle_request( - "OTA_Ping:Handshaking", ping_request_xml, "2024-10" - ) - - - -if __name__ == "__main__": - asyncio.run(main())