小雅OS开放平台文档

小雅OS开放平台文档

  • 快速入门
  • 客户端接入
  • 服务端接入

›iOS SDK

概述

  • 客户端接入

API 接入

  • WebSocket接口协议定义
  • Http接口协议定义
  • 调用样例
  • API 列表
  • 实体列表
  • 错误码

设备端

    Android SDK

    • 配置工程
    • 初始化
    • 功能
    • 回调
    • Demo 使用
    • 更新日志

    iOS SDK

    • 配置工程
    • 初始化
    • 功能
    • 回调
    • 更新日志

    C++ SDK

    • SDK获取方法
    • 环境要求
    • 目录结构
    • SDK架构
    • 调用示例
    • 接口文档

手机伴侣

    Android SDK

    • 接入准备
    • 账号模块
    • 内容模块
    • 反向控制
    • 设备管理模块
    • 技能模块
    • 蓝牙模块
    • 更新日志

    iOS SDK

    • 接入准备
    • 账号模块
    • 内容模块
    • 反向控制
    • 设备管理模块
    • 技能模块

内容页

    Android

    • 更新日志
    • 初始化

    iOS

    • 更新日志
    • 初始化

回调

唤醒回调

添加下面代码捕捉唤醒事件,并可以在唤醒的时候,做一些处理(比如播放一个应答词)。

/**
添加唤醒事件 observe
@param observer 实现<OnWakeupObserver>协议的对象
*/
- (void)addWakeupObserver:(id<OnWakeupObserver>)observer;

识别结果回调

添加下面代码可以接收到 ASR 识别结果(包含中间结果),以及 NLU 返回结果。

/**
添加 ASR 识别结果 observer
@param observer 实现<IASRResultObserver>协议的对象
*/
- (void)addASRResultObserver:(id<IASRResultObserver>)observer;

ASR 识别结果案例:

{
    "end_flag": 0,
    "err_no": 0,
    "idx": 39,
    "result": {
        "nbest": [
            "今天天气怎么样"
        ]
    },
    "sid": "a968441cef3a614afecf7238636cd327"
}

ASR 识别结果字段说明

