Promise → Orchestra Closed Loop
pbx_promises_actE1 moat: who→whom→promise → orchestra handoff intent (whisper/transfer/hold). Idle $0. No live PSTN. Own PBX = advanced footnote.
POST /v1/pbx/promises/act {promise_id, action?}. Loads the promise + call graph, suggests whisper/transfer/hold, records orchestra intent with source_type=promise for agent handoff. Managed SaaS runtime. ≤120/hour/key (shares orchestra bucket). Idle $0. carrier/pstn always false. No cross-tenant graph merge. Advanced: not Asterisk-first glue; own PBX optional footnote.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Default whisper. transfer uses graph stuck_at / promise.ext. | |
| pbx_id | No | ||
| agent_ext | No | ||
| promise_id | Yes | Open (or any) promise id — closed loop reads call graph then records orchestra intent. | |
| skip_forward | No | Default true — record intent only. | |
| stasis_webhook_url | No |