我正在使用 Amazon Connect 构建语音助手。助手使用了一堆 Lex 机器人。 我的助手已经基本完成了,但想要解决一个导致用户体验不佳的“错误”。
我第一次执行语音助手(进行验证呼叫)时,Amazon Lex 的机器人的响应有很长的延迟。仅在第一次执行 Amazon Lex 的机器人时发生(如果助手开始第二次对话,则不会发生延迟)。
查资料,发现了这个:
然后我尝试开发一个 Lambda 函数来应用这个 Bot Lex 预热。这是 lambda_handler() 上的代码:
lex_client = boto3.client('lexv2-runtime')
# Itero sobre cada uno de los Bots asignados en el diccionario anterior
for idBot, caracteristicasBot in dictBotsLex.items():
try:
response = lex_client.recognize_text(
botAliasId= caracteristicasBot['botAlias'], # Reemplaza con el alias ID de tu bot
botId=idBot,
localeId= 'es_ES', # Reemplaza con el código de idioma de tu bot si es diferente
sessionId= caracteristicasBot['userId'], # Puedes usar un ID de usuario único aquí
text= caracteristicasBot['inputText'] # Un mensaje de prueba para activar el bot
)
print('El bot {} se ha ejecutado correctamente'.format(idBot))
except Exception as e:
print("Error al llamar al Bot {} de Lex. Causa del error ==> {} .".format(idBot, e))
return {
'statusCode': 200,
'body': 'Llamadas a los bots de Lex realizadas con éxito'
}
代码没有产生错误,但我的机器人的冷启动并没有消失。
我也有同样的问题。我曾尝试使用 cron 执行 Lambda 函数,该 cron 每小时执行一次 Lambda。冷启动并没有消失。但是,如果我使用测试证明执行 Lambda,然后进行证明调用,冷启动就会消失。
lex_client = boto3.client('lexv2-runtime')
for clave, valor in dictBotsLex.items():
try:
lex_request = {
'botId': clave,
'botAliasId': valor['botAlias'],
'localeId': 'es_ES',
'sessionId': valor['userId'],
'text': valor['inputText']
}
lex_response = lex_client.recognize_text(**lex_request)
time.sleep(5) # Añado un retraso para permitir que el bot cargue
se active
print('Lex V2 bot {} warmed up successfully'.format(clave))
except Exception as e:
print(f'Ha ocurrido un error el ejecutar el bot {clave} ==>', e)
return {
'statusCode': 200,
'body': 'Lex V2 bots warmed up successfully.'
}
我认为实施的延迟允许 Lex 机器人激活。然而,cron 每小时执行一次 Lambda,并没有效果。