# Print a call's analysis: summary, extracted fields and goal result. Python 3.9+ with requests.
import json
import os
import sys

import requests

base = os.environ.get("RELATIONSAI_API_BASE", "https://voice-api.relationsai.com/v1")
call_id = os.environ.get("CALL_ID") or sys.exit("Set CALL_ID to a call id (call_...)")

r = requests.get(
    f"{base}/calls/{call_id}/analysis",
    headers={"Authorization": f"Bearer {os.environ['RELATIONSAI_API_KEY']}"},
    timeout=30,
)
analysis = r.json()
if not r.ok:
    err = analysis["error"]
    sys.exit(f"{err['code']}: {err['message']} (request {err['request_id']})")

print(f"state={analysis['state']} goal_met={analysis['goal_met']} simulated={analysis['simulated']}")
print(f"summary ({analysis['summary']['state']}): {analysis['summary']['text'] or '-'}")
# Keep only fields that were actually extracted; `absent` means it did not come up in the call.
fields = {}
for field in analysis["extracted_fields"]:
    print(f"  {field['name']} [{field['type']}, {field['state']}] = {json.dumps(field['value'])}")
    if field["state"] == "ready":
        fields[field["name"]] = field["value"]
print("ready fields:", json.dumps(fields))
