← 所有文章
教程

LINE 加载动画不显示?检查聊天类型与显示时机

LINE 加载动画仅适用于用户与 LINE 官方账号的一对一聊天,而且用户必须正在查看该聊天画面。通过 POST /v2/bot/chat/loading/start 请求显示。如果用户正在别处,LINE 不会发送通知,也不会等用户下次打开聊天时补显。因此,请求成功不等于用户看到了动画。

要点

  • chatId 使用目标用户 ID,不是群 ID,也不是回复令牌。
  • 指定时长结束,或官方账号的新消息到达,动画就会消失。
  • 动画显示期间再次请求,会重新设定剩余显示时长;这不是任务进度上报。
  • 动画、webhook 确认、后台任务完成和最终回复是不同环节。

LINE 加载动画实际显示什么

官方加载动画指南规定显示时长为 5–60 秒,支持一对一聊天,不支持群聊或多人聊天。

接入时应分清三个计时概念:

计时控制什么不能证明什么
动画时长视觉提示可持续显示多久后台任务仍在运行
应用任务生命周期系统处理请求的时间用户正在查看聊天
回复机会官方回复操作是否仍可使用动画是否可见

不要用动画监控任务。动画消失也不代表 AI 处理失败:可能只是计时结束,或官方账号发来了一条消息。

若真正的问题是回复失败,请阅读LINE 回复令牌过期与慢回复指南。加载接口没有记录任何延长或更新回复令牌的行为。

发起一次受控显示请求

在后端准备 Messaging API channel access token,以及目标渠道一对一互动中的用户 ID。不要把令牌放进浏览器代码或共享日志。

以下 Node.js 示例使用 Messaging API reference 中的端点和字段。传入真实渠道令牌与用户 ID;这是说明性代码,不是已执行的集成测试。

async function showLoading(channelAccessToken, userId) {
  const response = await fetch(
    'https://api.line.me/v2/bot/chat/loading/start',
    {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${channelAccessToken}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        chatId: userId,
        loadingSeconds: 5
      })
    }
  );
  if (!response.ok) {
    throw new Error(`Loading request failed: ${response.status}`);
  }
}

首次测试时,让测试用户保持 LINE 聊天画面打开,显示期间不要再发送其他官方账号消息。分别记录 HTTP 结果与用户观察,不要把 HTTP 成功当成已读回执。

示例刻意不重试,也不发送答案。一个视觉提示请求失败,不应自动生成第二个业务任务,或延误已准备好的答复。

排查不可见或提前消失

现象首先检查建议处理
群里没有动画不支持该聊天类型不要不断用群 ID 重试
用户没打开聊天时没有动画用户未查看目标聊天打开聊天后重新做受控测试
稍后打开仍看不到动画不是延迟通知不要承诺下次打开时补显
确认消息到达后立即消失官方账号消息会结束动画明确文字确认与动画的先后顺序
显示时间比预期长另一次请求可能重设了计时检查所有 worker 和工具的调用
HTTP 请求失败凭证、目标、请求体及实际响应先修正请求,再调整界面逻辑

这些是排查分支,不是新增的 LINE 错误码。如果多个工具同时工作,可参考一个 LINE 官方账号接入多个工具的检查表,确认调用归属,避免多个 worker 独立刷新同一个提示。

不要把业务流程绑在动画计时上

建议采用以下应用设计:

  1. 先验证并持久化入站任务,再考虑视觉反馈。
  2. 由一个任务负责回复决策,仅在合适的一对一互动中请求短时动画。
  3. 独立运行实际处理;动画失败不应丢弃已保存的工作。
  4. 结果准备好后,选择合适的发送操作,不必等动画结束。
  5. 处理时间较长时,执行明确的延迟回复策略,不要无限续播动画。

LINE 说明:动画可见期间的第二次请求,会覆盖距离消失的剩余时长。这只是显示规则,不能据此延长服务器处理时间或保留回复机会。

UnifyPort 的适用范围与边界

UnifyPort 的非官方接口是独立的消息账号接入路径。LINE 授权指南描述的是二维码授权,并不是给官方账号绑定 channel access token。

当前公开的渠道动作矩阵没有提供该加载动画操作。不要自行假设存在“正在输入”端点,也不要把 chatId、loadingSeconds 塞进标准发送请求。文本发送文档使用的是 POST /v1/messages,字段为 account_id、to 和 message。

如果必须显示官方账号的这种动画,应使用官方 Messaging API。对于已连接消息账号的收件箱,可在自己的客服界面显示处理状态,并仅使用文档已公开的发送能力;本地状态不是 LINE 聊天动画。

常见问题

LINE 群聊能显示吗?

不能。官方文档限定为用户与官方账号的一对一聊天,不包括群聊或多人聊天。

用户不看聊天时会收到通知吗?

不会。该请求不发通知,稍后打开聊天也不会显示此前请求的动画。

loadingSeconds 会延长回复令牌吗?

没有这种文档约定。视觉计时与回复操作应独立处理。

为什么还没到指定时间就停止?

官方账号的新消息会结束动画。请同时检查计时和其他调用。

下一步与参考资料

按官方加载动画指南验证显示条件。如果使用 UnifyPort,则先检查渠道动作矩阵,再设计面向客户的控件。

官方资料核对日期:2026-10-20。

UnifyPort API

让消息接入变成一条稳定的产品管线。

先用统一 API 跑通发送,再用标准事件把所有入站消息接回业务系统。