Home/Platform/Programmable apps & USSD

SS-41 · Class 5 / VAS · 40 operations

Programmable apps & USSD

SCE flow engine, programmable-voice verbs, PBX, ACD queues and USSD subscriptions above the rails.

40
operations
JSON
SCE flows
32
step cycle budget
ACD
queues + PBX

What it does

Programmable apps & USSD — the depth.

The application layer over the softswitch and messaging rails. An SCE (Service Creation Environment) turns USSD menu trees into JSON-authored typed flows — menu / emit with {{var}} templating / route with default branches / invoke against a registered connector — with session variables, input capture, a fail-closed atomic definition and a 32-step cycle budget. A programmable-voice runtime resolves a DID or subscriber to a verb list and walks a call session; a PBX registers extensions and ACD queues distribute callers to agents. On the messaging side it runs stateful USSD charge sessions, omnichannel bot conversations with human escalation, A2P sends with DLR reconciliation, and VAS subscriptions with double opt-in, STOP and provider settlement.

Sub-capabilities · real endpoints

Every capability maps to a real method + path.

SCE flow engine & USSD sessions

Author *123#-style flows as JSON (menu/emit/route/invoke) or upsert individual menu nodes; run stateful sessions with input capture and an idempotent per-step charge. Connectors are registered and their invocations logged.

  • POST/api/v1/ussd/flows
  • PUT/api/v1/menu/{id}
  • GET/api/v1/sce/connectors
  • POST/api/v1/sce/connectors
  • GET/api/v1/sce/invocations
  • POST/api/v1/sessions
  • POST/api/v1/sessions/{id}/input
  • POST/api/v1/sessions/{id}/charge

Programmable voice — apps, bindings & verb walker

Register a programmable-voice application (a verb list), bind a DID or subscriber to it, then create a call session that resolves the binding to verbs and advance the walker turn by turn — the CPaaS equivalent of answering a call with your own logic.

  • GET/api/v1/voice/apps
  • POST/api/v1/voice/apps
  • GET/api/v1/voice/bindings
  • POST/api/v1/voice/bindings
  • POST/api/v1/voice/sessions
  • GET/api/v1/voice/sessions/{id}
  • POST/api/v1/voice/sessions/{id}/advance

PBX & ACD queues

Register PBX subscribers (extensions) and run ACD call queues: provision a queue, enqueue a caller, assign the head caller to an agent, and read live queue KPI stats (depth, wait, service level).

  • GET/api/v1/pbx/subscribers
  • POST/api/v1/pbx/subscribers
  • POST/api/v1/acd/queues
  • POST/api/v1/acd/queues/{id}/enqueue
  • POST/api/v1/acd/queues/{id}/assign
  • GET/api/v1/acd/queues/{id}/stats

Conversational bots & escalation

Omnichannel conversations that thread WhatsApp / Telegram / SMS into one history: post turns, let a bot answer first (NLU/LLM via SS-15), and escalate to a live agent with full context.

  • POST/api/v1/conversations
  • GET/api/v1/conversations/{id}
  • POST/api/v1/conversations/{id}/turns
  • POST/api/v1/conversations/{id}/escalate

A2P, DLR & VAS subscriptions

A2P sends with DLR reconciliation and a rolling delivery-rate, DND enforcement, proactive messaging, and premium subscriptions with double opt-in confirm, renew, cancel, plus provider registration and content-revenue settlement.

  • POST/api/v1/a2p
  • POST/api/v1/messages/{id}/dlr
  • GET/api/v1/dlr-rate
  • POST/api/v1/dnd
  • POST/api/v1/proactive
  • GET/api/v1/subscriptions
  • POST/api/v1/subscriptions
  • POST/api/v1/subscriptions/{id}/confirm
  • POST/api/v1/subscriptions/{id}/renew
  • POST/api/v1/subscriptions/{id}/cancel
  • POST/api/v1/providers
  • POST/api/v1/providers/{id}/settle
  • GET/api/v1/settlements

Worked example

A USSD balance-and-buy flow

A subscriber dials *123#, checks balance and buys a bundle — one SCE flow, one charged session.

1AuthorPOST/api/v1/ussd/flowsLoad the JSON flow: a menu node, an invoke to the balance connector, a route branch.
2OpenPOST/api/v1/sessionsDial *123# opens a session; the engine returns the first menu screen.
3InputPOST/api/v1/sessions/{id}/inputSubscriber presses 1; the connector is invoked, balance captured into a session var.
4InvokeGET/api/v1/sce/invocationsThe connector call is logged; the flow routes to the buy-bundle branch.
5ChargePOST/api/v1/sessions/{id}/chargeIdempotent charge debits the bundle price via SS-10; the session releases cleanly.

Architecture placement

Where it sits in the platform.

SS-41 rides on top of SS-40 voice and SS-18 messaging rails. It authenticates with SS-01, charges through SS-10, and uses SS-15 model-serving for bot NLU; a bot→human handoff opens an SS-45 service-desk case. Every session charge is idempotent (ADR-0039) and tenant-scoped (ADR-0019).

Depends on

SS-40 voiceSS-18 messagingSS-15 model-serving (NLU)

Feeds

SS-10 charging (session charge)SS-45 service-desk (handoff)SS-36 mediation (usage)