You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

INIntent属性能否设为“每次询问”?自定义Intent参数存储与传入问题

关于INIntent参数“每次询问”状态的解析

好问题!我来帮你拆解这里的逻辑和背后的系统机制:

首先直接回答你的核心疑问:你无法直接通过给INIntent的属性赋值来设置“每次询问”状态,这个状态并不存储在Intent对象的参数值里,而是由系统层面的快捷指令配置管理的。

为什么nil会对应多种状态?

你观察到的现象其实是系统对Intent参数的两种不同处理逻辑:

  • 当你构造FooIntent并将bar设为nil,传给INUIAddVoiceShortcutViewController时,弹窗显示默认值0——这是因为你在.intentdefinition里给bar设置了默认值0,Siri会自动用这个默认值填充界面展示,即便Intent参数本身是nil。
  • 当用户在UI中选择“每次询问”并添加快捷指令后,回调里的INVoiceShortcut中bar的值依然是nil——这里的nil和你主动传入的nil语义完全不同:主动传的nil会触发系统使用预设默认值,而用户选择“每次询问”后,系统会把这个参数标记为「需要在触发时动态询问用户」,此时nil代表的是「无固定值,需实时获取」,但这个标记状态并不存在于Intent对象本身。

“每次询问”状态存在哪里?

这个状态并不保存在INIntent实例里,而是存储在:

  • 系统的Siri/快捷指令专属数据库中,与INVoiceShortcut绑定的配置元数据里。
  • 当快捷指令被触发时,系统会先检查这个配置:如果参数被标记为“每次询问”,就会弹出交互界面让用户输入值,再把用户输入的内容传入Intent执行;如果没有这个标记,才会使用Intent里的参数值(或预设默认值)。

能否主动设置“每次询问”状态?

遗憾的是,目前没有公开的Apple API允许开发者通过代码直接设置Intent参数为“每次询问”状态。这个状态是用户通过UI交互(添加快捷指令时选择、或在快捷指令应用中编辑)产生的配置,属于用户的自主选择,而非开发者可直接操控的参数。

不过你可以通过调整.intentdefinition的配置来引导用户进入“每次询问”的流程:

  • 去掉bar参数的默认值,同时将参数设置为必填。这样用户在添加快捷指令时,无法直接使用默认值,必须选择输入固定值,或者选择“每次询问”才能完成快捷指令的创建。

内容的提问来源于stack exchange,提问作者Naftali Beder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:18:42