当 Sidekick 调用在 admin.app.intent.link 扩展目标上声明的应用意图时,Shopify 管理后台现在会将商家导航至你的扩展的 url 作为完整页面,这与 Shopify 自身管理后台意图的行为方式一致。此前,相同的意图始终会在商家当前页面上方以覆盖层形式打开。此功能已对所有商店上线,不受 API 版本限制,且无需对扩展的配置、意图架构或工具进行任何更改。使用 admin.app.intent.render 目标的扩展不受影响。
变更内容
应用意图支持不同的展示方式。迄今为止,每个应用意图都以意图模态框的形式出现,即在商家当前页面上方的覆盖层,使商家保持在 Sidekick 流程中。admin.app.intent.link 意图现在改用完整页面导航,从而使应用意图与管理后台意图(即启动 Shopify 原生编辑器的意图)的现有展示方式保持一致。这也符合该目标文档化的行为,即引导商家前往你应用中用于最佳页面渲染操作的 URL。有关实现细节,请参阅 Use extensions to surface app actions。
存在一种情况,即仍会使用覆盖层:如果商家在当前页面上有未保存的更改,则意图将在模态框中打开,而不是导航离开,从而避免丢失正在进行的工作。您的扩展程序无需对这些情况进行特殊处理——两种呈现方式均使用相同的路由、有效载荷和工具。
Sidekick 与您的应用之间的契约保持不变。您的路由仍然从 `shopify.intents.request.value` 读取调用有效载荷,这是一个实时信号,当您的应用未在意图工作流内运行时为 null,并在每次调用意图时更新。您仍然从 URL 打开的路由中使用 `shopify.tools.register` 注册工具处理器,并且仍然通过 `shopify.intents.response.ok()`、`shopify.intents.response.error()` 或 `shopify.intents.response.closed()` 解析意图。 shopify.intents.request.value,这是一个实时信号,当 null 您的应用未在意图工作流内运行时为 null,并在每次调用意图时更新。您仍然使用 shopify.tools.register 从 URL 打开的路由中 url 注册工具处理器,并且仍然通过 shopify.intents.response.ok()`shopify.intents.response.ok()` shopify.intents.response.error()、`shopify.intents.response.error()` shopify.intents.response.closed()或 `shopify.intents.response.closed()` 解析意图。
Note: 针对 <code>admin.app.intent.render</code> 的扩展目前以内联覆盖层形式渲染,因此 UI 扩展应用操作的行为与之前相同。
如果你在此公告发布前注意到此变更并将其报告为回归问题,那么新行为是预期的。你的扩展上的 type、target 和 url 继续按声明的方式正常工作。
受影响对象
这适用于具有 admin_link 扩展且其定位包含 admin.app.intent.link 的应用。它适用于所有 API 版本和所有商店,没有功能标志、作用域或设置可供选择加入或退出。
以下内容不受影响:
- 针对 admin.app.intent.render 的扩展。
- 你的应用使用 intents.invoke() 调用的管理后台意图,用于启动 Shopify 原生编辑器。这些属于独立系统,其展示方式未发生变化。
- 未声明应用意图的应用。
如果你的应用同时声明了这两个目标,则只有 admin.app.intent.link 意图会发生变化。
为何重要
商家现在将进入你应用中你声明的真实页面,拥有你自己的布局和导航,而不是受限的覆盖层。对于 admin.app.intent.link 设计用于执行的操作,商家现在直接在你应用已渲染的页面上进行操作。
操作指南
无需采取任何操作即可保持扩展正常运行。受此变更影响的声明是你 shopify.extension.toml 中的 admin.app.intent.link 目标:
[[extensions.targeting]] target = "admin.app.intent.link" url = "/app/campaigns/{id}/edit" tools = "./tools.json" instructions = "./instructions.md"此示例展示了典型的 admin.app.intent.link 配置:目标、管理后台打开的路由以及定义工具和指令的文件。你无需为此新行为更改此结构。
如果您的应用没有具有该目标的扩展程序,则对您没有任何影响。如果有,请验证 url 作为独立页面运行:
- 确认路由在全宽模式下正确渲染。假设窄覆盖层的布局可能需要进行调整。该路由在模态框中也应能正确渲染,因为这是未保存更改的商家将看到的展示方式。
- 确认该路由从 shopify.intents.request.value 读取调用负载。由于这是一个实时信号,您还可以订阅它以在请求发生变化时做出响应。
- 确认该路由在挂载时调用 shopify.tools.register,以便 Sidekick 能够在商家停留在页面上时调用您的工具。
- 确认在商家完成、失败或取消操作时,您解决了意图(intent)。
- 在带有 shopify app dev 的开发商店中进行测试,然后要求 Sidekick 执行该操作。
当管理员导航至用您模式中的值替换路径而非字面量 {id} 的已声明 url 时,您将知道更新已成功,且您的工具会在页面打开期间响应,Sidekick 也会在您解决意图后报告结果。要查看模态回退效果,请在管理界面中开始编辑表单,并在保存之前调用该操作。
相关文档
- 构建 Sidekick 应用扩展
- Intents API 参考
- Tools API 参考

