- Enables outbound voice calls in voice channel . We are only caring about wiring the logic to trigger outgoing calls to the call button introduced in previous PRs. We will connect it to call component in subsequent PRs ref: #11602 ## Screens <img width="2304" height="1202" alt="image" src="https://github.com/user-attachments/assets/b91543a8-8d4e-4229-bd80-9727b42c7b0f" /> <img width="2304" height="1200" alt="image" src="https://github.com/user-attachments/assets/1a1dad2a-8cb2-4aa2-9702-c062416556a7" /> --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: iamsivin <iamsivin@gmail.com> Co-authored-by: Vishnu Narayanan <vishnu@chatwoot.com>
33 lines
843 B
Ruby
33 lines
843 B
Ruby
class Voice::Provider::TwilioAdapter
|
|
def initialize(channel)
|
|
@channel = channel
|
|
end
|
|
|
|
def initiate_call(to:, _conference_sid: nil, _agent_id: nil)
|
|
cfg = @channel.provider_config_hash
|
|
|
|
host = ENV.fetch('FRONTEND_URL')
|
|
phone_digits = @channel.phone_number.delete_prefix('+')
|
|
callback_url = "#{host}/twilio/voice/call/#{phone_digits}"
|
|
|
|
params = {
|
|
from: @channel.phone_number,
|
|
to: to,
|
|
url: callback_url,
|
|
status_callback: "#{host}/twilio/voice/status/#{phone_digits}",
|
|
status_callback_event: %w[initiated ringing answered completed],
|
|
status_callback_method: 'POST'
|
|
}
|
|
|
|
call = twilio_client(cfg).calls.create(**params)
|
|
|
|
{ call_sid: call.sid }
|
|
end
|
|
|
|
private
|
|
|
|
def twilio_client(config)
|
|
Twilio::REST::Client.new(config['account_sid'], config['auth_token'])
|
|
end
|
|
end
|