-
Notifications
You must be signed in to change notification settings - Fork 59
/
lca-main.yaml
2062 lines (1933 loc) · 84.2 KB
/
lca-main.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License").
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Amazon Transcribe Live Call Analytics with Agent Assist - LCA (v0.9.4) (SO9072)
Parameters:
CallAudioSource:
Type: String
Default: Demo Asterisk PBX Server
AllowedValues:
- Demo Asterisk PBX Server
- Amazon Chime SDK Voice Connector (SIPREC)
- Genesys Cloud Audiohook Web Socket
- Talkdesk Voice Stream Websocket
- Amazon Connect Contact Lens
- Amazon Connect Kinesis Video Streams
Description: >
Choose whether to automatically install a demo Asterisk PBX server for easy standalone testing, an
Amazon Chime SDK Voice Connector to use for standards based SIPREC/NBR integration with your contact center,
a Web Socket interface to use for Audiohook integration with your Genesys Cloud CX contact center,
integrate with Amazon Connect Contact Lens, or integrate with Amazon Connect Kinesis Video Streams.
CallAudioProcessor:
Type: String
Default: Amazon Chime SDK Call Analytics
AllowedValues:
- Amazon Chime SDK Call Analytics
- Call Transcriber Lambda
Description: >
If you choose Demo Asterisk PBX Server orAmazon Chime SDK Voice Connector (SIPREC), you can have
Amazon Chime SDK Call Analytics ingest the audio and send it to Transcribe, or use the example LCA Call
Processor Lambda. Enabling Amazon Chime SDK Call Analytics also allows you to also use Voice Analytics,
such as Voice Tone Analysis and Speaker Search.
WebSocketAudioInput:
Type: String
Default: Enabled
AllowedValues:
- Enabled
- Disabled
Description: >
Enable or Disable Websocket interface for streaming audio input from microphone and browser tabs, or custom client.
CustomVoiceConnectorId:
Type: String
Default: ""
MaxLength: 50
Description: >
(Optional) The Voice Connector ID (not Name) of an existing Amazon Chime SDK Voice Connector. This Voice Connector will be used as the call audio source.
Used only when a call audio source with Amazon Chime SDK Voice Connector or Demo Asterisk PBX Server is selected.
Leave blank to automatically create new Amazon Chime SDK Voice Connector.
ChimeVoiceToneAnalysis:
Type: String
Default: Disabled
AllowedValues:
- Enabled
- Disabled
Description: >
Used only when a call audio source withAmazon Chime SDK Voice Connector is selected, and
Amazon Chime SDK Call Analytics is used as a call processor.
A voice analytics feature that enables you to analyze caller voices for a positive,
negative, or neutral tone. This is different than sentiment analysis, as it analyzes
the audio versus text. --NOTE-- In some jurisdictions, it may not be legal to use voice
analytics without the caller's consent. Please read
https://docs.aws.amazon.com/chime-sdk/latest/dg/va-opt-out.html for more information.
DemoSoftphoneAllowedCidr:
Type: String
AllowedPattern: "( *|([0-9]{1,3}.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2])))"
Description: >
Used only when CallAudioSource is set to 'Demo Asterisk PBX Server'
CIDR block allowed by demo Asterisk server for soft phone registration.
Example: '198.51.100.36/32'
SiprecLambdaHookFunctionArn:
Default: ""
Type: String
AllowedPattern: "^(|arn:aws:lambda:.*)$"
Description: >
(Optional) Used only when CallAudioSource is set to 'Chime Voice Connector (SIPREC)' or
'Demo Asterisk PBX Server'. If present, the specified Lambda function can selectively
choose calls to process, toggle agent/caller streams, assign AgentId, and/or modify values
for CallId and displayed phone numbers.
SiprecAllowedCidrList:
Type: String
# yamllint disable rule:line-length
AllowedPattern: "( *|(([0-9]{1,3}.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))))(, *([0-9]{1,3}.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2])))*"
# yamllint enable rule:line-length
Description: >
Ignored if Install Demo Asterisk Server is true.
Comma delimited list of public CIDR blocks allowed by Amazon Chime SDK Voice Connector for SIPREC source hosts. Mask of /27 to /32 is allowed.
Example: '198.51.100.0/27, 203.0.113.128/27'
ConnectInstanceArn:
Type: String
AllowedPattern: "^(|arn:aws:connect:.*)$"
Description: >
Required when CallAudioSource is set to 'Amazon Connect Contact Lens' or 'Amazon Connect Kinesis Video Streams'.
Amazon Connect instance ARN of a working instance. Prerequisite: Agent queue and Real Time Contact Lens must be enabled, or
Media Streams must be enabled.
TalkdeskAccountId:
Type: String
Default: ""
Description: >
(Optional) The Account identifier that created the Talkdesk stream. Used only when CallAudioSource is
set to 'Talkdesk Voice Stream Websocket'. Provide the unique account identifier assigned to your
Talkdesk account.
AgentAssistOption:
Type: String
Default: QnABot on AWS with new Bedrock knowledge base
AllowedValues:
- Disabled
- QnABot on AWS with new Bedrock knowledge base
- QnABot on AWS with existing Bedrock knowledge base
- QnABot on AWS with Bedrock LLM only (no knowledge base)
- Bring your own LexV2 bot
- Bring your own Lambda function
Description: >
Choose to enable optional Agent Assist capability, powered by a nested QnABot stack, your own LexV2 bot, or your own custom Lambda function.
BedrockKnowledgeBaseId:
Type: String
Default: ""
AllowedPattern: "^(|[0-9a-zA-Z]{10})$"
Description: >
If AgentAssistOption is 'QnABot on AWS with existing Bedrock knowledge base', provide the knowledge base
*Id* (not name) of an *existing* Bedrock knowledge base to be used for Meeting
Assist bot.
BedrockKnowledgeBaseS3BucketName:
Type: String
Default: ""
Description: >-
If AgentAssistOption is 'QnABot on AWS with new Bedrock knowledge base', provide the bucket
name of an existing bucket with documents to ingest, or leave blank if you don't need an S3 data source. If you provide an S3 bucket name an S3 data
source will be created for you automatically.
BedrockKnowledgeBaseS3DocumentUploadFolderPrefix:
Type: String
Default: ""
Description: >-
If AgentAssistOption is 'QnABot on AWS with new Bedrock knowledge base', provide comma separated list of optional S3 prefixes
with the paths to your source documents e.g. "prefix1/, prefix2/". If you leave blank, all documents in your S3 bucket will be scanned.
AgentAssistWebCrawlURLs:
Type: String
Default: https://en.wikipedia.org/wiki/Life_insurance, https://en.wikipedia.org/wiki/Mortgage_loan
Description: >-
Comma separated list of public web sites to crawl automatically for Agent Assist knowledge store
AgentAssistWebCrawlSyncScope:
Type: String
Default: DEFAULT
AllowedValues:
- "DEFAULT"
- "HOST_ONLY"
- "SUBDOMAINS"
Description: >-
The scope of what is crawled for your URLs.
Choose DEFAULT to limit to web pages that have the same host and the same initial path as the source URLs.
Choose HOST_ONLY to limit to web pages that have the same host as the source URLs.
Choose SUBDOMAINS to to include sub domains in addition to the host or primary domain.
AgentAssistExistingLexV2BotId:
Default: ""
Type: String
AllowedPattern: "^(|[0-9a-zA-Z]{10})$"
Description: >
Used only when AgentAssistOption is set to 'Bring your own LexV2 bot'.
Provide the Lex V2 *Bot Id* (not name) of an existing LexV2 bot to be used for Agent Assist."
AgentAssistExistingLexV2BotAliasId:
Default: ""
Type: String
AllowedPattern: "^(|[0-9a-zA-Z]{10})$"
Description: >
Used only when AgentAssistOption is set to 'Bring your own LexV2 bot'.
Provide the Lex V2 *Bot Alias Id* (not name) of an existing LexV2 bot alias to be used for Agent Assist."
AgentAssistExistingLambdaFunctionArn:
Default: ""
Type: String
AllowedPattern: "^(|arn:aws:lambda:.*)$"
Description: >
Used only when AgentAssistOption is set to 'Bring your own Lambda function'.
Provide the function ARN of an existing Lambda function to be used for Agent Assist."
AgentAssistLLMBedrockModelId:
Type: String
Default: anthropic.claude-3-haiku-20240307-v1:0
AllowedValues:
- "anthropic.claude-3-haiku-20240307-v1:0"
- "anthropic.claude-3-sonnet-20240229-v1:0"
- "anthropic.claude-3-5-sonnet-20240620-v1:0"
Description: Choose Bedrock modelId'
AgentAssistQnABotOpenSearchNodeCount:
Type: String
Default: 1
AllowedValues:
- 1
- 2
- 4
Description: >
Number of nodes in Meeting Assistant QnABot OpenSearch domain - '4' is recommended
for fault tolerant production deployments.
S3BucketName:
Type: String
Description: >
(Optional) Existing bucket where call recording files will be stored.
Leave blank to automatically create new bucket.
# yamllint disable rule:line-length
AllowedPattern: '( *|(?=^.{3,63}$)(?!^(\d+\.)+\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])$))'
# yamllint enable rule:line-length
AudioFilePrefix:
Type: String
Default: lca-audio-recordings/
Description: The Amazon S3 prefix where the audio files will be saved (must end in "/")
CallAnalyticsPrefix:
Type: String
Default: lca-call-analytics/
Description: The Amazon S3 prefix where the post-call analytics files will be saved, when using analytics api mode (must end in "/")
IsPartialTranscriptEnabled:
Type: String
Default: "true"
Description: >-
Enable partial transcripts to receive low latency evolving transcriptions for each conversation turn. Set to false to process only the
final version of each conversation turn.
AllowedValues:
- "true"
- "false"
IsContentRedactionEnabled:
Type: String
Default: "false"
Description: >-
Enable content redaction from Amazon Transcribe transcription output. This is only used when
the 'en-US', 'en-AU', 'en-GB' or 'es-US' languages are selected in the TranscribeLanguageCode parameter.
AllowedValues:
- "true"
- "false"
TranscribeApiMode:
Type: String
Default: analytics
AllowedValues:
- standard
- analytics
Description: >-
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.
CategoryAlertRegEx:
Type: String
Default: .*
Description: >
If using the 'analytics' Transcribe API Mode, this regular expression will be used to show
an alert in red in the web user interface if it matches a call category. This defaults to
matching all categories.
TranscribeContentRedactionType:
Type: String
Default: PII
Description: >-
Type of content redaction from Amazon Transcribe transcription output
AllowedValues:
- PII
TranscribeLanguageCode:
Type: String
Description: >-
Language code or language identification setting for Amazon Transcribe. NOTE:
Language identification must be used with TranscribeApiMode 'standard', and can't be combined with custom language models, redaction.
Default: en-US
AllowedValues:
- identify-language
- identify-multiple-languages
- en-US
- es-US
- en-GB
- fr-CA
- fr-FR
- en-AU
- it-IT
- de-DE
- pt-BR
- ja-JP
- ko-KR
- zh-CN
- hi-IN
- th-TH
TranscribeLanguageOptions:
Type: String
Default: "en-US, es-US"
AllowedPattern: '^(?:\s*(?:en-US|es-US|en-GB|fr-CA|fr-FR|en-AU|it-IT|de-DE|pt-BR|ja-JP|ko-KR|zh-CN|hi-IN|th-TH)\s*(?:,\s*(?:en-US|es-US|en-GB|fr-CA|fr-FR|en-AU|it-IT|de-DE|pt-BR|ja-JP|ko-KR|zh-CN|hi-IN|th-TH)\s*)*)?$'
ConstraintDescription: >-
Unsupported language code or invalid syntax. Allowed values are: en-US, es-US,
en-GB, fr-CA, fr-FR, en-AU, it-IT, de-DE, pt-BR, ja-JP, ko-KR, zh-CN, hi-IN,
th-TH
Description: >-
When using language identification, specify two or more language codes, e.g.
"en-US, es-US" that represent the languages that may be used in your meeting.
Including more than five is not recommended. Enter only one language dialect
per language - e.g. 'en-US, en-AU' is not allowed.
Allowed values are: en-US, es-US, en-GB, fr-CA, fr-FR, en-AU, it-IT, de-DE,
pt-BR, ja-JP, ko-KR, zh-CN, hi-IN, th-TH
TranscribePreferredLanguage:
Type: String
Description: >-
Optionally select a preferred language when using language identification -
must be one of the languages entered for TranscribeLanguageOptions.
Default: None
AllowedValues:
- None
- en-US
- es-US
- en-GB
- fr-CA
- fr-FR
- en-AU
- it-IT
- de-DE
- pt-BR
- ja-JP
- ko-KR
- zh-CN
- hi-IN
- th-TH
TranscribePiiEntityTypes:
Type: String
Default: BANK_ACCOUNT_NUMBER,BANK_ROUTING,CREDIT_DEBIT_NUMBER,CREDIT_DEBIT_CVV,CREDIT_DEBIT_EXPIRY,PIN,EMAIL,ADDRESS,NAME,PHONE,SSN
Description: >-
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.
CustomVocabularyName:
Type: String
Default: ""
Description: >-
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.
Multiple values are currently supported only when CallAudioSource is either 'Demo Asterisk PBX Server' or
'Amazon Chime SDK Voice Connector (SIPREC)', AND CallAudioProcessor is 'Call Transcriber Lambda'.
Specify multiple custom vocabularies by separating them with a comma (,) and appending language
code after each vocabulary name as '_<langcode>', e.g. 'MyVocab_en-US,MyVocab_es-US' to support using custom
vocabularies for different languages set by a custom call initialization Lambda Hook.
CustomLanguageModelName:
Type: String
Default: ""
Description: >-
The name of the custom language model to use when processing the transcription job. Leave blank if no
custom language model is to be used. If specified, the custom language model must pre-exist in your account,
match the Language Code selected above, and use the 'Narrow Band' base model.
Multiple values are currently supported only when CallAudioSource is either 'Demo Asterisk PBX Server' or
'Amazon Chime SDK Voice Connector (SIPREC)', AND CallAudioProcessor is 'Call Transcriber Lambda'.
Specify multiple custom language models by separating them with a comma (,) and appending language
code after each language model name as '_<langcode>', e.g. 'MyCLM_en-US, MyCLM_es-US' to support using custom
language models for different languages set by a custom call initialization Lambda Hook.
IsSentimentAnalysisEnabled:
Type: String
Default: "true"
Description: >-
Enable sentiment analysis
AllowedValues:
- "true"
- "false"
SentimentNegativeScoreThreshold:
Type: Number
Default: 0.9
MinValue: 0
MaxValue: 1
Description: >-
Minimum negative sentiment confidence required to declare a phrase as having negative sentiment, in the range 0-1.
Not applicable when using Contact Lens or Transcribe Call Analytics (as sentiment is pre-calculated).
SentimentPositiveScoreThreshold:
Type: Number
Default: 0.4
MinValue: 0
MaxValue: 1
Description: >-
Minimum positive sentiment confidence required to declare a phrase as having positive sentiment, in the range 0-1.
Not applicable when using Contact Lens or Transcribe Call Analytics (as sentiment is pre-calculated).
TranscriptLambdaHookFunctionArn:
Default: ""
Type: String
AllowedPattern: "^(|arn:aws:lambda:.*)$"
Description: >
(Optional) If present, the specified Lambda function is invoked by the LCA Call Event Processor Lambda function for each completed
(non-partial) transcript segment. The function can capture and/or modify the text of the transcript, for example to implement custom
redaction logic, profanity filtering, or custom rules to highlight patterns in the transcript.
TranscriptLambdaHookFunctionNonPartialOnly:
Type: String
Default: "true"
AllowedValues:
- "true"
- "false"
Description: >
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).
EndOfCallTranscriptSummary:
Default: "BEDROCK"
Type: String
AllowedValues:
- "DISABLED"
- "SAGEMAKER"
- "LAMBDA"
- "ANTHROPIC"
- "BEDROCK"
Description: >
Set to enable call summarization by a Large Language Model. The SAGEMAKER option uses a SageMaker endpoint with
the pretrained bart-large-cnn-samsum model with a ml.m5.xlarge instance type. The LAMBDA option requires you
to provide a function ARN below. The ANTHROPIC option is a third party service, and you must enter your Anthropic API key below.
BEDROCK option requires you to choose one of the supported model IDs from the
provided list (SummaryBedrockModelId).
SummaryBedrockModelId:
Default: "anthropic.claude-3-haiku-20240307-v1:0"
Type: String
AllowedValues:
- "anthropic.claude-3-haiku-20240307-v1:0"
- "anthropic.claude-3-sonnet-20240229-v1:0"
- "anthropic.claude-3-5-sonnet-20240620-v1:0"
Description: >
If EndOfCallTranscriptSummary is BEDROCK, then choose a model ID from the list of supported models.
Defaults to 'anthropic.claude-3-haiku-20240307-v1:0'
SummarizationSageMakerInitialInstanceCount:
Type: Number
MinValue: 0
Default: 1
Description: >
(Optional) If 'End Of Call Transcript Summary' is SAGEMAKER, provide initial instance count. Set to '0' to enable Serverless Inference (for cold-start delay tolerant deployments only).
SummarizationLLMThirdPartyApiKey:
Type: String
Description: "Optional: If EndOfCallTranscriptSummary is ANTHROPIC, enter the provider API Key. ** Data will leave your AWS account **"
Default: ""
NoEcho: true
EndOfCallLambdaHookFunctionArn:
Default: ""
Type: String
AllowedPattern: "^(|arn:aws:lambda:.*)$"
Description: >
(Optional) If 'End Of Call Transcript Summary' is LAMBDA, provide ARN for a Lambda function. The specified Lambda function is invoked by the LCA Call Event Processor Lambda function
for end of call event. The function is passed en event with CallId as input.
This function can implement custom logic that is relevant to end of call processing, for example, creating a call summary.
StartOfCallLambdaHookFunctionArn:
Default: ""
Type: String
AllowedPattern: "^(|arn:aws:lambda:.*)$"
Description: >
(Optional) The specified Lambda function is invoked by the LCA Call Event Processor Lambda function for beginning or start of
call event. This function can implement custom logic that is relevant to beginning of call processing, for example, retrieving
call summary details logged into a case in a CRM.
PostCallSummaryLambdaHookFunctionArn:
Default: ""
Type: String
AllowedPattern: "^(|arn:aws:lambda:.*)$"
Description: >
(Optional) The specified Lambda function is invoked by the LCA Call Event Processor Lambda function after the call summary is processed.
This function can implement custom logic that is relevant to post processing, for example, updating the call summary to a CRM system.
AdminEmail:
Type: String
Description: >-
Email address of admin user (e.g. [email protected]) used for the API and web UI.
An initial temporary password will be automatically sent to this user via email.
AllowedPattern: '^[\w.+-]+@([\w-]+\.)+[\w-]{2,6}$'
AllowedSignUpEmailDomain:
Type: String
Default: ""
Description: >-
Email address domain (example.com) or comma separated list of email domains
(example1.com, example2.com) allowed to signin and signup using the web UI.
If left empty, signup via the web UI is disabled and users will have to be created using
Cognito.
AllowedPattern: '^(|([\w-]+\.)+[\w-]{2,6}(, *([\w-]+\.)+[\w-]{2,6})*)$'
DemoAsteriskAgentAudioURL:
Type: String
Default: https://github.com/aws-samples/amazon-transcribe-live-call-analytics/raw/main/lca-chimevc-stack/demo-audio/agent.wav
Description: URL for audio (agent.wav) file download for demo Asterisk server.
CloudFrontPriceClass:
Type: String
Default: PriceClass_100
Description: >-
Specify the CloudFront price class. See https://aws.amazon.com/cloudfront/pricing/ for a
description of each price class.
AllowedValues:
- PriceClass_100
- PriceClass_200
- PriceClass_All
ConstraintDescription: >-
Allowed Price Classes PriceClass_100 PriceClass_200 and PriceClass_All
CloudFrontAllowedGeos:
Type: String
Default: ""
Description: >-
Specify a comma separated list of two letter country codes (uppercase ISO 3166-1) that are
allowed to access the web user interface via CloudFront. For example: US,CA. Leave empty if
you do not want geo restrictions to be applied.
AllowedPattern: "^(|[A-Z]{2}(,[A-Z]{2})*)$"
ConstraintDescription: >-
Comma separated list of uppercase two letter country codes or empty
PcaS3BucketName:
Type: String
Description: >
(Optional) Value of PCA stack "InputBucket". Effective if Transcribe API Mode parameter is 'analytics'.
# yamllint disable rule:line-length
AllowedPattern: '( *|(?=^.{3,63}$)(?!^(\d+\.)+\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])\.)*([a-z0-9]|[a-z0-9][a-z0-9\-]*[a-z0-9])$))'
# yamllint enable rule:line-length
PcaTranscriptsPrefix:
Type: String
Default: originalTranscripts/
Description: Value of PCA stack "InputBucketTranscriptPrefix".
PcaPlaybackAudioFilePrefix:
Type: String
Default: playbackAudio/
Description: Value of PCA stack "InputBucketPlaybackAudioPrefix".
PcaWebAppURL:
Type: String
AllowedPattern: '^(|https:\/\/.*)$'
Description: (Optional) Value of PCA stack "WebAppURL".
PcaWebAppCallPathPrefix:
Type: String
Default: dashboard/parsedFiles/
Description: PCA path prefix for call detail pages.
DynamoDbExpirationInDays:
Type: Number
Default: 90
Description: >-
Number of days to retain call records. Records will be automatically deleted from LCA after this time.
AudioRecordingExpirationInDays:
Type: Number
Description:
"Whole number of days after which audio recordings will be deleted
from the Recordings bucket."
Default: 90
UseExistingVPC:
Type: String
Default: "false"
AllowedValues:
- "true"
- "false"
Description: >-
Use an existing VPC for the solution instead of creating a new one. If set to
true, the VPC ID and subnets must be provided. DO NOT CHANGE VALUE WHEN UPDATING AN EXISTING STACK.
VPC:
Type: String
Description: >-
ID of the VPC to use for the solution. Required if UseExistingVPC is true. DO NOT CHANGE VALUE WHEN
UPDATING AN EXISTING STACK.
AllowedPattern: "^(|vpc-[a-zA-Z0-9-]+)$"
PublicSubnet1:
Type: String
Description: >-
ID of the public subnet in Availability Zone 1. Required if UseExistingVPC is
true. DO NOT CHANGE VALUE WHEN UPDATING AN EXISTING STACK.
AllowedPattern: "^(|subnet-[a-zA-Z0-9-]+)$"
PublicSubnet2:
Type: String
Description: >-
ID of the public subnet in Availability Zone 2. Required if UseExistingVPC is
true. DO NOT CHANGE VALUE WHEN UPDATING AN EXISTING STACK.
AllowedPattern: "^(|subnet-[a-zA-Z0-9-]+)$"
PrivateSubnet1:
Type: String
Description: >-
ID of the private subnet in Availability Zone 1. Required if UseExistingVPC is
true. DO NOT CHANGE VALUE WHEN UPDATING AN EXISTING STACK.
AllowedPattern: "^(|subnet-[a-zA-Z0-9-]+)$"
PrivateSubnet2:
Type: String
Description: >-
ID of the private subnet in Availability Zone 2. Required if UseExistingVPC is
true. DO NOT CHANGE VALUE WHEN UPDATING AN EXISTING STACK.
AllowedPattern: "^(|subnet-[a-zA-Z0-9-]+)$"
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: Web UI Authentication
Parameters:
- AdminEmail
- AllowedSignUpEmailDomain
- Label:
default: Telephony Ingestion Options
Parameters:
- CallAudioSource
- CallAudioProcessor
- WebSocketAudioInput
- CustomVoiceConnectorId
- ChimeVoiceToneAnalysis
# - ChimeSpeakerSearch
- DemoSoftphoneAllowedCidr
- SiprecAllowedCidrList
- SiprecLambdaHookFunctionArn
- ConnectInstanceArn
- TalkdeskAccountId
- Label:
default: Agent Assist Options
Parameters:
- AgentAssistOption
- BedrockKnowledgeBaseId
- BedrockKnowledgeBaseS3BucketName
- BedrockKnowledgeBaseS3DocumentUploadFolderPrefix
- AgentAssistWebCrawlURLs
- AgentAssistWebCrawlSyncScope
- AgentAssistExistingLexV2BotId
- AgentAssistExistingLexV2BotAliasId
- AgentAssistExistingLambdaFunctionArn
- AgentAssistLLMBedrockModelId
- AgentAssistQnABotOpenSearchNodeCount
- Label:
default: Amazon S3 Configuration
Parameters:
- S3BucketName
- AudioFilePrefix
- CallAnalyticsPrefix
- Label:
default: Amazon Transcribe Configuration
Parameters:
- IsPartialTranscriptEnabled
- TranscribeApiMode
- IsContentRedactionEnabled
- TranscribeLanguageCode
- TranscribeLanguageOptions
- TranscribePreferredLanguage
- TranscribeContentRedactionType
- TranscribePiiEntityTypes
- CustomVocabularyName
- CustomLanguageModelName
- Label:
default: Transcript Event Processing Configuration
Parameters:
- IsSentimentAnalysisEnabled
- SentimentNegativeScoreThreshold
- SentimentPositiveScoreThreshold
- TranscriptLambdaHookFunctionArn
- TranscriptLambdaHookFunctionNonPartialOnly
- EndOfCallTranscriptSummary
- SummaryBedrockModelId
- SummarizationSageMakerInitialInstanceCount
- SummarizationLLMThirdPartyApiKey
- EndOfCallLambdaHookFunctionArn
- StartOfCallLambdaHookFunctionArn
- PostCallSummaryLambdaHookFunctionArn
- Label:
default: Download locations
Parameters:
- DemoAsteriskAgentAudioURL
- Label:
default: Amazon CloudFront Configuration
Parameters:
- CloudFrontPriceClass
- CloudFrontAllowedGeos
- Label:
default: Retention
Parameters:
- DynamoDbExpirationInDays
- AudioRecordingExpirationInDays
- Label:
default: User Experience
Parameters:
- CategoryAlertRegEx
- Label:
default: Post Call Analytics (PCA) Integration
Parameters:
- PcaS3BucketName
- PcaTranscriptsPrefix
- PcaPlaybackAudioFilePrefix
- PcaWebAppURL
- PcaWebAppCallPathPrefix
- Label:
default: VPC Configuration
Parameters:
- UseExistingVPC
- VPC
- PublicSubnet1
- PublicSubnet2
- PrivateSubnet1
- PrivateSubnet2
ParameterLabels:
CallAudioProcessor:
default: Call Audio Processor
ChimeVoiceToneAnalysis:
default: Chime Voice Tone Analysis
S3BucketName:
default: Call Audio Recordings Bucket Name
AudioFilePrefix:
default: Audio File Prefix
CallAnalyticsPrefix:
default: Call Analytics Output File Prefix
CustomVoiceConnectorId:
default: Amazon Chime SDK Voice Connector ID (existing)
AdminEmail:
default: Admin Email Address
AllowedSignUpEmailDomain:
default: Authorized Account Email Domain(s)
CallAudioSource:
default: Call Audio Source
WebSocketAudioInput:
default: Web Socket streaming audio input
DemoSoftphoneAllowedCidr:
default: Allowed CIDR Block for Demo Softphone
SiprecAllowedCidrList:
default: Allowed CIDR List for SIPREC Integration
SiprecLambdaHookFunctionArn:
default: Lambda Hook Function ARN for SIPREC Call Initialization (existing)
ConnectInstanceArn:
default: Amazon Connect instance ARN (existing)
TalkdeskAccountId:
default: Talkdesk Account Identifier for "Talkdesk Voice Stream Websocket" Call Audio Source
AgentAssistOption:
default: Enable Agent Assist
BedrockKnowledgeBaseId:
default: Bedrock Knowledge Base ID (existing)
BedrockKnowledgeBaseS3BucketName:
default: S3 bucket with knowledge base source documents (optional).
BedrockKnowledgeBaseS3DocumentUploadFolderPrefix:
default: S3 prefix(es) for your content (optional)
AgentAssistWebCrawlURLs:
default: Publicly accessible URLs for web crawling (optional)
AgentAssistWebCrawlSyncScope:
default: Web crawling sync scope
AgentAssistExistingLexV2BotId:
default: Agent Assist LexV2 BotId (existing)
AgentAssistExistingLexV2BotAliasId:
default: Agent Assist LexV2 Bot AliasId (existing)
AgentAssistExistingLambdaFunctionArn:
default: Agent Assist Lambda Function ARN (existing)
AgentAssistLLMBedrockModelId:
default: Agent Assist QnABot Bedrock ModelId
IsPartialTranscriptEnabled:
default: Enable Partial Transcripts
TranscribeApiMode:
default: Transcribe API mode
IsContentRedactionEnabled:
default: Enable Content Redaction for Transcripts
TranscribeLanguageCode:
default: Language for Transcription
TranscribeLanguageOptions:
default: Transcribe Language Options
TranscribePreferredLanguage:
default: Transcribe Preferred Language
TranscribeContentRedactionType:
default: Content Redaction Type for Transcription
TranscribePiiEntityTypes:
default: Transcription PII Redaction Entity Types
CustomVocabularyName:
default: Transcription Custom Vocabulary Name
CustomLanguageModelName:
default: Transcription Custom Language Model Name
DemoAsteriskAgentAudioURL:
default: Demo Asterisk Server Agent WAV File Download URL
IsSentimentAnalysisEnabled:
default: Enable Sentiment Analysis
SentimentNegativeScoreThreshold:
default: Sentiment Negative Score Threshold
SentimentPositiveScoreThreshold:
default: Sentiment Positive Score Threshold
TranscriptLambdaHookFunctionArn:
default: Lambda Hook Function ARN for Custom Transcript Segment Processing (existing)
TranscriptLambdaHookFunctionNonPartialOnly:
default: Lambda Hook Function Mode Non-Partial only
EndOfCallTranscriptSummary:
default: End of Call Transcript Summary
SummarizationSageMakerInitialInstanceCount:
default: Initial Instance Count for Summarization SageMaker Endpoint
SummarizationLLMThirdPartyApiKey:
default: End of Call Summarization LLM Third Party API Key
EndOfCallLambdaHookFunctionArn:
default: Lambda Hook Function ARN for Custom End of Call Processing (existing)
StartOfCallLambdaHookFunctionArn:
default: Lambda Hook Function ARN for Custom Start of Call Processing (existing)
PostCallSummaryLambdaHookFunctionArn:
default: Lambda Hook Function ARN for Custom Post Processing, after the Call Transcript Summary is processed (existing)
CloudFrontPriceClass:
default: CloudFront Price Class
CloudFrontAllowedGeos:
default: CloudFront Allowed Geographies
DynamoDbExpirationInDays:
default: Record Expiration In Days
AudioRecordingExpirationInDays:
default: Recording Expiration In Days
CategoryAlertRegEx:
default: Category Alert Regular Expression
PcaS3BucketName:
default: PCA InputBucket
PcaTranscriptsPrefix:
default: PCA InputBucket Transcript prefix
PcaPlaybackAudioFilePrefix:
default: PCA InputBucket Playback AudioFile prefix
PcaWebAppUrl:
default: PCA Web App URL
PcaWebAppCallPathPrefix:
default: PCA Web App Call Path Prefix
UseExistingVPC:
default: Use Existing VPC
VPC:
default: Existing VPC ID
PublicSubnet1:
default: Existing Public Subnet 1
PublicSubnet2:
default: Existing Public Subnet 2
PrivateSubnet1:
default: Existing Private Subnet 1
PrivateSubnet2:
default: Existing Private Subnet 2
Conditions:
ShouldCreateRecordingBucket: !Equals [!Ref S3BucketName, ""]
ShouldInstallDemoAsteriskServer:
!Equals [!Ref CallAudioSource, "Demo Asterisk PBX Server"]
ShouldInstallChimeVCsiprec:
!Equals [!Ref CallAudioSource, "Amazon Chime SDK Voice Connector (SIPREC)"]
ShouldInstallChimeVCStack:
!Or [
!Condition ShouldInstallDemoAsteriskServer,
!Condition ShouldInstallChimeVCsiprec,
]
ShouldInstallConnectKVSStack:
!Equals [!Ref CallAudioSource, "Amazon Connect Kinesis Video Streams"]
ShouldInstallGenesysAudiohookStack:
!Equals [!Ref CallAudioSource, "Genesys Cloud Audiohook Web Socket"]
ShouldInstallTalkdeskStack:
!Equals [!Ref CallAudioSource, "Talkdesk Voice Stream Websocket"]
ShouldInstallWebSocketStack: !Equals [!Ref WebSocketAudioInput, "Enabled"]
ShouldInstallConnectIntegrationStack:
!Equals [!Ref CallAudioSource, "Amazon Connect Contact Lens"]
ShouldUseChimeCallAnalytics:
!Equals [!Ref CallAudioProcessor, "Amazon Chime SDK Call Analytics"]
ShouldEnableVoiceToneAnalysis:
!And [
!Condition ShouldUseChimeCallAnalytics,
!Equals [!Ref ChimeVoiceToneAnalysis, "Enabled"],
]
# ShouldEnableSpeakerSearch: !Equals [!Ref ChimeSpeakerSearch, 'Enabled']
ShouldEnableAgentAssist: !Not [!Equals [!Ref AgentAssistOption, "Disabled"]]
ShouldEnableLambdaAgentAssist:
!Equals [!Ref AgentAssistOption, "Bring your own Lambda function"]
ShouldEnableLexAgentAssist:
!And [
!Condition ShouldEnableAgentAssist,
!Not [!Condition ShouldEnableLambdaAgentAssist],
]
ShouldBringYourOwnBot:
!Equals [!Ref AgentAssistOption, "Bring your own LexV2 bot"]
ShouldInstallAWSQnaBot:
!And [
!Condition ShouldEnableLexAgentAssist,
!Not [!Condition ShouldBringYourOwnBot],
]
ShouldCreateBedrockKnowledgeBase:
!Equals [
!Ref AgentAssistOption,
"QnABot on AWS with new Bedrock knowledge base",
]
ShouldUseExistingBedrockKnowledgeBase:
!Equals [
!Ref AgentAssistOption,
"QnABot on AWS with existing Bedrock knowledge base",
]
ShouldUseBedrockKnowledgeBase:
!Or [
!Condition ShouldCreateBedrockKnowledgeBase,
!Condition ShouldUseExistingBedrockKnowledgeBase,
]
ShouldUseBedrockForSummary:
!Equals [!Ref EndOfCallTranscriptSummary, "BEDROCK"]
ShouldCreateVPC: !Equals [!Ref UseExistingVPC, "false"]
Mappings:
TranscribeToComprehendLanguage:
identify-language:
Value: en
identify-multiple-languages:
Value: en
en-US:
Value: en
es-US:
Value: es
en-GB:
Value: en
fr-CA:
Value: fr
fr-FR:
Value: fr
en-AU:
Value: en
it-IT:
Value: it
de-DE:
Value: de
pt-BR:
Value: pt
ja-JP:
Value: ja
ko-KR:
Value: ko
zh-CN:
Value: zh
hi-IN:
Value: hi
th-TH:
Value: en # th not supported in comprehend
TranscribeToLexLocaleId:
identify-language:
Value: en_US
identify-multiple-languages:
Value: en_US
en-US:
Value: en_US
es-US:
Value: es_US
en-GB:
Value: en_GB
fr-CA:
Value: fr_CA
fr-FR:
Value: fr_FR
en-AU:
Value: en_AU
it-IT:
Value: it_IT
de-DE:
Value: de_DE
pt-BR:
Value: pt_BR
ja-JP:
Value: ja_JP
ko-KR:
Value: ko_KR
zh-CN:
Value: zh_CH
hi-IN:
Value: hi_IN
th-TH:
Value: th_TH
Rules: