> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 工作流构建器：无代码 KYC 流程设计器

> 使用 Didit 可视化工作流构建器，通过拖放搭建无代码身份验证流程，支持证件、活体、AML、NFC 与条件分支。仅对已完成的步骤付费。

Didit 的编排工作流是设计和部署完整多步骤身份验证流程最强大、最灵活的方式。

本 Didit Academy 课程将在真实控制台中演示如何从模板开始构建并发布验证工作流，包括为每个节点选择检查项、设置规则和阈值、AML 分支、Webhook 节点以及版本回滚。

[构建你的第一个验证流程 | Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?rel=0\&playsinline=1)

此集成路径让你能够利用 Didit V2 平台的全部智能能力，通过我们的无代码可视化构建器创建复杂的验证序列。你只需在 Business Console 中定义一次逻辑，Didit 即可处理整个面向用户的体验、状态管理和条件步骤。

当你需要用户入驻（KYC）、年龄验证或重新认证的完整端到端解决方案，并希望以最少的开发工作快速上线，同时保留对流程的最大控制权时，请选择此集成路径。

## 国家和地区身份识别方式

在身份证件验证中，打开 **国家/地区与允许的身份验证方式**，为每个国家和地区配置证件采集、非证件查询和数字身份钱包。
**其他设置** 包含证件子类型、查询尝试次数和回退规则。

非证件查询使用你所在组织的数据库核验服务定价。
每次已完成的尝试都会单独计费，包括部分匹配和无匹配结果：两次已完成的尝试意味着两次计费。
格式错误以及未返回结果的服务商故障不计费。
如果多个数据库服务响应同一次尝试，则其适用的服务价格会相加。
默认设置为**回退前 1 次尝试**，可配置为 1 至 5 次。
当已完成的查询回退到证件验证时，证件采集将另行计费。

