好友申请来了怎么自动处理?个人微信二次开发中的好友管理接口
2026/9/10 22:57:18 网站建设 项目流程

一、执行顺序——先做什么后做什么

通过申请后的操作有严格顺序:第一步调通过接口(好友关系建立),第二步查联系人详情(拿到完整资料),第三步改备注打标签(本地管理就绪),第四步发欢迎语(客户感知到服务)。

顺序不能乱:没通过就改不了备注(还不是好友),没通过就发不了消息(陌生人发不了)。先确保关系建立成功,再执行后续动作。每步检查返回码,前一步失败后续不执行。

二、失败处理——通过失败怎么办

通过接口可能失败:返回1004(限频)、返回其他错误码(实例异常)。失败后不能放弃,要进重试队列。重试有上限(3次),超限标记为"需人工处理"并通知管理员。

欢迎语发送也可能失败:通过成功但发消息失败。这种情况好友已经加了但没收到欢迎,需要一个补偿机制——定时扫描"已通过但未发欢迎"的好友,补发欢迎语。

三、幂等保障——重复回调不重复处理

好友申请回调可能重试(5秒超时触发3次重试),程序可能收到同一条申请多次。必须做幂等:用申请的唯一标识(申请人wxid+申请时间)做去重,已处理的申请不再重复执行。

幂等不做好会导致一个好友被通过多次(实际只会通过一次但后续动作重复执行)、发多条欢迎语。好友收到多条欢迎语体验很差。

四、执行质量检查

执行完一组操作后要检查质量:通过成功了吗?备注改了吗?欢迎语收到了吗?用定时任务扫描"通过但异常"的记录,输出异常报告。

执行环节对照

执行要点

做什么

不做的后果

顺序控制

通过→查详情→改备注→发欢迎

操作失败或乱序

失败重试

失败进队列重试,超限转人工

好友加了没服务

幂等去重

唯一标识去重,不重复处理

重复发多条欢迎

质量检查

定时扫描异常记录

问题积累无人知

执行环节代码

import hashlib def handle_apply(apply): # 幂等去重 key = hashlib.md5( f"{apply['fromUser']}{apply['createTime']}".encode() ).hexdigest() if db.exists("apply_log", key=key): return # 已处理,跳过 # 第一步:通过 r = api("acceptFriend", {"wId": WID, "wxid": apply["fromUser"]}) if r["code"] != "1000": retry_q.put(apply) # 进重试队列 return # 第二步:查详情 detail = api("getContactDetail", {"wId": WID, "wxid": apply["fromUser"]}) # 第三步:改备注 remark = f"{apply.get('source','未知')}-{detail['data'].get('nickname','')}" api("setRemark", {"wId": WID, "wxid": apply["fromUser"], "remark": remark}) # 第四步:发欢迎 r = api("sendText", {"wId": WID, "toUser": apply["fromUser"], "content": WELCOME_MSG}) if r["code"] != "1000": db.mark("apply_log", key, status="need_compensate") # 待补发 db.save("apply_log", {"key": key, "wxid": apply["fromUser"], "status": "done"})

落地建议

执行环节是好友管理的"最后一公里",做好才算真正自动化。四个要点里幂等最容易被忽略——不做好会导致客户收到重复消息,体验极差。建议上线前用重复回调压测验证幂等逻辑。好友管理接口参数说明参考 Eyun 开发文档,实例开通见 Eyun 官网。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询