如何排查 Amazon Connect 中的联系流错误?

2 分钟阅读
0

我想调查联系流,以确定联系流中的哪个区块符合错误分支。

简短描述

有关排查联系流错误的教程,请参阅 Amazon Connect 研讨会中的排查联系流错误

要调查联系流并对其进行故障排除,您必须具备以下先决条件:

联系流日志

开启流日志。使用联系流日志来了解呼叫经过联系流不同区块的整个过程。此外,使用联系流日志来排除故障并找出错误发生的地方。

联系流导出

有关导出联系流的说明,请参阅如何导入/导出流

使用导出以更好地了解联系流:

  • 查看呼叫是如何通过流进行的。
  • 关联联系流日志。
  • 在沙盒环境中重现该问题。

Amazon Connect 的 Amazon CloudWatch 指标

有关更多信息,请参阅使用 CloudWatch 监控您的实例

使用 ContactFlowErrorsContactFlowFatalError 指标对与联系流相关的事件进行监控和故障排除:

  • ContactFlowFatalError 指标表示因系统错误导致流无法运行的次数。例如,Amazon Connect 中断。
  • ContactFlowErrors 指标表示错误分支为联系流运行的次数。

要排查联系流错误,请查询您的 CloudWatch Logs Insights 以确定联系流中符合错误分支的区块。然后,使用该区块来确定错误的根本原因。

解决方法

首先,运行查询以查看相关的错误事件:

1.    打开 Amazon CloudWatch console (Amazon CloudWatch 控制台)

2.    在导航窗格中,选择 Logs Insights

3.    为您的 Amazon Connect 实例日志选择日志组的名称。格式为 /aws/connect/yourinstancename

4.    在右上角,指定查询时间刻度

5.    对特定时间范围运行以下查询:

fields @timestamp, @message
| filter @message like 'Results'
| parse @message '"Results":"*","ContactId":"*","ContactFlowId":"*","ContactFlowName":"*","ContactFlowModuleType":"*"' as Results, ContactId, ContactFlowId, ContactFlowName, BlockType
| filter Results like 'rror' or Results like 'ailed' or Results like 'imeout' or Results like 'xception' or Results like 'No prompt provided' or Results like 'Instance has reached concurrent Lambda thread access limit' or Results like 'nsupported' or Results like 'nvalid' or Results like 'not found' or Results like 'execution limit reached'
| sort @timestamp asc
| display Timestamp, Results, ContactId, ContactFlowId, ContactFlowName, BlockType

-或者-

对特定的联系 ID 运行以下查询:

**注意:**将 ContactID 的值替换为您的联系 ID。

fields @timestamp, @message
| sort @timestamp desc
| filter ContactID = "162faf0b-4e68-4a4b-bbde-96c9631f2a95"

然后,要排查联系流错误,请查看以下资源:

  • CloudWatch 警报配置详细信息,用于确定哪个指标(ContactFlowErrors 还是 ContactFlowFatalError)配置了警报以及警报的相关联系流。如果是 ContactFlowFatalError 指标,表示由于系统错误导致流无法运行,则可能是服务问题。如果配置警报的指标是 ContactFlowErrors,则表示有联系区块沿着错误分支向下传输。
  • 与受影响的联系流相关的日志可用于确定导致错误的区块。有关流区块的更多信息,请参阅流区块定义

有时,联系流区块会导致 CloudWatch 发生错误,但没有相应的 CloudWatch 日志。有关常见联系区块的列表,请参阅 Amazon Connect 研讨会中排查联系流错误部分的附录

联系流中的 AWS Lambda 错误

联系流中最常见的错误发生在调用 Lambda 函数区块上。此联系流区块调用 AWS Lambda,并可选择返回可用于设置联系属性的键值对。

要调查 Lambda 函数错误,请在 CloudWatch Logs Insights 中运行以下查询:

fields @timestamp, @message
| sort @timestamp desc
| filter Results LIKE "Error"

输出与以下内容类似:

{
    "Results": "The Lambda Function Returned an Error.",
    "ContactId": "alebb22a-93c4-4f90-8f22-b3718c4578E0",
    "ContactFlowId": "contact-flow-id",
    "ContactFlowName": "chat",
    "ContactFlowModuleType": "InvokeExternalResource",
    "Timestamp": "2023-12-20T14:14:13.794Z",
    "Parameters": {
        "FunctionARN": "arn:aws:lambda:us-west-2:1099999:function:Connect-Wallboard-Historical-Metrics",
    },
 "TimeLimit": "3000"
}

受影响的 ContactFlowModule 类型的InvokeExternalResource,是指 Lambda 函数、联系流名称和错误。查找受影响的 Lambda 函数。然后,关联时间戳或联系 ID,以获取导致 Lambda 执行日志错误的确切事件。

拒绝访问的异常情况 以下是 InvokeExternalResource 区块导致的联系流日志错误的示例:

{
    "Results": "Status Code: 403; Error Code: AccessDeniedException; RequestID: 435c21cc-19d8-4847-864e-e32867fe3a70
    "ContactId": "alebb22a-93c4-4f90-8f22-b3718c4578E0",
    "ContactFlowId": " arn:aws:lambda:us-west-2:1099999/contact-flow/65569e69-5c67-4061-8776-fd1d501c4838",
}

“Access Denied(拒绝访问)”错误表示联系流无权调用 Lambda 函数。有关向实例添加函数的详细步骤,请参阅向您的 Amazon Connect 实例添加 Lambda 函数

没有将联系流的 Amazon Connect 日志消息与 Lambda 执行日志关联起来的 requestId。如果 Lambda 函数打印调用事件,则使用 ContactId 关联联系流日志和 Lambda 函数执行日志。如果函数不打印调用事件,则使用联系流日志中的时间戳来筛选 Lambda 函数的执行日志。

如果调用 Lambda 函数区块返回错误,但 Lambda 函数中没有相应的条目,请验证以下配置:

  • Lambda 有效负载可能为 NULL。
  • 函数返回的输出必须是键和值对的扁平化对象,其值包括字母数字、短划线和下划线字符。
  • Lambda 函数响应不是简单的字符串映射,或者响应大于 32k。最佳做法是测试您的 Lambda 函数返回的输出,以确认返回到 Amazon Connect 时函数的使用是否正确。

联系流错误可能由多个区块导致。有关区块和错误原因的更多信息,请参阅 Amazon Connect 研讨会中排查联系流错误部分的附录


AWS 官方
AWS 官方已更新 1 年前
没有评论