v0.17.0¶
Release date: 2026-10-27
This release lets outbound calls send keypad tones (DTMF) once they are answered, so an agent can dial into a conference line and enter its meeting ID and passcode. Voice gateways can now accept call options on outbound calls without breaking existing gateway implementations.
Highlights¶
- Keypad digits on outbound calls —
callsystem.WithSendDigitssends tones after the call is answered, in dial-string notation withwandWpauses - Call options through gateways —
gateway.MakeCallWithOptionspasses options to gateways that implement the newOptionCallerinterface, and reportsErrCallOptionsUnsupportedinstead of dropping them - Docs reorganized — user guides in
docs/guides, specs indocs/specs, and architecture indocs/design/architecture
Added¶
Keypad digits (callsystem/)¶
WithSendDigits(digits)call option andCallOptions.SendDigitsfieldValidateSendDigits(digits)accepts0-9,*,#,A-D,w(half-second pause), andW(one-second pause); providers call it fromMakeCalland return an error for anything else
// Wait 4 seconds, enter the meeting ID, wait 8 seconds, enter the passcode.
call, err := calls.MakeCall(ctx, "+16695550100",
callsystem.WithSendDigits("WWWW85012345678#WWWWWWWW*482913#"),
)
Gateway call options (gateway/)¶
OptionCallerinterface withMakeCallWithOptions(ctx, to, opts...), optional so that existingGatewayimplementations keep compilingMakeCallWithOptions(ctx, gw, to, opts...)helper: callsgw.MakeCallwithout options, and returnsErrCallOptionsUnsupportedwhen options are given to a gateway that does not implementOptionCaller
Documentation¶
Fixed¶
omnictl server run¶
- Stopping a local server with Ctrl+C now checks the server's exit error instead of discarding it; an exit caused by the stop signal is treated as a normal stop
- Errors from sending the stop signal and from removing the server socket are returned instead of ignored
Changed¶
Documentation layout¶
- User guides moved from
docs/todocs/guides/ - The voice architecture comparison moved to
docs/design/architecture/ - The voice integration PRD, Twilio integration TRD, provider conformance TRD
(formerly
TRD_PROVIDERTEST.md), and roadmap (formerlyROADMAP.md) moved todocs/specs/ - Release notes link to the changelog page on the documentation site
Provider Support¶
Keypad digits are sent by:
- omni-twilio: played with
<Play digits>before the media stream connects - omni-telnyx: sent with
send_dtmfwhen the call is answered
Both require their releases built on omnivoice-core v0.17.0.
Dependencies¶
google.golang.org/grpcv1.85.0 and updatedgolang.org/xmodules
Compatibility¶
No breaking changes. The Gateway interface is unchanged; gateways opt into
call options by implementing OptionCaller.