-
Notifications
You must be signed in to change notification settings - Fork 0
/
chat_engine.yaml
187 lines (174 loc) · 5.43 KB
/
chat_engine.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
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Globals:
Function:
Runtime: python3.9
Resources:
IntentDataLoaderFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: s3://hensos-personal-assistant/intents/intents-deployment-package.zip
Handler: load_all_intents.lambda_handler
Description: Loads intent data into the Lex bot
Timeout: 10
Role: !GetAtt IntentDataLoaderFunctionRole.Arn
Policies:
- LexBotPolicy:
BotName: !Ref HensoPersonalAssistantChatBot
Environment:
Variables:
bot_name: !Ref HensoPersonalAssistantChatBot
intent_table: !Ref IntentDatabase
IntentDataLoaderFunctionRole:
Type: AWS::IAM::Role
Properties:
RoleName: IntentDataLoaderFunctionRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: IntentDataLoaderFunctionPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 'lex:PutIntent'
- 'lex:GetIntent'
Resource: '*'
- Effect: Allow
Action:
- 'dynamodb:GetItem'
- 'dynamodb:Scan'
Resource: !GetAtt IntentDatabase.Arn
IntentDataLoader:
Type: Custom::IntentDataLoader
DependsOn:
- IntentDataLoaderFunction
- IntentDataLoaderFunctionRole
Properties:
service_token: !GetAtt IntentDataLoaderFunction.Arn
bot_name: !Ref HensoPersonalAssistantChatBot
table_name: !Ref IntentDatabase
HensoPersonalAssistantChatBot:
Type: 'AWS::Lex::Bot'
Properties:
Name: hensoPersonalAssistantChatEngine
Description: Henso's AI's chat functionality
IdleSessionTTLInSeconds: 300
RoleArn: !GetAtt IntentDataLoaderFunctionRole.Arn
DataPrivacy:
ChildDirected: False
BotLocales:
- LocaleId: en_US
NluConfidenceThreshold: 0.40
VoiceSettings:
VoiceId: Matthew
Intents:
- Name: "FallbackIntent"
Description: "Default intent when no other intent matches"
ParentIntentSignature: "AMAZON.FallbackIntent"
IntentDatabase:
Type: 'AWS::DynamoDB::Table'
Properties:
TableName: hensosAIIntentDB
AttributeDefinitions:
- AttributeName: intent_name
AttributeType: S
- AttributeName: intent_data
AttributeType: S
KeySchema:
- AttributeName: intent_name
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
GlobalSecondaryIndexes:
- IndexName: intent_data_index
KeySchema:
- AttributeName: intent_data
KeyType: HASH
Projection:
ProjectionType: ALL
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
AddIntentFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: AddIntentFunction
Runtime: python3.9
Handler: add_intent.lambda_handler
CodeUri: s3://hensos-personal-assistant/intents/intents-deployment-package.zip
Environment:
Variables:
INTENT_TABLE_NAME: !Ref IntentDatabase
Events:
AddIntentAPI:
Type: Api
Properties:
Path: /intents
Method: post
GetIntentFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: GetIntentFunction
Runtime: python3.9
Handler: get_intent.lambda_handler
CodeUri: s3://hensos-personal-assistant/intents/intents-deployment-package.zip
Environment:
Variables:
INTENT_TABLE_NAME: !Ref IntentDatabase
Events:
GetIntentAPI:
Type: Api
Properties:
Path: /intents/{intent_name}
Method: get
UpdateIntentFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: UpdateIntentFunction
Handler: update_intent.lambda_handler
CodeUri: s3://hensos-personal-assistant/intents/intents-deployment-package.zip
Environment:
Variables:
INTENT_TABLE_NAME: !Ref IntentDatabase
Events:
UpdateIntentAPI:
Type: Api
Properties:
Path: /intents/{intent_name}
Method: put
DeleteIntentFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: DeleteIntentFunction
Runtime: python3.9
Handler: delete_intent.lambda_handler
CodeUri: s3://hensos-personal-assistant/intents/intents-deployment-package.zip
GetAllIntentsFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: GetAllIntentsFunction
Runtime: python3.9
Handler: get_all_intents.lambda_handler
CodeUri: s3://hensos-personal-assistant/intents/intents-deployment-package.zip
Environment:
Variables:
INTENT_TABLE_NAME: !Ref IntentDatabase
Events:
GetAllIntentsAPI:
Type: Api
Properties:
Path: /intents
Method: get
Outputs:
BotName:
Value: !Ref HensoPersonalAssistantChatBot
Export:
Name: BotName