← 所有文章
指南

LINE Rich Menu Insights 是分析工具,不是入站路由器

7 月 1 日,LINE 宣布通过 Messaging API 创建的 rich menu 已经可以读取统计数据,包括展示次数、点击次数和按天聚合的洞察数据。再往前一个月,LINE 也确认了同一产品表面上的另一个变化:从 2026 年 5 月 26 日起,Get rich menu list 端点限流从每秒 2000 次调整为每秒 10 次。

如果把这两件事当作分析和配置更新来看,它们都很合理。产品团队需要知道哪个 rich menu 区域被点击更多,运营团队需要审计当前发布的是哪套菜单。这些流程都不应该跑在客服消息处理的关键路径里。真正的风险,是小团队把 LINE 官方 Messaging API 当成实时路由层,然后围绕并不适合逐条消息决策的端点写轮询。

如果你的目标是接收 LINE 消息,把它们送进 Slack、CRM 或客服队列,并且之后还要接入 WhatsApp 或 Zalo,架构上应该拆成两个循环:一个慢速的 LINE 官方分析循环,一个事件驱动的入站会话循环。

LINE 具体变了什么

7 月 1 日的更新新增了两个官方 rich menu 洞察端点:Get rich menu insight totalsGet rich menu insight by day。以前,通过 Messaging API 创建的 rich menu 无法用同样方式读取这些统计,只能在 LINE Official Account Manager 里查看对应能力。现在,使用 Messaging API 创建菜单的团队可以直接拉取报表数据。

5 月 26 日的更新更偏工程运维。LINE 将 Get rich menu list 的限流从每秒 2000 次改成每秒 10 次,并说明这次通知中没有调整其他端点的限流。

重点不是每秒 10 次够不够你的后台页面使用。大多数情况下是够的。重点是 rich menu 元数据已经很明确地属于缓存配置,而不是高频依赖。如果你的应用每收到一条用户消息都去检查 rich menu 状态,这个设计方向就是反的。

三个循环,三种速度

LINE 客服系统经常把三类问题混在一起,但它们不应该共享同一个时钟。

分析循环。 产品和市场团队读取 rich menu 展示量和每日点击量。它可以每小时或每天跑一次,可以失败后重试,也可以接受延迟,因为它回答的是“昨天哪个菜单入口点击更多”。

配置循环。 工程侧读取当前 rich menu 列表,保存菜单 ID,在菜单变化时更新内部状态。它应该被缓存。新的 10 rps 限流提醒我们,配置读取不应出现在消息热路径里。

入站路由循环。 客服侧需要立刻知道客户刚刚发了消息、哪个账号收到了消息、发送者是谁、文本或媒体是什么、应该路由到哪里。这个循环应该由事件驱动,不应该等待 rich menu list、insight 或报表刷新。

UnifyPort 放在第三个循环里。它不替代 LINE 官方分析端点,而是为 LINE、WhatsApp、Telegram、TikTok、Zalo 和 X 提供 webhook-first 的入站层,并在多个平台之间使用同一套标准事件结构。

入站路径应该怎么走

使用 UnifyPort 时,一条 LINE 消息会作为 message.received webhook 事件到达你的服务端。投递方式是对你的端点发起 HTTP POST。事件信封在支持的平台之间保持一致:idtypeprovideraccount_idoccurred_atdata

一条 LINE 入站文本消息可以按下面的结构处理:

{
  "id": "evt_4f1b9c2a70",
  "type": "message.received",
  "provider": "line",
  "account_id": "acc_8c21d0",
  "occurred_at": "2026-07-04T02:18:30Z",
  "data": {
    "conversation": { "id": "U4af2c891", "type": "user" },
    "sender": { "id": "U4af2c891", "type": "user", "name": "Mika Tanaka" },
    "message": {
      "id": "msg_20260704_001",
      "type": "text",
      "text": "Can you check whether my appointment moved to Monday?",
      "direction": "inbound",
      "sent_at": "2026-07-04T02:18:29Z"
    },
    "event": { "kind": "message_received" }
  }
}

你的 webhook 端点可以订阅 message.received,也可以用 ["*"] 订阅完整标准事件目录。如果启用签名,每次投递都会带上 X-Device-TimestampX-Device-Signature。签名是使用该端点的 signing_secret,对时间戳、一个点号和原始请求体做 HMAC-SHA256 后得到的十六进制值。

这样路由服务的规则就很清楚:先验证签名,再按事件 ID 去重,保存需要的 payload,然后路由消息。rich menu insight 调用不应该进入这个路径。

LINE 官方洞察应该放在哪里

新的 insight 端点有价值,但它回答的是另一个问题。

你可以用它统计 rich menu 里的“客服”区域是否比“价格”区域点击更多,也可以比较工作日和周末的互动差异,还可以判断季节性菜单是否值得继续上线。调度频率应该保持低速:业务报表每天一次,活动期间最多每小时一次。

不要用它推断用户是否正在等待客服。rich menu 点击不是消息。按天汇总的洞察报表不是队列。带有 10 rps 限流的配置端点也不是路由原语。

最简单的拆分方式是:

关注点最合适的数据源时机
rich menu 展示和点击报表LINE rich menu insight 端点每小时或每天
当前 rich menu 配置LINE rich menu list 端点缓存,远离热路径
实时客户消息UnifyPort message.received webhook即时事件
跨平台路由UnifyPort 标准 webhook 信封每个平台共用同一 handler

这种拆分也让团队更稳定。分析任务失败时,客服队列仍能收到消息。rich menu 报表延迟时,CRM 仍会记录每一条入站会话。以后加 WhatsApp 或 Zalo,路由循环不用重写,只有分析循环仍然是 LINE 专属。

一个小团队可落地的架构

小团队不需要复杂架构。

先注册一个 UnifyPort webhook 端点,设置 signing_secret,订阅 message.received。在 handler 中验证 X-Device-Signature,保存原始事件,并按 provideraccount_iddata.sender.iddata.message.type 路由。

再单独跑一个定时任务处理 LINE 官方 rich menu 报表。这个任务调用 insight 端点,把指标写进数仓或表格,绝不阻塞入站路由。它也可以刷新 rich menu list 缓存,但这个缓存对客服 handler 应该是只读信息。

当客服团队需要回复时,出站路径仍然是明确的:通过 POST /v1/messages 发送目标账号和消息内容。入站事件则继续作为“谁在什么时候说了什么”的事实来源。

最终模型很清晰:

  1. LINE 官方 API 负责 LINE 专属分析。
  2. UnifyPort 负责多平台标准化入站投递。
  3. 客服后端不在消息路径里轮询官方配置端点。
  4. 增加另一个聊天应用时,变化的是数据,不是架构。

真正的提醒

LINE 7 月 1 日的 insight 更新,对关心 rich menu 表现的团队是好消息。5 月 26 日的限流变化则划出了一条边界:不要把 rich menu 配置当成实时消息基础设施。

如果你的 LINE 工作主要是营销分析,就使用新的官方 insight 端点。如果你的工作是客户运营,就让入站消息走事件驱动。如果团队已经同时接收 LINE、WhatsApp、Zalo、Telegram、TikTok 或 X 上的客户消息,就使用同一种 webhook 结构,让所有平台进入同一套路由管道。

分析可以轮询,客户消息应该直接到达。