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

如何在单个Siri快捷指令中同时实现Siri语音响应与自定义UI?

如何同时触发Siri原生语音响应与自定义UI视图?

可以通过在同一个Intent响应实例中同时设置语音参数和userActivity来实现两者的同时触发,完全依赖原生Siri能力,无需第三方方案。具体实现如下:

  1. 确认.intentdefinition配置无误:

    • 成功响应类型中已添加用于语音播报的自定义参数(如customIntParameter),并配置好对应的语音模板(例如“还有(customIntParameter)个可用车位”)。
    • 保留之前已实现的自定义UI与userActivity关联逻辑。
  2. 在Intent Handler的handle方法中合并两种逻辑:

    func handle(intent: MyIntent, completion: @escaping (MyIntentResponse) -> Void) {
        // 1. 准备自定义UI所需的userActivity,携带展示数据
        let userActivity = NSUserActivity(activityType: "com.yourapp.MyIntentActivity")
        userActivity.userInfo = [
            "totalSpaces": 100,
            "occupiedSpaces": 10
        ]
        userActivity.isEligibleForPrediction = true
        userActivity.persistentIdentifier = NSUserActivityPersistentIdentifier("com.yourapp.MyIntentActivity")
    
        // 2. 创建带语音参数的成功响应,再附加userActivity
        let response = MyIntentResponse.success(customIntParameter: 90)
        response.userActivity = userActivity
    
        // 3. 返回响应,同时触发语音播报和UI展示
        completion(response)
    }
    

原理说明

  • 通过success(customIntParameter:)创建响应时,Siri会根据.intentdefinition中配置的语音模板,自动填充参数值并生成原生语音播报内容。
  • 给响应实例设置userActivity后,Siri会触发你之前实现的自定义UI加载逻辑,从userActivity中读取数据渲染指定视图。

注意事项

  • 自定义UI的解析、渲染逻辑需保持原有正常工作状态,无需额外修改。
  • 语音模板必须与响应参数一一对应,确保Siri能生成自然的播报内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:03:08