Conscience Core
CscNotifications.h
Go to the documentation of this file.
1 #ifndef CscNotifications_h_
2 #define CscNotifications_h_
3 
4 #include <functional>
5 #include "CscCommon.h"
6 
7 using std::function;
8 
10 
11 
12 ENUM(NotificationType ,
13  PHONE,
14  BACKEND_ENDPOINT,
15  NATIVE_NOTIFICATION,
16  EMAIL,
17 )
18 
19 struct CSC_DLL_IMPORTEXPORT NotificationInstruction {
20 public:
21 
22  static ptr<NotificationInstruction> byPhoneCall(const string &message, const vector<string> &recipientNumbers, const map<string, string> &additionalInfos = {});
23  static ptr<NotificationInstruction> onBackend(const string &protocol, const string &host, const string &path = "", optional<int> port = {});
24  static ptr<NotificationInstruction> byNativePhoneNotification(const string &type, const map<string, string> &additionalParameters = {});
25  static ptr<NotificationInstruction> byEmail(const string &title, const string &body, const vector<string> &recipientEmails, const map<string, string> &additionalParameters = {});
26 
27  static vector<ptr<NotificationInstruction>> fromMap(const map<string, string> &parameters);
28 
29  operator string() const;
30 
31  NotificationType getType() const;
32  const map<string, string> &getParameters() const;
33  string getParameter(const string &key) const;
34 
35  NotificationInstruction(NotificationType type, const map<string, string> &parameters);
36 private:
37  NotificationType type;
38  map<string, string> parameters;
39 };
40 
42 public:
43 
44  NotificationParameters(const vector<ptr<NotificationInstruction>> &instructions);
46 
47  operator string() const;
48 
49  const vector<ptr<NotificationInstruction>> &getInstructions() const;
50 private:
51  vector<ptr<NotificationInstruction>> instructions;
52 };
53 
55  inline static const string PHONE_NUMBERS = "vocalNums";
56  inline static const char *const PHONE_NUMBERS_SEPARATOR = "&";
57  inline static const string PHONE_MESSAGE = "vocalMessage";
58 
59  inline static const string BACKEND_PROTOCOL = "backendProtocol";
60  inline static const string BACKEND_HOST = "backendHost";
61  inline static const string BACKEND_PATH = "backendPath";
62  inline static const string BACKEND_PORT = "backendPort";
63 
64  inline static const string NATIVE_TYPE = "nativeType";
65  inline static const string NATIVE_TITLE = "nativeTitle";
66  inline static const string NATIVE_MESSAGE = "nativeMessage";
67 
68  inline static const string EMAIL_TITLE = "emailTitle";
69  inline static const string EMAIL_BODY = "emailBody";
70  inline static const string EMAIL_RECIPIENTS = "emailRecipients";
71 };
72 
74 public:
75  static CscNotifications *getInstance();
76 
77  void send(const NotificationParameters &notificationParameters);
78  void addOnSendRequestedListener(const function<void(const NotificationParameters &)> &listener);
79 
80  typedef function<void(const string& message, const vector<string>& phoneNumbers, const map<string, string>& additionalInfos)> VocalPhoneNumberNotifier;
81  void setVocalPhoneNumberNotifier(VocalPhoneNumberNotifier notifier);
82 
83  void setEnabled(bool enabled);
84 
85 private:
87  inline static CscNotifications *instance = nullptr;
88 
89  bool enabled = true;
90 
91  VocalPhoneNumberNotifier vocalPhoneNumberNotifier = [](const string& message, const vector<string>& phoneNumbers, const map<string, string>& additionalInfos) {
92  LOG_WARN("no vocal phone notifier on this engine");
93  };
94 
95  std::unique_ptr<CscLogger> logger;
96 
97  vector<function<void(const NotificationParameters &)>> listeners;
98 };
99 
100 }
101 #endif
conscience_core::ai::fromMap
MrptGrid fromMap(const COccupancyGridMap2D &m)
Definition: CscMrptAutonomousExploration.cpp:107
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai::logger
unique_ptr< CscLogger > logger
Definition: CscMrptAutonomousExploration.cpp:49
conscience_core::ai::notifications::CscNotifications
Definition: CscNotifications.h:73
LOG_WARN
#define LOG_WARN(message)
Definition: conscience_log.h:193
conscience_core::ai::notifications::Params
Definition: CscNotifications.h:54
conscience_core::ai::notifications::CscNotifications::VocalPhoneNumberNotifier
function< void(const string &message, const vector< string > &phoneNumbers, const map< string, string > &additionalInfos)> VocalPhoneNumberNotifier
Definition: CscNotifications.h:80
nlohmann::detail::void
j template void())
Definition: json.hpp:4189
CscCommon.h
jwt::json::type
type
Generic JSON types used in JWTs.
Definition: jwt.h:1794
conscience_core::ai::notifications
Definition: CscNotifications.cpp:12
conscience_server::entities::instance
ServerEntities * instance
Definition: ServerEntities.cpp:39
conscience_core::ai::notifications::NotificationParameters
Definition: CscNotifications.h:41
conscience_core::ai::notifications::ENUM
ENUM(NotificationType, PHONE, BACKEND_ENDPOINT, NATIVE_NOTIFICATION, EMAIL,) struct CSC_DLL_IMPORTEXPORT NotificationInstruction
Definition: CscNotifications.h:12
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29