summaryrefslogtreecommitdiffstats
path: root/src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp')
-rw-r--r--src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp54
1 files changed, 40 insertions, 14 deletions
diff --git a/src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp b/src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp
index 626a7fc..00f57e3 100644
--- a/src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp
+++ b/src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp
@@ -16,29 +16,30 @@
#include "voiceagents/include/VoiceAgentEventsHandler.h"
-static string TAG = "vshl::voiceagents::VoiceAgentsDataManager";
+static string VA_VERB_SETVOICEAGENTID = "setVoiceAgentId";
+static string TAG = "vshlcore::voiceagents::VoiceAgentsDataManager";
/**
* Specifies the severity level of a log message
*/
-using Level = vshl::common::interfaces::ILogger::Level;
-
-namespace vshl {
+using Level = vshlcore::common::interfaces::ILogger::Level;
+namespace vshlcore {
namespace voiceagents {
std::unique_ptr<VoiceAgentsDataManager> VoiceAgentsDataManager::create(
- shared_ptr<vshl::common::interfaces::ILogger> logger,
- shared_ptr<vshl::common::interfaces::IAFBApi> afbApi) {
+ shared_ptr<vshlcore::common::interfaces::ILogger> logger,
+ shared_ptr<vshlcore::common::interfaces::IAFBApi> afbApi) {
return std::unique_ptr<VoiceAgentsDataManager>(new VoiceAgentsDataManager(logger, afbApi));
}
// Constructor
VoiceAgentsDataManager::VoiceAgentsDataManager(
- shared_ptr<vshl::common::interfaces::ILogger> logger,
- shared_ptr<vshl::common::interfaces::IAFBApi> afbApi) :
+ shared_ptr<vshlcore::common::interfaces::ILogger> logger,
+ shared_ptr<vshlcore::common::interfaces::IAFBApi> afbApi) :
mLogger(logger),
mAfbApi(afbApi) {
mVoiceAgentEventsHandler = VoiceAgentEventsHandler::create(mLogger, mAfbApi);
+ mAlreadyPeformedSubscriptions = false;
}
// Destructor
@@ -178,6 +179,7 @@ bool VoiceAgentsDataManager::addNewVoiceAgent(
}
mVoiceAgents.insert(make_pair(voiceAgent->getId(), voiceAgent));
+ sendVoiceAgentIdToVA(voiceAgent);
// Notify the observers
for (auto observer : mVoiceAgentChangeObservers) {
@@ -218,8 +220,8 @@ bool VoiceAgentsDataManager::removeVoiceAgent(const string& voiceAgentId) {
return true;
}
-std::set<std::shared_ptr<vshl::common::interfaces::IVoiceAgent>> VoiceAgentsDataManager::getAllVoiceAgents() {
- std::set<std::shared_ptr<vshl::common::interfaces::IVoiceAgent>> voiceAgentsSet;
+std::set<std::shared_ptr<vshlcore::common::interfaces::IVoiceAgent>> VoiceAgentsDataManager::getAllVoiceAgents() {
+ std::set<std::shared_ptr<vshlcore::common::interfaces::IVoiceAgent>> voiceAgentsSet;
for (auto element : mVoiceAgents) {
voiceAgentsSet.insert(element.second);
}
@@ -228,12 +230,12 @@ std::set<std::shared_ptr<vshl::common::interfaces::IVoiceAgent>> VoiceAgentsData
}
// Returns the event filter that belongs to the core module.
-shared_ptr<vshl::common::interfaces::IEventFilter> VoiceAgentsDataManager::getEventFilter() const {
+shared_ptr<vshlcore::common::interfaces::IEventFilter> VoiceAgentsDataManager::getEventFilter() const {
return mVoiceAgentEventsHandler;
}
bool VoiceAgentsDataManager::subscribeToVshlEventFromVoiceAgent(
- vshl::common::interfaces::IAFBRequest& request,
+ vshlcore::common::interfaces::IAFBRequest& request,
const string eventName,
const string voiceAgentId) {
auto voiceAgentIt = mVoiceAgents.find(voiceAgentId);
@@ -250,7 +252,7 @@ bool VoiceAgentsDataManager::subscribeToVshlEventFromVoiceAgent(
}
bool VoiceAgentsDataManager::addVoiceAgentsChangeObserver(
- shared_ptr<vshl::common::interfaces::IVoiceAgentsChangeObserver> observer) {
+ shared_ptr<vshlcore::common::interfaces::IVoiceAgentsChangeObserver> observer) {
if (!observer) {
return false;
}
@@ -260,7 +262,7 @@ bool VoiceAgentsDataManager::addVoiceAgentsChangeObserver(
}
bool VoiceAgentsDataManager::removeVoiceAgentsChangeObserver(
- shared_ptr<vshl::common::interfaces::IVoiceAgentsChangeObserver> observer) {
+ shared_ptr<vshlcore::common::interfaces::IVoiceAgentsChangeObserver> observer) {
if (!observer) {
return false;
}
@@ -268,5 +270,29 @@ bool VoiceAgentsDataManager::removeVoiceAgentsChangeObserver(
mVoiceAgentChangeObservers.erase(observer);
return true;
}
+
+bool VoiceAgentsDataManager::sendVoiceAgentIdToVA(const shared_ptr<VoiceAgent>& voiceAgent) {
+ if (!mAfbApi) {
+ mLogger->log(
+ Level::ERROR, TAG, "Failed to call sendVoiceAgentIdToVA on voicegent: " + voiceAgent->getId() + ", No API.");
+ return false;
+ }
+
+ json_object* argsJ = json_object_new_object();
+ json_object* idJ = json_object_new_string(voiceAgent->getId().c_str());
+ json_object_object_add(argsJ, "va_id", idJ);
+
+ std::string error, info;
+ json_object* resultJ;
+
+ int rc = mAfbApi->callSync(voiceAgent->getApi(), VA_VERB_SETVOICEAGENTID, argsJ, &resultJ, error, info);
+
+ if (resultJ) {
+ free(resultJ);
+ }
+
+ return true;
+}
+
} // namespace voiceagents
} // namespace vshl