创建应用
目标: 开发一个语音交互技能,可以让用户订票
创建号技能后点击进去创建意图,意图创建好后不可刪除,一个技能可以有多个意图,一个意图有多个语料
aiui技能文档
创建语料
创建好后给语料设置辅助词和实体,选中你需要设置的词就会出现这个框,可以在这里使用官方的也可以使用自己创建的,如果你发现这里没你想要的那么就需要自己去创建
怎么设置相应的辅助词和实体呢,到底什么设置辅助词,什么设置实体呢,我们看这句话
我想订一张明天上午深圳到北京的机票
辅助词:我想,订,一张,到,的
实体 :明天上午(时间),深圳(城市),北京(城市),机票(票)
单机上方的技能工作室去创建辅助词和实体
时间,城市可以用官方的,票的实体需要我们创建
创建好后我们给实体创建相对应的词条
创建辅助词
其余的辅助词你们自己创建
给语料设置对应的实体和辅助词
设置好后点击构建进行测试
测试完后到应用里进行配置
科大讯飞webApi文档
链接:
https://doc.iflyos.cn/aiui/sdk/more_doc/webapi/summary.html
test方法
Map params = new HashMap();
params.put("break", "true");
params.put("language", "cn");
params.put("sn", "20af74dec95c180eee6a9e834b96bd2c");
params.put("oriText", "我要订一张明天上午深圳到北京的机票 ");
byte[] dataByteArr = params.get("oriText").toString().getBytes(StandardCharsets.UTF_8);
JSONObject jsonObject = new JSONObject();
jsonObject.put("scene", "main_box");
jsonObject.put("auth_id", "20af74dec95c180eee6a9e834b96bd2c");
jsonObject.put("data_type", "text");
String param = JSONObject.toJSONString(jsonObject);
String paramBase64= Base64.encodeBase64String(param.getBytes(StandardCharsets.UTF_8));
long curTime = System.currentTimeMillis() / 1000;
String checkSum = DigestUtils.md5Hex("c914daac81524be34d0612b8766d7e4e" + curTime + paramBase64);
Map<String, String> header = new HashMap<>();
header.put("X-Param",paramBase64);
header.put("X-CurTime", String.valueOf(curTime));
header.put("X-CheckSum", checkSum);
header.put("X-Appid", "5fd9c0c8");
/* 调用讯飞接口 */
String results = HttpUtils.post("http://openapi.xfyun.cn/v2/aiui", header, dataByteArr);
System.out.println(results);
http Post
private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class);
private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
private static final MediaType FORM = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");
private static final OkHttpClient httpClient = new OkHttpClient();
public static String post(String url, Map<String, String> headers,byte[] body) {
long start=System.currentTimeMillis();
Request.Builder builder = new Request.Builder();
builder.url(url);
if (Objects.nonNull(headers)) {
headers.forEach(builder::addHeader);
}
builder.post(RequestBody.create(FORM,body));
try {
Response response = httpClient.newCall(builder.build()).execute();
if (response.isSuccessful()) {
logger.info(".....request xf coast time Mils:{}",System.currentTimeMillis()-start);
return response.body().string();
} else {
logger.error("***********error:返回数据异常,不能解析,response={}",response);
throw new Exception("网络请求错误,Response:" + response);
}
} catch (Exception e) {
logger.error("***********error:请求数据异常,{}",e);
return null;
}
}
返回数据
{"data":[{"sub":"nlp","auth_id":"20af74dec95c180eee6a9e834b96bd2c","intent":{"category":"OS10035533372.ticket","intentType":"custom","rc":0,"semantic":[{"entrypoint":"ent","hazard":false,"intent":"book","score":1,"slots":[{"begin":5,"end":9,"name":"datetime","normValue":"{\"datetime\":\"2020-12-25TAM\",\"suggestDatetime\":\"2020-12-25T06:00:00\"}","value":"明天上午"},{"begin":9,"end":11,"name":"from","normValue":"深圳市","value":"深圳"},{"begin":12,"end":14,"name":"to","normValue":"北京市","value":"北京"},{"begin":15,"end":17,"name":"ticketType","normValue":"air","value":"机票"}],"template":"{helpme}{book}{mbl_one}{datetime}{from}到{to}{mbl_relate}{ticketType}"}],"semanticType":0,"service":"OS10035533372.ticket","sid":"ara0bd47a24@dx0001133f4df1094000","state":null,"text":"我要订一张明天上午深圳到北京的机票 ","uuid":"ara0bd47a24@dx0001133f4df1094000","vendor":"OS10035533372","version":"2.0"},"result_id":1}],"sid":"ara0bd47a24@dx0001133f4df1094000","code":"0","desc":"success"}