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

Siri自定义意图INCurrencyAmount参数失效问题求助(FB12645837)

SiriKit INCurrencyAmount 参数解析异常排查与解决

核心问题总结

此前正常运行的费用记录自定义意图,近期出现INCurrencyAmount类型参数解析异常:

  • 带验证规则时,Siri直接触发“金额不能为负”提示,自定义resolveParameterExpenseAmount方法无法触发断点
  • 移除验证规则后,方法可触发但参数为nil
  • 新建仅含该参数的测试意图,仍触发默认验证错误;调整最小值后又触发最大值限制提示
  • 临时改为Decimal类型后,Siri无法解析“dollar”“cents”等货币词汇

针对疑问的解答

1. 意图定义文件配置是否有误?

是,核心问题出在货币代码未配置和验证规则冲突上。早期版本正常可能是因为当时SiriKit对货币代码的要求较宽松,后续系统更新后验证逻辑收紧,导致配置不兼容。

2. SiriKit对INCurrencyAmount的验证是否存在问题?

官方验证逻辑本身无问题,但存在前置拦截特性:参数的预设验证规则会在自定义resolve方法执行前触发,一旦不符合规则直接返回错误,导致你无法调试后续逻辑。另外默认的数值范围限制(比如隐含的最大值100000)可能和你的需求不匹配,引发误拦截。

3. 是否必须指定货币代码?

是,必须配置用户可能使用的ISO 4217标准三位货币代码(比如USD对应dollar/cents)。Siri依赖货币代码来匹配用户表述中的货币词汇,未配置时无法正确解析金额,甚至会触发默认的验证错误。


具体修复步骤

  • 补全货币代码配置:
    在意图定义文件中找到该INCurrencyAmount参数,在“Currency Codes”列表中添加用户常用的货币类型(比如USD、CNY等),无需添加辅币代码(cents属于USD的一部分,仅需配置USD)。
  • 迁移验证逻辑到自定义方法:
    1. 清空意图参数中所有预设的验证规则(最小值、最大值等),避免Siri前置拦截。
    2. 所有金额合法性检查(非负、范围限制等)放到resolveParameterExpenseAmount方法中处理,示例逻辑:
      func resolveExpenseAmount(for intent: RecordExpenseIntent, with completion: @escaping (INCurrencyAmountResolutionResult) -> Void) {
          guard let amount = intent.expenseAmount else {
              // 参数为nil时,请求用户提供金额
              completion(INCurrencyAmountResolutionResult.needsValue())
              return
          }
          // 自定义非负验证
          if amount.amount.doubleValue < 0 {
              completion(INCurrencyAmountResolutionResult.unsupported(forReason: .negativeAmount))
              return
          }
          // 自定义范围验证
          if amount.amount.doubleValue > 100000 {
              completion(INCurrencyAmountResolutionResult.unsupported(forReason: .amountTooLarge))
              return
          }
          // 验证通过
          completion(INCurrencyAmountResolutionResult.success(with: amount))
      }
      
  • 刷新意图代码:
    修改配置后,在Xcode中执行Editor > Refresh SiriKit Intent,确保配置变更同步到生成的代码中。
  • 清理缓存:
    清理Xcode缓存(Product > Clean Build Folder),重启测试设备,避免Siri缓存旧的意图配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:50:17