在我的应用程序中,我希望能够告诉Siri:
所以我启用了Siri功能,添加了一个目标,实现了INStartWorkoutIntentHandling(以及其他)委托方法,一切正常.
我现在可以说Start a workout with MyAppName.PERFEKT!
现在我想告诉她类似Start an activity using MyAppName甚至是什么Start a hike using MyAppName.
所以我去了,并添加了AppIntentVocabulary.plist这样的东西:
那里的快速问题......词汇项目标识符...如果工作 - 远足fe应该用于开始,结束,暂停,恢复,取消...标识符是否应该对所有人都相同?
现在我面临三个问题.
1.我可以告诉Siri的Start a hike,它会工作,她会问我,我应该使用哪个应用.我告诉她Start a hike using MyApp,她会告诉我她在Apple Music上找不到它?!?我勒个去?
2.如果我将单词添加Activity到我的词汇表中,她将只打开iOS活动应用程序...永远不会问我是否可能要打开我的应用程序.
3.在提交我得到漏字的警告一样的一拳No example phrase was provided for INStartWorkoutIntent in the "en" language,我也有!要么Sample phrase "Start a Hike using MyAppName" was not classified as a INStartWorkoutIntent intent
如果有人能向我展示一个AppIntentVocabulary.plist与siri和iTunes Connect配合使用的文件的有效样本,我将非常高兴!
我正在开发一个锻炼应用程序,并希望将SiriKit集成到iOS 10中.我已经知道如何集成SiriKit并让Siri与我们的应用程序一起工作.
我能找到的唯一有用的资源是Apple的官方文档:SiriKit iOS 10
为了让Siri认出我们的自定义词汇,我们必须添加此文件
AppIntentVocabulary.plist
但是intent.workoutName.identifier总是返回口头短语而不是VixelItemIdentifier,而不是有氧运动,而不是有氧运动.
是否有人面临此问题或找到任何解决方案?
我已经有了一个消息传递应用程序,我想实现Siri发送消息.我已经添加了Intents扩展和所有内容,我只是在弄清楚如何发送消息时遇到了问题.我曾尝试使用相同的函数发送消息ChatVC,并将其复制并粘贴到IntentHandler.swift文件中,但它给了我一堆编译器错误.是否有某种类型的框架我应该用它来与应用程序进行通信来执行此操作?如果需要该信息,我将使用Firebase作为我的数据库.
更新的代码:
注意,这段代码是我在用户发送普通消息时的发送功能,这就是我复制并粘贴到SiriIntent中的内容...
func handle(sendMessage intent: INSendMessageIntent, completion: @escaping (INSendMessageIntentResponse) -> Void) {
// Implement your application logic to send a message here.
sendMessage()
let userActivity = NSUserActivity(activityType: NSStringFromClass(INSendMessageIntent.self))
let response = INSendMessageIntentResponse(code: .success, userActivity: userActivity)
completion(response)
}
func sendMessage(text: String?, date: Date, picture: UIImage?, location: String?, video: NSURL?, audio: String?) {
var outgoingMessage: OutgoingMessage?
if let text = text {
let encryptedText = EncryptText(chatRoomID: chatRoomId, string: text)
outgoingMessage = OutgoingMessage(message: encryptedText, senderId: FUser.currentUser()!.objectId, senderName: FUser.currentUser()!.firstname, …Run Code Online (Sandbox Code Playgroud) 我想构建一个支持Google Assistant和Siri的应用程序。
如何在Flutter中实现这一目标?
我知道现有的语音支持,
但不支持来回语音操作...
谢谢!
siri google-voice-actions flutter sirikit google-assistant-sdk
我正在尝试使用iOS 12中的新iOS快捷方式应用程序创建一个INIntent.我已阅读文档并观看了有关它的Apple 视频.
我已经成功设置了所有内容并且快捷方式运行良好,但是我似乎无法弄清楚如何设置用户可以在设置快捷方式时编辑的可自定义选项.这方面的一个例子是Calendar应用程序的快捷方式是如何设置的:
请注意Get,Add Filter,Sort by等选项.
我知道我可以在Intents.intentdefeniton文件中向Intent添加参数,但是在通过SiriKit将交互捐赠给iOS系统之前,需要从应用程序本身设置这些参数.
无论我做什么,Intent只显示空,没有选项.
任何帮助表示赞赏!
尝试使用 Xcode 10 beta,我创建了一个自定义的 Siri Intent,并且运行良好。我的意图扩展成功接收意图并依次处理它们。
不需要对意图的参数进行任何类型的验证,一旦被触发,它将从网络请求数据。我可以在(void)handle....
我注意到在我自动生成的 Intent 类中,有一个可能的响应代码列表。
typedef NS_ENUM(NSInteger, SMSCheckTeamIntentResponseCode) {
SMSCheckTeamIntentResponseCodeUnspecified = 0,
SMSCheckTeamIntentResponseCodeReady,
SMSCheckTeamIntentResponseCodeContinueInApp,
SMSCheckTeamIntentResponseCodeInProgress,
SMSCheckTeamIntentResponseCodeSuccess,
SMSCheckTeamIntentResponseCodeFailure,
SMSCheckTeamIntentResponseCodeFailureRequiringAppLaunch,
SMSCheckTeamIntentResponseCodeSuccessPlayingNow = 100
}
Run Code Online (Sandbox Code Playgroud)
失败、成功和成功(现在播放)响应在我的 Intents 文件中定义。其他的,例如就绪和进行中,不是,但我仍然想告诉 Siri 我的扩展正在使用该(void)confirm...方法“进行中” 。
SMSCheckTeamIntentResponse * const response = [[SMSCheckTeamIntentResponse alloc] initWithCode:SMSCheckTeamIntentResponseCodeInProgress userActivity:nil];
completion(response);
Run Code Online (Sandbox Code Playgroud)
目前,当我在确认方法中调用它时,Siri 说我的应用程序出现问题,并且扩展程序退出。
有谁知道如何成功使用这些响应代码?
在我的应用程序中,用户可以通过Sirikit将任务添加到列表中(示例Siri意向查询:“在MyApp中,为牛仔裤添加100美元的费用列表”)。如果建议的列表在应用程序中不可用,请消除歧义。
歧义选择的结果不会在resolveTargetTaskList中捕获。
intent.targetTaskList?.title是我在第一次尝试中传递的值。结果,它进入无限循环。
func resolveTargetTaskList(for intent: INAddTasksIntent, with completion: @escaping (INTaskListResolutionResult) -> Void) {
guard let title = intent.targetTaskList?.title else {
completion(.needsValue())
print("no title value")
}
completeResolveTaskList(listName: intent.targetTaskList!.title, with: completion)
}
public func completeResolveTaskList(listName: INSpeakableString, with completion: @escaping (INTaskListResolutionResult) -> Void) {
print("completeResolveTaskList")
let allLists = getAllLists()
for index in 0...(allLists.count - 1) {
if allLists[index].spokenPhrase.lowercased() == listName.spokenPhrase.lowercased() {
completion(.success(with: taskLists[index]))
}
}
switch allLists.count {
case 0:
completion(.unsupported())
default:
completion(.disambiguation(with: taskLists))
}
}
Run Code Online (Sandbox Code Playgroud)
屏幕截图以供参考:
请帮我。
我正在尝试将 Siri Shortcuts 集成到我的应用程序中。我正在尝试的概念是通过秘密密码确认获得我的卡的奖励积分。请在下面找到我为此所做的工作。
添加了名为 say Rewards 的新自定义意图。
定义了标题。启用确认的字幕和参数(accType,pin)。Pin 将单独发送给用户。
//
// RewardsIntentHandler.swift
// SiriIntentExt
//
import UIKit
import Intents
class RewardsIntentHandler: NSObject, RewardsIntentHandling {
func resolveAccType(for intent:RewardsIntent, with completion: @escaping ([INStringResolutionResult]) -> Void) {
guard let accType = intent.accType else {
completion([INStringResolutionResult.needsValue()])
return
}
completion([INStringResolutionResult.success(with: accType)])
}
func resolvePin(for intent:RewardsIntent, with completion: @escaping ([INIntegerResolutionResult]) -> Void) {
guard let verifyPin = intent.pin else {
completion([INIntegerResolutionResult.needsValue()]) …Run Code Online (Sandbox Code Playgroud) 我正在使用测试应用程序和扩展程序来尝试 SiriKit 驱魔。我的分机根本没有被调用,我不知道为什么。我在另一个应用程序中有一个有效的 SiriKit 扩展,它莫名其妙地停止响应 - 因此这个测试应用程序。
这是我在测试应用程序中设置 SiriKit 所做的工作:
2) 在应用程序的 info.plist 中添加了 Siri 使用说明: 
3)添加了一个新的 Intents 扩展测试目标,并将我想要的 Intent 添加到扩展 info.plist 中: 
4) 连接 IntentHandler 类:
class IntentHandler: INExtension {
override func handler(for intent: INIntent) -> Any {
print("IntentHandler.handle")
switch intent {
case is INAddTasksIntent: return AddIntentHandler()
default: break
}
return self
}
}
Run Code Online (Sandbox Code Playgroud)
5)创建我的处理程序类:
class AddIntentHandler: NSObject, INAddTasksIntentHandling {
func handle(intent: INAddTasksIntent, completion: @escaping (INAddTasksIntentResponse) -> Void) {
print("AddIntentHandler.handle")
return completion(INAddTasksIntentResponse(code: .success, userActivity: nil)) …Run Code Online (Sandbox Code Playgroud) 我在我的 iOS 应用程序中使用 Sirikit 实现了两个自定义意图。当我开发它们时,我的 iphone 中安装了 iOS 13.3,我的一个意图有一个 Siri Dialog 提示,要求输入一个参数的值。所有应用程序都被翻译成英语和西班牙语,并且自定义意图在两种语言中都能很好地工作。
当我将 iphone 更新到 iOS 13.4.1 时,我的自定义意图开始出现以下问题(根据安装/测试/设备,我看到了两个问题):
param?”的自定义对话框一样。(或多或少)我觉得这个问题很奇怪也很烦人。我尝试为Intent.intentdefinition: Intent.strings (Base)、重新创建翻译文件Intent.strings (English),Intent.strings (Spanish)我什至尝试重新创建整个自定义意图定义,但我仍然遇到问题。
我还尝试更改手机上的 iOS 语言和 Siri 语言、重新启动、重新安装应用程序、意图等...
这是我的 Sirikit 扩展的 Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>InventorySearchIntent</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> …Run Code Online (Sandbox Code Playgroud)