如何在Event Bridge规则Lambda函数中关联AWS Connect来电号码数据
解决方案:直接在Event Bridge事件中获取来电号码的低延迟方案
核心最优方案:利用AWS Connect联系人属性传递来电号码
这是最直接、零额外查询延迟的方案——AWS Connect会将自定义联系人属性自动包含在所有后续触发的Contact Event中,包括Event Bridge推送的事件,无需额外存储组件。
具体操作步骤:
- 在AWS Connect呼入呼叫流中,在Lambda调用步骤之前添加「设置联系人属性」模块
- 选择「自定义属性」,添加键名(比如
callerPhoneNumber),值设置为来电号码对应的内置变量:$.Details.ContactData.CustomerEndpoint.Address(该变量直接对应呼入的电话号码) - 保存并发布呼叫流更新
配置完成后,Event Bridge触发Lambda时推送的Amazon Connect Contact Event的detail字段中,会包含contactAttributes对象,其中就有你设置的callerPhoneNumber属性,直接在Lambda代码中读取即可。
备选低延迟方案:用内存缓存替代DynamoDB临时存储
如果因业务限制无法使用联系人属性,可改用ElastiCache for Redis(内存缓存)替代DynamoDB存储关联数据:
- 在呼叫流的Lambda函数中,将
contactId作为键、来电号码作为值存入Redis,并设置匹配通话生命周期的短过期时间(比如30分钟) - Event Bridge触发的Lambda函数拿到
contactId后,直接从Redis查询对应号码,内存读写延迟远低于DynamoDB
为什么不推荐额外DynamoDB存储?
你提到的DynamoDB存储方案虽可行,但会引入额外的读写延迟与成本,而利用Connect原生的联系人属性传递数据,完全不需要额外存储组件,是最高效的选择。
内容的提问来源于stack exchange,提问作者Ares Stavropoulos
相关产品推荐
相关产品推荐

