"""Outbound prerecorded announcement calls.""" import requests from django.conf import settings class AnnouncementRejected(ValueError): """The provider explicitly refused the requested announcement.""" def place_announcement_call(configuration, *, mobile, idempotency_key): headers = {"Idempotency-Key": idempotency_key} if configuration.announcement_api_key: headers["X-API-Key"] = configuration.announcement_api_key response = requests.post( configuration.announcement_url, json={"customer_number": mobile, "announcement_id": configuration.announcement_id}, headers=headers, timeout=settings.INTEGRATION_HTTP_TIMEOUT_SECONDS, ) response.raise_for_status() if response.content: payload = response.json() if not isinstance(payload, dict): raise ValueError("Invalid announcement provider response") if payload.get("success") is False: raise AnnouncementRejected("Announcement provider rejected the request")