mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 04:57:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
class Integrations::Dyte::ProcessorService
 | 
						|
  pattr_initialize [:account!, :conversation!]
 | 
						|
 | 
						|
  def create_a_meeting(agent)
 | 
						|
    title = I18n.t('integration_apps.dyte.meeting_name', agent_name: agent.available_name)
 | 
						|
    response = dyte_client.create_a_meeting(title)
 | 
						|
 | 
						|
    return response if response[:error].present?
 | 
						|
 | 
						|
    meeting = response['meeting']
 | 
						|
    message = create_a_dyte_integration_message(meeting, title, agent)
 | 
						|
    message.push_event_data
 | 
						|
  end
 | 
						|
 | 
						|
  def add_participant_to_meeting(meeting_id, user)
 | 
						|
    dyte_client.add_participant_to_meeting(meeting_id, user.id, user.name, avatar_url(user))
 | 
						|
  end
 | 
						|
 | 
						|
  private
 | 
						|
 | 
						|
  def create_a_dyte_integration_message(meeting, title, agent)
 | 
						|
    @conversation.messages.create!(
 | 
						|
      {
 | 
						|
        account_id: conversation.account_id,
 | 
						|
        inbox_id: conversation.inbox_id,
 | 
						|
        message_type: :outgoing,
 | 
						|
        content_type: :integrations,
 | 
						|
        content: title,
 | 
						|
        content_attributes: {
 | 
						|
          type: 'dyte',
 | 
						|
          data: {
 | 
						|
            meeting_id: meeting['id'],
 | 
						|
            room_name: meeting['roomName']
 | 
						|
          }
 | 
						|
        },
 | 
						|
        sender: agent
 | 
						|
      }
 | 
						|
    )
 | 
						|
  end
 | 
						|
 | 
						|
  def avatar_url(user)
 | 
						|
    return user.avatar_url if user.avatar_url.present?
 | 
						|
 | 
						|
    "#{ENV.fetch('FRONTEND_URL', nil)}/integrations/slack/user.png"
 | 
						|
  end
 | 
						|
 | 
						|
  def dyte_hook
 | 
						|
    @dyte_hook ||= account.hooks.find_by!(app_id: 'dyte')
 | 
						|
  end
 | 
						|
 | 
						|
  def dyte_client
 | 
						|
    credentials = dyte_hook.settings
 | 
						|
    @dyte_client ||= Dyte.new(credentials['organization_id'], credentials['api_key'])
 | 
						|
  end
 | 
						|
end
 |