Documentation
¶
Index ¶
- Variables
- func SDKAPI() apispec.Config[voiceapi.ErrorCode]
- type AssistantTextDelta
- type Context
- type ContextUpdate
- type Error
- type InterruptSource
- type Interrupted
- type MessageEnvelope
- type MessageKind
- type Route
- type ServiceAuthorization
- type SessionClose
- type SessionReady
- type SessionSetup
- type Speaker
- type SpeechEnded
- type SpeechStarted
- type StatusResp
- type ToolCall
- type ToolDeclaration
- type ToolResult
- type TranscriptDelta
- type TurnCancel
- type TurnState
- type TurnStatus
- type UserMessage
- type VoiceChoice
- type VoiceChoicesResp
- type VoiceConfig
- type VoiceRTCAnswerResp
- type VoiceRTCClientDiagnostics
- type VoiceRTCConnectionState
- type VoiceRTCConnectivityIssue
- type VoiceRTCConnectivitySide
- type VoiceRTCDataChannelState
- type VoiceRTCDiagnosticsReq
- type VoiceRTCDiagnosticsResp
- type VoiceRTCICEConnectionState
- type VoiceRTCICEGatheringState
- type VoiceRTCOfferReq
- type VoiceRTCServerDiagnostics
- type VoiceRTCSignalingState
- type VoiceRTCUDPEndpoint
- type VoiceTextTicketReq
- type VoiceTextTicketResp
- type VoiceTransport
Constants ¶
This section is empty.
Variables ¶
var Routes = []Route{ {Name: "voiceChoices", Doc: "Lists available voice choices and their supported transports.", Method: "GET", Path: "/api/voicegateway/v1/voice/choices", Resp: reflect.TypeFor[VoiceChoicesResp]()}, { Name: "voiceTextTicket", Doc: "Authorizes a browser text-session upgrade with a short-lived, single-use ticket.", Method: "POST", Path: "/api/voicegateway/v1/voice/text/ticket", Req: reflect.TypeFor[VoiceTextTicketReq](), Resp: reflect.TypeFor[VoiceTextTicketResp](), }, { Name: "voiceRTCOffer", Doc: "Exchanges a WebRTC SDP offer for an answer, opening a voice gateway session.", Method: "POST", Path: "/api/voicegateway/v1/voice/rtc/offer", Req: reflect.TypeFor[VoiceRTCOfferReq](), Resp: reflect.TypeFor[VoiceRTCAnswerResp](), }, { Name: "diagnoseVoiceRTC", Doc: "Returns structured WebRTC connectivity diagnostics for a voice bridge session.", Method: "POST", Path: "/api/voicegateway/v1/voice/rtc/{sessionID}/diagnostics", Req: reflect.TypeFor[VoiceRTCDiagnosticsReq](), Resp: reflect.TypeFor[VoiceRTCDiagnosticsResp](), }, { Name: "closeVoiceRTC", Doc: "Closes a WebRTC voice bridge session.", Method: "POST", Path: "/api/voicegateway/v1/voice/rtc/{sessionID}", Resp: reflect.TypeFor[StatusResp](), }, }
Routes lists the voice gateway JSON API endpoints used by the SDK generator. It excludes the WebSocket text-session routes, GET /api/voicegateway/v1/voice/text and /api/voicegateway/v1/voice/text/browser, which carry no JSON request or response body.
Functions ¶
Types ¶
type AssistantTextDelta ¶
type AssistantTextDelta struct {
// Kind is "assistant.text.delta".
Kind MessageKind `json:"kind"`
// Text is an incremental assistant text fragment.
Text string `json:"text"`
}
AssistantTextDelta is a gateway message that streams assistant text.
type Context ¶
type Context struct {
// SystemInstruction is provider-neutral instruction text for the assistant.
SystemInstruction string `json:"systemInstruction,omitempty"`
// Text is additional conversational context for the session.
Text string `json:"text,omitempty"`
}
Context carries provider-neutral text or instruction context.
type ContextUpdate ¶
type ContextUpdate struct {
// Kind must be "context.update".
Kind MessageKind `json:"kind"`
// Context contains the instructions or text to append.
Context Context `json:"context"`
}
ContextUpdate is a client message that appends session context.
type Error ¶
type Error struct {
// Kind is "error".
Kind MessageKind `json:"kind"`
// Message is a human-readable error description.
Message string `json:"message"`
// Recoverable reports whether the client may continue using the session.
Recoverable bool `json:"recoverable"`
}
Error is a gateway message that reports an error.
type InterruptSource ¶
type InterruptSource string
InterruptSource identifies why a voice gateway turn was interrupted.
const ( // InterruptSourceUser means user speech interrupted the assistant. InterruptSourceUser InterruptSource = "user" // InterruptSourceTool means tool execution was cancelled. InterruptSourceTool InterruptSource = "tool" )
type Interrupted ¶
type Interrupted struct {
// Kind is "interrupted".
Kind MessageKind `json:"kind"`
// Source identifies what interrupted the turn.
Source InterruptSource `json:"source"`
// Message optionally provides more detail about the interruption.
Message string `json:"message,omitempty"`
}
Interrupted is a gateway message that reports an interruption.
type MessageEnvelope ¶
type MessageEnvelope struct {
// Kind is the message discriminator used to decode the concrete message type.
Kind MessageKind `json:"kind"`
}
MessageEnvelope carries the kind used to dispatch data-channel messages.
type MessageKind ¶
type MessageKind string
MessageKind identifies a voice gateway WebRTC data-channel message.
const ( // MessageKindSessionSetup starts a provider-neutral voice session. MessageKindSessionSetup MessageKind = "session.setup" // MessageKindContextUpdate sends provider-neutral text context to the session. MessageKindContextUpdate MessageKind = "context.update" // MessageKindUserMessage appends completed user text and asks the assistant to respond. MessageKindUserMessage MessageKind = "user.message" // MessageKindToolResult returns the result of a tool call. MessageKindToolResult MessageKind = "tool.result" // MessageKindTurnCancel asks the gateway to cancel the current turn. MessageKindTurnCancel MessageKind = "turn.cancel" // MessageKindSessionClose asks the gateway to close the session. MessageKindSessionClose MessageKind = "session.close" // MessageKindSessionReady reports that the gateway session is ready. MessageKindSessionReady MessageKind = "session.ready" // MessageKindTranscriptDelta streams transcript text. MessageKindTranscriptDelta MessageKind = "transcript.delta" // MessageKindAssistantTextDelta streams assistant text. MessageKindAssistantTextDelta MessageKind = "assistant.text.delta" // MessageKindSpeechStarted reports that speech output started. MessageKindSpeechStarted MessageKind = "speech.started" // MessageKindSpeechEnded reports that speech output ended. MessageKindSpeechEnded MessageKind = "speech.ended" // MessageKindToolCall asks the client to execute a tool. MessageKindToolCall MessageKind = "tool.call" // MessageKindTurnStatus reports gateway work on the current turn. MessageKindTurnStatus MessageKind = "turn.status" // MessageKindInterrupted reports an interruption. MessageKindInterrupted MessageKind = "interrupted" // MessageKindError reports a gateway error. MessageKindError MessageKind = "error" )
type Route ¶
type Route struct {
Name string // Function name, e.g. "voiceRTCOffer"
Doc string // One-line description for SDK comments and docs.
Method string // HTTP method, e.g. "GET" or "POST"
Path string // "/api/voicegateway/v1/voice/rtc/offer"
Req reflect.Type // Request body type; nil for no body.
Resp reflect.Type // Response body type.
IsArray bool // response is T[] not T
IsSSE bool // SSE stream, not JSON
QueryParams []string // Query parameter names (GET endpoints only).
}
Route describes a single API endpoint for code generation.
func (*Route) CategoryName ¶
CategoryName returns the doc section derived from the first path segment after "/api/voicegateway/v1/", with the first letter uppercased.
type ServiceAuthorization ¶
type ServiceAuthorization struct {
Kind string `json:"kind"`
InstanceID string `json:"instanceID"`
BaseURL string `json:"baseURL"`
Token string `json:"token"`
}
ServiceAuthorization identifies the host and carries its scoped gateway token.
type SessionClose ¶
type SessionClose struct {
// Kind must be "session.close".
Kind MessageKind `json:"kind"`
// Reason optionally explains why the client closed the session.
Reason string `json:"reason,omitempty"`
}
SessionClose is a client message that closes the voice session.
type SessionReady ¶
type SessionReady struct {
// Kind is "session.ready".
Kind MessageKind `json:"kind"`
}
SessionReady is a gateway message that reports the session is ready.
type SessionSetup ¶
type SessionSetup struct {
// Kind must be "session.setup".
Kind MessageKind `json:"kind"`
// Voice contains the requested voice and language.
Voice VoiceConfig `json:"voice"`
// Tools declares the client-side tools the assistant may call.
Tools []ToolDeclaration `json:"tools"`
// Context provides initial instructions or text context for the session.
Context Context `json:"context"`
}
SessionSetup is the client message that initializes a voice session.
type SpeechEnded ¶
type SpeechEnded struct {
// Kind is "speech.ended".
Kind MessageKind `json:"kind"`
// Speaker identifies whose speech output ended.
Speaker Speaker `json:"speaker"`
}
SpeechEnded is a gateway message that reports speech output ended.
type SpeechStarted ¶
type SpeechStarted struct {
// Kind is "speech.started".
Kind MessageKind `json:"kind"`
// Speaker identifies whose speech output started.
Speaker Speaker `json:"speaker"`
}
SpeechStarted is a gateway message that reports speech output started.
type StatusResp ¶
type StatusResp struct {
// Status is a short human-readable result such as "closed".
Status string `json:"status"`
}
StatusResp is a common response for mutation endpoints.
type ToolCall ¶
type ToolCall struct {
// Kind is "tool.call".
Kind MessageKind `json:"kind"`
// ID uniquely identifies this tool call for the matching tool.result.
ID string `json:"id"`
// Name is the requested tool name.
Name string `json:"name"`
// Args is the JSON argument object for the requested tool.
Args json.RawMessage `json:"args"`
}
ToolCall is a gateway message that asks the client to execute a tool.
type ToolDeclaration ¶
type ToolDeclaration struct {
// Name is the tool name the assistant uses in tool.call messages.
Name string `json:"name"`
// Description explains when and how the assistant should use the tool.
Description string `json:"description"`
// Parameters is a JSON Schema object describing the tool arguments.
Parameters json.RawMessage `json:"parameters"`
}
ToolDeclaration is a provider-neutral service tool declaration.
type ToolResult ¶
type ToolResult struct {
// Kind must be "tool.result".
Kind MessageKind `json:"kind"`
// ID matches the tool.call ID being answered.
ID string `json:"id"`
// Name is the tool name that produced the result.
Name string `json:"name"`
// Result is the JSON result returned to the assistant.
Result json.RawMessage `json:"result"`
}
ToolResult is a client message that returns a tool execution result.
type TranscriptDelta ¶
type TranscriptDelta struct {
// Kind is "transcript.delta".
Kind MessageKind `json:"kind"`
// Speaker identifies who produced this transcript text.
Speaker Speaker `json:"speaker"`
// Text is an incremental transcript fragment.
Text string `json:"text"`
}
TranscriptDelta is a gateway message that streams transcript text.
type TurnCancel ¶
type TurnCancel struct {
// Kind must be "turn.cancel".
Kind MessageKind `json:"kind"`
// Reason optionally explains why the current assistant turn was cancelled.
Reason string `json:"reason,omitempty"`
}
TurnCancel is a client message that cancels the current turn.
type TurnState ¶ added in v0.1.2
type TurnState string
TurnState identifies the gateway work that precedes assistant output.
const ( // TurnStateIdle means the gateway has no turn in progress. TurnStateIdle TurnState = "idle" // TurnStateThinking means the assistant is generating a response. TurnStateThinking TurnState = "thinking" // TurnStateTranscribing means the gateway is converting user speech to text. TurnStateTranscribing TurnState = "transcribing" )
type TurnStatus ¶ added in v0.1.2
type TurnStatus struct {
// Kind is "turn.status".
Kind MessageKind `json:"kind"`
// State is the gateway work in progress; idle ends the turn, including
// one that produced no speech.
State TurnState `json:"state"`
}
TurnStatus is a gateway message that reports work on the current turn.
Backends that cannot observe their own progress never send it. Speech output and tool calls take display precedence over the reported state.
type UserMessage ¶
type UserMessage struct {
// Kind must be "user.message".
Kind MessageKind `json:"kind"`
// Text is the completed user utterance to send to the assistant.
Text string `json:"text"`
}
UserMessage is a client message that appends completed user text and asks the assistant to respond.
type VoiceChoice ¶ added in v0.2.0
type VoiceChoice struct {
ID string `json:"id"`
Label string `json:"label"`
Transports []VoiceTransport `json:"transports"`
// Voices lists supported audio voice names. Omitted when the choice does not offer voice selection.
Voices []string `json:"voices,omitempty"`
// DefaultVoice is the voice used when session.setup.voice.name is omitted.
DefaultVoice string `json:"defaultVoice,omitempty"`
}
VoiceChoice describes a selectable backend without exposing its credentials.
type VoiceChoicesResp ¶ added in v0.2.0
type VoiceChoicesResp struct {
Choices []VoiceChoice `json:"choices"`
DefaultChoiceID string `json:"defaultChoiceID"`
}
VoiceChoicesResp advertises the available voice choices and default selection.
type VoiceConfig ¶
type VoiceConfig struct {
// Name is the requested provider-specific voice name.
Name string `json:"name"`
// Language is the requested BCP 47 language tag, such as "en-US" or "fr-CA".
// Empty defaults to "en-US". Invalid tags fail session setup. The gateway
// instructs the assistant to use this language and supplies recognition hints
// where supported. Speech models determine available languages and accents;
// local server ASR/TTS adapters do not expose per-session language controls.
Language string `json:"language"`
}
VoiceConfig describes provider-neutral voice preferences.
type VoiceRTCAnswerResp ¶
type VoiceRTCAnswerResp struct {
// SDP is the gateway WebRTC answer session description to pass to setRemoteDescription with type "answer".
SDP string `json:"sdp"`
// SessionID identifies the voice RTC session for diagnostics and close calls.
SessionID string `json:"sessionID"`
}
VoiceRTCAnswerResp is the response for POST /api/voicegateway/v1/voice/rtc/offer.
type VoiceRTCClientDiagnostics ¶
type VoiceRTCClientDiagnostics struct {
// ICEConnectionState is the client's RTCPeerConnection.iceConnectionState.
ICEConnectionState VoiceRTCICEConnectionState `json:"iceConnectionState,omitempty"`
// ICEGatheringState is the client's RTCPeerConnection.iceGatheringState.
ICEGatheringState VoiceRTCICEGatheringState `json:"iceGatheringState,omitempty"`
// ConnectionState is the client's RTCPeerConnection.connectionState.
ConnectionState VoiceRTCConnectionState `json:"connectionState,omitempty"`
// SignalingState is the client's RTCPeerConnection.signalingState.
SignalingState VoiceRTCSignalingState `json:"signalingState,omitempty"`
// DataChannelState is the client's voice-gateway RTCDataChannel.readyState.
DataChannelState VoiceRTCDataChannelState `json:"dataChannelState,omitempty"`
}
VoiceRTCClientDiagnostics reports client-observed WebRTC state for diagnosis.
type VoiceRTCConnectionState ¶
type VoiceRTCConnectionState string
VoiceRTCConnectionState is a WebRTC peer connection state.
const ( VoiceRTCConnectionStateNew VoiceRTCConnectionState = "new" VoiceRTCConnectionStateConnecting VoiceRTCConnectionState = "connecting" VoiceRTCConnectionStateConnected VoiceRTCConnectionState = "connected" VoiceRTCConnectionStateDisconnected VoiceRTCConnectionState = "disconnected" VoiceRTCConnectionStateFailed VoiceRTCConnectionState = "failed" VoiceRTCConnectionStateClosed VoiceRTCConnectionState = "closed" )
Voice RTC connection states.
type VoiceRTCConnectivityIssue ¶
type VoiceRTCConnectivityIssue string
VoiceRTCConnectivityIssue identifies a structured voice RTC connectivity issue.
const ( VoiceRTCConnectivityIssueNone VoiceRTCConnectivityIssue = "none" VoiceRTCConnectivityIssueServerSessionMissing VoiceRTCConnectivityIssue = "server_session_missing" VoiceRTCConnectivityIssueServerICEFailed VoiceRTCConnectivityIssue = "server_ice_failed" VoiceRTCConnectivityIssueUDPUnreachable VoiceRTCConnectivityIssue = "udp_unreachable" VoiceRTCConnectivityIssueDataChannelNotOpen VoiceRTCConnectivityIssue = "data_channel_not_open" VoiceRTCConnectivityIssueVoiceBackendConnecting VoiceRTCConnectivityIssue = "voice_backend_connecting" VoiceRTCConnectivityIssueSessionReadyNotDelivered VoiceRTCConnectivityIssue = "session_ready_not_delivered" VoiceRTCConnectivityIssueUnknownTimeout VoiceRTCConnectivityIssue = "unknown_timeout" )
Voice RTC connectivity issues.
type VoiceRTCConnectivitySide ¶
type VoiceRTCConnectivitySide string
VoiceRTCConnectivitySide identifies where a voice RTC failure appears to be.
const ( VoiceRTCConnectivitySideNone VoiceRTCConnectivitySide = "none" VoiceRTCConnectivitySideServer VoiceRTCConnectivitySide = "server" VoiceRTCConnectivitySideClient VoiceRTCConnectivitySide = "client" VoiceRTCConnectivitySideNetwork VoiceRTCConnectivitySide = "network" VoiceRTCConnectivitySideUnknown VoiceRTCConnectivitySide = "unknown" )
Voice RTC connectivity sides.
type VoiceRTCDataChannelState ¶
type VoiceRTCDataChannelState string
VoiceRTCDataChannelState is a WebRTC data channel state.
const ( VoiceRTCDataChannelStateNew VoiceRTCDataChannelState = "new" VoiceRTCDataChannelStateConnecting VoiceRTCDataChannelState = "connecting" VoiceRTCDataChannelStateOpen VoiceRTCDataChannelState = "open" VoiceRTCDataChannelStateClosing VoiceRTCDataChannelState = "closing" VoiceRTCDataChannelStateClosed VoiceRTCDataChannelState = "closed" )
Voice RTC data channel states.
type VoiceRTCDiagnosticsReq ¶
type VoiceRTCDiagnosticsReq struct {
// Client contains the browser/client WebRTC state observed by the caller.
Client VoiceRTCClientDiagnostics `json:"client,omitzero"`
}
VoiceRTCDiagnosticsReq is the request body for POST /api/voicegateway/v1/voice/rtc/{sessionID}/diagnostics.
type VoiceRTCDiagnosticsResp ¶
type VoiceRTCDiagnosticsResp struct {
// SessionID is the diagnosed voice RTC session ID.
SessionID string `json:"sessionID"`
// Issue is the machine-readable connectivity diagnosis.
Issue VoiceRTCConnectivityIssue `json:"issue"`
// Side identifies where the issue appears to be.
Side VoiceRTCConnectivitySide `json:"side"`
// Message is a human-readable explanation of the diagnosis.
Message string `json:"message"`
// Server contains gateway-observed WebRTC state.
Server VoiceRTCServerDiagnostics `json:"server"`
// Client echoes the client diagnostics included in the request.
Client VoiceRTCClientDiagnostics `json:"client,omitzero"`
}
VoiceRTCDiagnosticsResp reports structured WebRTC connectivity diagnostics.
type VoiceRTCICEConnectionState ¶
type VoiceRTCICEConnectionState string
VoiceRTCICEConnectionState is a WebRTC ICE transport connection state.
const ( VoiceRTCICEConnectionStateNew VoiceRTCICEConnectionState = "new" VoiceRTCICEConnectionStateChecking VoiceRTCICEConnectionState = "checking" VoiceRTCICEConnectionStateConnected VoiceRTCICEConnectionState = "connected" VoiceRTCICEConnectionStateCompleted VoiceRTCICEConnectionState = "completed" VoiceRTCICEConnectionStateDisconnected VoiceRTCICEConnectionState = "disconnected" VoiceRTCICEConnectionStateFailed VoiceRTCICEConnectionState = "failed" VoiceRTCICEConnectionStateClosed VoiceRTCICEConnectionState = "closed" )
Voice RTC ICE connection states.
type VoiceRTCICEGatheringState ¶
type VoiceRTCICEGatheringState string
VoiceRTCICEGatheringState is a WebRTC ICE candidate gathering state.
const ( VoiceRTCICEGatheringStateNew VoiceRTCICEGatheringState = "new" VoiceRTCICEGatheringStateGathering VoiceRTCICEGatheringState = "gathering" VoiceRTCICEGatheringStateComplete VoiceRTCICEGatheringState = "complete" )
Voice RTC ICE gathering states.
type VoiceRTCOfferReq ¶
type VoiceRTCOfferReq struct {
// ChoiceID selects a gateway choice; empty uses the advertised default.
ChoiceID string `json:"choiceID,omitempty"`
// SDP is the browser/client WebRTC offer session description from RTCSessionDescription.sdp after createOffer and setLocalDescription.
SDP string `json:"sdp"`
// Service authorizes a session on a standalone gateway. Embedded gateways use host authentication.
Service *ServiceAuthorization `json:"service,omitempty"`
}
VoiceRTCOfferReq is the request body for POST /api/voicegateway/v1/voice/rtc/offer.
func (*VoiceRTCOfferReq) Validate ¶
func (r *VoiceRTCOfferReq) Validate() error
Validate checks that the SDP offer is provided.
type VoiceRTCServerDiagnostics ¶
type VoiceRTCServerDiagnostics struct {
// SessionFound reports whether the gateway still has the requested session.
SessionFound bool `json:"sessionFound"`
// UDPEndpoints are the LAN/Tailscale and optional UPnP public UDP candidates advertised to the client.
UDPEndpoints []VoiceRTCUDPEndpoint `json:"udpEndpoints,omitempty"`
// UDPMappingError is the last UPnP mapping or refresh error, if any.
UDPMappingError string `json:"udpMappingError,omitempty"`
// ICEConnectionState is the gateway PeerConnection ICE connection state.
ICEConnectionState VoiceRTCICEConnectionState `json:"iceConnectionState,omitempty"`
// ICEGatheringState is the gateway PeerConnection ICE gathering state.
ICEGatheringState VoiceRTCICEGatheringState `json:"iceGatheringState,omitempty"`
// ConnectionState is the gateway PeerConnection aggregate connection state.
ConnectionState VoiceRTCConnectionState `json:"connectionState,omitempty"`
// SignalingState is the gateway PeerConnection signaling state.
SignalingState VoiceRTCSignalingState `json:"signalingState,omitempty"`
// DataChannelState is the gateway-observed voice data channel state.
DataChannelState VoiceRTCDataChannelState `json:"dataChannelState,omitempty"`
// DataChannelOpened reports whether the voice data channel reached open.
DataChannelOpened bool `json:"dataChannelOpened,omitempty"`
// AudioTrackReceived reports whether the gateway received the client's microphone track.
AudioTrackReceived bool `json:"audioTrackReceived,omitempty"`
// BackendConnected reports whether the gateway connected to the configured voice backend.
BackendConnected bool `json:"backendConnected,omitempty"`
// SessionReadySent reports whether the gateway sent session.ready to the client.
SessionReadySent bool `json:"sessionReadySent,omitempty"`
// LastError is the last gateway error sent to the client, if any.
LastError string `json:"lastError,omitempty"`
}
VoiceRTCServerDiagnostics reports server-observed WebRTC state for diagnosis.
type VoiceRTCSignalingState ¶
type VoiceRTCSignalingState string
VoiceRTCSignalingState is a WebRTC peer connection signaling state.
const ( VoiceRTCSignalingStateStable VoiceRTCSignalingState = "stable" VoiceRTCSignalingStateHaveLocalOffer VoiceRTCSignalingState = "have-local-offer" VoiceRTCSignalingStateHaveRemoteOffer VoiceRTCSignalingState = "have-remote-offer" VoiceRTCSignalingStateHaveLocalPranswer VoiceRTCSignalingState = "have-local-pranswer" VoiceRTCSignalingStateHaveRemotePranswer VoiceRTCSignalingState = "have-remote-pranswer" VoiceRTCSignalingStateClosed VoiceRTCSignalingState = "closed" )
Voice RTC signaling states.
type VoiceRTCUDPEndpoint ¶
type VoiceRTCUDPEndpoint struct {
// Host is an IP address advertised in the gateway SDP answer.
Host string `json:"host"`
// Port is the UDP port paired with host in the gateway SDP answer.
Port int `json:"port"`
}
VoiceRTCUDPEndpoint reports one server UDP candidate for diagnosis.
type VoiceTextTicketReq ¶ added in v0.1.2
type VoiceTextTicketReq struct {
// ChoiceID selects a text-capable choice, bound to the issued ticket.
ChoiceID string `json:"choiceID,omitempty"`
// Service authorizes a session on a standalone gateway.
Service *ServiceAuthorization `json:"service,omitempty"`
}
VoiceTextTicketReq authorizes a browser text-session WebSocket upgrade. Embedded hosts authenticate this HTTP request before dispatch.
type VoiceTextTicketResp ¶ added in v0.1.2
type VoiceTextTicketResp struct {
Ticket string `json:"ticket"`
}
VoiceTextTicketResp carries a single-use ticket that expires after 30 seconds. Connect to /api/voicegateway/v1/voice/text/browser with the gomode.ticket.<ticket> WebSocket subprotocol alongside gomode.text.v1. Never put it in a URL or store it persistently.
type VoiceTransport ¶ added in v0.2.0
type VoiceTransport string
VoiceTransport identifies how clients communicate with a voice choice.
const ( // VoiceTransportText carries text with client speech recognition and synthesis. VoiceTransportText VoiceTransport = "text" // VoiceTransportWebRTC carries audio through WebRTC. VoiceTransportWebRTC VoiceTransport = "webrtc" )