1. High-CPS bulk dialer

package main

import (
    "log"
    "time"

    telequick "github.com/telequick/telequick-sdk/go/pkg"
)

func main() {{
    client, err := telequick.NewClient("quic://engine.telequick.dev:9090", "")
    if err != nil {{ log.Fatal(err) }}

    var dialed, hungup int

    client.OnCallEvent = func(p []byte) {{
        sid, status := client.DeserializeCallEvent(p)
        switch status {{
        case "INITIATED":
            dialed++
        case "COMPLETED", "FAILED", "BUSY", "NO_ANSWER":
            hungup++
            log.Printf("end %s -> %s (running: dialed=%d done=%d)", sid, status, dialed, hungup)
        }}
    }}

    if err := client.OriginateBulk(
        "https://files.example.com/numbers.csv",
        "default",
        "campaign-2026-04",
        50,    // cps
        1,     // PARK
        "",
        "",
        "",
        false,
        250,
    ); err != nil {{ log.Fatal(err) }}

    time.Sleep(30 * time.Minute)
}}

2. Outbound voicebot

A loop reading audio from the trunk, transcribing it, and pushing TTS back.
package main

import (
    "log"
    "sync"

    telequick "github.com/telequick/telequick-sdk/go/pkg"
)

func main() {{
    client, _ := telequick.NewClient("quic://engine.telequick.dev:9090", "")

    var seqMu sync.Mutex
    seq := uint64(0)

    client.OnAudioFrame = func(p []byte) {{
        sid, pcm := client.DeserializeAudioFrame(p)

        text := streamingASR(pcm)             // your STT
        if text == "" {{ return }}
        reply := llm(text)                    // your LLM
        ttsPCM := tts(reply)                  // your TTS, returns PCMU bytes

        const frame = 160
        for i := 0; i < len(ttsPCM); i += frame {{
            end := i + frame
            if end > len(ttsPCM) {{ end = len(ttsPCM) }}

            seqMu.Lock()
            mySeq := seq
            seq++
            seqMu.Unlock()

            _ = client.PushAudio(sid, ttsPCM[i:end], "PCMU", mySeq, false)
        }}
    }}

    _ = client.Dial(
        "sip:+15551234567@example.sip.livekit.cloud",
        "default", "+18005550100", 60_000, 1, "", "", "", false, 250, "",
    )
    select {{}}
}}

3. Inbound queue worker

Service inbound calls from a queue manager:
ticker := time.NewTicker(2 * time.Second)
for range ticker.C {{
    if err := client.GetIncomingCalls("inbound-trunk"); err != nil {{
        log.Println("poll:", err)
        continue
    }}

    select {{
    case sid := <-pendingCallChan:    // populated by your event handler
        if err := client.AnswerIncomingCall(
            sid,
            "wss://api.openai.com/v1/realtime?model=gpt-realtime",
            "",
        ); err != nil {{
            log.Println("answer:", err)
        }}
    default:
    }}
}}

4. Bucket sweep — hang up everything in “abandoned”

client.OnCallEvent = func(p []byte) {{
    sid, status := client.DeserializeCallEvent(p)
    log.Printf("event %s %s", sid, status)
}}

if err := client.GetActiveBuckets(); err != nil {{ log.Fatal(err) }}
// …assume your event handler stashed bucket_ids it heard about

if err := client.ExecuteBucketAction("abandoned", 0); err != nil {{ // 0 = HANGUP
    log.Fatal(err)
}}

5. Dialplan override mid-call

// Caller is parked. Move them to hold music for 30 s, then bridge:
_ = client.ExecuteBucketAction("queue-1", 0)  // sweep some queue first
time.Sleep(30 * time.Second)

// or per-call:
// Currently the SDK doesn't wrap ExecuteDialplan; build it via the
// auto-generated FFI symbol if you need it today.