Some checks failed
Lock Threads / action (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Run Chatwoot CE spec / lint-backend (push) Has been cancelled
Run Chatwoot CE spec / lint-frontend (push) Has been cancelled
Run Chatwoot CE spec / frontend-tests (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (0, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (1, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (10, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (11, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (12, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (13, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (14, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (15, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (2, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (3, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (4, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (5, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (6, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (7, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (8, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (9, 16) (push) Has been cancelled
Run Linux nightly installer / nightly (push) Has been cancelled
- Add Logistics component with progress tracking - Add OrderDetail component for order information - Support data-driven steps and actions - Add blue color scale to widget SCSS - Fix node overflow and progress bar rendering issues - Add English translations for dashboard components Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
47 lines
1.3 KiB
Ruby
47 lines
1.3 KiB
Ruby
class Voice::Provider::Twilio::ConferenceService
|
|
pattr_initialize [:conversation!, { twilio_client: nil }]
|
|
|
|
def ensure_conference_sid
|
|
existing = conversation.additional_attributes&.dig('conference_sid')
|
|
return existing if existing.present?
|
|
|
|
sid = Voice::Conference::Name.for(conversation)
|
|
merge_attributes('conference_sid' => sid)
|
|
sid
|
|
end
|
|
|
|
def mark_agent_joined(user:)
|
|
merge_attributes(
|
|
'agent_joined' => true,
|
|
'joined_at' => Time.current.to_i,
|
|
'joined_by' => { id: user.id, name: user.name }
|
|
)
|
|
end
|
|
|
|
def end_conference
|
|
twilio_client
|
|
.conferences
|
|
.list(friendly_name: Voice::Conference::Name.for(conversation), status: 'in-progress')
|
|
.each { |conf| twilio_client.conferences(conf.sid).update(status: 'completed') }
|
|
end
|
|
|
|
private
|
|
|
|
def merge_attributes(attrs)
|
|
current = conversation.additional_attributes || {}
|
|
conversation.update!(additional_attributes: current.merge(attrs))
|
|
end
|
|
|
|
def twilio_client
|
|
@twilio_client ||= ::Twilio::REST::Client.new(account_sid, auth_token)
|
|
end
|
|
|
|
def account_sid
|
|
@account_sid ||= conversation.inbox.channel.provider_config_hash['account_sid']
|
|
end
|
|
|
|
def auth_token
|
|
@auth_token ||= conversation.inbox.channel.provider_config_hash['auth_token']
|
|
end
|
|
end
|