【问题标题】:SiriKit Custom Intents parameters and shortcutsSiriKit 自定义意图参数和快捷键
【发布时间】:2018-12-24 18:42:54
【问题描述】:

我正在尝试弄清楚如何使用 iOS12 中的自定义意图来定义和创建快捷方式。我想创建一个快捷方式,以便用户可以将任务添加到我的应用程序并为其命名(以及将来的其他参数)。例如只需对 Siri 说“添加名称为‘取洗衣物’的任务”。

这是我定义意图的方式:

然后我尝试使用以下方法创建 Siri 快捷方式:

    TaskIntent *taskIntent = [[TaskIntent alloc] init];
    taskIntent.suggestedInvocationPhrase = @"TaskIt";

    INShortcut *taskShortcut = [[INShortcut alloc] initWithIntent:taskIntent];

    INUIAddVoiceShortcutViewController *addSiri = [[INUIAddVoiceShortcutViewController alloc] initWithShortcut:taskShortcut];
    addSiri.delegate = self;
    [self presentViewController:addSiri animated:YES completion: nil];

但是,它最终在应用程序中出现异常:

无法从意图创建快捷方式({ 任务名称 = ; 标识符 = EE4661C6-1826-4A14-84EC-FD684647FE2B; }) 因为它没有有效的参数组合

所以我不确定如何正确执行此操作。捐赠快捷方式时是否必须提供任务名称?但这意味着每次都会显示相同的 taskName 并将其添加到系统中,这不是我想要的。还是新的 SiriKit 的可定制性不足以处理通用输入?

【问题讨论】:

    标签: ios objective-c sirikit ios12 inshortcut


    【解决方案1】:

    您不能用您创建的自定义意图的参数向 Siri 提问。

    您可以在 SiriKit 中创建两种类型的意图:

    • 内置意图
    • 自定义意图

    对于内置意图,您可以向 Siri 提出带有参数的问题,例如“向 John 发送一条消息,说‘帮我预订一张票’”。 SiriKit 将帮助您找到意图、提取参数(John 和消息内容)并为您发送消息。

    对于自定义 Intent,即 Siri 快捷方式,您不能提出带参数的问题。只能使用不带参数的命令来触发 Intent,并执行与捐赠相同的操作(捐赠自定义 Intent 时,必须在其中设置参数。

    内置 Intent 和自定义 Intent 之间的差异可能是由以下事实造成的:对于内置 Intent,SiriKit 需要进行大量机器学习训练工作才能识别 Intent 并提取参数。但是自定义意图没有这种经过训练的机器学习模型,它不能像内置意图那样发挥作用。

    【讨论】:

    • 嗨,我可以根据用户使用 siri 所说的话来获取文本吗
    • @MeSolutionanalysts 在 iOS13 之前的 iOS 上,对于内置 Intent,您可以从 Intent 中提取参数,例如消息相关 Intent。对于自定义意图,您不能。请参阅上面的详细信息。但是,对于 iOS 13 更新,我不确定我们是否可以从自定义意图中提取参数。详情可以参考WWDC2019 session“Introducing Parameters for Shortcuts”。
    【解决方案2】:

    是的,在创建自定义TaskIntent 后,您需要填充其参数。即需要为taskName设置一个值:

    taskIntent.taskName = @"Test";
    

    每次用户在您的应用中执行相关操作时,您都会捐赠意图。如果您的用户输入带有taskName 的任务,您可以通过创建您的意图并将taskIntent.taskName 参数设置为您的用户输入的任务名称来捐赠此任务名称。它将建议输入具有相同标题的任务的快捷方式再次,这可能不是你想要的。由于任务标题不同,添加任务不是重复的,没有什么可以预测的,所以INAddTasksIntent 似乎比捐赠快捷方式更合适。

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多