在创建AWS Lex聊天机器人时,需要在AWS Lambda函数中编写代码以记录用户的话语。可以使用以下示例代码:
import json
import boto3
def lambda_handler(event, context):
log_group_name = "/aws/lex/" + event['bot']['name'] + "/Logs"
log_stream_name = event['userId']
logs_client = boto3.client('logs')
# Logging missed utterances
if event['missedUtterance'] is not None:
logs_client.create_log_group(logGroupName=log_group_name)
logs_client.create_log_stream(logGroupName=log_group_name, logStreamName=log_stream_name)
logs_client.put_log_events(
logGroupName=log_group_name,
logStreamName=log_stream_name,
logEvents=[
{
'timestamp': int(round(time.time() * 1000)),
'message': 'Missed: ' + event['missedUtterance']
}
]
)
# Logging detected utterances
if event['inputTranscript'] is not None:
logs_client.create_log_group(logGroupName=log_group_name)
logs_client.create_log_stream(logGroupName=log_group_name, logStreamName=log_stream_name)
logs_client.put_log_events(
logGroupName=log_group_name,
logStreamName=log_stream_name,
logEvents=[
{
'timestamp': int(round(time.time() * 1000)),
'message': 'Detected: ' + event['inputTranscript']
}
]
)
return {
'statusCode': 200
}
这段代码将创建一个AWS CloudWatch日志组,并使用用户ID创建一个日志流。当聊天机器人无法检测到用户的话语时(missedUtterance!=None),将创建“Missed”日志事件。同样地,当聊天机器人检测到用户的话语时(inputTranscript!=None),将创建一个“Detected”日志事件。
在AWS Lex Console中,需要配置AWS Lambda代码挂钩以使用此Lambda函数。在这里,需要指定挂钩的版本和别名。这将确保AWS Lex使用正确的AWS Lambda函数来日志记录聊天机器人的话语。