如何读取结果
输入“查询订单000123,不取消订单”,首先看查询目标与禁止取消的约束。只有显式配置Schema并选择orderId后,才额外提取字符串编号。
下面是阅读摘要,不是精简版API响应。真实结果保留所有必返字段,见完整响应结构。
先读目标,再决定是否使用参数
先核对 effective 中的目标、全局和局部约束,再读 issues;只有需要业务参数时才继续按归属读取字段。没有结果时,先区分程序抛错与正常返回但没有操作意图,见失败分流。
按归属读取字段
下面是应用中的辅助函数,不是SDK新增API。它返回本轮已经检查且确定的字段;未出现本轮报告的继承值需要单独按业务规则处理。
多个订单要按intentId区分,不能把所有编号写到第一个目标。合法的false、0、空字符串不等于缺失;explicit_null表示明确且Schema允许的null。unknown、invalid、invalidated等状态不提供可直接使用的确定值,详见字段状态。
事实、歧义和失败
- “订单编号是000123”是陈述。选中orderId时,值在turn.facts,fieldResults的container为facts、intentId为null;没有查询意图可供执行。
- “处理这个订单”但没有对象材料时,读取issues并向用户澄清。下一轮显式传相关Context;不凭空查找历史。
- status=complete表示当前意图理解的完整度,不保证所有字段齐全或合法,也不表示授权或已执行业务。status=partial仍可能含可确定部分。
- 技术失败通过IntentError或MCP错误信封返回。保存之前的结果与原消息,按错误与恢复处理,不用空结果覆盖状态。
根据结果决定下一步
“补充材料”与“修复配置”是两条路径:用户没给订单号时应澄清;选择 orderId 却没配 Schema 时应修复实例配置。完整前后结果见场景下载。
接下一轮
把本次effective作为baseline可保留目标与身份;事实、问题、候选按需放到context。应用负责结果存储、并发顺序、授权和业务动作,见多轮对话。