chromium/chromeos/ash/services/assistant/assistant_interaction_logger.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_ASH_SERVICES_ASSISTANT_ASSISTANT_INTERACTION_LOGGER_H_
#define CHROMEOS_ASH_SERVICES_ASSISTANT_ASSISTANT_INTERACTION_LOGGER_H_

#include <string>
#include <vector>

#include "chromeos/ash/services/assistant/public/cpp/assistant_service.h"

namespace ash::assistant {

// A subscriber that will log all Assistant interactions.
// The interactions will be logged using
//     VLOG(AssistantInteractionLogger::kVLogLevel)
class AssistantInteractionLogger : public AssistantInteractionSubscriber {
 public:
  // VLog level used for logging interactions.
  constexpr static const int kVLogLevel = 1;

  // Returns if the current logging level is high enough so that the traces
  // will be printed. If not, there is no point in creating this class.
  static bool IsLoggingEnabled();

  AssistantInteractionLogger();
  AssistantInteractionLogger(AssistantInteractionLogger&) = delete;
  AssistantInteractionLogger& operator=(AssistantInteractionLogger&) = delete;
  ~AssistantInteractionLogger() override;

  // AssistantInteractionSubscriber implementation:
  void OnInteractionStarted(
      const AssistantInteractionMetadata& metadata) override;

  void OnInteractionFinished(
      AssistantInteractionResolution resolution) override;

  void OnHtmlResponse(const std::string& response,
                      const std::string& fallback) override;

  void OnSuggestionsResponse(
      const std::vector<AssistantSuggestion>& response) override;

  void OnTextResponse(const std::string& response) override;

  void OnOpenUrlResponse(const GURL& url, bool in_background) override;

  void OnOpenAppResponse(const AndroidAppInfo& app_info) override;

  void OnSpeechRecognitionStarted() override;

  void OnSpeechRecognitionIntermediateResult(
      const std::string& high_confidence_text,
      const std::string& low_confidence_text) override;

  void OnSpeechRecognitionEndOfUtterance() override;

  void OnSpeechRecognitionFinalResult(const std::string& final_result) override;

  void OnSpeechLevelUpdated(float speech_level) override;

  void OnTtsStarted(bool due_to_error) override;

  void OnWaitStarted() override;
};

}  // namespace ash::assistant

#endif  // CHROMEOS_ASH_SERVICES_ASSISTANT_ASSISTANT_INTERACTION_LOGGER_H_