前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Siri ShortCut 调研(含Demo)

Siri ShortCut 调研(含Demo)

作者头像
用户2814378
发布2022-11-07 15:06:14
7930
发布2022-11-07 15:06:14
举报
文章被收录于专栏:高科技宣传高科技宣传

Demo地址

一、iOS11

1.INIntent

Apple只对11个固定的领域支持Siri识别,每个领域对应不同的INIntent和INIntentHandler,以发送信息和支付为例,通过用户的语音大体判断服务领域以及INIntent。

服务领域

对应的INIntent

预测语音

发信息

INSendMessageIntent

包含“消息”的语句

支付

INSendPaymentIntent、INRequestPaymentIntent

包含“支付”的语句

通过“用<AppName>发送信息等”可调用第三方App执行相应功能,但前提是Siri可以识别出用户的意图(表格中的INIntent)

工作流程如下: 1)、 Siri完成语音识别和语义分析; 2)、会根据你词汇中的关键词识别出属于上述11种领域中的哪一种; 3)、然后将结构化语音分析结果打包成一个某个领域的意图(INIntent); 4)、接着交给支持这个意图(INIntent)的第三方App处理(启动App处理或通过Intent Extentsion后台处理);

2.IntentHandler

根据上述识别出的不同的用户意图去编写不同的IntentHandler,处理用户的语音,做用户意图去做的事,IntentHandler需要遵循IntentHandling协议,IntentHandling协议分为三步: 1.Resolve阶段:处理用户语音输入,提取各个属性,参数。 2.Confirm阶段:确定用户输入的语音信息和意图是否完整,不完整的话发起第二次询问。 3.Handle阶段:执行用户的意图,并将处理结果展示给用户。

3.IntentsUI

遵循INUIHostedViewControlling协议,通过实现configureViewForParameters方法,根据不同的用户意图(INIntent)展示自定义的UI。

二、iOS12 ShortCut

1.NSUserActivity

记录用户的操作,生成ShortCut,用户可以在设置->Siri->All ShortCuts中找到,可以匹配上语音,以后通过该语音调用用户的操作。

代码语言:javascript
复制
- (NSUserActivity *)createUserActivityWithTitle:(NSString *)title userInfo:(NSDictionary *)userInfo{
    NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:kKBSiriUserActivityTypeIdentifier];
    userActivity.eligibleForSearch = YES;
    if (@available(iOS 12.0, *)) {
        //很重要,暴露ShortCut到设置中
        userActivity.eligibleForPrediction = YES;
    } else {
        // Fallback on earlier versions
    }
    userActivity.title = title;
    userActivity.userInfo = userInfo;
    return userActivity;
}

//在用户操作的ViewController中绑定该NSActivity即可
viewcontroller.userActivity = userActivity;

2.Intent

通过Intent也可以实现上述效果,生成ShortCut,该方法可以自定义UI,参照IntentsUI。

代码语言:javascript
复制
   //参数中的Intent就是开发者自定义的Intent,在用户的某个操作后初始化,并暴露到设置中的ShortCut中。
    INInteraction *interaction = [[INInteraction alloc] initWithIntent:intent response:response];
    //很重要,暴露ShortCut到设置中
    [interaction donateInteractionWithCompletion:^(NSError * _Nullable error) {
    
    }]

3.回调处理

部分操作可以在Siri Extension中完成,不需要启动App,如果某些业务需要启动App处理,需要在AppDelegate中处理回调,如下:

代码语言:javascript
复制
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    //根据不同的INIntent类型做不同的处理
    if ([userActivity.activityType isEqualToString:@"INIntent类名"]) {
        
    }
}

4.添加到Siri按钮

iOS12提供了在App内直接将ShortCut和用户语音关联的功能。

代码语言:javascript
复制
        TestIntent *testIntent = [[TestIntent alloc] init];
        testIntent.content = @"App内Siri按钮生成的ShortCut";
        INUIAddVoiceShortcutButton *button = [[INUIAddVoiceShortcutButton alloc] initWithStyle:INUIAddVoiceShortcutButtonStyleWhiteOutline];
        INShortcut *shortCut = [[INShortcut alloc] initWithIntent:testIntent];
        button.delegate = self;
        button.shortcut = shortCut;
        button.translatesAutoresizingMaskIntoConstraints = NO;
        [self.addSiriView addSubview:button];
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、iOS11
    • 1.INIntent
      • Apple只对11个固定的领域支持Siri识别,每个领域对应不同的INIntent和INIntentHandler,以发送信息和支付为例,通过用户的语音大体判断服务领域以及INIntent。
    • 2.IntentHandler
      • 3.IntentsUI
      • 二、iOS12 ShortCut
        • 1.NSUserActivity
          • 2.Intent
            • 3.回调处理
              • 4.添加到Siri按钮
              相关产品与服务
              语音识别
              腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档