Skip to content

Commit

Permalink
Merge branch 'develop' v0.9.0
Browse files Browse the repository at this point in the history
  • Loading branch information
rstrahan committed Aug 8, 2024
2 parents 5fc9597 + 63ac3c3 commit 9763346
Show file tree
Hide file tree
Showing 178 changed files with 50,305 additions and 38,383 deletions.
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
.DS_Store
**/.DS_Store

**/opensearchpy_layer/python
**/boto3_layer/python
**/boto3_layer/boto3_lambda_layer.zip
**/node_transcriber_layer/transcriber-layer.zip
.aws-sam
samconfig.toml
samconfig.toml
.checksum
83 changes: 68 additions & 15 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,55 +7,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.9.0] - 2024-07-02

### Fixed

- Stack deployment now fails fast if required Bedrock models are not available or enabled in the account/region
- Mic input role (CALLER vs. AGENT) assignment not working #169
- Missing call transcript download button #155

### Added

- Support for Bedrock anthropic-claude-3-haiku and anthropic-claude-3-sonnet models (removed support for older models) #152
- Knowledge bases for Amazon Bedrock replaces Amazon Kendra for Agent Assist #157
- Option for single language auto-detection - using Amazon Transcribe's 'Identify Language' feature with optional list of possible language codes. #153
- Option for multiple language auto-detection - using Amazon Transcribe's 'Identify Multiple Languages' feature with optional list of possible language codes. #153
- Option to integrate Talkdesk Audio stream as a call data source (see [Talkdesk](./lca-talkdesk-voicestream-stack/README.md)) #174
- Ability to override default Transcribe language code using SIPREC Call initialization lambda hook #165
- Ability to specify multiple language-specific CustomVocabulary or CLM and associated logic to select the appropriate one based on dynamic LanguageCode when using SIPREC Call initialization lambda hook #165
- Simplified and more robust default demo agent recording and [demo script](./lca-agentassist-setup-stack/agent-assist-demo-script.md) for demos using Asterisk.

## [0.8.13] - 2024-05-22

### Fixed

- #138: Very delayed transcripts when using CallTranscriberLambda
- #140: Very delayed transcripts when using Connect-KVS audio ingestion

## [0.8.12] - 2024-05-20

### Fixed

- Expanded redaction support to include all languages (and dialects) on the Amazon Transcribe supported languages page.
- Call Transcriber Lambda
- Refactor call end handling, to explicitly process ENDED messages from VoiceConnector, rather than imputing call end from stream data ending - adds robustness when stream can end (temporarily) for other reasons (such as call hold, etc.)
- Identified a situation where if a call chained across multiple lambda invocations (lasted longer than 12 minutes), the new timer we introduced that checks if the call ends would leak into the next lambda invocation. This would have no effect for a single long running call other than duplicate checks to DynamoDB—however—if the call ends and a NEW call uses that warm Lambda, the new call would inherit the timers and within 5 seconds mark the call as ended. To fix this, we made modifications by adding proper clean-up of timers when the call ends, and also double checking when the next call begins that the new Lambda did not inherit any calls.
- Added the callId to the log output, so that it is easier to trace calls.
- Added the request id of the next Lambda invocation in the output of the log, so that it makes it easier to trace sequential lambda invocations (chaining).

- Refactor call end handling, to explicitly process ENDED messages from VoiceConnector, rather than imputing call end from stream data ending - adds robustness when stream can end (temporarily) for other reasons (such as call hold, etc.)
- Identified a situation where if a call chained across multiple lambda invocations (lasted longer than 12 minutes), the new timer we introduced that checks if the call ends would leak into the next lambda invocation. This would have no effect for a single long running call other than duplicate checks to DynamoDB—however—if the call ends and a NEW call uses that warm Lambda, the new call would inherit the timers and within 5 seconds mark the call as ended. To fix this, we made modifications by adding proper clean-up of timers when the call ends, and also double checking when the next call begins that the new Lambda did not inherit any calls.
- Added the callId to the log output, so that it is easier to trace calls.
- Added the request id of the next Lambda invocation in the output of the log, so that it makes it easier to trace sequential lambda invocations (chaining).

