dtmf

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 12, 2026 License: BSD-2-Clause Imports: 7 Imported by: 0

Documentation

Overview

Package dtmf synthesizes DTMF (touch-tone) keypad tones and aggregates received keypresses. Tone generates the dual-tone PCM for a key so a bot can navigate an IVR; Aggregator collects the keys a caller presses into a string.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Tone

func Tone(button frames.KeypadEntry, durationMs, sampleRate int) []byte

Tone synthesizes durationMs of the DTMF dual tone for button as 16-bit mono little-endian PCM at sampleRate. An unknown button or a non-positive duration or sample rate returns nil.

Types

type Aggregator

type Aggregator struct {
	*processor.Base
	// contains filtered or unexported fields
}

Aggregator collects the DTMF keys received from the transport into a string and emits it downstream as a TranscriptionFrame — so an LLM can react to the entered sequence — when the terminator key is pressed or the idle timeout elapses. It forwards the InputDTMFFrames it sees unchanged.

func NewAggregator

func NewAggregator(cfg AggregatorConfig) *Aggregator

NewAggregator builds a DTMF Aggregator.

func (*Aggregator) Cleanup

func (a *Aggregator) Cleanup(ctx context.Context) error

Cleanup stops the idle timer and tears down the processor.

func (*Aggregator) ProcessFrame

func (a *Aggregator) ProcessFrame(ctx context.Context, f frames.Frame, dir processor.Direction) error

ProcessFrame aggregates DTMF keypresses and forwards every frame.

type AggregatorConfig

type AggregatorConfig struct {
	// Terminator is the key that flushes the collected digits; empty uses '#'.
	Terminator frames.KeypadEntry
	// Timeout flushes the collected digits after this idle period even without a
	// terminator; 0 disables the timeout (flush on the terminator only).
	Timeout time.Duration
	// Prefix is prepended to the emitted transcription, e.g. "User pressed: ".
	Prefix string
}

AggregatorConfig configures a DTMF Aggregator.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL