99 lines
3.0 KiB
Python
99 lines
3.0 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Direct API test for WhatsApp sending
|
|
Tests the actual payload being sent to Meta API
|
|
"""
|
|
import sys
|
|
import os
|
|
from dotenv import load_dotenv
|
|
|
|
# Set encoding for Windows
|
|
import io
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
|
|
# Load .env FIRST before any imports
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
load_dotenv()
|
|
|
|
import asyncio
|
|
from whatsapp import WhatsAppService, WhatsAppError
|
|
|
|
async def test_whatsapp_send():
|
|
"""Test WhatsApp send with real payload"""
|
|
|
|
print("=" * 80)
|
|
print("WhatsApp Direct API Test")
|
|
print("=" * 80)
|
|
|
|
# Initialize service
|
|
try:
|
|
service = WhatsAppService()
|
|
print("[OK] WhatsApp Service initialized")
|
|
except WhatsAppError as e:
|
|
print(f"[ERROR] Failed to initialize: {e}")
|
|
print("\n[WARNING] Make sure your .env file has:")
|
|
print(" WHATSAPP_ACCESS_TOKEN=your_token")
|
|
print(" WHATSAPP_PHONE_NUMBER_ID=your_id")
|
|
return
|
|
|
|
# Test data
|
|
phone = "0504370045" # Israeli format - should be converted to +972504370045
|
|
guest_name = "דוד"
|
|
groom_name = "דוד"
|
|
bride_name = "שרה"
|
|
venue = "אולם בן-גוריון"
|
|
event_date = "15/06"
|
|
event_time = "18:30"
|
|
guest_link = "https://invy.dvirlabs.com/guest?event=ee648859"
|
|
|
|
print(f"\nTest Parameters:")
|
|
print(f" Phone: {phone}")
|
|
print(f" Guest: {guest_name}")
|
|
print(f" Groom: {groom_name}")
|
|
print(f" Bride: {bride_name}")
|
|
print(f" Venue: {venue}")
|
|
print(f" Date: {event_date}")
|
|
print(f" Time: {event_time}")
|
|
print(f" Link: {guest_link}")
|
|
|
|
try:
|
|
print("\n" + "=" * 80)
|
|
print("Sending WhatsApp message...")
|
|
print("=" * 80)
|
|
|
|
result = await service.send_wedding_invitation(
|
|
to_phone=phone,
|
|
guest_name=guest_name,
|
|
partner1_name=groom_name,
|
|
partner2_name=bride_name,
|
|
venue=venue,
|
|
event_date=event_date,
|
|
event_time=event_time,
|
|
guest_link=guest_link,
|
|
template_name="wedding_invitation",
|
|
language_code="he"
|
|
)
|
|
|
|
print("\n[SUCCESS]!")
|
|
print(f"Message ID: {result.get('message_id')}")
|
|
print(f"Status: {result.get('status')}")
|
|
print(f"To: {result.get('to')}")
|
|
print(f"Type: {result.get('type')}")
|
|
|
|
except WhatsAppError as e:
|
|
print(f"\n[ERROR] WhatsApp Error: {e}")
|
|
print("\nDebugging steps:")
|
|
print("1. Check .env file has correct tokens")
|
|
print("2. Verify phone number format (should convert to E.164)")
|
|
print("3. Check Meta dashboard for API limits")
|
|
print("4. Ensure template 'wedding_invitation' is APPROVED in Meta")
|
|
|
|
except Exception as e:
|
|
print(f"\n[ERROR] Unexpected error: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_whatsapp_send())
|