Policy & outbound
How policy-gated outbound works — evaluate first, authorize, then place. Blocked categories and the broker example.
Live outbound calls and SMS never leave the machine unchecked. OpenPhonex makes the agent evaluate policy first, surface the decision and cost, and only then authorize and place. Scopes fail closed, and the policy engine blocks whole categories of outbound regardless of scope.
The outbound sequence
Evaluate
→ evaluate_outbound_policy(...) # policy:evaluateReturns the policy decision and cost estimate before anything leaves the machine. This is a read — it changes nothing.
Get explicit human approval
Show the decision and cost to a human and wait for a clear yes. Never place a live call or send a live SMS on an implied approval.
Authorize and place
→ authorize_outbound(...) # policy:evaluate
→ create_outbound_call(...) # calls:writeBlocked categories
The policy engine blocks outbound in these categories regardless of scope: healthcare, political, emergency, debt collection, robocalling, mass outreach, telemarketing, lead generation, scraped / listed-contact broker campaigns, spoofing, and cold sales.
Broker example
A Czech contact-broker campaign that dials a purchased list is a
scraped/listed-contact broker category — evaluate_outbound_policy returns a
blocked decision, and create_outbound_call fails closed. The agent should
report the block and stop, not retry.