diff options
author | Naveen Bobbili <nbobbili@amazon.com> | 2019-02-25 17:24:29 -0800 |
---|---|---|
committer | Naveen Bobbili <nbobbili@amazon.com> | 2019-02-25 20:55:05 -0800 |
commit | 9eb3a90df3681586b58146b47eea7f3848c348a0 (patch) | |
tree | 9c507e13c233fb649d04c6a45d152f7ec12185f8 /src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp | |
parent | 143363b9e864ea465c927057ce7214f124a984cb (diff) |
Refactored VSHL into vshl-core and vshl-capabilities.
vshl-core: This API is responsible for request arbitration. Verbs exposed are
1. startListening
2. cancelListening
3. subscribe
4. enumerateVoiceAgents
5. setDefaultVoiceAgent Used by applications to subscribe to dialog, connection and auth states of underlying low level voiceagent bindings. Used by applications to trigger voice recognition routine of the underlying low level voiceagent binding.
vshl-capabilities: This API exposes publish and subscribe methods for all the speech framework domains/capabilities. For eg. navigation, phonecontrol etc. This API is used by apps and low level voice agent binding to subscribe and publish these capability messages whenever applicable. The code for this is agl-service-voice-high-capabilities repository.
This specific commit is for vshl-core API.
Change-Id: I1101db19b57ee918482a178843641b088508ac5d
Signed-off-by: Naveen Bobbili <nbobbili@amazon.com>
Diffstat (limited to 'src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp')
-rw-r--r-- | src/plugins/voiceagents/VoiceAgentsDataManagerImpl.cpp | 54 |
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 |