python - Lex Bot 控制台上出现错误 - 在同一话语中第二次执行了履行 lambda

标签 python aws-lambda amazon-lex

我在 Lex 中创建了一个机器人,然后在同一个机器人中创建了两个意图 - intent1intent2 并使用话语 现在给我叫一辆出租车我想分别在 {TravelDate} 的 {TaxiTime} 乘出租车前往 {Location}(第一个在 intent1 中,第二个在 intent2 中)。这两个意图都调用不同的 lambda 函数,并且在 lambda 函数内部我访问 RDS 以添加出租车的预订信息。当我通过说这两个话语中的任何一个从 Lex 控制台进行测试时,lambda 函数完全执行,因为我可以看到数据库记录已更新,但在 Lex 机器人测试控制台上,我看到在同一话语 Lex 错误上达到了履行 lambda 的第二次执行。在我的代码中我有这一行:

def delegate(session_attributes, slots):
    return {
        'sessionAttributes': session_attributes,
        'dialogAction': {
            'type': 'Delegate',
            'slots': slots
        }
    }

def book_taxi(intent_request):

        confirmation_status = intent_request['currentIntent']['confirmationStatus']
#bunch of other processing code
        logger.debug('Confirmation = {}'.format(confirmation_status))
        if confirmation_status == 'Confirmed':

            try_ex(lambda: session_attributes.pop('confirmationContext'))
           logger.debug('confirmation_context = {}'.format(confirmation_context))
            if confirmation_context == 'AutoPopulate':
                    return elicit_slot(
                        session_attributes,
                        intent_request['currentIntent']['name'],
                        intent_request['currentIntent']['slots']

                    )
            return delegate(session_attributes, intent_request['currentIntent']['slots'])
logger.debug('Booked Taxi at={}'.format(reservation))

我的猜测是上面代码中的 delegate() 调用导致了问题,因为在我的日志文件中,我可以看到前两个调试日志为“Confirmed”和“None”值,但最后一个 logger.debug () 不在日志文件中,这意味着 delegate() 被调用,这导致 Lex 控制台出现错误。

此错误可能是什么问题?

最佳答案

您的话语可能包含调用多个意图的文本。 这就是提出问题的原因。 您检查两个意图中的话语,并从两个相似类型的话语中删除一个。

关于python - Lex Bot 控制台上出现错误 - 在同一话语中第二次执行了履行 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448538/

相关文章:

javascript - 错误 "LexAudio.conversation is not a constructor"。 React 组件调用 vanilla javascript

python - 如何正确触发 python 扭曲传输?

Python网络爬虫找不到存在的关键字

python - 我可以将 xvfb 与 AWS Lambda 一起使用吗?

javascript - AWS lambda : Clarification on retrieving data from event object

node.js - AWS LEX Web UI 示例

Python Pandas - 将行添加到空数据框

python - 如何将整数位模式解包到 tf.Tensor 中?

python - 如何使用 python 检查日期是否为空?

node.js - 结合使用AWS Lambda和Elastic Search,从搜索客户端获取未定义