--- name: Voxtelesys Integration project description: Frappe app extending ERPNext Helpdesk with Voxtelesys/3CX telephony — inbound webhook works, outbound API integration in progress type: project originSessionId: 2352cf59-de5a-4440-8480-69099e3a4cbb --- `voxtelesys_integration` Frappe app at `forge.wilddragon.net/zgaetano/voxtelesys_integration`. Target site: `erp.broadcastmgmt.cloud`. **Architecture:** Voxtelesys SIP trunk → 3CX PBX → ERPNext (Frappe Helpdesk). 3CX is the call broker; ERPNext does the ticketing and (planned) outbound origination via Voxtelesys REST API. **State as of 2026-05-12:** - v2.0 inbound webhook path is built: 3CX CF_URLFetch → `/api/method/voxtelesys_integration.api.inbound_call` → creates HD Ticket - `voxtelesys_settings` and `voxtelesys_call_log` doctypes exist - `api/voxtelesys.py` (~10KB) holds Voxtelesys REST client - Public JS/CSS for HD Ticket UI extensions **Why:** User wants ERPNext Helpdesk to be a first-class softphone surface for agents — click-to-call from a ticket, SMS, auto-ticket creation on inbound, all logged. **How to apply:** When extending, preserve the 3CX inbound webhook (it's deployed). New work focuses on direct Voxtelesys API calls for outbound voice + SMS, and surfacing call history in HD Ticket. Do NOT route outbound through 3CX — use Voxtelesys API directly for ERPNext-originated calls.