我在 amazon lex 上有一个小型机器人,我无法找到定义默认意图或后备意图的方法。
问问题
1060 次
1 回答
1
截至目前,Amazon Lex 不支持任何回退意图或默认意图。但是我找到了一种解决方法。这就是我所做的。
在您的聊天客户端和 Lex 之间设置 API Gateway 和 Lambda 函数。
您的聊天客户端将向 API Gateway 发送请求,API Gateway 会将其转发给 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"]
希望能帮助到你。
于 2017-12-08T07:24:01.803 回答