NLP语义理解
功能说明:iFLYHOME OS
提供将语音转化转化为计算机可读的结构化数据。参考:产品白皮书
使用说明:集成方在申请开放该能力后,在需要使用时激活或者申请NLP语义理解能力,当触发语音识别后,会将语义理解结果回调给集成方。语义解析参考:语义协议
改动:ApiLevel 达到1时,具备开放流式识别文本能力(需要申请权限)
在使用时也支持一些自定义的配置,具体见接口或者协议说明
安卓原生
通过如下方法获取能力接口
XiriOPManager.getInstance().getSemanticMgr();
主要此处返回值可能为Null, 原因: SDK未初始化
api如下:
public interface ISemantic {
/**
* 设置参数,激活后调用有效
* @param sceneId 场景id
*
*/
void updateParams(String sceneId);
/**
* 激活开放语义
* 结合feedbackResult使用,实现是拦截还是监听
* 语义服务常量参考 {@link ServiceConstant}
* @param service 多个语义,可以通过`分割, 如:joke`calc
* @param listener 回调接口
*/
void active(String service, ISemanticListener listener);
/**
* 关闭开放语义
*/
void invalid();
/**
* 反馈处理结果
* @param token listener 回调结果中token
* @param processed 是否处理,true表示已处理(拦截),false未处理(iFLYHOME OS继续处理后续逻辑)
*/
void feedbackResult(String token, boolean processed);
}
示例:
// 笑话技能
String mCurrSelcetService = ServiceConstant.SERVICE_JOKE;
ISemantic semantic = XiriOPManager.getInstance().getSemanticMgr();
if (semantic != null) {
// 激活开放语义
semantic.active(mCurrSelcetService, new ISemanticListener() {
@Override
public void onSemantic(SemanticEntity entity) {
// TODO 处理 entity
// 最终反馈给电视助手,第二个参数true表示已处理,false未处理(电视助手继续处理后续逻辑)
semantic.feedbackResult(entity.getToken(), true/false);
}
});
}
// 关闭开放语义
if (semantic != null) {
semantic.invalid();
}
应用内嵌Web
注册识别语义结果监听
native_call_H5('h5_send_nlp_result',function(data,responseCallback){ //客户单发来的文本消息通过该接口回调 })
```
web端申请语点的识别语义能力(需要携带当前申请的语义service列表)
H5_call_native('native_open_nlp',{"appid":"xxxxx","token":"xxx","services":"weather`stock`video`baike"},function(response){})
切换当前识别的场景(针对有需要切换场景的使用调用)
H5_call_native('native_update_nlp',{"appid":"","token":"","params":"当前场景id"},function(response){})
收到语义结果结果后,web端需要回传语点通知是否处理当前语义(通过responseCallback回传)
native_call_H5('h5_send_nlp_result',function(data,responseCallback){ var service = data.service; var token = data.token; var semantic = data.semantic; var linkId = data.linkId if (responseCallback) { resObj.code=200; resObj.msg='success'; var result = {"asrToken": data.token,"handled": handleResult}; resObj.data=result; responseCallback(JSON.stringify(resObj)); } })
关闭当前开放识别语义能力(在页面关闭的时候,或者不使用的时候关闭)
H5_call_native('native_close_nlp', "appid":"xxx","token":"xxxxx"} ,function(response){})
应用外Web
注册回调数据监听,创建listener对象
function callback(data) { //对应数据格式 var data = JSON.stringify(data); } var listener = new Xiri.Listener(callback);
开启轮询数据获取
listener.getCmd("open_xiri");
申请能力
listener.openFeatureFunc("{\"name\":\"native_open_nlp\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\" ,\\\"services\\\": \\\"video\\\"}\"}");
切换当前识别的场景(针对有需要切换场景的使用者调用)
listener.openFeatureFunc("{\"name\":\"native_update_nlp\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\",\\\"params\\\": \\\"当前场景ID\\\"}\"}");
收到回调数据结果
回调数据data为Json格式
var jsData = data.data; var name = jsData.name; var params = JSON.parse(jsData.params); //语义服务名称 var service = params.service; //其他字段参照协议
关闭能力
listener.openFeatureFunc("{\"name\":\"native_close_nlp\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\"}\"}");