mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| class CsmlEngine
 | |
|   API_KEY_HEADER = 'X-Api-Key'.freeze
 | |
| 
 | |
|   def initialize
 | |
|     @host_url = GlobalConfigService.load('CSML_BOT_HOST', '')
 | |
|     @api_key = GlobalConfigService.load('CSML_BOT_API_KEY', '')
 | |
| 
 | |
|     raise ArgumentError, 'Missing Credentials' if @host_url.blank? || @api_key.blank?
 | |
|   end
 | |
| 
 | |
|   def status
 | |
|     response = HTTParty.get("#{@host_url}/status")
 | |
|     process_response(response)
 | |
|   end
 | |
| 
 | |
|   def run(bot, params)
 | |
|     payload = {
 | |
|       bot: bot,
 | |
|       event: {
 | |
|         request_id: SecureRandom.uuid,
 | |
|         client: params[:client],
 | |
|         payload: params[:payload],
 | |
|         metadata: params[:metadata],
 | |
|         ttl_duration: 4000
 | |
|       }
 | |
|     }
 | |
|     response = post('run', payload)
 | |
|     process_response(response)
 | |
|   end
 | |
| 
 | |
|   def validate(bot)
 | |
|     response = post('validate', bot)
 | |
|     process_response(response)
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def process_response(response)
 | |
|     return response.parsed_response if response.success?
 | |
| 
 | |
|     { error: response.parsed_response, status: response.code }
 | |
|   end
 | |
| 
 | |
|   def post(path, payload)
 | |
|     HTTParty.post(
 | |
|       "#{@host_url}/#{path}", {
 | |
|         headers: { API_KEY_HEADER => @api_key, 'Content-Type' => 'application/json' },
 | |
|         body: payload.to_json
 | |
|       }
 | |
|     )
 | |
|   end
 | |
| end
 | 