字段类型说明
end_flagint识别结束标识:0为中间识别结果,1最终识别结果;
error_noint错误号(成功0,失败为负值
idxint第n个数据包产生的识别结果;
resultjsonObject识别结果对象
result.nbestString识别结果的文本
sidStringsid

如果想实现点触识别,那么监听到 end_flag 为 1就可以调用 StopRecognize 结束本次识别了。

NLU 识别结果案例:

{
    "version": "1.0",
    "session": {
        "sid": "730ea06d55b18dd734a98da70addd851",
        "attributes": {}
    },
    "cookies": {},
    "nlu": [{
        "domain": "weather",
        "intent": "get_weather",
        "slots": {
            "time": [{
                "slot_type": "TIME",
                "text": "今天",
                "value": {
                    "sub_type": 0,
                    "type": 1,
                    "begin": {
                        "date": {
                            "month": 3,
                            "year": 2019,
                            "day": 20
                        }
                    }
                }
            }]
        }
    }],
    "response": {
        "outputSpeech": {
            "type": "PlainText",
            "text": "朝阳区今天小雨转多云,最低温度6度,最高温度19度。空气质量轻度污染,PM2.5雾霾指数79。外出的话戴口罩是个不错的选择哦。",
            "ssml": "",
            "playBehavior": ""
        },
        "card": {
            "ui": [{
                "skillIcon": {
                    "image": "http://api.speaker.ainirobot.com/storge/upload/pic/163ceb95068fc2be41c283a081bfaa59.png",
                    "name": "天气"
                },
                "bg": {
                    "image": "http://dlcdn.ai.ainirobot.com/svr/pic/0805/rain.jpg",
                    "virtual": false,
                    "color": ""
                },
                "custom": {
                    "aqiGrade": "轻度",
                    "nowTemp": "19",
                    "lowTemp": "6",
                    "aqi": "105",
                    "highTemp": "19",
                    "aqiPic": "http://api.speakertest.ainirobot.com/storge/images/ic_air_quality_light.png",
                    "desc": "小雨转多云"
                },
                "type": "CustomWeatherNow"
            }],
            "text": "朝阳区今天小雨转多云,最低温度6度,最高温度19度。空气质量轻度污染,PM2.5雾霾指数79。外出的话戴口罩是个不错的选择哦。"
        },
        "directives": [],
        "data": {
            "call_from": 1
        },
        "nextScene": null,
        "shouldEndSession": true
    }
}

NLR 识别结果字段说明: 返回的 JSON 字符串,字段说明如下:

字段类型必填说明
versionString是版本号
sessionJsonObject是会话信息
session.sidString是session id
session.attributesJsonObject否会话属性,可用于多轮对话等功能,key-value形式,key为string,value为object
cookiesJsonObject是cookie信息,用于存储特定场景客户端的属性,key-value形式,key为string,value为object
nluJsonArray是nlu结果,列表形式
nlu[].domainString是
nlu[].intentString是
nlu[].slotsJsonObject是
responseJsonObject是结果对象,用于告知客户端该如何操作
response.outputSpeechJsonObject是tts对象,包含tts内容
response.outputSpeech.typeString是tts类型,目前包括PlainText、SSML
response.outputSpeech.textString否tts内容,如果type为PlainText必须该字段必须有值
response.outputSpeech.ssmlString否SSML格式的tts内容,如果type为SSML必须该字段必须有值
response.outputSpeech.playBehaviorString否行为控制,预留,暂时用不到
response.dataJsonObject否业务数据透传, 猎户返回的data放入这个对象中
response.cardJsonObject否卡片相关,部分信息流数据,由业务方与客户端定义
response.directivesJsonArray是指令列表, 除了type字段以外,其他字段可根据type再定义
response.directives[].typeString是必须字段,需定义指令类型
response.directives[].playBehaviorString否行为控制,预留,暂时用不到
response.nextSceneJsonObject否串起字段,告知客户端需要串起的行为
response.sceneIntentJsonObject否包含串起的domain,intent, slots
response.sceneIntent.domainString否
response.sceneIntent.intentString否
response.sceneIntent.slotsString否
response.shouldEndSessionboolean否是否需要结束当前会话, 暂时可用于多轮

播放器播放状态回调:

添加XYPlayBackStateObserver可以监听播放器的播放状态,例如开始播放专辑时可以通过内容资源api获取相关专辑列表:

/**
添加播放器状态的 observer

@param observer 实现<XYPlayBackStateObserver>协议的对象
*/
- (void)addPlayBackObserver:(id<XYPlayBackStateObserver>)observer;

回调结果如下,state为状态,mediaInfo为当前播放内容信息:

/**
* 播放器播放状态回调
*/
- (void)playBackStateChanged:(XYPlayState)state mediaInfo:(NSString *)mediaInfo {

}

音量回调

添加OnVolumeChangedObserver回调,在SDK收到音量相关指令时会将事件抛出,由上层自行处理。

音量调节

调节类型为调大、调小、最大、最小,一般建议上层每次调节固定值,例如10,注意返回值为0-100之间。

/**
音量调节
@param source 音量类型
@param range 调节类型(调大、调小、最大、最小)
@return 返回音量值(0-100),失败返回-1
*/
- (NSInteger)volumeAdjustSource:(XYVolumeSource)source range:(XYVolumeRange) range;

音量值设置

设置的类型有具体数值和百分比,建议通过计算后返回数值,注意返回值为0-100之间。

/**
 音量设置
 @param source 音量类型
 @param form 调节方式(数值或者百分比)
 @param value 调节的值
 @return 返回音量值(0-100),失败返回-1
 */
- (NSInteger)volumeChangeSource:(XYVolumeSource)source form:(XYVolumeForm)form value:(NSInteger)value;

静音

静音的回调,建议当isMute为YES时,设置音量为0。

/**
静音
@param source 音量类型
@param isMute 是否静音
@return 成功返回YES,否则NO
*/
- (BOOL)volumeMuteSource:(XYVolumeSource)source isMute:(BOOL)isMute;

音量查询

当收到查询的回调时,上层可自行处理或者忽略。

/**
 查询音量
 */
- (void)volumeQuery;
← 功能更新日志 →
  • 唤醒回调
  • 识别结果回调
  • 播放器播放状态回调:
  • 音量回调
    • 音量调节
    • 音量值设置
    • 静音
    • 音量查询
北京小雅星空科技有限公司 京ICP备19010603号