回调
唤醒回调
添加下面代码捕捉唤醒事件,并可以在唤醒的时候,做一些处理(比如播放一个应答词)。
/**
添加唤醒事件 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_flag | int | 识别结束标识:0为中间识别结果,1最终识别结果; |
error_no | int | 错误号(成功0,失败为负值 |
idx | int | 第n个数据包产生的识别结果; |
result | jsonObject | 识别结果对象 |
result.nbest | String | 识别结果的文本 |
sid | String | sid |
如果想实现点触识别,那么监听到 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 字符串,字段说明如下:
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
version | String | 是 | 版本号 |
session | JsonObject | 是 | 会话信息 |
session.sid | String | 是 | session id |
session.attributes | JsonObject | 否 | 会话属性,可用于多轮对话等功能,key-value形式,key为string,value为object |
cookies | JsonObject | 是 | cookie信息,用于存储特定场景客户端的属性,key-value形式,key为string,value为object |
nlu | JsonArray | 是 | nlu结果,列表形式 |
nlu[].domain | String | 是 | |
nlu[].intent | String | 是 | |
nlu[].slots | JsonObject | 是 | |
response | JsonObject | 是 | 结果对象,用于告知客户端该如何操作 |
response.outputSpeech | JsonObject | 是 | tts对象,包含tts内容 |
response.outputSpeech.type | String | 是 | tts类型,目前包括PlainText、SSML |
response.outputSpeech.text | String | 否 | tts内容,如果type为PlainText必须该字段必须有值 |
response.outputSpeech.ssml | String | 否 | SSML格式的tts内容,如果type为SSML必须该字段必须有值 |
response.outputSpeech.playBehavior | String | 否 | 行为控制,预留,暂时用不到 |
response.data | JsonObject | 否 | 业务数据透传, 猎户返回的data放入这个对象中 |
response.card | JsonObject | 否 | 卡片相关,部分信息流数据,由业务方与客户端定义 |
response.directives | JsonArray | 是 | 指令列表, 除了type字段以外,其他字段可根据type再定义 |
response.directives[].type | String | 是 | 必须字段,需定义指令类型 |
response.directives[].playBehavior | String | 否 | 行为控制,预留,暂时用不到 |
response.nextScene | JsonObject | 否 | 串起字段,告知客户端需要串起的行为 |
response.sceneIntent | JsonObject | 否 | 包含串起的domain,intent, slots |
response.sceneIntent.domain | String | 否 | |
response.sceneIntent.intent | String | 否 | |
response.sceneIntent.slots | String | 否 | |
response.shouldEndSession | boolean | 否 | 是否需要结束当前会话, 暂时可用于多轮 |
播放器播放状态回调:
添加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;