Module: OpenAI::Helpers::Realtime::Connections

Included in:
Resources::Realtime
Defined in:
lib/openai/helpers/realtime/resources/realtime_extension.rb

Overview

Ruby-native WebSocket entry point layered onto the generated Realtime resource. Generated HTTP accessors remain owned by the generated class.

Instance Method Summary collapse

Instance Method Details

#connect(model:, websocket_base_url: nil, request_options: nil, transport: nil, transport_options: {}, &block) ⇒ Object

Open a server-side Realtime WebSocket. A block is required and the socket is closed on every exit path.

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/openai/helpers/realtime/resources/realtime_extension.rb', line 11

def connect(
  model:,
  websocket_base_url: nil,
  request_options: nil,
  transport: nil,
  transport_options: {},
  &block
)
  raise ArgumentError, "A block is required to open a Realtime WebSocket." unless block

  manager = OpenAI::Realtime::ConnectionManager.new(
    client: @client,
    query: {"model" => model},
    websocket_base_url: websocket_base_url,
    transport: transport,
    request_options: request_options,
    transport_options: transport_options
  )
  manager.open(&block)
end

#connect_to_call(call_id:, websocket_base_url: nil, request_options: nil, transport: nil, transport_options: {}, &block) ⇒ Object

Attach a server-side control WebSocket to an existing WebRTC or SIP call.

Raises:

  • (ArgumentError)


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/openai/helpers/realtime/resources/realtime_extension.rb', line 33

def connect_to_call(
  call_id:,
  websocket_base_url: nil,
  request_options: nil,
  transport: nil,
  transport_options: {},
  &block
)
  raise ArgumentError, "A block is required to open a Realtime WebSocket." unless block
  unless call_id.is_a?(String) && !call_id.empty?
    raise ArgumentError, "`call_id` must be a non-empty String."
  end

  manager = OpenAI::Realtime::ConnectionManager.new(
    client: @client,
    query: {"call_id" => call_id},
    websocket_base_url: websocket_base_url,
    transport: transport,
    request_options: request_options,
    transport_options: transport_options,
    connection_class: OpenAI::Realtime::SidebandConnection
  )
  manager.open(&block)
end

#connect_transcription(websocket_base_url: nil, request_options: nil, transport: nil, transport_options: {}, &block) ⇒ Object

Open a dedicated server-side Realtime transcription WebSocket. The transcription model is selected in the subsequent session update.

Raises:

  • (ArgumentError)


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/openai/helpers/realtime/resources/realtime_extension.rb', line 60

def connect_transcription(
  websocket_base_url: nil,
  request_options: nil,
  transport: nil,
  transport_options: {},
  &block
)
  raise ArgumentError, "A block is required to open a Realtime WebSocket." unless block

  manager = OpenAI::Realtime::ConnectionManager.new(
    client: @client,
    query: {"intent" => "transcription"},
    websocket_base_url: websocket_base_url,
    transport: transport,
    request_options: request_options,
    transport_options: transport_options
  )
  manager.open(&block)
end