Class: LiveKit::ConnectorServiceClient

Inherits:
Twirp::Client
  • Object
show all
Includes:
AuthMixin
Defined in:
lib/livekit/connector_service_client.rb

Overview

Client for LiveKit's Connector service, bridging WhatsApp and Twilio calls into LiveKit rooms.

The request types carry many fields, so each method takes a fully-built protobuf request and returns the protobuf response.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from AuthMixin

#auth_header, #rpc!

Constructor Details

#initialize(base_url, api_key: nil, api_secret: nil, token: nil, failover: true, connection: nil) ⇒ ConnectorServiceClient

Returns a new instance of ConnectorServiceClient.



18
19
20
21
22
23
# File 'lib/livekit/connector_service_client.rb', line 18

def initialize(base_url, api_key: nil, api_secret: nil, token: nil, failover: true, connection: nil)
  super(connection || LiveKit::Failover.connection(base_url, failover))
  @api_key = api_key
  @api_secret = api_secret
  @token = token
end

Instance Attribute Details

#api_keyObject

Returns the value of attribute api_key.



16
17
18
# File 'lib/livekit/connector_service_client.rb', line 16

def api_key
  @api_key
end

#api_secretObject

Returns the value of attribute api_secret.



16
17
18
# File 'lib/livekit/connector_service_client.rb', line 16

def api_secret
  @api_secret
end

Instance Method Details

#accept_whatsapp_call(request, timeout: nil) ⇒ Proto::AcceptWhatsAppCallResponse

Accepts an inbound WhatsApp call.

Parameters:

  • request (Proto::AcceptWhatsAppCallRequest)
  • timeout (Numeric, nil) (defaults to: nil)

    optional request timeout in seconds. When the request waits for the inbound party to join, it defaults to the standard ring window.

Returns:



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/livekit/connector_service_client.rb', line 42

def accept_whatsapp_call(request, timeout: nil)
  headers = auth_header(video_grant: VideoGrant.new(roomCreate: true))
  # Waiting for the inbound party to join can block, so default the request
  # timeout to the standard ring window; otherwise honor any user timeout.
  if request.wait_until_answered
    headers[Failover::TIMEOUT_HEADER] = (timeout || DialTimeout::DEFAULT_RINGING_TIMEOUT).to_s
  elsif timeout
    headers[Failover::TIMEOUT_HEADER] = timeout.to_s
  end
  rpc!(:AcceptWhatsAppCall, request, headers: headers)
end

#connect_twilio_call(request) ⇒ Proto::ConnectTwilioCallResponse

Connects a Twilio call to a LiveKit room.



79
80
81
82
83
84
85
# File 'lib/livekit/connector_service_client.rb', line 79

def connect_twilio_call(request)
  rpc!(
    :ConnectTwilioCall,
    request,
    headers: auth_header(video_grant: VideoGrant.new(roomCreate: true)),
  )
end

#connect_whatsapp_call(request) ⇒ Proto::ConnectWhatsAppCallResponse

Connects an established WhatsApp call (used for business-initiated calls).



57
58
59
60
61
62
63
# File 'lib/livekit/connector_service_client.rb', line 57

def connect_whatsapp_call(request)
  rpc!(
    :ConnectWhatsAppCall,
    request,
    headers: auth_header(video_grant: VideoGrant.new(roomCreate: true)),
  )
end

#dial_whatsapp_call(request) ⇒ Proto::DialWhatsAppCallResponse

Initiates an outbound WhatsApp call.



28
29
30
31
32
33
34
# File 'lib/livekit/connector_service_client.rb', line 28

def dial_whatsapp_call(request)
  rpc!(
    :DialWhatsAppCall,
    request,
    headers: auth_header(video_grant: VideoGrant.new(roomCreate: true)),
  )
end

#disconnect_whatsapp_call(request) ⇒ Proto::DisconnectWhatsAppCallResponse

Disconnects an active WhatsApp call.



68
69
70
71
72
73
74
# File 'lib/livekit/connector_service_client.rb', line 68

def disconnect_whatsapp_call(request)
  rpc!(
    :DisconnectWhatsAppCall,
    request,
    headers: auth_header(video_grant: VideoGrant.new(roomCreate: true)),
  )
end