【问题标题】:How to create a Siri Intent that accepts input passed from user如何创建一个接受来自用户的输入的 Siri Intent
【发布时间】:2019-03-04 01:09:54
【问题描述】:
我使用如下参数创建了一个自定义 Intent:
我已经捐赠了:
let intent = PlayIntent()
intent.color = color
let interaction = INInteraction(intent: intent, response: nil)
interaction.donate()
它显示正确:
但是,我想要一个接受用户输入的 Intent。例如,Messages.app:
如何配置我的自定义 Intent 来处理输入?
【问题讨论】:
-
除了“意图扩展”之外,您是否考虑过创建“意图 UI 扩展”?也许这个link 对你有帮助。
标签:
ios
ios12
sirikit
nsuseractivity
sirishortcuts
【解决方案1】:
据我所知,此功能不适用于第三方快捷方式 - 我的意思是,这些快捷方式不是由构建 Siri Shortcuts(以前的 Workflow)应用程序的团队定义的。所有第三方快捷方式都显示在快捷方式应用中,并带有以下文字:
此操作将输入作为输出传递。
令人困惑的是,这些内置快捷方式通常针对第三方应用,例如 Instagram 或 Overcast。很难区分哪些应用的快捷方式是由应用开发者添加的,哪些是由工作流开发者添加的。
唉。
参考资料:
Shortcuts: A New Vision for Siri and iOS Automation 在 Mac 故事中:
据我目前收集到的信息,iOS 12 中的 Siri 目前不支持将输入消息传递给使用用户短语激活的自定义快捷方式的功能,并且不太可能在iOS 12 的第一个版本。这意味着 Siri 将只是自定义快捷方式的启动器,而不是可以在运行时传递用户命令以获取特定参数的实际界面。
另外,this tweet:
这是关于 iOS 12 W̶o̶r̶k̶f̶l̶o̶w̶ 快捷方式的内容。工作流在获取输入并将变量传递给链下的其他操作时蓬勃发展。但第三方 Siri 快捷方式不允许任何数据输入或输出。
【讨论】:
-
看来你是对的。具有输入/输出快捷方式的第三方应用程序也具有具有相同功能的x-callback-url 方案 (example)。据推测,这就是 Shortcuts/Workflow 正在使用的底层系统。他们只是将它封装在一个漂亮的 UI 中,用于特定的应用程序。