- Websocket server and Stream Audio client
- Fix state management in Websocket server - add connection specific state variables to a global dictionary to maintain state for active connections
- Fix reconnection logic in Stream Audio websocket client - i.e. retrofit the fix from LMA.
- Clean up and streamline log formats in Websocket Server and Stream Audio client
- Reduce the amount of logs due to health checks. Health check is done every 10 seconds, logging status for each health check which creates huge amounts of log records in cloudwatch. To fix this - Log first health check message from each new source and then log every 2 minutes (interval controlled by a new environment variable which is not exposed in cloudformation, but can be directly updated in the ECS configuration by developers).
- Fix authentication code in Websocket client utility (utilites/webosocket-client)
- Fix state management in Websocket server - add connection specific state variables to a global dictionary to maintain state for active connections
- Fix reconnection logic in Stream Audio websocket client - i.e. retrofit the fix from LMA.
- Clean up and streamline log formats in Websocket Server and Stream Audio client
- Reduce the amount of logs due to health checks. Health check is done every 10 seconds, logging status for each health check which creates huge amounts of log records in cloudwatch. To fix this - Log first health check message from each new source and then log every 2 minutes (interval controlled by a new environment variable which is not exposed in cloudformation, but can be directly updated in the ECS configuration by developers).
- Fix authentication code in Websocket client utility (utilites/webosocket-client)

## [0.8.11] - 2024-02-21

### Fixed

- Added custom resource in the lca-websocket-stack that sets the ECS cluster's desired service count to zero, then deletes the service, before deleting the cluster. This will prevent errors in deleting the stack when disabling websockets or deleting LCA.
- Updated NodeJS version to 18
- Removed VPC flow logs from being enabled
- Fixed CloudFormation condition that incorrectly deployed PCA integration functions
- Fixed issue with call event processor not correctly parsing ChimeSDK Voice Connector metadata updates

### Added

