如何解决 Amazon Connect 中的联系流错误?

2 分钟阅读
0

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

简短描述

有关解决联系流错误的教程,请参阅 Amazon Connect 讲习会中的联系流错误疑难解答

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

联系流日志

开启流量日志。使用联系流日志来了解调用如何遍历联系流的不同块。此外,使用联系流日志排除故障并找出错误发生的位置。

联系流导出

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

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

  • 查看调用如何遍历此流。
  • 关联联系流日志。
  • 在沙盒环境中重现该问题。

Amazon Connect 的 Amazon CloudWatch 指标

有关详细信息,请参阅使用 CloudWatch 监控实例

使用 ContactFlowErrorsContactFlowFatalError 指标来监控与联系流相关的事件并为其排障:

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

要对联系流错误进行故障排除,请查询 CloudWatch Logs Insights,以确定联系流中的哪个块进入错误分支。然后,使用块来确定错误的根本原因。

解决方法

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

1.    打开 Amazon CloudWatch 控制台

2.    在导航窗格中,选择 Log 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 警报配置详细信息,用于确定哪个指标(ContactFlowErrorsContactFlowFatalError)配置了警报以及警报的关联联系流。如果指标是 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"
}

受影响的 InvokeExternalResourceContactFlowModule 类型,这指的是 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 函数

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

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

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

由于存在多个块,可能会出现联系流错误。有关块和错误原因的更多信息,请参阅 Amazon Connect 讲习会联系流错误疑难解答中的附录


AWS 官方
AWS 官方已更新 2 年前