一、意图框架服务介绍
HarmonyOS NEXT引入了多项创新特性,其中的意图框架能够将应用中的业务功能智能分发至手机的各大系统入口,其中系统入口包括小艺对话、小艺搜索和小艺建议等。通过这一特性,用户不仅可以主动搜索和调用所需服务,还能享受到系统智能推荐的个性化建议。这将有效提升用户体验,带来全新的流量增长点,并为应用增量提供强大支持。
(图片来自于鸿蒙官方)
二、分发和使用场景
1、分发能力
意图框架支持多种分发能力,目前支持的特性类别包括:
1.1、习惯推荐—小艺建议
1.2、事件推荐—小艺建议
1.3、技能调用—小艺对话
1.4、本地搜索—小艺搜索
2、使用场景
2.1、常用场景
1.系统可以共享用户购买的电影票订单数据,自动提取订单中的关键特征(如时间、位置等)。在适当的时机,小艺建议会为用户推送观影提醒服务。
2.用户在小艺对话中询问“从深圳去北京的飞机要多少钱”时,小艺可以理解用户的机票搜索意图,调用应用提供的机票搜索功能,获取并呈现相关机票信息。
2.2、金融垂类场景

2.3、京东金融业务场景
三、意图运行逻辑
从上图可以看出应用或元服务可以主动向HarmonyOS共享意图,这些意图可以用于构建本地内容索引和学习用户的行为规律,从而支持本地搜索和主动建议功能。
用户可以在系统入口输入信息,或者通过系统的主动推荐,系统会向应用或元服务发起意图调用。
通过意图共享和意图调用,HarmonyOS能够更好地理解和预测用户需求,提供个性化和智能化的服务,进一步提升用户满意度和粘性。
四、基本接入流程
1、选择特性,确定意图
2、端侧意图注册
{"insightIntents":[{"intentName":"xxxx","domain":"BankingDomain","intentVersion":"1.0.1","srcEntry":"./ets/insightintents/IntentExecutorImpl.ets","uiAbility":{"ability":"MainUIAbility","executeMode":["foreground"]}}]}
3、意图调用
export default class IntentExecutor Implextends InsightIntentExecutor{/*** override 执行前台UIAbility意图* 拉起前台页面* @param name 意图名称* @param param 意图参数* @param pageLoader 窗口* @returns 意图调用结果*/async onExecuteInUIAbilityForegroundMode(intentName:string, intentParam: Record<string, Object>,pageLoader: window.WindowStage):Promise<insightIntent.ExecuteResult>{// 根据意图名称分发处理逻辑switch(intentName){case DispatchTools.xxxx:returnthis.viewAccountChange(intentParam, pageLoader);case DispatchTools.xxxx1:returnthis.viewAccountChange(intentParam, pageLoader);default:console.error('invalid intent name', intentName);let result: insightIntent.ExecuteResult ={code:-1,result:{"error":"invalid intent name","intentName": intentName}}return result;}}/*** 这里可以保存参数,然后在page中获取进行相应操作,或者直接在MainUIAbility的want中获取意图参数* @param param 意图参数* @param pageLoader 窗口*/private viewAccountChange(param: Record<string, Object>, pageLoader: window.WindowStage):Promise<insightIntent.ExecuteResult>{returnnewPromise((resolve, reject)=>{resolve({code:0,result:{message:'Intent execute succeed'}});})}}
dispatchAI(want: Want |undefined){try{if(want && want.parameters){let url:string|undefined=undefined;let bid:string|undefined=undefined;let name = want?.parameters['ohos.insightIntent.executeParam.name']as stringlet param = want.parameters['ohos.insightIntent.executeParam.param']as Record<string,Object>switch(name){case DispatchTools.PAY_REPAYMENT:url = DispatchTools.xxxx;bid = DispatchTools.xxxx;break;....}if(url &&!PageMatchUtil.matchPath(url,false)){jrouter.navigation(url)}}}catch(e){}}
4、验证接入是否成功
{"bundleName":"com.jd.xxx","executeMode":"foreground","intentName":"xxx","intentParam":{"entityId":"C10194368","cardTailNumber":"1234","cardType":"CreditCard","timeInterval":[163739320000,163739320000]}}
5、平台注册
五、后续展望

扫一扫,加入技术交流群

