5 分钟上手 HarmonyOS Skill:快速集成语音与意图交互能力
在鸿蒙生态(HarmonyOS)中,Skill 是实现智能语音助手、意图识别和跨设备服务调用的核心机制之一。通过 Skill,你的应用可以被小艺(Celia)语音唤醒、响应用户自然语言指令,甚至与其他设备上的服务无缝协作。
本文将用 5 分钟时间,带你快速理解 Skill 的基本概念,并演示如何在 HarmonyOS 应用中注册并使用一个简单的自定义 Skill。
一、什么是 HarmonyOS Skill?
Skill 是 HarmonyOS 提供的一种服务能力单元,用于描述“我能做什么”。它基于 意图(Intent) 模型,将用户语音或文本指令映射到具体的功能逻辑。
例如:
- 用户说:“打开天气应用查看北京天气”
- 系统识别出意图
VIEW_WEATHER,并携带参数{city: "北京"} - 你的应用通过注册对应 Skill 响应该意图,启动页面并展示数据
💡 Skill 类似于 Android 的 App Actions 或 iOS 的 Siri Shortcuts,但深度集成于鸿蒙分布式架构。
二、5 分钟实战:创建一个“打招呼”Skill
我们将创建一个简单 Skill:当用户对小艺说“让 MyApp 打个招呼”,应用弹出“Hello, HarmonyOS!”。
步骤 1:配置 config.json
在 module.json5(或旧版 config.json)中注册 Skill:
{ "module": { "skills": [ { "name": "com.example.myapp.GreetSkill", "type": "voice", "description": "响应打招呼指令", "actions": [ { "name": "greet_user", "entities": [] } ] } ], "abilities": [ { "name": "MainAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", "skills": [ { "actions": ["greet_user"] } ] } ] } }
✅ 注意:
skills定义能力,abilities中的skills字段将其绑定到具体 Ability。
步骤 2:在 Ability 中处理 Skill 调用
在 EntryAbility.ets 中重写 onNewWant 方法(用于接收外部拉起):
import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { onNewWant(want) { // 检查是否由 Skill 触发 if (want.action === 'greet_user') { // 可在此启动特定页面或执行逻辑 console.log('收到打招呼指令!'); // 示例:弹出提示(需在 UI 线程) // 此处简化,实际应在页面中通过 ArkTS 显示 } } }
🔔 提示:若需跳转到具体页面,可在
onNewWant中调用this.context.startAbility()启动目标页面,并传递参数。
步骤 3:(可选)配置语音触发语料
为了让小艺识别“让 MyApp 打个招呼”,需在 华为开发者联盟后台 提交语音模板(目前部分能力需审核):
- 意图名称:
greet_user - 示例语句:
- “让 MyApp 打个招呼”
- “叫 MyApp 问好”
🌐 注:本地调试可使用 DevEco Studio 的模拟器 + Intent 模拟工具 测试,无需真实语音。
三、调试技巧
- 使用 DevEco Studio 的“Intent 模拟器”
在运行配置中选择 “Edit Configurations” → 添加 “Intent” 启动方式,填入action: greet_user即可模拟 Skill 调用。 - 查看日志
通过hdc shell或 DevEco Log 工具观察onNewWant是否被触发。 - 权限声明
若涉及敏感操作,需在module.json5中声明相应权限(如ohos.permission.INTERNET)。
四、进阶方向
- 使用 Entity 传递参数(如城市名、时间等)
- 实现 Service Ability 响应后台 Skill 请求
- 结合 元服务(Meta Service) 实现免安装卡片式交互
- 接入 小艺开放平台,支持更多自然语言表达
结语
Skill 是 HarmonyOS 构建智能、主动、跨端服务的关键入口。虽然本文仅展示了最基础的用法,但已为你打开了通往“语音驱动应用”的大门。只需 5 分钟配置,你的应用就能听懂用户说话!
🚀 下一步建议:尝试为你的应用添加一个“查询今日待办”Skill,结合数据库返回结果——让小艺真正成为你的效率助手!