![]() |
AlexaClientSDK
1.12.1
A cross-platform, modular SDK for interacting with the Alexa Voice Service
|
Bug Fixes
ProgressTimer so that extra ProgressReportDelayElapsed events are not sent to AVS.Known Issues
-Wclass-memaccess will trigger warnings. However, this won't cause the build to fail and these warnings can be ignored.ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.make integration is currently not available for Android. In order to run integration tests on Android, you'll need to manually upload the test binary file along with any input file. At that point, the adb can be used to run the integration tests.Enhancements
fr_CA locale.alertType has been added to the Alerts capability agent. This will allow observers of alerts to know the type of alert being delivered.BLUETOOTH_BLUEZ_PULSEAUDIO_OVERRIDE_ENDPOINTS. Note that libpulse-dev is a required dependency of this feature.BluetoothDeviceManagerInterface instantiation was moved from DefaultClient to SampleApp to allow applications to override it.MediaPlayerInterface now supports repeating playback of URL sources.Bug Fixes
MediaPlayerInterface requirement that callbacks not be made upon a callers thread has been removed.Stop command from triggering a crash when SAMPLE-AES encrypted content was streaming.AlertsRenderer observers to miss notification that an alert has been completed.BluetoothDeviceObserver in the DefaultClient.Known Issues
PlaylistParser and IterativePlaylistParser generate two HTTP requests (one to fetch the content type, and one to fetch the audio data) for each audio stream played.-Wclass-memaccess will trigger warnings. However, this won't cause the build to fail and these warnings can be ignored.ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.make integration is currently not available for Android. In order to run integration tests on Android, you'll need to manually upload the test binary file along with any input file. At that point, the adb can be used to run the integration tests.Enhancements
-DOPUS=ON, and include the libopus library dependency in your build.-DSAMPLE_AES=ON in your CMake command, and include the FFMPEG library dependency in your build.Bug Fixes
CBLAuthDelegate wasn't using the correct timeout during request refresh.AudioPlayer instance persisted at shutdown, due to a shared dependency with the ProgressTimer.Known Issues
PlaylistParser and IterativePlaylistParser generate two HTTP requests (one to fetch the content type, and one to fetch the audio data) for each audio stream played.-Wclass-memaccess will trigger warnings. However, this won't cause the build to fail, and these warnings can be ignored.ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.make integration is currently not available for Android. In order to run integration tests on Android, you'll need to manually upload the test binary file along with any input file. At that point, the adb can be used to run the integration tests.Enhancements
genConfig.sh is now included with the SDK in the tools/Install directory. genConfig.sh and it's associated arguments populate AlexaClientSDKConfig.json with the data required to authorize with LWA.-DA4B.CBLAUthDelegate, and sample app have been enhanced to detect de-authorization using the new z command.ExternalMediaPlayerObserver, which receives notification of player state, track, and username changes.HTTP2ConnectionInterface was factored out of HTTP2Transport to enable unit testing of HTTP2Transport and re-use of HTTP2Connection logic.Bug Fixes
ExternalMediaPlayer adapter playback wasn't being recognized by AVS.AudioPlayer where progress reports were being sent out of order or with incorrect offsets.EXPECTING, state has been added to DialogUXState in order to handle EXPECT_SPEECH state for hold-to-talk devices.DeleteAlert directive, and deleting the alert.DialogUXStateAggregator transitioning between a THINKING and IDLE state.AudioPlayer attempted to play when it wasn't in the FOREGROUND focus.CapabilitiesDelegateTest now works on Android.Known Issues
-Wclass-memaccess will trigger warnings. However, this won't cause the build to fail, and these warnings can be ignored.ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.make integration is currently not available for Android. In order to run integration tests on Android, you'll need to manually upload the test binary file along with any input file. At that point, the adb can be used to run the integration tests.Enhancements
PlaybackController has been extended to support new control functionality, and the System interface has been updated to support SoftwareInfo.Bug Fixes
SpeakerManager constructor check for non-zero speakers.PlaybackFinished event.-Wclass-memaccess will still trigger warnings, but won't fail compilation.PlaybackStutterStarted and PlaybackStutterFinished events were not being sent due to a missing Gstreamer queue element.CapabilitiesDelegate database was not being cleared upon logout.BlueZDeviceManager was not properly destroyed.std::unordered_set.BUILD_TESTING=Off.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.CapabilitiesDelegateTest tests have been temporarily disabled to prevent build errors for the Android build: CapabilitiesDelegateTest.withCapabilitiesHappyCase, CapabilitiesDelegateTest.republish, CapabilitiesDelegateTest.testClearData.make integration is currently not available for Android. In order to run integration tests on Android, you'll need to manually upload the test binary file along with any input file. At that point, the adb can be used to run the integration tests.Enhancements
SpeakerInterface::Type enumeration values have changed:AVS_SYNCED is now AVS_SPEAKER_VOLUME.LOCAL is now AVS_ALERTS_VOLUME.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.Enhancements
"text/json" to "application/json".friendlyName can now be updated for BlueZ implementations of BlueZBluetoothDevice and BlueZHostController.Bug Fixes
uuidMapping table.MediaPlayer threading issues. Now each instance has it's own glib main loop thread, rather than utilizing the default main context worker thread.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.BlueALSA must be terminated each time the device boots. See Raspberry Pi Quick Start Guide for more information.Enhancements
A2DP-SINK and AVRCP profiles. Note: Bluetooth is optional and is currently limited to Raspberry Pi and Linux platforms.DCF) renamed to Capabilities.Bug Fixes
MediaPlayerTest failed on Windows.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.GStreamer pipeline and the Bluetooth agent.BlueALSA must be terminated each time the device boots. See Raspberry Pi Quick Start Guide for more information.Enhancements
AuthDelegate and AuthServer.py have been replaced by CBLAUthDelegate, which uses Code Based Linking for authorization.AlexaClientSDKConfig:cblAuthDelegate - This object specifies parameters for CBLAuthDelegate.miscDatabase - A generic key/value database to be used by various components.dcfDelegate - This object specifies parameters for DCFDelegate. Within this object, values were added for endpoint and overridenDcfPublishMessageBody. endpoint is the endpoint for the Capabilities API. overridenDcfPublishMessageBodyis the message that is sent to the Capabilities API. Note: Values in the dcfDelegate object will only work in DEBUG builds.deviceInfo - Specifies device-identifying information for use by the Capabilities API and CBLAuthDelegate.alsasink in AlexaClientSDKConfig.audioSink as a configuration option. This allows users to override the audio sink element used in Gstreamer.InternetConnectionMonitorInterface.h.HTTP2Transport handles waiting for authorization to complete.SampleApp <configfile> <debuglevel> OR SampleApp -C file1 -C file2 ... -L loglevel.Bug Fixes
AttachmentRenderSource's handling of BLOCKING AttachmentReaders.Logger implementation to be more resilient to nullptr string inputs.TimeUtils utility-related compile issue.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.clientId is included in the deviceInfo section of AlexaClientSDKConfig.json, the error will be reported as an unrecoverable authorization error, rather than a more specific error.Enhancements
rapidJson is now included with "make install".TemplateRuntimeObserverInterface to support clearing of displayCards.ContextManager to ignore context reported by a state provider.SharedDataStream object is now associated by playlist, rather than by URL.RegistrationManager component. Now, when a user logs out all persistent user-specific data is cleared from the SDK. The log out functionality can be exercised in the sample app with the new command: k.Bug Fixes
portAudio suggestedLatency value can now be configured.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.SIGTRAP when troubleshooting the Windows sample app.make integration doesn't work on Windows. Integration tests will need to be run individually.Enhancements
ExternalMediaPlayer Capability Agent. This allows playback from music providers that control their own playback queue. Example: Spotify.SampleApp.SoftwareInfo event. The firmware version is specified in the config file under the sampleApp object as an integer value named firmwareVersion.f command was added to the SampleApp which allows the firmware version to be updated at run-time.ACSDK_LOG_MODULE components, globally or individually. This value is specified under a new root level configuration object called logger, and the value itself is named logLevel. This allows you to limit the degree of logging to that default value, such as ERRORor INFO.Bug Fixes
AudioPlayer progress reports were not being sent, or were being sent incorrectly.UrlSource was removed from the GStreamer-based MediaPlayer implementation.TZ variable no longer needs to be set to UTC when building the SampleApp.CurlEasyHandleWrapper logged unwanted data on failure conditions.SIGPIPE handling.UrlToAttachmentConverter.h to UrlContentToAttachmentConverter.h,and UrlToAttachmentConverter.cpp to UrlContentToAttachmentConverter.cpp.MediaPlayer implementation, the next item in queue would play instead of continuing playback of the originally muted item.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.Enhancements
SoftwareInfo event. This code is triggered in the SampleApp by providing a positive decimal integer as the "firmwareVersion" value in "sampleApp" object of the AlexaClientSDKConfig.json. The reported firmware version can be updated after starting the SampleApp by calling SoftwareInfoSender::setFirmwareVersion(). This code path can be exercised in the SampleApp with the new command: f.MediaPlayer output based on information provided in Config.BLOCKING writer, which improves streaming efficiency.Bug Fixes
SpeechSynthesizer would not stop playback when a state change timeout was encountered.SampleApplication destructor to avoid segfaults if the object is not constructed correctly.AudioPlayer would erroneously call executeStop() in cancelDirective().AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AlertsAudioFactoryInterface.hAuthServer.py to crash.loopCount .MessageInterpreter.MediaPlayer logging.Known Issues
ACL may encounter issues if audio attachments are received but not consumed.MediaPlayer implementation, after muting and un-muting an audio item, the next item in the queue will begin playing rather than continuing playback of the originally muted audio item.SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.ACL's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed.AlexaClientSDKConfig.json. These descriptions provide additional guidance for what is expected for each field.HTTP2Transport instances no longer leak when SERVER_SIDE_DISCONNECT is encountered.Timer class that sometimes caused SpeechSynthesizer to get stuck in the "Speaking" state.SpeechSynthesizer to ignore subsequent Speak directives.ACL's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed.MEDIA_ERROR_UNKNOWN, now reports more specific errors as defined in ErrorType.h.DirectiveRouter::removeDirectiveHandler() signature changed and now returns a bool indicating if given handler should be successfully removed or not.Transport objects.HTTP2Streams now have IDs assigned as they are acquired as opposed to created, making associated logs easier to interpret.AlertsCapabilityAgent has been refactored.AlertScheduler class.PlaybackController with unit tests.getOffsetInMilliseconds() changed from int64_t to std::chronology::milliseconds.AudioPlayer unit tests.LISTENING or THINKING and refusing user input on network outage.AudioPlayer would not pause. Specifically, the third attempt to “Play iHeartRadio” would not result in currently-playing music pausing.HTTP2Transport network thread triggering a join on itself.HTTP2Stream request handling truncating exception messages.AudioPlayer was attempting an incorrect state transition from STOPPED to PLAYING through a playbackResumed.Speaker, TemplateRuntime, and NotificationsACL's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed.AttachmentReader does not deliver data for prolonged periods, MediaPlayer may not resume playing the delayed audio.ExpectSpeech comes in when the microphone has been turned off.Recognize event after regaining network connection and during an alarm going off can cause client to get stuck in Recognizing state.handleMultipleTimersWithLocalStop, AlertsTest.UserLongUnrelatedBargeInOnActiveTimer, AlertsTest.handleOneTimerWithVocalStopMediaPlayerTest.testSetOffsetSeekableSource unit test fails intermittently on Linux.setOffSet in MediaPlayer.LoggerUtils.cpp.NONE and released.handleMultipleConsecutiveSpeaks.jsonArrayExist incorrectly parsing JSON when trying to locate array children.sendDirectiveWithoutADialogRequestId.SpeechSynthesizer showing the wrong UX state when a burst of Speak directives are received.AudioPlayer.Stop.StateSynchronization event is the first that gets sent to AVS.POST_CONNECTED enum to ConnectionStatusObserver.StateSychronizer now automatically sends a StateSynchronization event when it receives a notification that ACL is CONNECTED.make install for installing the AVS Device SDK.make networkIntegration for integration tests for slow network (only on Linux platforms).AudioPlayer barge-in which was preventing subsequent audio from playing.Mediaplayer buffering to reduce stuttering.SpeechSynthesizer shows wrong UX state during a burst of Speaks.AudioPlayer is playing something causes a segmentation fault.AudioPlayer sending PlaybackPaused during flash briefing.AudioPlayer capability agent.StateSynchronizer has been updated to better enforce that System.SynchronizeState is the first Event sent on a connection to AVS.ACL.Sample App has been updated with several small fixes and improvements.ADSL was updated such that all directives are now blocked while the handling of previous SpeechSynthesizer.Speak directives complete. Because any directive may now be blocked, the preHandleDirective() / handleDirective() path is now used for handling all directives.ACL to not send a ping to AVS every 5 minutes, leading to periodic server disconnects, was fixed.Executor class, resolving some intermittent crashes.PlaybackController, Speaker, Settings, TemplateRuntime, and Notifications.MediaPlayerAudioPlayerAlertsCapabilityAgentAlertStarted Event for an Alert which rendered when there was no internet connection.Sample App:Listening state keeps the app stuck in that state, unless the ongoing interaction is manually stopped by the user.Tests:SpeechSynthesizer unit tests hang on some older versions of GCC due to a tear down issue in the test suiteAlerts capability agent.DefaultClient class.System interface: StateSynchronizer, EndpointHandler, and ExceptionEncounteredSender.ACL.MediaPlayer to play local files given an std::istream.Debug to Release.DeprecatedLogger class.MediaPlayer: Our GStreamer based implementation of MediaPlayer is not fully robust, and may result in fatal runtime errors, under the following conditions:MediaPlayer::play() and MediaPlayer::stop() when the MediaPlayer is already playing or stopped, respectively.AlertsCapabilityAgent:MediaPlayer issues mentioned aboveAlertStarted for an Alert which rendered when there was no Internet connectionSample App:Listening state keeps the app stuck in that state, unless the ongoing interaction is manually stopped by the user.Tests:
SpeechSynthesizer unit tests hang on some older versions of GCC due to a tear down issue in the test suitegetConfiguration() method to DirectiveHandlerInterface to register capability agents with Directive Sequencer.ACL stream processing with pause and redrive.ACL library on Authdelegate.ACL to add/remove ConnectionStatusObserverInterface.DirectiveHandler and compiler warnings in AIP tests.std::recursive_mutex in MessageRouter.AIP unit tests.handleDirectiveImmediately functionality to SpeechSynthesizer.MessageRouterTest aborting intermittently.MultipartParser.h compiler warning.ACL when attempting to use more than 10 streams.MediaPlayer to use autoaudiosink instead of requiring pulseaudio.MediaPlayer build to suppport local builds of GStreamer.const void* instead of void*AuthServer, an authorization server implementation used to retrieve refresh tokens from LWA.SpeechSynthesizer, an implementation of the SpeechRecognizer capability agent.MediaPlayer based on GStreamer for audio playback.MediaPlayerInterface that allows you to implement your own media player.ACL to support asynchronous receipt of audio attachments from AVS.ACL's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed.AttachmentReader does not deliver data for prolonged periods MediaPlayer may not resume playing the delayed audio.CapabilityAgent base class that is used to build capability agent implementations.ContextManager, a component that allows multiple capability agents to store and access state. These Events include Context, which is used to communicate the state of each capability agent to AVS in the following Events:
SharedDataStream (SDS) to asynchronously communicate data between a local reader and writer.AudioInputProcessor (AIP), an implementation of a SpeechRecognizer capability agent.AttachmentManager and associated classes for use with SDS.ACL to support asynchronously sending audio to AVS.AuthDelegate.config with AlexaClientSDKConfig.json.CURLOPT_CAPATH value to be used when libcurl is used by ACL and AuthDelegate. See See Appendix C in the README for details.DirectiveSequencer::setDirectiveHandlers()) was problematic because it canceled the ongoing processing of directives and dropped further directives until it completed. The revised API makes the operation immediate without canceling or dropping any handling. However, it does create the possibility that DirectiveHandlerInterface methods preHandleDirective() and handleDirective() may be called on different handlers for the same directive.DirectiveSequencerInterface::setDirectiveHandlers() was replaced by addDirectiveHandlers() and removeDirectiveHandlers().DirectiveHandlerInterface::shutdown() was replaced with onDeregistered().DirectiveHandlerInterface::preHandleDirective() now takes a std::unique_ptr instead of a std::shared_ptr to DirectiveHandlerResultInterface.DirectiveHandlerInterface::handleDirective() now returns a bool indicating if the handler recognizes the messageId.onDirective() now sends ExceptionEncountered for unhandled directives.DirectiveSequencer::shutdown() no longer sends ExceptionEncountered() for queued directives.Alexa Directive Sequencer Library (ADSL) and Alexa Focus Manager Library (AMFL).Alexa Communications Library (ACL), a component which manages network connectivity with AVS, and AuthDelegate, a component which handles user authorization with AVS. AlexaClientSDK 1.12.1 - Copyright 2016-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0