# 会话一直无法完成时

Source: https://help.didit.me/zh/verification-sessions/session-not-finished
Updated: 2026-10-12

已放弃、已过期，以及停滞在进行中的会话，都意味着用户没有完成流程 - 本文介绍如何区分它们，以及值得修复的常见原因。

**已过期** = 用户从未打开过链接。**已放弃** = 用户打开后中途离开了。
**进行中** = 用户仍在流程之中。这三种状态都没有核验判定结果，也都不会
为从未运行过的步骤计费。

一个从未得出判定结果的会话，最终会停留在三种状态之一，它们的含义各不相同。

| 状态 | 发生了什么 | 该怎么做 |
|---|---|---|
| **已过期** | 链接在被打开之前就已超时失效 | 创建一个带有新链接的会话 |
| **已放弃** | 用户已开始但未能在规定时间内完成 | 请求重新提交或创建新会话 |
| **进行中** | 用户此刻正走到一半 | 无需处理 - 它并没有卡住 |

已放弃的会话可以请求重新提交，让用户在同一会话中重做所选步骤。如果链接在首次打开前已过期，请创建新会话。重新提交后仍须继续处理状态更新。

## 进行中并不是卡住了

一个长时间停留在进行中的会话，几乎总是名副其实 - 用户打开了链接，但还没有完成。它背后没有任何队列，也没有什么需要人工释放的东西。等用户完成剩余步骤后，它会自行变化；如果用户始终没有完成，它会变为已放弃。

由此引出两件每周都被问到的事：

- **您无法手动审核进行中的会话。** 因为检查尚未全部运行，还没有可作出的判定。推进它的方法是联系用户，请其**重新打开同一个链接**并完成剩余步骤；链接在会话时间窗结束前一直有效。
- **您也无法取消它。** 未开始或进行中的会话没有"关闭"操作。它会在时间窗过期时自行结束，或者由您删除，而删除是永久性的，所以只有在您确实想让记录消失时才这样做。

## 时间窗有多长

每个工作流设置未完成的会话保持打开的时长：从**1小时到4周**，未更改时为**7天**（工作流设置中的`session_expiration_time`，以秒为单位）。

已放弃的会话可以请求重新提交，让用户在同一会话中重做所选步骤。如果链接在首次打开前已过期，请创建新会话。重新提交后仍须继续处理状态更新。

![Didit 控制台中按状态筛选的核验记录列表](https://help.didit.me/screenshots/sessions-list-light.webp)

*未完成的会话应该靠筛选找到，而不是靠等待。*

## 用户放弃的常见原因（按通常发生的顺序）

**证件步骤。** 大多数流失都发生在这里。值得排查的常见原因：

- 你的工作流不接受用户实际持有的证件类型，导致他们卡在证件选择环节。详见[证件类型为何被拒绝](https://help.didit.me/zh/documents-coverage/document-upload-problems)。
- 流程要求上传证件背面，但用户持有的证件背面并没有所需数据。
- 光线不佳时自动拍摄始终无法触发，用户因此放弃，而没有切换为手动上传。

**摄像头步骤。** 如果摄像头始终无法打开，原因几乎总是环境因素：

- 链接是在另一个应用内置的浏览器中打开的（例如某个聊天应用自带的浏览器），该浏览器限制了摄像头访问。改用手机自带的浏览器打开链接即可解决。
- 该网站此前被拒绝过摄像头权限，用户需要到浏览器设置中重新授权。
- 摄像头已被另一个应用或标签页占用。在部分设备上，麦克风权限请求也可能阻塞摄像头。

**语言。** 如果流程使用的语言用户看不懂，他们就会离开。界面会自动检测浏览器语言，检测失败时回退到英语。如果你的用户所在市场浏览器语言设置不可靠，请在创建会话时明确指定语言。详见[设置核验语言](https://help.didit.me/zh/workflows/verification-languages)。

**流程长度。** 每多一个步骤都会损耗转化率。在入驻流程中间插入一份包含二十个字段的问卷，是一个常见的放弃点 - 而且与证件步骤不同，这完全在你的掌控之中。

## 找出用户在哪里流失

控制台中的**分析**功能会逐步展示转化漏斗，让你清楚看到究竟是哪一步流失了用户，而不必靠猜测。详见[如何解读你的分析数据](https://help.didit.me/zh/account-organization/analytics-dashboard)。

在单个会话中，各项检查的结果会显示哪些步骤已经完成 - 最后一个已完成的步骤，就是用户停下的位置。

## 提醒用户

如果你在创建会话时传入了联系方式，可以向用户发送提醒，而不必重新开始。只有当原会话从未被打开就已过期，或者确实已经过时时，创建新会话才是正确的做法。

## 这会让你花费多少

从未运行过的步骤不产生任何费用。计费按已完成的功能计算，因此一个已放弃的会话，只会为用户离开前实际完成的功能计费。一个从未被打开就过期的会话则完全不产生任何费用。

## 如果会话已完成，但你这边从未收到通知

这是另一个不同的问题，而且比看起来更常见：核验已经完成，控制台也显示了最终状态，但你的后端从未收到更新通知。这是 webhook 送达问题，而不是会话被放弃。详见[webhook 一直没有送达时](https://help.didit.me/zh/integration/webhook-troubleshooting)。
