【Java】UNIT2.0 API调用示例
756665228 发布于2018-07-12 13:25 浏览:1593 回复:15
8
收藏

官网给出了示例代码。但是请求参数为字符串拼接。为了方便大家实际应用。小帅丶封装成了一个JavaBean。当然看大家喜好了。并不是说纯字符串拼接不好。

  • 需要用到的第三方jar
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

 

  • 请求参数封装的对象UnitV2RequestBean
import java.util.List;
/**
 * UNIT 2.0 API请求所需要的bean对象封装
 * @author 小帅丶
 * set/get方法省略 请自行补上
 */
public class UnitV2RequestBean {
	private String version;//2.0,当前api版本对应协议版本号为2.0,固定值
	private String bot_id;//BOT唯一标识,在『我的BOT』的BOT列表中第一列数字即为bot_id
	private String log_id;//开发者需要在客户端生成的唯一id,用来定位请求,响应中会返回该字段。对话中每轮请求都需要一个log_id。
	private Request request;//本轮请求体
	private String bot_session;//BOT的session信息
	/**
	 * 本轮请求体对象
	 * @author 小帅丶
	 *
	 */
	public static class Request{
		private String user_id;//与BOT对话的用户id
		private String query;//本轮请求query(用户说的话)
		private QueryInfo query_info;//本轮请求query的附加信息。
		private int bernard_level;//澄清确认的敏感程度。取值范围:0(关闭)、1(中敏感度)、2(高敏感度)。
		private String client_session;//client希望传给BOT的本地信息
	}
	/**
	 * 
	 * @author 小帅丶
	 *
	 */
	public static class QueryInfo{
		private String type;
		private String source;
	}
	/**
	 * 
	 * @author 小帅丶
	 *
	 */
	public static class ClientSession{
		private String client_results;
		private List candidate_options;
	}
}

 

  • 调用示例代码

httputil代码下载:https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONObject;
/**
 * UNIT 2.0 API请求示例代码
 * @author 小帅丶
 *
 */
public class UnitV2Sample {
	public static String UNIT_URL ="https://aip.baidubce.com/rpc/2.0/unit/bot/chat";
	public static void main(String[] args) throws Exception {
		String result = getUNITV2Result("场景ID", "本轮对话内容", "自己应用获取的AccessToken");
		System.out.println(result);
	}
	/**
	 * UNIT 2.0 API请求方法 只需要场景id 和对话内容参数 大家可以根据需要稍作修改
	 * @param bot_id 场景id
	 * @param query 本轮对话内容
	 * @param access_token 请求接口所需的access_token
	 * @return String
	 * @throws Exception
	 */
	public static String getUNITV2Result(String bot_id,String query,String access_token) throws Exception{
		UnitV2RequestBean bean = new UnitV2RequestBean();
		bean.setVersion("2.0");
		bean.setBot_id(bot_id);
		bean.setLog_id("XS"+System.currentTimeMillis());
		Request request = new Request();
		request.setUser_id("XS0001");//测试设置 大家请自行更改
		request.setQuery(query);
		QueryInfo query_info = new QueryInfo();
		query_info.setType("TEXT");
		query_info.setSource("KEYBOARD");
		request.setQuery_info(query_info);
		request.setBernard_level(0);
		//希望传给bot的本地信息
		ClientSession client_session = new ClientSession();
		client_session.setClient_results("hhhh");
		List candidate_options = new ArrayList();
		candidate_options.add(0, "123");
		candidate_options.add(1, "456");
		client_session.setCandidate_options(candidate_options);
		/**
		 * ClientSession所需要的是字符串类型 内容为json格式  
		 * "client_session": "{\"candidate_options\": [\"123\", \"456\"], \"client_results\": \"hhhh\"}"
		 */
		String client_sessionparam = JSONObject.toJSONString(client_session);
		request.setClient_session(client_sessionparam);
		bean.setRequest(request);
		bean.setBot_session("");
		String jsonparam = JSONObject.toJSONString(bean);
		System.out.println("参数"+jsonparam);
		String result = HttpUtil.post(UNIT_URL, access_token, "application/json", jsonparam);
		return result;
	}
}

 

收藏
点赞
8
个赞
共15条回复 最后由756665228回复于2018-09-09 20:48
#16756665228回复于2018-09-09 20:48:45
#15 NC聂C回复
请问在调用HttpUtil时,有这个错误W/System: ClassLoader referenced unknown path: /data/app/com.example.jacknie.kirin-1/lib/x86 该怎么处理呢?
展开

你这是Java语言吗?

接口错误都是json格式的字符串哦

1
#15NC聂C回复于2018-09-08 16:23:17

请问在调用HttpUtil时,有这个错误W/System: ClassLoader referenced unknown path: /data/app/com.example.jacknie.kirin-1/lib/x86

该怎么处理呢?

0
#14tiancorn回复于2018-09-03 17:58:21
#13 756665228回复
每次请求会有bot_session  麻烦你仔细看一下文档说明

你看你调用的模型是什么时候训练的,最新的训练策略对应的模型已经把这个必填改为了可选。可以先训练一下。稍后我们做一下兼容处理。

0
#13756665228回复于2018-08-31 19:17:56
#12 Test卖咸鱼回复
连续的多轮对话怎么调接口呢

每次请求会有bot_session  麻烦你仔细看一下文档说明

1
#12Test卖咸鱼回复于2018-08-31 16:41:57

连续的多轮对话怎么调接口呢

0
#11756665228回复于2018-08-14 14:17:19
#10 NC聂C回复
添加package com.baidu.ai.aip.utils;之后出现错误,提示Package name does not correspond to the file path...... 请问该怎么解决呢?
展开

不明白。我的代码引入所需要的工具类 第三方jar都给出去下载地址了。

1
#10NC聂C回复于2018-08-14 10:46:16

添加package com.baidu.ai.aip.utils;之后出现错误,提示Package name does not correspond to the file path......

请问该怎么解决呢?

0
#9mxw2552261回复于2018-08-13 10:05:34

Good

0
#8756665228回复于2018-08-07 17:37:11
#6 晚自习的星空回复
想请问一下,调用API接口后,bot对话框是自动生成的吗?需不需要自己构建对话框?
展开

接口只是功能。业务层UI层 和接口没直接关系的

1
#7tiancorn回复于2018-08-07 17:27:45
#6 晚自习的星空回复
想请问一下,调用API接口后,bot对话框是自动生成的吗?需不需要自己构建对话框?
展开

不是的,要自己弄

0
#6晚自习的星空回复于2018-08-07 16:24:55

想请问一下,调用API接口后,bot对话框是自动生成的吗?需不需要自己构建对话框?

0
#5伯爵囧rz回复于2018-08-03 17:12:12

谢谢

0
#4ie421回复于2018-08-03 10:03:08

很不错

0
#3伊茨米可回复于2018-07-16 14:21:17

感谢小帅分享~~

0
TOP
切换版块