快速入门

支持平台

由于目前iFLYHOME OS应用仅支持Android平台,而开放平台必须依赖于iFLYHOME OS应用,所以开放平台目前仅支持在Android平台运行的应用。

集成方式

运行在Android平台的应用具体的呈现方式大致分为两类,集成方式也有所区别:

  • Android 原生的展现方式,SDK为Android原生SDK;
  • Web 形式的展示方式,SDK为JS文件。 其中Web形式按照承载方式分为以下两种:
    1. iFLYHOME OS应用内的Web页面(后面简称为应用内Web),指Web页面以iFLYHOME OS应用为承载框架,Web页面只需要按照SDK集成, 无需去实现客户端的加载。内部通信采用jsBridge的方式。
    2. iFLYHOME OS应用外的Web页面(后面简称为应用外Web),指第三方应用自行选择或者实现加载Web页面的框架,独立于iFLYHOME OS应用之外。内部通信方式采用类似webSocket的方式。 由于Web的上述两种实现方式不同,故SDK的JS文件也不同,具体集成和使用方式见下方说明。

前提条件

  1. 开放平台集成方需要在装有iFLYHOME OS应用的android系统设备上;
  2. 集成方要按照接入流程申请appid和对应的能力

具体的申请步骤:接入流程

Android 原生应用开发步骤

SDK介绍

SDK核心功能就是和iFLYHOME OS建立通信(AIDL方式),当集成方初始化SDK后,并处于前台,则SDK自动尝试建立通信,当应用切换到后台时,SDK自动断开iFLYHOME OS的连接,并存储状态。当应用再次处于前台时,自动恢复状态。

示意图

SDK及Demo下载

点击下载SDK及Demo_v2.8.3

开发步骤

SDK集成

导入SDK 打开Android Studio,创建一个新的工程,将下载的压缩包中libs目录下OpenPlatformSDK_xxx.jar拷贝至Android工程的libs目录下。

添加用户权限 在工程AndroidManifest.xml文件中添加如下权限

<uses-permission android:name="iflytek.permission.OPEN_PLATFORM" />
<uses-permission android:name="android.permission.GET_TASKS" />

配置iFLYHOME OS分配的appid

初始化sdk, 传入 appid 值

XiriOPManager.getInstance().init(xxxx,"{appid}", xxx);

注意:如需在打包或者生成APK的时候进行混淆,请在proguard.cfg中添加如下代码:

-keep class com.iflytek.**{*;}
-keepattributes Signature

Android原生支持的功能

  1. ASR语音识别
  2. TTS语音合成
  3. NLP语义理解
  4. 中英文评测
  5. 开放UI事件
  6. 对话反馈
  7. 其他

iFLYHOME OS应用内置Web集成开发步骤

SDK集成步骤

  1. 获取SDK及Demo: 点击下载SDK 点击下载Demo

  2. 创建一个Web应用工程,将下载的SDK拷到指定的目录下,在具体的页面添加对SDK的引用。

SDK通信方式

SDK进行了封装并为开发者提供了两个方法:

方法名 方法含义
H5_call_native H5调用宿主的方法,主要用于调用iFLYHOME OS的应用用于申请能力
native_call_H5 监听iFLYHOME OS的应用调用H5的方法,主要用于申请能力后,监听能力的结果回调

SDK接口说明见:SDK接口文档 SDK接口详细通信协议见:通信协议

Web端的鉴权

Web端采用token校验的机制,需要Web应用调用授权接口获取token以及token对应有效期,然后需要携带appid和token调用iFLYHOME OS的鉴权接口,等明确的鉴权结果返回后方可进行后续操作。

鉴权的方案以及授权接口协议见:鉴权协议

首先,注册鉴权接口结果的回调:

native_call_H5('h5_check_auth_result',function(data,responseCallback){//鉴权结果在data中})

然后,调用鉴权接口:

H5_call_native('native_check_auth',{"appid" :"xxx","token":"xxxxxxx"},function(res){})

使用开放能力

上述鉴权接口回调成功后,可以进行申请iFLYHOME OS开放能力的操作,并进行iFLYHOME OS能力回调的监听。 以开放ASR语音识别为例:

  1. 首先注册iFLYHOME OS能力回调:

     native_call_H5('h5_send_asr_result',function(data,responseCallback){})
    
  2. 然后,调用申请开放平台能力接口

     H5_call_native('native_open_asr',{"appid" :"xxx","token":"xxxxxxx"},function(res){})
    

    此时按下按下语音键说完之后,可以在h5_send_asr_result 接口中收到用户说的识别文本结果。

  3. 在不需要使用该能力的关闭

     H5_call_native('native_close_asr',{"appid" :"xxx","token":"xxxxxxx"},function(res){})
    

注意

申请的能力需要提前的申请表格中明确提出,不然调用其他申请的开放能力不会生效。

应用内置Web支持的功能

  1. ASR语音识别
  2. TTS语音合成
  3. NLP语义理解
  4. 中英文评测
  5. 开放UI事件
  6. 对话反馈
  7. 其他

iFLYHOME OS外置Web应用开发步骤

SDK集成步骤

  1. 获取SDK,下载链接:点击下载SDK
  2. 创建一个Web应用工程,将下载的SDK拷到指定的目录下,在具体的页面添加对SDK的引用。
  3. 创建listener回调,用于接收数据

     var listener = new Xiri.Listener(callback);
    
  4. 开始获取回调数据
    listener.getCmd("open_xiri");
    
  5. 开始鉴权 详细通信协议见:鉴权协议 鉴权的通讯协议与内置Web相同,再通过回调收到鉴权结果且成功后,可以进入下面使用能力
    listener.openFeatureFunc({"name":"native_check_auth","params":"{\"token\": \"abcd\", \"appid\": \"1234\"}"})
    
    鉴权结果示例
    {
      "data":"{\"msgId\":\"bfecf293-c185-4c4e-93bd-ed42d3c97846\",\"params\":\"{\\\"authCode\\\":\\\"200\\\",\\\"description\\\":\\\"鉴权通过\\\"}\",\"name\":\"h5_check_auth_result\"}",
      "_action":"open_xiri",
      "_command":"_XIRI_PUSH"
    }
    
    如果鉴权未成功,则等待回调收到鉴权通过的消息后,再进行后续操作
  6. 使用能力 例如:使用Asr能力

     listener.openFeatureFunc(data);
    

    data 数据格式如:

    {
     "name":"native_open_asr",
     "params":"{\"token\": \"abcd\", \"appid\": \"1234\"}"
    }
    
  7. 能力结果回调 如果能力使用成功,会有结果通过回调传出来,示例如下:
    {
     "data":"{\"msgId\":\"74748d82-24cc-4f8a-8649-acefb705e4ae\",\"params\":\"{\\\"token\\\":\\\"bcb8e1283742480388fcceb968a8e58e@2\\\",\\\"linkId\\\":\\\"227ab498-b5d9-4c0c-bd2a-1f3b2be90996\\\",\\\"text\\\":\\\"你好\\\"}\",\"name\":\"h5_send_asr_result\"}",
     "_action":"open_xiri",
     "_command":"_XIRI_PUSH"
    }
    
  8. 关闭能力 如果需要关闭能力,不再使用,需要调用 stopCmd 停止获取结果,并调用 unregist 释放开放平台能力
    listener.stopCmd();
    listener.unregist();
    

应用外置Web支持的功能

  1. ASR语音识别
  2. TTS语音合成
  3. NLP语义理解
  4. 中英文评测
  5. 开放UI事件
  6. 对话反馈

results matching ""

    No results matching ""