14 KiB
14 KiB
ChangeLog
[1.0.2] - 2017-08-23
- Removed code from AIP which propagates ExpectSpeech initiator strings to subsequent Recognize events. This code will be re-introduced when AVS starts sending initiator strings.
[1.0.1] - 2017-08-17
- Added a fix to the sample app so that the
StateSynchronization
event is the first that gets sent to AVS. - Added a
POST_CONNECTED
enum toConnectionStatusObserver
. StateSychronizer
now automatically sends aStateSynchronization
event when it receives a notification thatACL
isCONNECTED
.- Added
make install
for installing the AVS Device SDK. - Added an optional
make networkIntegration
for integration tests for slow network (only on Linux platforms). - Added shutdown management which fully cleans up SDK objects during teardown.
- Fixed an issue with
AudioPlayer
barge-in which was preventing subsequent audio from playing. - Changed
Mediaplayer
buffering to reduce stuttering. - Known Issues:
- Connection loss during listening keeps the app in that state even after connection is regained. Pressing ‘s’ unsticks the state.
- Play/Pause media restarts it from the beginning.
SpeechSynthesizer
shows wrong UX state during a burst of Speaks.- Quitting the sample app while
AudioPlayer
is playing something causes a segmentation fault. AudioPlayer
sendingPlaybackPaused
during flash briefing.- Long Delay playing live stations on iHeartRadio.
- Teardown warnings at the end of integration tests.
[1.0.0] - 2017-08-07
- Added
AudioPlayer
capability agent.- Supports iHeartRadio.
StateSynchronizer
has been updated to better enforce thatSystem.SynchronizeState
is the first Event sent on a connection to AVS.- Additional tests have been added to
ACL
. - The
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 previousSpeechSynthesizer.Speak
directives complete. Because any directive may now be blocked, thepreHandleDirective() / handleDirective()
path is now used for handling all directives.- Fixes for the following GitHub issues:
- A bug causing
ACL
to not send a ping to AVS every 5 minutes, leading to periodic server disconnects, was fixed. - Subtle race condition issues were addressed in the
Executor
class, resolving some intermittent crashes. - Known Issues
- Native components for the following capability agents are not included in this release:
PlaybackController
,Speaker
,Settings
,TemplateRuntime
, andNotifications
. MediaPlayer
- Long periods of buffer underrun can cause an error related with seeking and subsequent stopped playback.
- Long periods of buffer underrun can cause flip flopping between buffer_underrun and playing states.
- Playlist parsing is not supported unless -DTOTEM_PLPARSER=ON is specified.
AudioPlayer
- Amazon Music, TuneIn, and SiriusXM are not supported in this release.
- Our parsing of urls currently depends upon GNOME/totem-pl-parser which only works on some Linux platforms.
AlertsCapabilityAgent
- Satisfies the AVS specification except for sending retrospective Events. For example, sending
AlertStarted
Event for an Alert which rendered when there was no internet connection.
- Satisfies the AVS specification except for sending retrospective Events. For example, sending
Sample App
:- Any connection loss during the
Listening
state keeps the app stuck in that state, unless the ongoing interaction is manually stopped by the user. - The user must wait several seconds after starting up the sample app before the sample app is properly usable.
- Any connection loss during the
Tests
:SpeechSynthesizer
unit tests hang on some older versions of GCC due to a tear down issue in the test suite- Intermittent Alerts integration test failures caused by rigidness in expected behavior in the tests
- Native components for the following capability agents are not included in this release:
[0.6.0] - 2017-07-14
- Added a sample app that leverages the SDK.
- Added
Alerts
capability agent. - Added the
DefaultClient
class. - Added the following classes to support directives and events in the
System
interface:StateSynchronizer
,EndpointHandler
, andExceptionEncounteredSender
. - Added unit tests for
ACL
. - Updated
MediaPlayer
to play local files given anstd::istream
. - Changed build configuration from
Debug
toRelease
. - Removed
DeprecatedLogger
class. - Known Issues:
MediaPlayer
: OurGStreamer
based implementation ofMediaPlayer
is not fully robust, and may result in fatal runtime errors, under the following conditions:- Attempting to play multiple simultaneous audio streams
- Calling
MediaPlayer::play()
andMediaPlayer::stop()
when the MediaPlayer is already playing or stopped, respectively. - Other miscellaneous issues, which will be addressed in the near future
AlertsCapabilityAgent
:- This component has been temporarily simplified to work around the known
MediaPlayer
issues mentioned above - Fully satisfies the AVS specification except for sending retrospective Events, for example, sending
AlertStarted
for an Alert which rendered when there was no Internet connection - This component is not fully thread-safe, however, this will be addressed shortly
- Alerts currently run indefinitely until stopped manually by the user. This will be addressed shortly by having a timeout value for an alert to stop playing.
- Alerts do not play in the background when Alexa is speaking, but will continue playing after Alexa stops speaking.
- This component has been temporarily simplified to work around the known
Sample App
:- Without the refresh token being filled out in the JSON file, the sample app crashes on start up.
- Any connection loss during the
Listening
state keeps the app stuck in that state, unless the ongoing interaction is manually stopped by the user. - At the end of a shopping list with more than 5 items, the interaction in which Alexa asks the user if he/she would like to hear more does not finish properly.
Tests
:SpeechSynthesizer
unit tests hang on some older versions of GCC due to a tear down issue in the test suite- Intermittent Alerts integration test failures caused by rigidness in expected behavior in the tests
[0.5.0] - 2017-06-23
- Updated most SDK components to use new logging abstraction.
- Added a
getConfiguration()
method toDirectiveHandlerInterface
to register capability agents with Directive Sequencer. - Added
ACL
stream processing with pause and redrive. - Removed the dependency of
ACL
library onAuthdelegate
. - Added an interface to allow
ACL
to add/removeConnectionStatusObserverInterface
. - Fixed compile errors in KITT.ai,
DirectiveHandler
and compiler warnings inAIP
tests. - Corrected formatting of code in many files.
- Fixes for the following GitHub issues:
[0.4.1] - 2017-06-09
- Implemented Sensory wake word detector functionality.
- Removed the need for a
std::recursive_mutex
inMessageRouter
. - Added
AIP
unit tests. - Added
handleDirectiveImmediately
functionality toSpeechSynthesizer
. - Added memory profiles for:
- AIP
- SpeechSynthesizer
- ContextManager
- AVSUtils
- AVSCommon
- Bug fix for
MessageRouterTest
aborting intermittently. - Bug fix for
MultipartParser.h
compiler warning. - Suppression of sensitive log data even in debug builds. Use CMake parameter -DACSDK_EMIT_SENSITIVE_LOGS=ON to allow logging of sensitive information in DEBUG builds.
- Fixed crash in
ACL
when attempting to use more than 10 streams. - Updated
MediaPlayer
to useautoaudiosink
instead of requiringpulseaudio
. - Updated
MediaPlayer
build to suppport local builds of GStreamer. - Fixes for the following GitHub issues:
- MessageRouter::send() does not take the m_connectionMutex
- MessageRouter::disconnectAllTransportsLocked flow leads to erase while iterating transports vector
- Build errors when building with KittAi enabled
- HTTP2Transport race may lead to deadlock
- Crash in HTTP2Transport::cleanupFinishedStreams()
- The attachment writer interface should take a
const void*
instead ofvoid*
[0.4.0] - 2017-05-31 (patch)
- Added
AuthServer
, an authorization server implementation used to retrieve refresh tokens from LWA.
[0.4.0] - 2017-05-24
- Added
SpeechSynthesizer
, an implementation of theSpeechRecognizer
capability agent. - Implemented a reference
MediaPlayer
based on GStreamer for audio playback. - Added
MediaPlayerInterface
that allows you to implement your own media player. - Updated
ACL
to support asynchronous receipt of audio attachments from AVS. - Bug Fixes:
- Some intermittent unit test failures were fixed.
- Known Issues:
ACL
's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed.- When an
AttachmentReader
does not deliver data for prolonged periodsMediaPlayer
may not resume playing the delayed audio.
[0.3.0] - 2017-05-17
- Added the
CapabilityAgent
base class that is used to build capability agent implementations. - Added
ContextManager
, a component that allows multiple capability agents to store and access state. These Events includeContext
, which is used to communicate the state of each capability agent to AVS in the following Events: - Added
SharedDataStream
(SDS) to asynchronously communicate data between a local reader and writer. - Added
AudioInputProcessor
(AIP), an implementation of aSpeechRecognizer
capability agent. - Added WakeWord Detector (WWD), which recognizes keywords in audio streams. [0.3.0] implements a wrapper for KITT.ai.
- Added a new implementation of
AttachmentManager
and associated classes for use with SDS. - Updated
ACL
to support asynchronously sending audio to AVS.
[0.2.1] - 2017-05-03
- Replaced the configuration file
AuthDelegate.config
withAlexaClientSDKConfig.json
. - Added the ability to specify a
CURLOPT_CAPATH
value to be used when libcurl is used by ACL and AuthDelegate. See See Appendix C in the README for details. - Changes to ADSL interfaces:
- The [0.2.0] interface for registering directive handlers (
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 thatDirectiveHandlerInterface
methodspreHandleDirective()
andhandleDirective()
may be called on different handlers for the same directive. DirectiveSequencerInterface::setDirectiveHandlers()
was replaced byaddDirectiveHandlers()
andremoveDirectiveHandlers()
.DirectiveHandlerInterface::shutdown()
was replaced withonDeregistered()
.DirectiveHandlerInterface::preHandleDirective()
now takes astd::unique_ptr
instead of astd::shared_ptr
toDirectiveHandlerResultInterface
.DirectiveHandlerInterface::handleDirective()
now returns a bool indicating if the handler recognizes themessageId
.
- The [0.2.0] interface for registering directive handlers (
- Bug fixes:
- ACL and AuthDelegate now require TLSv1.2.
onDirective()
now sendsExceptionEncountered
for unhandled directives.DirectiveSequencer::shutdown()
no longer sendsExceptionEncountered()
for queued directives.
[0.2.0] - 2017-03-27 (patch)
- Added memory profiling for ACL and ADSL. See Appendix A in the README.
- Added a command to build the API documentation.
[0.2.0] - 2017-03-09
- Added
Alexa Directive Sequencer Library
(ADSL) andAlexa Focus Manager Library
(AMFL). - CMake build types and options have been updated.
- Documentation for libcurl optimization included.
[0.1.0] - 2017-02-10
- Initial release of the
Alexa Communications Library
(ACL), a component which manages network connectivity with AVS, andAuthDelegate
, a component which handles user authorization with AVS.