构建验证逻辑

本文档介绍了一种构建地址检查系统的流程,该系统可处理 Address Validation API 的各种响应。本指南介绍了如何构建逻辑以正确使用响应、如何调查来自 API 的其他信号,以及何时以何种方式提示客户提供更多信息。

一般来说,API 响应会确定您的系统应通��以���方式处理地址���

  • 修正 - 地址质量低。 您应该提示用户提供更多信息。
  • 确认 - 地址质量高,但与输入地址相比有变化。系统可能会提示您进行确认。
  • 接受 - 地址质量高。您可以接受提供的地址。

密钥用途

本文档可帮助您修改系统,以便更好地分析 API 响应,并确定针对所提供的地址应采取的后续行动。以下伪代码展示了一种可能的流程。

if (the API response indicates significant problems in the address)
    FIX - prompt the user to fix the address
else if (the API response indicates less significant problems in the address)
    CONFIRM - confirm with the user that the address is correct
else
    ACCEPT - continue with the address returned by the API.

具体逻辑取决于您的具体情况;如需了解详情,请参阅实施指南。您还可以使用我们对该逻辑的开源实现,该实现位于扩展组件库中。

工作流程概览

下表总结了适用于您系统的两项操作:

  1. 根据修复、确认、接受行为要使用的工作流
  2. 要检查的第一个信号(来自响应)。此处描述的信号来自 verdict 属性,并非唯一需要检查的信号,但可提供地址质量的初始指标。每种行为类型都对应于本文档中的一个部分,其中介绍了您可能还需要调查的其他信号。
系统行为
修正地址

verdict 的响应表明缺少应提供的重要信息。API 返回的地址可能无法用于配送。

工作流程

  1. 如有必要,请调查地址组成部分。
  2. 提示客户修正地址问题。
  3. 请求验证更新后的地址。
  4. 继续使用此地址。

判定信号

任何以下情况:

确认地址

来自 verdict 的响应指示了可交付的地址,但对原始输入进行了更改:推断拼写更正的数据或可确认的数据。

工作流程

  1. 需要更正:
    1. 如有必要,请调查地址组成部分。
    2. 请求验证更新后的地址。
    3. 继续使用此地址。
  2. 无需更正:
  3. 继续使用此地址。

判定信号

所有以下条件均适用:

接受地址

Address Validation API 响应表明地址质量极佳。

工作流程

继续使用返回的地址。

判定信号

同时满足以下所有条件:

实现方案指导

在设计系统如何响应地址验证信号时,以下建议可帮助您构建更有效的响应模型。不过,这些只是建议,请注意,您的实施方案应适合您的业务模式。

指导方针 详细信息
风险等级

在提示用户进行更正和接受用户输入的地址之间进行权衡时,请考虑您情况的容忍程度。

Address Validation API 会返回各种信号,您可以将这些信号与风险级别相结合,以优化验证流程。

例如,如果某个地址的门牌号未确认,您仍然可以接受该地址。另一方面,如果您的业务运营需要更精确的地址,您可以提示用户。如需查看可能属于任一类别的示例,请参阅接受地址 - 示例中的非美国未确认的街道号码

接受地址

如果客户未响应提示,最好允许系统接受原始输入内容。

在这种情况下,客户可能输入了系统中没有的地址,例如新建筑的地址。

修正地址

如果结果明确表明地址无法送达,请修正该地址。然后,您的系统可以提示客户提供必要的信息,之后您重新发布工作流以获取送货地址。

修正信号

Address Validation API 提供多种信号,可让您了解地址是否需要修正。

1. 验证粒度和缺失的组件

以下两种信号最能表明地址存在问题:

  • 只要 validationGranularity 字段为 OTHER,您的系统就应调查地址组成部分信号,以详细了解错误发生的位置以及如何修正该错误。
  • 每当后处理的 address 对象返回 missingComponentTypes 字段时,您的系统都应检查该组件。缺少组成部分的地址也会被视为不完整且无法投递。

2. 其他信号

Address Validation API 还提供其他信号来帮助诊断具体问题:

可疑组件 如果某个组件的确认级别枚举为 UNCOMFIRMED_AND_SUSPICIOUS,则该组件很可能不正确。
未解析的组件 unresolvedToken 是输入中未被识别为地址有效组成部分的部分。

3. 美国地址信号

某些仅适用于美国地址的字段可提供有用的信号,表明相应地址无法送达,应予以修正。对于需要修正的地址,您应该会看到以下内容:

dpvConfirmation ND 或留空。

如需详细了解 dpvConfirmation,请参阅处理美国地址

地址修正示例

确认地址

当判决结果表明 Address Validation API 推断或更改了地址组成部分以生成有效地址时,您需要确认地址。在这些情况下,您拥有可送达的地址,但希望更确信生成的地址是客户想要的地址。

为了向客户提供正确的提示,您的逻辑会识别服务标记的组件,以确定 API 对该组件应用了哪些操作或标志,例如 inferredreplacedspellCorrected。请参阅参考文档中的 AddressComponent

确认信号

Address Validation API 提供多种信号,可让您了解地址是否应进行确认。

1. 验证粒度

ROUTE 或更高级别的 validationGranularity 是可以接受的,但 PREMISESUBPREMISE 可提供更强的送达能力信号。

2. 其他信号

在决定是否需要向客户确认地址条目时,判决还会提供以下信息,以确定要调查哪些组件:

推断数据 如果 hasInferredComponents 字段为 true,则表示 API 填充了从其他地址组成部分中提取的信息。
替换数据 hasReplacedComponents 字段为 true 时,API 会将输入的数据替换为它认为可使地址有效的数据。

3. 美国地址信号

仅适用于美国地址的某些字段表示您的逻辑应与客户确认详细信息。符合以下任一条件:

dpvConfirmation S

如需详细了解 dpvConfirmation,请参阅处理美国地址

地址响应 包含值为 subpremisemissingComponentTypes 字段。

地址确认示例

接受地址

当判决结果高度确信地址可送达,并且可以在下游流程中无需进一步的客户互动即可使用时,您会接受该地址。

接受信号

Address Validation API 提供多种信号,可让您了解地址是否应进行确认。

1. 验证粒度

validationGranularityPREMISE 或更优的地址可接受,但在某些情况下,ROUTE 仍表示可送达的地址。

2. 其他信号

高质量地址的判决还应提供以下信息:

  • 无替换数据。在此示例中为 hasReplacedComponents: FALSE
  • 无推断组件。在此示例中为 hasInferredComponents: FALSE

3. 美国地址信号

仅适用于美国地址的某些字段表示可送达的高质量地址。对于可接受的美国地址,您应该会看到以下内容:

dpvConfirmation Y

如需详细了解 dpvConfirmation,请参阅处理美国地址

可接受的地址示例