WhatsApp部署的聊天机器人外部链接点击追踪方案咨询(AWS优先)
基于AWS的链接点击追踪方案实现建议
核心方案:API Gateway + Lambda + DynamoDB(无服务器架构)
这是最贴合你需求的AWS原生方案,无需维护服务器,按需付费,适配聊天机器人的流量规模。
步骤1:创建DynamoDB日志表
- 新建DynamoDB表,表名设为
LinkClicks - 主键使用
ClickID(字符串类型,用UUID生成唯一值) - 定义以下属性列:
UserID:字符串,存储用户标识(如alice)TargetURL:字符串,记录最终跳转的目标地址Timestamp:字符串/数字,记录点击时间(可用ISO格式或时间戳)SourceIP:字符串(可选),记录用户点击时的IP地址UserAgent:字符串(可选),记录用户的设备/浏览器信息
步骤2:编写Lambda处理函数
选择Python或Node.js编写函数,核心逻辑如下:
- 解析请求参数:从API Gateway的请求中提取
user查询参数(用户标识)和路径参数page(目标页面标识,如page01) - 拼接目标URL:根据
page参数生成最终跳转地址,如https://www.other-domain.com/{page} - 记录点击日志:向DynamoDB表插入一条包含用户信息、目标URL、时间戳的记录
- 返回重定向响应:返回HTTP 302状态码,在响应头
Location中填入目标URL
示例Python代码片段:
import boto3 import uuid from datetime import datetime dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('LinkClicks') def lambda_handler(event, context): # 解析参数 user_id = event['queryStringParameters'].get('user') page = event['pathParameters'].get('page') target_url = f"https://www.other-domain.com/{page}" # 生成唯一点击ID和时间戳 click_id = str(uuid.uuid4()) timestamp = datetime.utcnow().isoformat() # 插入日志到DynamoDB table.put_item( Item={ 'ClickID': click_id, 'UserID': user_id, 'TargetURL': target_url, 'Timestamp': timestamp, 'SourceIP': event['requestContext']['identity']['sourceIp'], 'UserAgent': event['requestContext']['identity']['userAgent'] } ) # 返回302重定向 return { 'statusCode': 302, 'headers': { 'Location': target_url } }
步骤3:配置API Gateway
- 创建REST API,添加资源路径
/shorter/{page},绑定GET方法 - 将GET方法集成到上述Lambda函数,开启Lambda代理集成模式
- 配置自定义域名(如
shorter.url),将API Gateway映射到该域名,生成友好的短链地址
步骤4:生成用户专属链接
聊天机器人根据用户ID和目标页面,生成类似https://shorter.url/shorter/page01?user=alice的链接,发送给WhatsApp用户。用户点击后会触发Lambda记录日志,再自动跳转到目标页面。
高流量场景优化方案:CloudFront + Lambda@Edge + S3
如果预期点击量较大,可使用CDN边缘处理降低延迟:
- 用CloudFront作为入口,绑定自定义域名
- 创建Lambda@Edge函数(部署在CloudFront边缘节点),在请求到达时记录点击日志到S3存储桶
- 直接从边缘节点返回302重定向响应,无需回源到AWS区域
- 后续可通过Athena分析S3中的日志文件,统计用户点击数据
其他可行方案
- 自定义短链服务:如果不想自建,可调研支持自定义追踪参数的短链工具,但需确保能获取到带用户标识的点击数据;不过基于AWS的自建方案更可控,更适配你的场景。
内容的提问来源于stack exchange,提问作者han-tyumi
相关产品推荐
相关产品推荐

