很多人把"API 接口"和"微信机器人"当成一回事,其实它们是两层东西——API 是能力层(能做什么),机器人是应用层(怎么组合这些能力解决业务问题)。分不清这两层,就会出现"接口都调通了但机器人不好用"的情况。这篇讲清两层的关系和组装方法。

一、API 是能力层:只管"能做什么"

API 接口提供的是原子能力:发一条消息、拉一个好友列表、通过一次申请、踢一个人。接口不关心你为什么这么做,只管接收参数、执行、返回结果。

能力层的评价标准是稳定性和完整性——接口是否 7×24 可用、返回是否规范、能力覆盖是否全。这部分由平台方负责,你不需要开发,只需要调用。接口能力的完整清单见 Eyun 官网。

二、机器人是应用层:只管"业务要什么"

机器人是你自己的程序,把原子能力按业务逻辑组合起来。比如"新好友自动运营"这个机器人功能,背后是组合了四个能力:监听申请事件、调用通过接口、调用发送接口发欢迎语、调用资料接口打标签。

应用层的评价标准是业务效果——响应是否及时、回复是否准确、流程是否顺畅。这部分完全由你自己开发,平台给不了。

三、从接口到机器人:三层组装法

第一层,客户端封装——把 HTTP 调用包成方法,处理鉴权、重试、限流,业务代码不碰原始请求。第二层,事件路由——回调进来按事件类型分发到不同处理器,处理器之间互不干扰。第三层,业务策略——每个处理器里写业务规则,比如"什么申请自动通过""什么消息转人工"。

三层分开的好处是改一层不动其他层:换平台只改客户端封装,加新事件类型只加路由分支,调业务规则只改策略层。

四层关系对照

层

负责什么

谁开发

改动频率

API 能力层

原子能力+稳定性

平台方

低

客户端封装

鉴权+重试+限流

你

低

事件路由

按类型分发

你

中

业务策略

业务规则

你

高

三层组装骨架

import time, requests

# 第一层:客户端封装
class WeChatAPI:
    def __init__(self, base, token_getter):
        self.base = base
        self.token_getter = token_getter

    def call(self, path, data):
        return requests.post(self.base + path, json=data,
            headers={"Authorization": self.token_getter()},
            timeout=15).json()

    def send(self, wxid, content):
        time.sleep(3)                      # 封装层统一限流
        return self.call("/send", {"wxid": wxid, "content": content[:500]})

# 第二层:事件路由
class EventRouter:
    def __init__(self):
        self.handlers = {}

    def on(self, event_type, handler):
        self.handlers[event_type] = handler
        return self

    def dispatch(self, event):
        h = self.handlers.get(event.get("type"))
        if h: h(event)

# 第三层:业务策略
class BizPolicy:
    def __init__(self, api):
        self.api = api

    def handle_friend_request(self, event):
        if event["source"] == "qrcode":    # 策略:扫码直接过
            self.api.call("/friend/accept", {"req_id": event["req_id"]})
            time.sleep(3)
            self.api.send(event["wxid"], "欢迎!")

    def handle_message(self, event):
        if "人工" in event["content"]:     # 策略:提人工就转
            self.transfer_to_human(event)
        else:
            self.auto_reply(event)

# 组装
api = WeChatAPI(BASE, get_token)
policy = BizPolicy(api)
router = EventRouter()
router.on("friend_request", policy.handle_friend_request)
router.on("message", policy.handle_message)

# 回调入口只干一件事:分发
def webhook(event):
    router.dispatch(event)
    return {"code": 0}

落地建议

先分清两层——API 是能力层负责"能做",机器人是应用层负责"怎么组合",接口调通只是第一步,业务效果取决于应用层设计。组装按三层走:客户端封装管鉴权重试限流、事件路由管分发、业务策略管规则,三层独立改一层不动其他层。业务策略层是迭代最频繁的地方,规则尽量配置化。能力层由 Eyun 这类个人微信API平台 提供,三层组装在自建服务实现,接口字段以平台开发文档为准。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