HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)技能调用接入方案

一、方案概述
开发者需要按照意图定义,进行意图注册并实现意图调用;用户通过对小艺对话进行自然语言输入,小艺理解语义转换成意图调用(含意图参数),执行意图调用实现对应交互体验。
 

HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)技能调用接入方案-鸿蒙开发者社区


端侧意图注册
以“搜索旅游攻略”特性为例,开发者首先要注册“查看旅游攻略”(ViewTravelGuides)。开发者需要编辑对应的意图配置PROJECT_HOME/entry/src/main/resources/base/profile/insight_intent.json文件,实现意图注册。

{"insightIntents": [{"intentName": "ViewTravelGuides","domain": "TravelDomain","intentVersion": "1.0.1","srcEntry": "./ets/entryability/InsightIntentExecutorImpl.ets","uiAbility": {"ability": "EntryAbility","executeMode": ["background","foreground"]},"uiExtension": {"ability": "insightIntentUIExtensionAbility"}}]
}

配置说明如下所示:
 

HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)技能调用接入方案-鸿蒙开发者社区


二、端侧前台意图调用
开发者需自己实现InsightIntentExecutor,并在对应回调实现打开落地页(点击推荐卡片跳转的界面,如旅游攻略落页面)的能力,ViewTravelGuides的意图调用字段定义见查看旅游攻略 (ViewTravelGuides)。
步骤如下:
继承InsightIntentExecutor。
重写对应方法,例如目标拉起前台页面,则可重写onExecuteInUIAbilityForegroundMode方法。
通过意图名称,识别查看旅游攻略意图(ViewTravelGuides),在对应的方法中传递意图参数(param),并拉起对应落地页(点击推荐卡片跳转的界面,如旅游攻略落页面)。

