HarmonyOS鸿蒙Next中意图框架如何实现在App运行阶段与小艺通信

HarmonyOS鸿蒙Next中意图框架如何实现在App运行阶段与小艺通信 最近在使用 小艺打开 京东App后,可以实现的获取京东的数据,进行下一步的动作,但不知如何实现。

比如,我使用小艺说 , 打开京东搜索 精通HarmonyOS NEXT,这时进入京东,搜索精通HarmonyOS NEXT,并展示对应的结果。

这时,小艺还在运行,提示,有XXX出版社,YYY书店

之后用户可以说,XXX出版社,这时京东App就进入了这个出版社的书的详情页,

之后还可以直接下单。

有大佬知道这个是如何实现的么。

4 回复

开发者您好,请问目前是想在自己的应用中调用小艺(小艺帮帮忙智能体)还是想开发一样的智能体。

更多关于HarmonyOS鸿蒙Next中意图框架如何实现在App运行阶段与小艺通信的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


是京东用小艺开放平台上架京东智能体或者插件市场实现生态能力的统一接入。图片

关键实现流程

  1. 小艺解析语音→提取槽位→生成意图(携带参数);
  2. 意图框架启动 App 前台 Page + 唤醒后台 Service(建立长连接);
  3. App 执行指令(搜索书籍)→ 通过意图框架回传结果(出版社列表)给小艺;
  4. 小艺播报结果→保持上下文→等待用户后续语音;
  5. 后续指令(选出版社)→ 小艺通过已有通道路由至 Service→App 更新 UI(详情页 / 下单)。

HarmonyOS Next意图框架通过Ability与ServiceAbility机制实现App运行阶段与小艺通信。应用可调用startAbility()方法启动小艺的Ability,或通过connectService()绑定小艺的ServiceAbility进行跨进程通信。数据传递使用Want对象封装请求参数,小艺通过系统预置的意图识别能力解析并响应。通信过程基于HarmonyOS分布式软总线技术,确保低延迟与高可靠性。

在HarmonyOS Next中,您描述的场景是通过意图框架(Intent Framework)和扩展的UIAbility交互来实现的。核心在于您的App(如京东)需要声明并实现特定的意图(Intent),以便在运行时接收并处理来自小艺的指令和数据。

以下是实现这一流程的关键步骤:

  1. 声明意图(Intent):在您的App的module.json5配置文件中,为对应的UIAbility声明其能够处理的意图。例如,您需要声明一个用于“搜索”的意图和一个用于“处理特定结果选择”的意图。这通过skills字段下的entitiesactions来定义。

    {
      "module": {
        "abilities": [
          {
            "name": "SearchAbility",
            "skills": [
              {
                "entities": ["entity.system.search"],
                "actions": ["action.system.search"]
              }
            ]
          },
          {
            "name": "ItemDetailAbility",
            "skills": [
              {
                "entities": ["entity.system.detail"],
                "actions": ["action.system.view"]
              }
            ]
          }
        ]
      }
    }
    
  2. 处理启动意图:当用户对小艺说“打开京东搜索精通HarmonyOS NEXT”时,小艺会解析出“搜索”意图(action)和参数(keyword: “精通HarmonyOS NEXT”),并启动您App中声明了对应entitiesactions的UIAbility(如SearchAbility)。在该UIAbility的onCreateonNewIntent生命周期回调中,您可以通过want参数获取到小艺传递过来的搜索关键词,并执行App内的搜索逻辑,展示结果。

  3. 持续对话与上下文传递:为了实现小艺在App运行后仍能交互并传递新指令(如“XXX出版社”),关键在于意图的持续传递和上下文保持。这通常需要:

    • 前台UIAbility保持活动:您的App(或特定UIAbility)需要在前台运行,以持续接收新的意图。
    • 处理新的意图:当用户说出“XXX出版社”时,小艺会再次发起一个意图。这次意图的actionentity可能指向查看详情(例如action.system.viewentity.system.detail),并且会在want参数中携带具体的物品标识(如出版社ID或名称)。您的ItemDetailAbility(或同一个Ability的onNewIntent)需要能接收并处理这个新意图,提取参数,并跳转到对应的详情页。
  4. 参数传递:所有从语音指令中解析出的关键信息(如搜索词、选中的项目ID等),小艺都会通过want对象的parameters属性传递给您的UIAbility。您需要在此处解析这些参数以执行相应操作。

总结:实现这一功能,您的App需要:

  • 正确配置意图声明(skills),使系统和小艺能识别您的App能处理哪些类型的语音指令。
  • 在对应的UIAbility中实现onCreateonNewIntent回调,妥善处理来自小艺的启动意图和后续意图,并从中解析参数。
  • 设计好App内的页面导航逻辑,以便根据意图参数无缝跳转。

这样,用户就可以通过小艺的连续语音指令,流畅地完成从打开App、搜索、选择到查看详情等一系列操作。整个过程由HarmonyOS的意图框架在背后进行路由和调度。

回到顶部