5 分钟上手 HarmonyOS Skill:快速集成语音与意图交互能力
在鸿蒙生态(HarmonyOS)中,Skill 是实现智能语音助手、意图识别和跨设备服务调用的核心机制之一。通过 Skill,你的应用可以被小艺(Celia)语音唤醒、响应用户自然语言指令,甚至与其他设备上的服务无缝协作。
本文将用 5 分钟时间,带你快速理解 Skill 的基本概念,并演示如何在 HarmonyOS 应用中注册并使用一个简单的自定义 Skill。
Skill 是 HarmonyOS 提供的一种服务能力单元,用于描述“我能做什么”。它基于 意图(Intent) 模型,将用户语音或文本指令映射到具体的功能逻辑。
例如:
VIEW_WEATHER,并携带参数 {city: "北京"} 💡 Skill 类似于 Android 的 App Actions 或 iOS 的 Siri Shortcuts,但深度集成于鸿蒙分布式架构。
我们将创建一个简单 Skill:当用户对小艺说“让 MyApp 打个招呼”,应用弹出“Hello, HarmonyOS!”。
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。
在 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()启动目标页面,并传递参数。
为了让小艺识别“让 MyApp 打个招呼”,需在 华为开发者联盟后台 提交语音模板(目前部分能力需审核):
greet_user🌐 注:本地调试可使用 DevEco Studio 的模拟器 + Intent 模拟工具 测试,无需真实语音。
action: greet_user 即可模拟 Skill 调用。
hdc shell 或 DevEco Log 工具观察 onNewWant 是否被触发。
module.json5 中声明相应权限(如 ohos.permission.INTERNET)。
Skill 是 HarmonyOS 构建智能、主动、跨端服务的关键入口。虽然本文仅展示了最基础的用法,但已为你打开了通往“语音驱动应用”的大门。只需 5 分钟配置,你的应用就能听懂用户说话!
🚀 下一步建议:尝试为你的应用添加一个“查询今日待办”Skill,结合数据库返回结果——让小艺真正成为你的效率助手!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。