我在亚马逊lex上有一个小机器人,我无法找到定义默认意图或后备意图的方法。
答案 0 :(得分:1)
截至目前,Amazon Lex不支持任何后备意图或默认意图。但是我找到了一个解决方法。这就是我的所作所为。
在聊天客户端和Lex之间设置API网关和Lambda功能。
您的聊天客户端将向API网关发送请求,API网关会将此转发给Lambda函数,Lambda函数会将请求转发给Lex(Lex将再增加一个lambda函数)。在返回Lex的响应时,如果它是错误消息并触发某些操作,您可以检查Lambda函数。
在Lambda函数中,我们可以使用这样的东西:
import logging
import boto3
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
client_run = boto3.client('lex-runtime')
client_model = boto3.client('lex-models')
def lambda_handler(event, context):
response = client_run.post_text(
botName='name_of_your_bot',
botAlias='alias_of_your_bot',
userId='some_id',
sessionAttributes={
'key1': 'value1'
},
inputText=event['user_query']
)
bot_details = client_model.get_bot(
name='name_of_your_bot',
versionOrAlias='$LATEST'
)
for content in bot_details['clarificationPrompt']['messages']:
if response["message"] == content['content']:
return error_handling_method(event)
for content in bot_details['abortStatement']['messages']:
if response["message"] == content['content']:
return error_handling_method(event)
return response["message"]
希望它有所帮助。