From e1922564ae545c399148ba9124e063230ae1e552 Mon Sep 17 00:00:00 2001 From: Andrew Stoltz Date: Thu, 16 Apr 2026 15:42:58 -0500 Subject: [PATCH] fix(asterisk): actually install core sounds (en, ulaw 1.6.1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The install-sounds init container was a stub that left /var/lib/asterisk/sounds/en empty. Result: every SpeakText fallback path (vm-advopts, vm-goodbye, characters:*, digits/*, beep, pbx-invalid) resolved to a missing file, Asterisk silently failed each Playback, zero RTP was produced, and callers heard dead air. This is why dialing *0 (Settings Menu) or *100 (Debug IVR) "picks up quietly" — there is literally nothing to stream. Replaced the stub with alpine:3.20 + curl + tar that downloads the pinned asterisk-core-sounds-en-ulaw-1.6.1.tar.gz (~10 MB) from downloads.asterisk.org and unpacks it into the sounds emptyDir. Idempotent — skips download if vm-goodbye is already present. Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/asterisk/deployment.yaml | 45 ++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/apps/asterisk/deployment.yaml b/apps/asterisk/deployment.yaml index 1545123..acdcb73 100644 --- a/apps/asterisk/deployment.yaml +++ b/apps/asterisk/deployment.yaml @@ -16,22 +16,39 @@ spec: metadata: labels: app: asterisk - spec: - nodeSelector: - kubernetes.io/hostname: rke2-agent1 - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet + spec: + nodeSelector: + kubernetes.io/hostname: rke2-agent1 + hostNetwork: true + dnsPolicy: ClusterFirstWithHostNet securityContext: fsGroup: 0 - initContainers: - - name: install-sounds - image: busybox:latest - command: - - sh - - -c - - | - mkdir -p /sounds/en && - echo "Leaving /var/lib/asterisk/sounds/en empty until the sound bootstrap lane is fixed." + initContainers: + - name: install-sounds + # Downloads Asterisk core sounds (en, ulaw) into the sounds emptyDir + # volume so the base Asterisk image (which ships no sounds) can play + # vm-advopts, vm-goodbye, digits/*, characters/*, beep, etc. Skips + # the download if the directory already contains sound files — + # re-running the pod after a hot image reload reuses the unpack. + image: alpine:3.20 + command: + - sh + - -c + - | + set -eu + if [ -f /sounds/en/vm-goodbye.ulaw ] || [ -f /sounds/en/vm-goodbye.gsm ]; then + echo "Sounds already present — skipping download." + exit 0 + fi + echo "Installing curl + tar..." + apk add --no-cache curl tar gzip >/dev/null + cd /tmp + echo "Downloading Asterisk core sounds (en, ulaw) 1.6.1..." + curl -fsSLO https://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-en-ulaw-1.6.1.tar.gz + echo "Extracting to /sounds/en ..." + mkdir -p /sounds/en + tar -xzf asterisk-core-sounds-en-ulaw-1.6.1.tar.gz -C /sounds/en + echo "Done — $(ls /sounds/en | wc -l) files installed." volumeMounts: - name: sounds mountPath: /sounds/en