- New [Cloudscape](https://cloudscape.design/) user interface
- Support for Amazon Connect Kinesis Video Streams as an audio ingestion source. See [Amazon Connect KVS README](./lca-connect-kvs-stack/README.md) for more details.
- Added names to VPCs for ease of locating them


## [0.8.10] - 2023-11-25

### Added

- New! Websocket audio ingestion server (optional). Use it to enable audio streaming from a custom desktop client application, from the sample streaming app (below), or from the new LCA Web UI audio streaming client. See [Websocket server](./lca-websocket-stack/README.md).
- New! Sample audio streaming application which streams a stereo audio file from your desktop to LCA via the new websocket server. Use this to replay recordings, e.g. for testing transcription accuracy after CV/CLM changes, for testing agent assist features, etc. Or use the code as a reference implementation for building your own custom streaming app for LCA. See [Websocket client app](./utilities/websocket-client/README.md).
- New! Sample audio streaming application which streams a stereo audio file from your desktop to LCA via the new websocket server. Use this to replay recordings, e.g. for testing transcription accuracy after CV/CLM changes, for testing agent assist features, etc. Or use the code as a reference implementation for building your own custom streaming app for LCA. See [Websocket client app](./utilities/websocket-client/README.md).
- New! Web UI audio streaming client built into the LCA UI. Use this to stream audio into LCA from (a) your computer microphone, and (b) from a local broswer tab that is running a softphone or meeting app, or playing an audio recording. See [Web UI streaming client](./lca-ai-stack/WebUIStreamingClient.md).

### Fix

- publish.sh script now runs on MacOS (now works with GNU or BSD sed command).

## [0.8.9] - 2023-11-01

### Added
- Allow customer to specify their own Voice Connector as a CloudFormation Template parameter. If the customer provided Voice Connector is provided, LCA will not deploy a new VC. (#102)

- Allow customer to specify their own Voice Connector as a CloudFormation Template parameter. If the customer provided Voice Connector is provided, LCA will not deploy a new VC. (#102)

### Fixed

- Fix LCA/PCA integration when using Chime SDK Call Analytics (PR #108, #102)
- Call recording player now appears when recording file is available 1-2 minutes after the call when using Chime SDK Call Analytics (#108)
- Call recording player now appears when recording file is available 1-2 minutes after the call when using Chime SDK Call Analytics (#108)
- Prevent START_CALL_PROCESSING if call has already ended. This removes possibility that START CALL PROCESSING picks up re-purposed KVS streams for a different callId (PR #114)
- Reduce agent assist latency when using Connect / Contact Lens by processing Utterance rather than Transcript events (PR #113)
- Improved markdown formatting for demo script agent assist responses
Expand All @@ -64,16 +98,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Dependabot security updates

## [0.8.8] - 2023-10-10

### Added

- Agent Assist bot can now generate a draft email from agent to caller, summarizing call and next steps

### Fixed

- Fix #103 - Agent Assist bot widget stopped working - display is blank.
- Pull latest Qnabot Plugins submodule to get [Bedrock embeddings function whitespace fix](https://github.com/aws-samples/qnabot-on-aws-plugin-samples/blob/develop/CHANGELOG.md#fixed)


## [0.8.7] - 2023-10-03

### Added

- Generative transcript summarization and LLM powered Agent Assist are now enabled by default using Amazon Bedrock.
- Agent Assist generative answers are now enabled by default, using an Amazon Bedrock LLM model.
- Agent Assist now enables semantic similarity item matching by default, using an Amazon Bedrock Embeddings model.
Expand All @@ -82,40 +120,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- In-progress call summarization using the Agent Assist bot - quickly bring new agent or supervisor up to speed in transfer and escalation scenarios. Prompt templates are customizable using QnABot's content designer.

### Fixed

- Race condition between Asterisk Server and Chime SDK Voice Connector setup
- Flawed timeout logic for long running summaries - PR#100
- Hung calls when using Chime Call Analytics when callid was modified using call initialization lambda - PR#97
- Hung calls when using Chime Call Analytics when callid was modified using call initialization lambda - PR#97
- ContactLens categories not displayed when using Contact Lens integration

## [0.8.6] - 2023-09-14

### Fixed

- Fix LCA 0.8.5 Stack updates fail when changing Agent Assist parameters - Issue #96

## [0.8.5] - 2023-09-03

### Added

- Update QnABot to latest version 5.4.1
- Added support for Amazon Bedrock (preview) for QnABot agent assist and call transcript summarization

### Fixed

- Fix Chime SDK VoiceConnector problems when updating stack
- Fix Demo Asterisk configuration preventing use of softphone
- Misc improvements to build/publish script

## [0.8.4] - 2023-08-11

### Fixed

- Fix issue with deploying new Chime Voice Connector if in a new AWS account
- Fix Contact Lens summaries

## [0.8.3] - 2023-07-18

### Fixed

- Fix regression issue that prevented persistence of custom metadata json in DynamoDB call record
- Update QnAbot submodule branch/commit to pull in deployment fixes from QnAbot v5.3.5

## [0.8.2] - 2023-07-11

### Fixed

- Fix stack update problems related to Chime Voice Connector configuration when updating to v0.8.1 from v0.8.0 with Chime Call Analytics enabled

## [0.8.1] - 2023-07-10

### Fixed

- Add compatibility with [Start Call Processing](https://github.com/aws-samples/amazon-transcribe-live-call-analytics/blob/develop/lca-chimevc-stack/StartCallProcessingEvent.md#start-call-processing-for-a-in-progress-call) feature, when using Chime SDK Call Analytics audio processor.

## [0.8.0] - 2023-05-30
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ To get LCA up and running in your own AWS account, follow these steps (if you do
22. `Enable Partial Transcripts` - Enable partial transcripts to receive low latency evolving transcriptions for each conversation turn.
23. `Transcribe API mode` - Set the default API mode for Transcribe. Set to 'analytics' to use the Amazon Transcribe Real-time Call Analytics service, used to support call categories and alerts, call summarization, and PCA integration.
24. `Enable Content Redaction for Transcripts` - Enable content redaction from Amazon Transcribe transcription output. **NOTE:** Content redaction is only available when using English (en-US, en-GB, en-AU) or Spanish (es-US). This parameter is ignored when not using other languages.
25. `Language for Transcription` - Language code to be used for Amazon Transcribe
25. `Language for Transcription` - Language code to be used for Amazon Transcribe. To transcribe meetings in a supported language other than US English, chose the desired value for **Language for Transcription**. You can also choose to have Transcribe identify the primary language, or even multiple languages used during the meeting by setting **Language for Transcription** to `identify-language` or `identify-multiple-languages` and optionally provide a list of languages - see [Language identification with streaming transcriptions](https://docs.aws.amazon.com/transcribe/latest/dg/lang-id-stream.html).
26. `Content Redaction Type for Transcription` - Type of content redaction from Amazon Transcribe transcription output
27. `Transcription PII Redaction Entity Types` - Select the PII entity types you want to identify or redact. Remove the values that you don't want to redact from the default. _DO NOT ADD CUSTOM VALUES HERE_.
28. `Transcription Custom Vocabulary Name` - The name of the vocabulary to use when processing the transcription job. Leave blank if no custom vocabulary to be used. If yes, the custom vocabulary must pre-exist in your account.
Expand All @@ -143,7 +143,7 @@ To get LCA up and running in your own AWS account, follow these steps (if you do
transcript segment. See [TranscriptLambdaHookFunction.md](./lca-ai-stack/TranscriptLambdaHookFunction.md).
34. `Lambda Hook Function Mode Non-Partial only` - Specifies if Transcript Lambda Hook Function (if specified) is invoked for Non-Partial transcript segments only (true), or for both Partial and Non-Partial transcript segments (false).
35. `End of Call Transcript Summary` - `BEDROCK` option (default) requires you to choose one of the supported model IDs from the provided list (BedrockModelId). Choose `SAGEMAKER` to automatically deploy a summarization model. Choose `ANTHROPIC` to use the Third Party Anthropic Claude model with your own API key. Alternatively, choose LAMBDA to use your own Lambda function to generate summaries using other models, or choose DISABLED if you are not interested in exploring the new Transcript Summarization feature. See [Transcript Summarization](./lca-ai-stack/TranscriptSummarization.md) for more information.
36. `BedrockModelId` - If `EndOfCallTranscriptSummary` is `BEDROCK`, then choose a model ID from the list of supported models. Defaults to `anthropic.claude-instant-v1`
36. `BedrockModelId` - If `EndOfCallTranscriptSummary` is `BEDROCK`, then choose a model ID from the list of supported models. Defaults to `anthropic.claude-3-haiku-20240307-v1:0`
37. `Initial Instance Count for Summarization SageMaker Endpoint` - When `SAGEMAKER` option is chosen (above) enter 0 for a SageMaker Serverless Inference endpoint, or 1 or greater for a provisioned endpoint with the specified number of instances. See [Transcript Summarization](./lca-ai-stack/TranscriptSummarization.md) for more details.
38. `End of Call Summarization LLM Third Party API Key` - Provide your API key if you choose ANTHROPIC above. See [Transcript Summarization](./lca-ai-stack/TranscriptSummarization.md) for more details.
39. `Lambda Hook Function ARN for Custom End of Call Processing (existing)` - When LAMBDA option is chosen (above) enter the ARN for your custom summarization Lambda function. See [Transcript Summarization](./lca-ai-stack/TranscriptSummarization.md) for more details.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.8.13
0.9.0
Loading

0 comments on commit 9763346

Please sign in to comment.