- 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>
39 lines
939 B
Ruby
39 lines
939 B
Ruby
class Api::V1::Accounts::Contacts::CallsController < Api::V1::Accounts::BaseController
|
|
before_action :contact
|
|
before_action :voice_inbox
|
|
|
|
def create
|
|
authorize contact, :show?
|
|
authorize voice_inbox, :show?
|
|
|
|
result = Voice::OutboundCallBuilder.perform!(
|
|
account: Current.account,
|
|
inbox: voice_inbox,
|
|
user: Current.user,
|
|
contact: contact
|
|
)
|
|
|
|
conversation = result[:conversation]
|
|
|
|
render json: {
|
|
conversation_id: conversation.display_id,
|
|
inbox_id: voice_inbox.id,
|
|
call_sid: result[:call_sid],
|
|
conference_sid: conversation.additional_attributes['conference_sid']
|
|
}
|
|
end
|
|
|
|
private
|
|
|
|
def contact
|
|
@contact ||= Current.account.contacts.find(params[:id])
|
|
end
|
|
|
|
def voice_inbox
|
|
@voice_inbox ||= Current.user.assigned_inboxes.where(
|
|
account_id: Current.account.id,
|
|
channel_type: 'Channel::Voice'
|
|
).find(params.require(:inbox_id))
|
|
end
|
|
end
|