Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
module Enterprise::Captain::BaseTaskService
|
||||
def perform
|
||||
return { error: I18n.t('captain.copilot_limit'), error_code: 429 } unless responses_available?
|
||||
|
||||
unless captain_tasks_enabled?
|
||||
return { error: I18n.t('captain.upgrade') } if ChatwootApp.chatwoot_cloud?
|
||||
|
||||
return { error: I18n.t('captain.disabled') }
|
||||
end
|
||||
|
||||
result = super
|
||||
increment_usage if successful_result?(result)
|
||||
result
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def responses_available?
|
||||
return true unless ChatwootApp.chatwoot_cloud?
|
||||
|
||||
account.usage_limits[:captain][:responses][:current_available].positive?
|
||||
end
|
||||
|
||||
def successful_result?(result)
|
||||
result.is_a?(Hash) && result[:message].present? && !result[:error]
|
||||
end
|
||||
|
||||
def increment_usage
|
||||
Rails.logger.info("[CAPTAIN][#{self.class.name}] Incrementing response usage for account #{account.id}")
|
||||
account.increment_response_usage
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,24 @@
|
||||
module Enterprise::Captain::ReplySuggestionService
|
||||
def make_api_call(model:, messages:, tools: [])
|
||||
return super unless use_search_tool?
|
||||
|
||||
super(model: model, messages: messages, tools: [build_search_tool])
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def use_search_tool?
|
||||
ChatwootApp.chatwoot_cloud? || ChatwootApp.self_hosted_enterprise?
|
||||
end
|
||||
|
||||
def prompt_variables
|
||||
return super unless use_search_tool?
|
||||
|
||||
super.merge('has_search_tool' => true)
|
||||
end
|
||||
|
||||
def build_search_tool
|
||||
assistant = conversation&.inbox&.captain_assistant
|
||||
Captain::Tools::SearchReplyDocumentationService.new(account: account, assistant: assistant)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user