This fixes a number of performance issues:
- InMemoryDataStore used unbounded dictionary caused issues under heavy load, changed to use MemoryCache
- InMemoryDataStore used GZIP compression for no good reason at all, removed.
- CachingDataStore used unbounded dictionary caused memory issues under heavy load, changed to use MemoryCache
- ConnectorClient was created and disposed on every turn causing severe performance problems, changed to using cached singleton per serviceUrl
- MicrosoftAppCredentials.GetRefreshToken() would cause 401 errors for a bot which was idle for longer than 1 hour
- Added Invoke to CardAction.
- Fixed key for actions in ActionSet.
- More detailed service url/address error messages in ChatConnector.
- Return an error response instead of throwing exception when ChatConnector receives bad JSON payloads.
- Fixed race condition when refreshing access token.
- Embedded prompt localization strings into lib as code (versus loading from JSON file.)
- Added missing end() and next() calls to chat connector code.
- Fixed issue with missing next() for Azure functions.
- Added message reaction support.
- Added replyToId to base IEvent interface.
- Added support to text prompt for min & max length validations.
- Added warning for deprecated bot state service.
- Skype For Business fixes around starting a new conversation.
- Fixed a null reference exception in Library class.
- Fixed an issue in RegExpRecognizer.
- Added new loadSessionWithoutDispatching() to UniversalBot class.