Dynamic Multi-Leg Bridge Orchestration

Dynamic Multi-Leg Bridge Orchestration

To connect separate telephone line channels seamlessly, Asterisk 2 orchestrates high-performance voice bridges. The communication engine groups multiple audio legs into unified Stasis Mixing Bridges dynamically.


Multi-Channel Media Bridging Topology

The layout below traces how background commands construct mixing spaces to merge independent phone streams:

graph LR
    %% Control Engine
    subgraph CommandHost["C# Orchestrator Task"]
        ActionCreate["POST /ari/bridges<br/>(Type: mixing, Name: 'ConfRoom')"]
        ActionAdd["POST /ari/bridges/{id}/addChannel<br/>(Injects Audio Legs)"]
    end

    %% Target Bridge Space
    subgraph StasisBridge["Active Media Mixing Module"]
        BridgeNode["Stasis Mixing Bridge<br/>(Unified Audio Domain)"]
    end

    %% Physical Channels
    subgraph MediaLegs["Decoupled Voice Sessions"]
        LegCaller["Inbound Mobile Caller<br/>(Channel ID: ast_channel_a)"]
        LegAgent["Outbound Support Agent<br/>(Channel ID: ast_channel_b)"]
        LegMusic["Music on Hold Generator<br/>(Channel ID: moh_playback)"]
    end

    %% Flow Vectors
    ActionCreate ==>|"Allocate Engine Space"| BridgeNode
    ActionAdd ==>|"Add Leg Membership"| BridgeNode
    
    LegCaller <==>|"Stream Full-Duplex Audio"| BridgeNode
    LegAgent <==>|"Stream Full-Duplex Audio"| BridgeNode
    LegMusic -->|"Stream Unidirectional Audio"| BridgeNode

    %% Curated Visual Tokens
    classDef cmdToken fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#fff,rx:6px,ry:6px;
    classDef bridgeToken fill:#312e81,stroke:#ec4899,stroke-width:2px,color:#fff,rx:6px,ry:6px;
    classDef legToken fill:#1e293b,stroke:#a855f7,stroke-width:2px,color:#fff,rx:6px,ry:6px;

    class CommandHost,ActionCreate,ActionAdd cmdToken;
    class StasisBridge,BridgeNode bridgeToken;
    class MediaLegs,LegCaller,LegAgent,LegMusic legToken;

Technical Bridge Engine Rules

1. Seamless Channel Handover

Adding independent channels into active mixing bridges suspends normal single-channel execution stacks automatically. Connected media payloads route directly across core bridging paths to minimize voice encoding delays.

2. Auto-Dissolve Configuration Traps

To avoid orphaned bridge allocation contexts from taking over PBX memory loops, container generation strings force automated structural dissolution (auto_dissolve=true) as soon as primary phone lines disconnect.