Facebook Messenger提醒机器人用户关联问题:如何识别关联用户对?
如何实现提醒机器人中发起用户与被分享用户的关联
针对你遇到的分享时无法传递发起用户数据的问题,这里有几个实用的解决方案,适配不同平台的支持情况:
1. 生成带发起者ID的专属启动链接
这是最直接且体验最好的方案,大多数聊天机器人平台都支持带参数的启动链接。具体步骤:
- 当发起用户想要分享机器人给他人时,机器人为其生成一个包含自身
userId的专属链接,比如格式可以是:https://your-bot-url/start?inviter=发起者ID - 发起用户将这个链接分享给目标用户,目标用户点击链接后进入机器人页面,点击「开始使用」时,平台会把链接中的
inviter参数一并传递到你的Lambda函数中 - 此时你就能同时获取到新用户的userId和发起者的userId,直接在数据库中建立两者的关联关系
如果担心用户手动篡改链接参数,可以给参数加上简单的签名验证,比如把发起者ID + 密钥做哈希处理,将哈希值也放在参数里,Lambda收到请求后重新计算哈希值进行比对,确保参数未被修改。
2. 临时邀请码机制
如果平台不支持带参数的启动链接,可以采用邀请码的方式:
- 发起用户请求分享时,机器人生成一个唯一的临时邀请码(比如6位随机字符串),并将邀请码与发起者ID绑定存储到数据库中
- 发起用户将邀请码分享给目标用户,目标用户点击「开始使用」后,机器人主动提示输入邀请码
- 用户输入邀请码后,Lambda查询数据库找到对应的发起者ID,完成两个用户的关联
这个方案的缺点是需要用户多一步输入操作,但胜在兼容性强,几乎所有平台都能实现。
3. 基于分享上下文的关联(依赖平台能力)
部分平台允许在分享时携带自定义上下文信息,你可以尝试:
- 当发起用户触发分享操作时,机器人自动在分享的消息内容中嵌入发起者ID的标记(比如用特殊格式隐藏,比如
[inviter:12345]) - 当新用户点击「开始使用」后,通过平台API获取新用户进入时的上下文消息(即那条包含标记的分享消息)
- 从消息中提取发起者ID,完成关联
这个方案需要平台支持获取用户进入时的上下文消息,适用性稍窄,但体验较好,不需要用户额外操作。
另外,记得处理「用户直接搜索机器人进入」的情况——这种时候没有关联的发起者ID,你可以提示用户输入邀请码,或者直接引导用户发起新的提醒任务。
内容的提问来源于stack exchange,提问作者caca
相关产品推荐
相关产品推荐

