docs: def send_alert_to_configured_integration(integration_alert):
      """Send IntegrationAlert to configured integration."""
      try:
          alert = integration_alert.alert
          configured_integration = integration_alert.configured_integration
          integration = configured_integration.integration
          integration_actions_instance = configured_integration.integration.module
  
          alert_fields = dict()
          if integration.required_fields:
              if not all([hasattr(alert, _) for _ in integration.required_fields]):
                  logger.debug("Alert does not have all required_fields (%s) for integration %s, skipping",
                               integration.required_fields,
                               integration.name)
                  return
  
          exclude_fields = ["alert_type", "service_type"]
          alert_fields = {}
          for field in alert.__slots__:
              if hasattr(alert, field) and field not in exclude_fields:
                  alert_fields[field] = getattr(alert, field)
  
          logger.debug("Sending alert %s to %s", alert_fields, integration.name)
          output_data, output_file_content = integration_actions_instance.send_event(alert_fields)
  
          if integration.polling_enabled:
              integration_alert.status = IntegrationAlertStatuses.POLLING.name
              polling_integration_alerts.append(integration_alert)
          else:
              integration_alert.status = IntegrationAlertStatuses.DONE.name
  
          integration_alert.send_time = get_current_datetime_utc()
          integration_alert.output_data = json.dumps(output_data)
          # TODO: do something with successfully handled alerts? They are all written to debug log file
  
      except exceptions.IntegrationMissingRequiredFieldError as exc:
          logger.exception("Send response formatting for integration alert %s failed. Missing required fields",
                           integration_alert,
                           exc.message)
  
          integration_alert.status = IntegrationAlertStatuses.ERROR_MISSING_SEND_FIELDS.name
  
      except exceptions.IntegrationOutputFormatError:
          logger.exception("Send response formatting for integration alert %s failed", integration_alert)
  
          integration_alert.status = IntegrationAlertStatuses.ERROR_SENDING_FORMATTING.name
  
      except exceptions.IntegrationSendEventError as exc:
          integration_send_retries = integration_alert.retries if integration_alert.retries <= MAX_SEND_RETRIES \
              else MAX_SEND_RETRIES  # making sure we do not exceed celery max retries
          send_retries_left = integration_send_retries - 1
          integration_alert.retries = send_retries_left
  
          logger.error("Sending integration alert %s failed. Message: %s. Retries left: %s",
                       integration_alert,
                       exc.message,
                       send_retries_left)
  
          if send_retries_left == 0:
              integration_alert.status = IntegrationAlertStatuses.ERROR_SENDING.name
  
          if send_retries_left > 0:
              sleep(SEND_ALERT_DATA_INTERVAL)
              send_alert_to_configured_integration(integration_alert)