正式环境应用只能启用可用于生产环境的钱包。
尚未推出的钱包保持禁用状态。
沙盒应用可以使用模拟结果测试目录中的每个钱包；沙盒中可用并不代表生产环境中可用。
有关查询和钱包失败场景，请参阅 [沙盒测试](https://docs.didit.me/zh/integration/sandbox-testing.md)。

## 工作流版本管理

工作流支持**草稿/发布版本管理**。这意味着你可以安全地迭代工作流，而不影响正在进行的会话：

* **草稿版本**可完全编辑，你可以自由添加、删除或重新组织节点
* **发布**草稿会创建一个不可变的版本，新会话将使用该版本
* **历史版本**会被保留，因此你可以检查任何过往会话所用的确切配置
* **会话始终引用其创建时所用的特定版本**，即使你发布更新后也能保证一致性

要修改已发布的工作流，请基于已发布版本创建新草稿，进行编辑，并在准备就绪后发布。版本历史可通过 Management API 查看。

***

## 构建工作流的两种方式

Didit 提供**两种不同的方式**来创建验证工作流，您可以根据需求的复杂程度进行选择：

![Didit KYC 工作流简单模式与高级构建器模式并排展示](https://mintcdn.com/didit-0f962782/DSfxHq_ggIpqiQSG/images/workflows-simple-and-complex.jpg?fit=max\&auto=format\&n=DSfxHq_ggIpqiQSG\&q=85\&s=07f4e97f94cb1179de16732573612b6e)

### 1. 简单模式: 基于模板的构建器

**简单模式**适合快速上手。选择一个预置模板，按需开启或关闭功能，即可投入使用。

![Didit 身份验证工作流简单模式模板构建器界面](https://mintcdn.com/didit-0f962782/DSfxHq_ggIpqiQSG/images/workflows-simple.jpg?fit=max\&auto=format\&n=DSfxHq_ggIpqiQSG\&q=85\&s=ebe4da7cf6549793629497fb36053fe2)

**适用场景：**

* 快速设置与部署
* 标准验证流程
* 初次接触身份验证的团队
* 符合常见模式的使用场景

**操作步骤：**

1. 选择工作流模板（KYC、年龄验证等）
2. 开启或关闭功能（活体检测、人脸比对、AML 等）
3. 为每项功能配置基础设置
4. 发布并开始验证

***

### 2. 高级模式: 可视化图形构建器

**高级模式**释放了 Didit 编排引擎的全部能力。您可以使用可视化图形编辑器，通过拖放节点、分支和自定义逻辑，构建复杂的条件验证流程。

![基于节点的工作流可视化图形构建器](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/node-based-workflow.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=2c0997ab8bbb09dbf7c4cb26b201eced)

**适用场景：**

* 复杂的多路径验证流程
* 基于用户数据或验证结果的条件逻辑
* 自定义业务规则与分支
* 企业级合规要求

**主要功能：**

* **可视化节点编辑器**：在无限画布上拖动、放置并连接节点
* **智能连接**：从节点的连接点拖到空白处，即可立即创建并连接新节点
* **条件分支**：根据提取的数据、验证状态、国家/地区、证件类型、[证件子类型](https://docs.didit.me/zh/core-technology/id-verification/document-subtypes-id-verification.md)、签发日期、年龄、Webhook JSON 响应路径或自定义规则进行分流
* **操作自动化**：根据流程结果添加标签、设置元数据或转入人工审核
* **键盘快捷键**：撤销（Ctrl/Cmd+Z）、重做（Ctrl/Cmd+Shift+Z）、删除（Delete/Backspace）
* **缩放与平移**：通过滚动缩放、拖动平移，轻松浏览复杂流程

#### 图形构建器节点类型

| 节点类型 | 图标颜色 | 说明 | 示例 |
| - | - | - | - |
| **功能节点** | 蓝色 | 处理用户数据的验证检查 | 身份证件验证 (OCR)、活体检测、人脸比对、NFC、AML、电话/邮箱验证、问卷、地址证明、Document AI、数据库核验、设备与 IP 分析、年龄估算 |
| **分支节点** | 紫色 | 基于数据或结果的条件分流 | 按国家/地区、风险评分、证件类型、证件子类型、年龄、签发日期、距签发月数、验证状态分流 |
| **操作节点** | 琥珀色 | 修改会话或用户数据的自动化触发器 | 添加标签、移除标签、设置元数据、添加审核备注 |
| **Webhook 节点** | 青色 | 可将数据传入后续分支的 HTTP 请求 | 将会话数据发送至您的服务器、解析 JSON 响应，并按 `category`、`status` 或 `tags.0` 等路径分支 |
| **状态节点** | 绿色/红色/琥珀色 | 结束验证流程的最终结果 | 已通过、已拒绝、审核中 |

#### 功能节点分类

**用户交互功能**（可启动工作流）：

* 身份证件验证 (OCR)
* 活体检测
* 人脸比对
* 年龄估算
* 电话验证
* 邮箱验证
* 问卷
* 地址证明
* Document AI
* NFC / ePassport

**后台功能**（自动运行，无需用户交互）：

* AML 筛查（需要前置的 **身份证件验证**、KYB Registry 或 Document AI 步骤，参见[筛查对象](#筛查对象)）
* 数据库核验（需先执行 OCR）
* 设备与 IP 分析

> **注意：** 后台功能在构建器中带有特殊标识。一旦满足其依赖条件，便会自动执行，无需用户交互。

每个功能节点的第一个配置标签页都以**验证引擎**控件开头：您可以使用 Didit 自有引擎运行检查，也可以切换为您通过[市场](https://docs.didit.me/zh/console/marketplace.md)连接的第三方服务商。若该服务商不可用，系统会自动回退至 Didit。

#### 筛查对象

AML 筛查通常从其前置步骤获取筛查对象：即 **身份证件验证**步骤从证件中读取的人员，或 **KYB Registry** 步骤返回的企业。有些流程两者都没有。完全基于 **Document AI** 构建的流程（例如税务证明或经公证的公司章程等非标准化证件）已经包含姓名、出生日期、证件号码和国家/地区，只是使用的是您自己的字段键。

AML 节点的**高级**标签页用于指定这些字段键如何对应到筛查中：

* **实体类型**：筛查**个人**，或已上传证件中所提及的**企业**。企业节点检索的是企业登记信息，而非个人信息。
* **字段来源**：将四项筛查输入（姓名、出生日期、国家/地区、证件号码）各自映射到 Document AI 字段、问卷答案，或在创建会话时发送的值（`expected_details` / `metadata`）。您已命名为 `full_name` 的 Document AI 字段将被自动识别。
* **筛查数据不完整**：筛查所基于的身份信息不完整时如何处理。默认为人工审核；只有在流程明确仅持有姓名时，才选择**无操作**。

在依赖工作流之前，有两点需要了解。如果没有 ID Verification（身份证件验证）或 KYB Registry 步骤，**姓名为必填项**，工作流在有人填入姓名之前无法发布，因为没有姓名就无法进行搜索。此外，AML 精度直接取决于您提供的标识符数量：仅用姓名进行筛查，正是审核人员抱怨误报量大的原因，因此只要证件上带有出生日期和国家/地区，就应将其映射进来。

#### 分支条件如何读取会话数据

**条件读取哪条记录。** 分支条件绑定到构建它时所用的功能节点，并读取该节点的结果。当一个节点产生了多条记录时，条件读取**最新的**那条。这一点对 **Device & IP Analysis（设备与 IP 分析）** 尤为重要：Didit 会为会话所用的每个设备和地址各记录一次观测，因此用户在会话中途切换手机或网络，同一节点上就会留下多条记录。例如，`IP COUNTRY is in [...]` 这样的规则，会针对**最新的**观测进行判断，这也是会话的 Device & IP Analysis 面板中首先显示的记录，以及决策 payload 中的 `ip_analyses` 数组中排在第一位的记录。当会话存在多次观测时，还会带有 `MULTIPLE_DEVICES_IN_SESSION` 警告，提示您应查看完整列表，而不能只看分支结果。

**国家/地区的值。** 国家/地区条件按国家/地区本身进行匹配，而不是按其写法匹配。请从字段选择器中选择国家/地区，Didit 会对比较双方进行标准化处理，因此以 ISO 3166-1 alpha-3（`UKR`）编写的规则，仍可匹配以 alpha-2（`UA`）采集的值。

**缺失值、空值与否定比较。** 完全**没有值**的字段（证件中没有该信息、未发送元数据键、功能未运行）只会匹配 `is empty` 和 `equals not_defined`；其他所有比较，包括 `equals`、`contains`、`greater than`，以及 `not equals` 和 `not in`，都不会匹配，分支节点会转向其下一个分支。值为**空字符串**的字段则是有值的，而不是缺失字段：若创建会话时传入 `"metadata": {"credential_state": ""}`，该会话会在 `metadata.credential_state equals IL` 上失败，但会通过 `not equals IL`、`not in [IL, MA, NJ]` 和 `equals ""`（`is empty` 两种情况都会匹配）。因此，若某个分支基于否定比较予以通过，那么状态被发送为空的会话也会被通过；而省略该键的同一会话则会走兜底分支。当您基于 `not equals` 或 `not in` 进行路由时，请在同一分支中添加 `metadata.<key> is not empty`（AND 逻辑），使两种情况都能在缺失值应当到达的地方结束。分支按顺序求值，第一个匹配的分支生效；兜底分支（即没有任何条件的分支）**仅在没有其他分支匹配时**才会被采用，因此请为每个分支节点设置兜底分支，并使其终止于您希望意外值所到达的位置。如果一个会话进入审核中，而任何功能上都没有警告，那是因为流程图中的某个状态节点将其路由到了那里，而不是因为某项检查；分支节点的兜底分支通常是造成这种情况的原因。

**会话元数据。** 创建会话时在 `metadata` 中发送的值，对每个分支都可作为 `metadata.<key>` 使用，并可与固定值或其他会话字段进行比较（例如 `metadata.min_age <= Age`）。数字按数值进行比较，因此 `18` 与 `"18"` 的效果相同。

**沙盒/测试模式。** 分支条件、元数据和状态节点在沙盒中的运行方式与正式环境完全相同，而且沙盒本身永远不会将会话置于审核中。区别在于证件：沙盒会话所带的是虚构证件，不包含美国州/地区信息，因此 `Region` 条件在沙盒中无法匹配。如需了解如何测试依赖州/地区的流程，请参阅[伪造证件不包含的内容](https://docs.didit.me/zh/integration/sandbox-testing.md#伪造证件不包含的信息)。

**重新提交。** 分支节点在每次尝试时都会求值，包括重新提交。当您将会话退回以让用户重新完成特定步骤时，位于这些步骤之间的分支和操作会在用户重新完成时再次运行，并基于**新**一次尝试的数据进行判断。因此，在两次尝试之间迁移到受限司法辖区的用户，会被覆盖该地区的分支路由；若某个分支以已拒绝结果结束，则重新提交的会话也会在该处结束。

**查看会话走了哪条分支。** 会话运行期间工作流做出的每一个分支决策，以及会话到达的每一个结果节点，都会记录在会话的事件时间线上（控制台会话详情 > Events，以及 `GET /v3/session/{id}/decision/?include=events`）。**工作流路由**一行会注明分支节点、匹配的条件，以及会话继续前往的节点；若没有条件匹配，则会注明未匹配任何条件，并已走向该节点的兜底边。**工作流结果**一行会注明设置会话状态的状态节点。当工作流在没有任何功能发出警告的情况下将会话转入*审核中*时，这些记录会显示其所走的路径，包括所经过的任何兜底边，以及其所通向的结果节点。之后的人工决策不会改写这些工作流事件。缺少输入是一个可能的原因：要求存在 `metadata.*` 值的条件，在创建会话时省略了该键的情况下不会匹配。明确测试输入缺失的条件（例如 `is_empty`，或带有 `not_defined` 的 `equals`）则可以匹配同一个缺失的键。兜底边仅在没有任何分支匹配时（包括任何 else 分支）才会被采用，并通向与默认输出相连的节点。有关事件 payload 的详细信息，请参阅[会话事件](https://docs.didit.me/zh/sessions-api/retrieve-session.md#工作流路由事件)。

***

## 工作流模板与起点

可以把模板看作**智能的预配置起点**，用于常见场景，而不是固定不变的类型。在简单模式下，模板可直接使用。在高级模式下，模板为您提供基础，您可以大幅自定义。

![涵盖 KYC、KYB 和年龄验证场景的 Didit KYC 工作流模板库](https://mintcdn.com/didit-0f962782/DSfxHq_ggIpqiQSG/images/workflows-template.jpg?fit=max\&auto=format\&n=DSfxHq_ggIpqiQSG\&q=85\&s=a727315368aa2f6bd096e873d7fbae6c)

### 可用模板

#### **1. KYC 工作流**

适用于新用户入驻并满足完整的了解你的客户（KYC）合规要求的综合方案。

* **起始于：** 核心身份证件验证。
* **常见附加功能：**
  * `[+]` **活体检测：** 确认用户本人在场，防止欺骗攻击。
  * `[+]` **1:1 人脸比对：** 将用户自拍照与其证件照进行生物特征比对。
  * `[+]` **AML 筛查：** 将用户与全球制裁名单、政治公众人物（PEP）名单和负面新闻名单进行比对。
  * `[+]` **NFC 验证：** 通过读取电子护照或电子身份证芯片，增加政府级别的安全保障。
  * `[+]` **地址证明（PoA）：** 验证用户的居住地址。
  * `[+]` **电话验证：** 验证电话号码归属，作为额外的验证因素。
  * `[+]` **邮箱验证：** 验证邮箱地址归属，作为额外的验证因素。
  * `[+]` **数据库核验：** 与官方政府数据库和信用数据库进行核验。
  * `[+]` **问卷：** 通过可自定义的表单收集结构化证明和佐证文件。
  * `[+]` **设备与 IP 分析：** 分析位置和连接风险。

***

#### **2. 自适应年龄验证工作流**

适用于年龄限制服务的低摩擦、保护隐私的流程。

* **起始于：** 基于自拍照的年龄估算。
* **关键逻辑：**
  * 如果估算年龄明显高于您的阈值（例如，对于 18+ 的服务，估算年龄为 25+），用户将立即通过。
  * 如果估算结果低于阈值，或落在“缓冲区间”内（例如，估算年龄为 16-20），您可以将工作流配置为自动触发**回退到完整身份证件验证**，以确认准确的出生日期。
* **常见附加功能：**
  * `[+]` **设备与 IP 分析：** 根据地理位置限制访问。

***

#### **3. 生物识别认证工作流**

无需再次要求回访用户提供证件，即可快速、安全地重新验证其身份。

* **起始于：** 活体检测，用于确认用户在场。
* **核心逻辑：**
  * 系统会将新的实时自拍照与用户首次已通过的 KYC 验证中保存的可信生物特征模板进行人脸比对。
  * 如果用户已在同一 `vendor_data` 下存有人脸（已通过活体检测的人脸、电子护照照片、证件人像或已登记的个人资料人脸），您可以在创建会话时省略 `portrait_image`，Didit 会自动复用已存储的人脸。否则请传入 `portrait_image`（Base64 编码图像，最大 2MB）；若两者都未提供，会话创建将失败并返回 `400`。
* **常见附加功能：**
  * `[+]` **电话验证：** 将该地址与已验证的电话号码关联。
  * `[+]` **邮箱验证：** 验证邮箱地址归属，作为额外的验证因素。
  * `[+]` **设备与 IP 分析：** 标记来自新位置的可疑登录尝试。

***

#### **4. 地址验证工作流**

适用于地址证明（PoA）为主要要求的专用流程。

* **起始于：** 用户提交地址证明文件（例如，水电费账单、银行对账单）。
* **核心逻辑：** 我们的 AI 从文件中提取并验证姓名和地址。
* **常见附加功能：**
  * `[+]` **电话验证：** 将该地址与已验证的电话号码关联。
  * `[+]` **邮箱验证：** 验证邮箱地址归属，作为额外的验证因素。
  * `[+]` **设备与 IP 分析：** 将证件地址与用户当前的地理位置进行比较，以增加可信度。

***

#### **5. 问卷验证工作流**

当您的主要目标是通过可自定义的表单收集结构化证明和佐证文件时，可使用此专门流程。

* **起始于：** 问卷。
* **核心逻辑：** 系统会呈现您配置的问卷（包括章节、翻译内容、必填字段和上传项）。
* **常见附加功能：**
  * `[+]` **设备与 IP 分析：** 为问卷提交内容添加位置和连接信息。

> **完全自定义**
> 工作流中的每项功能都可以使用特定参数进一步自定义，以满足您的确切要求。请在构建器中浏览各项检查的设置。

***

## 根据婚姻状况构建规则

在**高级模式**下，您可以在条件分支和自定义状态规则中使用 OCR 字段 `kyc.marital_status`。请从字段选择器中选择值，确保规则使用受支持的枚举值，而不是自由文本。如果证件未提供婚姻状况，该值为空，将应用您的备用分支。

工作流副驾驶还可以通过一次操作创建并配置**数据库核验**步骤。当您要求它添加此检查时，请指定所需的国家或地区；控制台会为每个国家或地区匹配受支持的服务，并在画布上显示已保存的配置。

***

## 简单模式与高级模式对比

| 功能项 | 简单模式 | 高级模式 |
| - | - | - |
| 模板选择 | ✅ | ✅ |
| 开启或关闭功能 | ✅ | ✅ |
| 基础功能配置 | ✅ | ✅ |
| 可视化图形编辑器 | ❌ | ✅ |
| 条件分支 | ❌ | ✅ |
| 操作自动化（标签、元数据） | ❌ | ✅ |
| 并行验证路径 | ❌ | ✅ |
| 基于风险的决策 | 有限 | ✅ 完全控制 |
| 撤销/重做支持 | ❌ | ✅ |
| 键盘快捷键 | ❌ | ✅ |

***

## 集成流程

集成编排式工作流非常简单。您的服务器与 Didit 创建一个会话，获取唯一的 URL，然后将用户重定向到该 URL。其余步骤由 Didit 处理，并通过 Webhook 将结果通知您的服务器。

```mermaid theme={null}
sequenceDiagram
participant Customer
participant Client
participant Server
participant Didit
Customer->>Client: Go to verification page
Client->>Server: POST /create-verification-session
Server->>Didit: POST /v3/session/
Didit-->>Server: Return new verification session
Server-->>Client: Return verification session's url
Client->>Customer: Redirect customer to url
Customer->>Didit: Complete verification steps
Didit->>Server: Send status updates
Server->>Customer: Notify of status changes
Customer->>Customer: Return to callback URL
```

***

## 常见使用场景

<table>
  <thead>
    <tr>
      <th>使用场景</th>
      <th>推荐模板</th>
      <th>推荐模式</th>
      <th>建议功能</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>基础身份验证</td>
      <td>KYC</td>
      <td>简单</td>
      <td>活体检测、人脸比对</td>
    </tr>

    <tr>
      <td>高安全性入驻</td>
      <td>KYC</td>
      <td>高级</td>
      <td>NFC、活体检测、人脸比对、AML、电话验证</td>
    </tr>

    <tr>
      <td>有年龄限制的内容或服务</td>
      <td>自适应年龄验证</td>
      <td>简单</td>
      <td>身份证件验证备用方案</td>
    </tr>

    <tr>
      <td>回访用户认证</td>
      <td>生物识别认证</td>
      <td>简单</td>
      <td>设备与 IP 分析</td>
    </tr>

    <tr>
      <td>地址验证</td>
      <td>地址证明</td>
      <td>简单</td>
      <td>电话验证</td>
    </tr>

    <tr>
      <td>金融服务入驻</td>
      <td>KYC</td>
      <td>高级</td>
      <td>活体检测、人脸比对、地址证明、AML、数据库核验</td>
    </tr>

    <tr>
      <td>特定地区合规</td>
      <td>KYC</td>
      <td>高级</td>
      <td>按国家/地区进行条件路由，不同地区执行不同检查</td>
    </tr>

    <tr>
      <td>基于风险的验证</td>
      <td>KYC</td>
      <td>高级</td>
      <td>基于风险评分的条件分支、升级处理路径</td>
    </tr>
  </tbody>
</table>

***

## 快速开始

1. **初次使用 Didit？** 从 **简单模式** 和预置模板开始
2. **需要自定义？** 切换到 **高级模式**，以添加条件逻辑

> 请联系我们的销售团队，咨询自定义工作流配置，或获取针对您具体需求的最佳设置建议。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.