Asynchronous ARI Stasis Services

Asynchronous ARI Stasis Services

To take programmatic control over live telephone calls, Asterisk 2 configures continuous Asterisk REST Interface (ARI) message links. The C# runtime intercepts active audio sessions directly to run advanced voice workflow scripts asynchronously.


Stasis Application Interception Map

The flowchart below traces how incoming channel contexts transfer from low-level PBX applications into C# background management services:

graph TD
    %% Inbound Route
    subgraph TelecomCore["Asterisk PBX Kernel"]
        StasisDialplan["stasis Application Trigger<br/>(Dialplan Function Execution)"]
    end

    %% API Adapter Bus
    subgraph InterceptionBus["ARI Engine Adapter"]
        AriSocket["res_ari WebSocket Channel<br/>(Exposes /ari/events Stream)"]
    end

    %% Application Domain
    subgraph DotNetServices["C# Runtime Environment"]
        StasisWorker["StasisConsumerWorker.cs<br/>(Hosted BackgroundService loop)"]
        EventHandler["CallLifecycleRouter.cs<br/>(Parses Raw JSON Actions)"]
    end

    %% Execution Targets
    subgraph AutomationTarget["Executed Media Instructions"]
        CmdPlayback["POST /ari/channels/play<br/>(Stream Digital Audio files)"]
        CmdHangup["DELETE /ari/channels<br/>(Purge Physical Connection)"]
    end

    %% Links
    StasisDialplan ==>|"Handover Execution Control"| AriSocket
    AriSocket <-->|"Persistent WS Connection"| StasisWorker
    StasisWorker ==>|"Push Event string"| EventHandler
    EventHandler ==>|"Trigger Voice Workflow"| CmdPlayback
    EventHandler -->|"End Session Context"| CmdHangup

    %% High-Contrast Style System
    classDef coreToken fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#fff,rx:6px,ry:6px;
    classDef adapterToken fill:#1e293b,stroke:#a855f7,stroke-width:2px,color:#fff,rx:6px,ry:6px;
    classDef svcToken fill:#312e81,stroke:#ec4899,stroke-width:2px,color:#fff,rx:6px,ry:6px;
    classDef cmdToken fill:#065f46,stroke:#10b981,stroke-width:2px,color:#fff,rx:6px,ry:6px;

    class TelecomCore,StasisDialplan coreToken;
    class InterceptionBus,AriSocket adapterToken;
    class DotNetServices,StasisWorker,EventHandler svcToken;
    class AutomationTarget,CmdPlayback,CmdHangup cmdToken;

Architectural Directives

1. Persistent Thread Safeties

Because live ARI event streams write thousands of multi-node JSON events every minute, background services configure dedicated multithreading boundaries. Background consumer workers read incoming socket blocks cleanly using asynchronous loop wrappers (await foreach).

2. High-Speed API Command Authorization

Outbound commands targeting active ARI REST endpoints append cryptographically signed credentials (api_key=username:secret) directly inside base parameter strings to completely prevent unauthorized instruction injections.