invy/backend/test_combinations.py

118 lines
3.8 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Test different component combinations
"""
import sys
import os
from dotenv import load_dotenv
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
load_dotenv()
import httpx
async def test_combinations():
"""Test different component combinations"""
access_token = os.getenv("WHATSAPP_ACCESS_TOKEN")
phone_id = os.getenv("WHATSAPP_PHONE_NUMBER_ID")
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
url = f"https://graph.facebook.com/v20.0/{phone_id}/messages"
tests = [
("Header only (1 param)", {
"messaging_product": "whatsapp",
"to": "+972504370045",
"type": "template",
"template": {
"name": "wedding_invitation",
"language": {"code": "he"},
"components": [{
"type": "header",
"parameters": [{"type": "text", "text": "דביר"}]
}]
}
}),
("Header (1) + Body (6)", {
"messaging_product": "whatsapp",
"to": "+972504370045",
"type": "template",
"template": {
"name": "wedding_invitation",
"language": {"code": "he"},
"components": [
{"type": "header", "parameters": [{"type": "text", "text": "דביר"}]},
{"type": "body", "parameters": [
{"type": "text", "text": "p1"},
{"type": "text", "text": "p2"},
{"type": "text", "text": "p3"},
{"type": "text", "text": "p4"},
{"type": "text", "text": "p5"},
{"type": "text", "text": "p6"}
]}
]
}
}),
("Body only (1)", {
"messaging_product": "whatsapp",
"to": "+972504370045",
"type": "template",
"template": {
"name": "wedding_invitation",
"language": {"code": "he"},
"components": [{
"type": "body",
"parameters": [{"type": "text", "text": "דביר"}]
}]
}
}),
]
print("Testing component combinations...")
print("=" * 80 + "\n")
for desc, payload in tests:
print(f"[Test] {desc}")
try:
async with httpx.AsyncClient() as client:
response = await client.post(url, json=payload, headers=headers, timeout=10)
if response.status_code in (200, 201):
print(f" [SUCCESS] Message sent!")
data = response.json()
msg_id = data.get('messages', [{}])[0].get('id')
print(f" Message ID: {msg_id}")
return True
else:
error = response.json().get('error', {})
msg = error.get('message', error)
print(f" [FAILED] {msg}")
except Exception as e:
print(f" [ERROR] {e}")
print()
return False
import asyncio
result = asyncio.run(test_combinations())
if not result:
print("\n" + "=" * 80)
print("IMPORTANT: None of the standard structures worked!")
print("\nPlease verify in Meta Business Manager:")
print("1. Go to Message Templates")
print("2. Check template name (must be exactly: 'wedding_invitation')")
print("3. Check it's APPROVED status")
print("4. Check how many {{}} variables are shown in the template body")
print("5. Verify the template language is 'Hebrew' (he)")
print("\nThe template might need to be recreated.")
print("=" * 80)