[30388f42] Infrastructure Hardening: Repaired CE/Connector DB schema, fixed frontend styling build, implemented robust echo shield in worker v2.1.1, and integrated Lead Engine into gateway.
This commit is contained in:
71
connector-superoffice/create_mailing_test.py
Normal file
71
connector-superoffice/create_mailing_test.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import os
|
||||
import requests
|
||||
import json
|
||||
import logging
|
||||
from dotenv import load_dotenv
|
||||
load_dotenv(override=True)
|
||||
from superoffice_client import SuperOfficeClient
|
||||
from config import settings
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger("mailing-test")
|
||||
|
||||
def create_mailing(person_id: int):
|
||||
client = SuperOfficeClient()
|
||||
if not client.access_token:
|
||||
print("❌ Auth failed.")
|
||||
return
|
||||
|
||||
# 1. Get Person & Marketing Texts
|
||||
person = client._get(f"Person/{person_id}")
|
||||
if not person:
|
||||
print(f"❌ Person {person_id} not found.")
|
||||
return
|
||||
|
||||
email_address = person.get("Emails", [{}])[0].get("Value")
|
||||
if not email_address:
|
||||
print(f"❌ Person {person_id} has no email address.")
|
||||
return
|
||||
|
||||
udefs = person.get("UserDefinedFields", {})
|
||||
subject = udefs.get(settings.UDF_SUBJECT)
|
||||
intro = udefs.get(settings.UDF_INTRO)
|
||||
proof = udefs.get(settings.UDF_SOCIAL_PROOF)
|
||||
|
||||
if not all([subject, intro, proof]):
|
||||
print("❌ Marketing texts missing in Person UDFs. Run provisioning first.")
|
||||
return
|
||||
|
||||
full_body = f"{intro}\n\n{proof}\n\nAbmelden: {udefs.get(settings.UDF_UNSUBSCRIBE_LINK)}"
|
||||
|
||||
# 2. Create a "Shipment" (Individual Mailing)
|
||||
# Based on SO Documentation for Marketing API
|
||||
# We try to create a Shipment directly.
|
||||
|
||||
payload = {
|
||||
"Name": f"Gemini Outreach: {subject}",
|
||||
"Subject": subject,
|
||||
"Body": full_body,
|
||||
"DocumentTemplateId": 157, # Ausg. E-Mail
|
||||
"ShipmentType": "Email",
|
||||
"AssociateId": 528, # RCGO
|
||||
"ContactId": person.get("Contact", {}).get("ContactId"),
|
||||
"PersonId": person_id,
|
||||
"Status": "Ready" # This might trigger the internal SO send process
|
||||
}
|
||||
|
||||
print(f"📤 Creating Shipment for {email_address}...")
|
||||
try:
|
||||
# Endpoints to try: /Shipment or /Mailing
|
||||
# Let's try /Shipment
|
||||
resp = client._post("Shipment", payload)
|
||||
if resp:
|
||||
print(f"✅ Shipment created successfully! ID: {resp.get('ShipmentId')}")
|
||||
print(json.dumps(resp, indent=2))
|
||||
else:
|
||||
print("❌ Shipment creation returned no data.")
|
||||
except Exception as e:
|
||||
print(f"❌ Shipment API failed: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
create_mailing(193036)
|
||||
Reference in New Issue
Block a user