如何在AWS Connect中从坐席获取消息至Serverless Lambda
解决AWS Connect坐席消息无法接收的问题
1. 检查AWS Connect的消息转发配置
- 核实Connect的联系流:转接到坐席的流程里,必须添加「Invoke AWS Lambda function」步骤,当坐席发送消息时触发该Lambda,把消息内容、会话ID这类关键参数传递过去。
- 确认Connect的消息通道配置:如果使用Chat联系类型,得启用消息转发功能,目标端点设为你的API Gateway WebSocket地址或者对应Lambda的ARN。
2. 验证WebSocket API Gateway的接收设置
- 检查WebSocket API的路由配置:除默认的
$connect、$default路由外,需添加自定义路由(比如/receive-agent-message),并将该路由关联到负责消息转发的Lambda函数,让它把坐席消息推送到对应的WebSocket会话。 - 确认API Gateway的集成权限:给Connect服务主体配置IAM策略,允许
execute-api:Invoke权限,资源指向你的WebSocket API的ARN,确保Connect能正常调用API Gateway。
3. 排查Lambda的消息处理逻辑
- 接收坐席消息的Lambda需正确解析Connect传递的参数:Connect发送的消息会包含
ContactId、Message、ParticipantId等字段,你需要在用户发起会话时,把ContactId和WebSocket的connectionId存储到数据库或DynamoDB中,Lambda通过这些字段关联到对应的用户会话。 - 确保Lambda调用API Gateway的
PostToConnection动作:使用AWS SDK调用该动作,传入对应的connectionId和消息内容,同时处理用户连接断开的异常情况(比如用户关闭聊天窗口)。
4. 检查权限与角色配置
- 处理坐席消息的Lambda需要
execute-api:PostToConnection权限:在Lambda的执行角色中添加IAM策略,允许该动作,资源设为你的WebSocket API的ARN加上/*。 - Connect的服务角色要有调用Lambda的权限:给Connect的IAM角色添加
lambda:InvokeFunction权限,目标指向接收坐席消息的Lambda函数ARN。
5. 调试日志排查问题
- 查看Connect的联系流日志:在Connect控制台的「日志和指标」中查看联系流执行日志,确认坐席发送消息时是否成功触发了对应的Lambda。
- 检查Lambda的CloudWatch日志:查看接收坐席消息的Lambda是否被调用,是否存在解析参数失败、找不到对应
connectionId、调用PostToConnection出错等问题。 - 查看API Gateway的执行日志:启用API Gateway的访问日志,确认Connect的请求是否到达,是否有错误返回码。
内容的提问来源于stack exchange,提问作者Anil Soni
相关产品推荐
相关产品推荐