import { insightIntent, InsightIntentExecutor } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';/*** 意图调用样例 */
export default class InsightIntentExecutorImpl extends InsightIntentExecutor {private static readonly VIEW_TRAVEL_GUIDES = 'ViewTravelGuides';/*** override 执行前台UIAbility意图** @param name 意图名称* @param param 意图参数* @param pageLoader 窗口* @returns 意图调用结果*/onExecuteInUIAbilityForegroundMode(name: string, param: Record<string, Object>, pageLoader: window.WindowStage):Promise<insightIntent.ExecuteResult> {// 根据意图名称分发处理逻辑switch (name) {case InsightIntentExecutorImpl.VIEW_TRAVEL_GUIDES:return this.viewTravelGuides(param, pageLoader);default:break;}return Promise.resolve({code: -1,result: {message: 'unknown intent'}} as insightIntent.ExecuteResult)}/*** 实现调用查看旅游攻略功能** @param param 意图参数* @param pageLoader 窗口*/private viewTravelGuides(param: Record<string, Object>, pageLoader: window.WindowStage): Promise<insightIntent.ExecuteResult> {return new Promise((resolve, reject) => {// TODO 实现意图调用,loadContent的入参为旅游攻略落地页路径,例如:pages/TravelGuidePagepageLoader.loadContent('pages/TravelGuidePage').then(() => {let entityId: string = (param.items as Array<object>)?.[0]?.['entityId'];// TODO 调用成功的情况,此处可以打印日志resolve({code: 0,result: {message: 'Intent execute succeed'}});}).catch((err: BusinessError) => {// TODO 调用失败的情况resolve({code: -1,result: {message: 'Intent execute failed'}})});})}
}

三、端侧前台窗口意图调用
开发者需自己实现InsightIntentExecutor,并在对应回调实现窗口页面内容加载的能力。
步骤如下:
继承InsightIntentExecutor。
重写对应方法,例如目标拉起前台窗口化页面,则可重写onExecuteInUIExtensionAbility方法。
通过意图名称,识别打开蓝牙意图(LoadBluetoothCard)调用扩展意图,在对应的方法中传递意图参数(param),并拉起对应窗口化页面(如打开蓝牙窗口化页面)。

import { insightIntent, InsightIntentExecutor, UIExtensionContentSession } from '@kit.AbilityKit';/*** 意图调用样例 */
export default class IntentExecutorImpl extends InsightIntentExecutor {private static readonly TAG: string = 'IntentExecutorImpl';private static readonly LOAD_BLUETOOTH_CARD: string = 'LoadBluetoothCard';/*** override 执行前台UI扩展意图** @param name 意图名称* @param param 意图参数* @param pageLoader 窗口* @returns 意图调用结果*/async onExecuteInUIExtensionAbility(name: string, param: Record<string, Object>,pageLoader: UIExtensionContentSession):Promise<insightIntent.ExecuteResult> {console.info(IntentExecutorImpl.TAG, `onExecuteInUIExtensionAbility`);switch (name) {case IntentExecutorImpl.LOAD_BLUETOOTH_CARD:console.info(IntentExecutorImpl.TAG, `onExecuteInUIAbilityForegroundMode::ForegroundUiAbility intent`);return this.openLoadBluetoothCard(pageLoader);default:console.info(IntentExecutorImpl.TAG, `onExecuteInUIAbilityForegroundMode::invalid intent`);break;}let result: insightIntent.ExecuteResult = {code: -1,result: {message: 'onExecuteInUIExtensionAbility failed'}};return result;}/*** 打开加载蓝牙卡片意图** @param pageLoader 意图内容Session对象* @returns 执行结果*/private async openLoadBluetoothCard(pageLoader: UIExtensionContentSession): Promise<insightIntent.ExecuteResult> {pageLoader.loadContent('pages/UiExtensionPage');let result: insightIntent.ExecuteResult = {code: 0,result: {message: 'intent execute succeed'}}return result;}
}

本文主要参考鸿蒙官方网站材料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11457.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试要点03 - String、StringBuilder与StringBuffer全面对比

本文目录 一、引言二、String的特性与实现原理三、StringBuilder的工作机制四、StringBuffer的同步机制五、性能对比与分析六、最佳实践与应用场景七、总结 一、引言 在Java中&#xff0c;字符串操作是最常见的编程任务之一。Java提供了三种主要的字符串处理类&#xff1a;Str…

【HCIP园区网综合拓扑实验】配置步骤与详解(已施工完毕)

一、实验要求 实验拓扑图如上图所示 1、按照图示的VLAN及IP地址需求&#xff0c;完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan&#xff08;本实验未使用&#xff09; 4、上层…

高铁站网约车智能出行如何实现快速调度功能

在现代交通体系中&#xff0c;高铁站作为重要的交通枢纽&#xff0c;其出行效率和服务质量直接影响乘客的出行体验。随着科技的进步&#xff0c;网约车智能出行已成为高铁站的重要补充&#xff0c;通过高效调度&#xff0c;为乘客提供更加便捷、快速的出行服务。接下来我们一起…

VUE3实现好看的通用网站源码模板

文章目录 1.设计来源1.1 网站主界面1.2 登录界面1.3 注册界面1.4 图文列表模板界面1.5 简洁列表模板界面1.6 文章内容左右侧模板界面1.7 文章内容模板界面 2.效果和源码2.1 动态效果2.2 源代码2.3 目录结构 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff…

【论文笔记】Prefix-Tuning: Optimizing Continuous Prompts for Generation

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Prefix-Tuning: Optimizin…

大数据机器学习算法与计算机视觉应用04:多项式

The Algorithm Magic of Polynomial PolynomialsThe Root of PolynomialA Delete ChannelPolynomials for Finding Maximum Matchings Polynomials 多项式 一个 d d d 次多项式可以用一个 d 1 d1 d1 元组 c i {c_i} ci​ 表达。在这种情况下&#xff0c;两个多项式相加的…

万字长文解读深度学习——生成对抗网络GAN

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总万字长文解读…

万字长文解读深度学习——训练(DeepSpeed、Accelerate)、优化(蒸馏、剪枝、量化)、部署细节

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化深度学习——权重初始化、评估指标、梯度消失和梯度爆炸深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总万字长文解读…

简易入手《SOM神经网络》的本质与原理

原创文章&#xff0c;转载请说明来自《老饼讲解神经网络》:www.bbbdata.com 关于《老饼讲解神经网络》&#xff1a; 本网结构化讲解神经网络的知识&#xff0c;原理和代码。 重现matlab神经网络工具箱的算法&#xff0c;是学习神经网络的好助手。 目录 一、入门原理解说 01.…

Python爬虫快速获取JD商品详情:代码示例与技巧解析

在当今这个信息爆炸的时代&#xff0c;数据成为了一种宝贵的资源。对于电商行业来说&#xff0c;获取商品详情信息是进行市场分析、价格比较、库存管理等重要环节的基础。本文将通过一个Python爬虫示例&#xff0c;展示如何快速获取&#xff08;JD&#xff09;商品的详情信息。…

大数据-218 Prometheus 插件 exporter 与 pushgateway 配置使用 监控服务 使用场景

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【数字图像处理+MATLAB】将图像转换为二值图像(Binary Image):使用 imbinarize 函数进行二值化运算(Binarize)

引言 二值图像是一种特殊类型的数字图像&#xff0c;其中每个像素只有两种可能的强度值或颜色值。这两种值通常表示为黑色和白色&#xff0c;或者0和1。 二值化是一个常见的图像处理步骤&#xff0c;它将灰度或彩色图像转换为二值图像。在二值化过程中&#xff0c;会设定一个…

智能电销机器人的操作流程

对于电销行业的人来说&#xff0c;有了智能电销机器人&#xff0c;简直是太省心了&#xff01; 智能外呼机器人&#xff0c;是一款基于人工智能语音外呼系统&#xff0c; 它可以代替人工自动拨打电话&#xff0c;自动筛选客户&#xff0c;自动推送意向客户到你的微信上 &#x…

CSDN做样板,教我们如何为新网站引流

CSDN为我们做了个很好的例子&#xff0c;详细请看下图 亮点分析&#xff1a; 1. 未采用硬广在网站上进行引流。减少了给用户在直觉上的造成的反感&#xff1b; 2. 在GitHub的转跳页面中&#xff0c;植入额外的关联网站链接。虽然对用户解决问题没啥鸟用&#xff0c;但是人家能…

电脑局域网内让其他电脑通过IP访问配置

依次点击桌面左下角“开始菜单”>“所有应用”>“Windows系统”>“控制面板”&#xff0c;如图所示 在控制面板界面&#xff0c;选择“查看方式”为“大图标”&#xff0c;然后点击打开window防火墙&#xff0c;如图所示 然后点击“高级设置”&#xff0c;如图所示 在…

网络安全——下载并在kali虚拟机上启动Cobalt Strike

目录 一、下载 二、上传文件到kali虚拟机 三、启动服务端 四、启动客户端 一、下载 CobaltStrike4.8汉化版带插件-CSDN博客 下载并解压后 二、上传文件到kali虚拟机 1、打开并运行kali虚拟机&#xff0c;查看kali的ip地址 2、打开xshell&#xff0c;新建连接&#xff0c;连…

[Win11]集成化综合漏洞扫描系统[更新]

前言 之前是为了方便外包仔在客户现场漏扫所以才集成的这个系统 优点&#xff1a;倒腾一下格式可以直接在客户的Vmware ESXI上面上面部署&#xff0c;同时个人版Vmware也可以拿来直接用。 由Linux版本改为了Windows版(有很多不会用) 因为前两个更新的很频繁&#xff0c;所以…

【SSL-RL】自监督强化学习:随机潜在演员评论家 (SLAC)算法

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

详解MySQL安装

目录 Ubantu 1. 使⽤apt安装MySQL 2.查看MySQL状态 3. MySQL 安装安全设置 4.设置密码 卸载MySQL Centos 1. 确认当前的系统版本 2.下载MySQL源 3.安装MySQL 4.启动mysqld 5.查看MySQL状态 6.设置开机自启动 7.查看MySQL密码&#xff0c;并登录 8.修改密码 Ubant…

【MATLAB源码-第213期】基于matlab的16QAM调制解调系统软硬判决对比仿真,输出误码率曲线对比图。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 一、16QAM调制原理 在16QAM&#xff08;16 Quadrature Amplitude Modulation&#xff09;调制中&#xff0c;一个符号表示4个比特的数据。这种调制方式结合了幅度调制和相位调制&#xff0c;能够在相同的频谱资源下传输更多的…