mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 04:57:51 +00:00 
			
		
		
		
	- Add a warning logger for cases where we are getting webhook events for inactive numbers. - Add config to discard events for inactive numbers so that the meta will stop sending events --------- Co-authored-by: Pranav <pranav@chatwoot.com>
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
class Webhooks::WhatsappController < ActionController::API
 | 
						|
  include MetaTokenVerifyConcern
 | 
						|
 | 
						|
  def process_payload
 | 
						|
    if inactive_whatsapp_number?
 | 
						|
      Rails.logger.warn("Rejected webhook for inactive WhatsApp number: #{params[:phone_number]}")
 | 
						|
      render json: { error: 'Inactive WhatsApp number' }, status: :unprocessable_entity
 | 
						|
      return
 | 
						|
    end
 | 
						|
 | 
						|
    Webhooks::WhatsappEventsJob.perform_later(params.to_unsafe_hash)
 | 
						|
    head :ok
 | 
						|
  end
 | 
						|
 | 
						|
  private
 | 
						|
 | 
						|
  def valid_token?(token)
 | 
						|
    channel = Channel::Whatsapp.find_by(phone_number: params[:phone_number])
 | 
						|
    whatsapp_webhook_verify_token = channel.provider_config['webhook_verify_token'] if channel.present?
 | 
						|
    token == whatsapp_webhook_verify_token if whatsapp_webhook_verify_token.present?
 | 
						|
  end
 | 
						|
 | 
						|
  def inactive_whatsapp_number?
 | 
						|
    phone_number = params[:phone_number]
 | 
						|
    return false if phone_number.blank?
 | 
						|
 | 
						|
    inactive_numbers = GlobalConfig.get_value('INACTIVE_WHATSAPP_NUMBERS').to_s
 | 
						|
    return false if inactive_numbers.blank?
 | 
						|
 | 
						|
    inactive_numbers_array = inactive_numbers.split(',').map(&:strip)
 | 
						|
    inactive_numbers_array.include?(phone_number)
 | 
						|
  end
 | 
						|
end
 |