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

SiriKit中含‘video’的播放列表词汇无法被INPlayMediaIntent识别

解决SiriKit中含“video”词汇的播放列表名称无法正确识别的问题

问题场景

配置SiriKit时整体流程正常,但遇到以下识别异常:

  • 使用含“video”的播放列表名称(如trending video),测试指令Play trending video in the {App}时,IntentHandler中的mediaSearch对象为nil
  • 换成“videos”形式(如trending videos),虽能拿到mediaSearch,但mediaType为0(非预期的.playlist类型)
  • 非视频类词汇(如shardy jeans)能正常识别,返回的mediaSearch对象中mediaType为5(对应.playlist)

原注册代码

let playlistTitles = [
    "trending video"
]

let vocabulary = INVocabulary.shared()
let playlistTitleSet = NSOrderedSet(array: playlistTitles)
vocabulary.setVocabularyStrings(playlistTitleSet, of: .mediaPlaylistTitle)

问题原因

Siri内置语义会优先将“video”“videos”这类词汇解析为媒体类型(视频),而非播放列表名称的一部分,导致自定义词汇的语义被覆盖,出现解析异常。

解决方案

1. 手动修正媒体类型解析

在处理INPlayMediaIntent时,结合自定义词汇列表手动匹配并修正mediaType:

func handle(intent: INPlayMediaIntent, completion: @escaping (INPlayMediaIntentResponse) -> Void) {
    let customPlaylists = ["trending video", "trending videos"]
    var response: INPlayMediaIntentResponse
    
    if let mediaName = intent.mediaSearch?.mediaName?.lowercased(),
       customPlaylists.contains(mediaName) {
        // 构造正确的INMediaSearch,指定mediaType为.playlist
        let correctedSearch = INMediaSearch(
            mediaName: mediaName,
            mediaType: .playlist,
            sortOrder: .unknown,
            albumName: nil,
            artistName: nil,
            genreNames: nil,
            moodNames: nil,
            releaseDate: nil,
            mediaIdentifier: nil
        )
        let playbackQueue = INPlaybackQueue(mediaSearch: correctedSearch, identifier: "trending-video-playlist")
        response = INPlayMediaIntentResponse(code: .success, userActivity: nil)
        response.playbackQueue = playbackQueue
    } else {
        // 处理常规识别逻辑
        response = INPlayMediaIntentResponse(code: .success, userActivity: nil)
        // 原有业务逻辑...
    }
    
    completion(response)
}

2. 调整自定义词汇表述

避免直接使用Siri有内置语义的词汇,给播放列表名称添加独特标识,比如:

let playlistTitles = [
    "Trending Video Playlist",
    "My Trending Videos Collection"
]

这类表述能降低Siri误解析的概率,更易被识别为自定义播放列表。

3. 确保词汇生效

  • 词汇注册代码务必在application(_:didFinishLaunchingWithOptions:)中执行
  • 重启App后,建议重置Siri数据(设置 -> Siri与搜索 -> 关闭Siri再重新开启,或重启设备),确保新词汇被Siri索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:18:18