简介 目前,Bot开放平台提供的HTTP协议包含:安全签名、智能问答两部分。 智能问答接作为核心业务,必须在完成安全签名验证后才能调用。
安全签名 这是使用Bot开放平台HTTP协议的第一步,签名的过程是将分配的app_key和app_secret根据特定的签名算法,生成签名值并根据接口要求在调用时提供给接口作为身份证明。
签名算法说明如下: ------------------------------------------------------------------------------------------------------------ SHA1加密(app_key:realm:app_secret) 其中realm为"xiaoi.com" 2. SHA1加密(method:uri) 其中method为请求方法,如"POST", uri为"/ask.do" 3. SHA1加密(HA1:nonce:HA2) 其中HA1为步骤1的值,HA2为步骤2的值,nonce为40位随机数 4.请求头字符串为app_key="app_key的值",nonce="nonce的值",signature="步骤3的值" 5.添加请求头"X-Auth",值为步骤4的请求头字符串 *形如 X-Auth : app_key="用户app_key", nonce="nonce的值", signature="生成的签名" X-Auth: app_key="用户app_key", nonce="nonce的值", signature="生成的签名" ------------------------------------------------------------------------------------------------------------
JAVA签名代码示例: ------------------------------------------------------------------------------------------------------------ String realm = “xiaoi.com”; String method = “POST”; Sting uri = “/ask.do”; Byte[] b = new byte[20]; New Random[].nextBytes(b); String nonce = new String(Hex.encodeHex(b)); String HA1 = DigestUtil tils.shaHex(StringUtils.join(new String[]{app_key,realm,app_secret},”:”)); Sting HA2 = DigestUtils.shaHex(StringUtils.join(new String[]{method,uri},”:”)); String sign = DigestUtils.shaHex(StringUtils.join(new String[]{HA1,nonce,HA2},”:”)); ------------------------------------------------------------------------------------------------------------
智能交互
智能问答接口,基于HTTP协议的类REST调用方式,支持XML输出格式。智能交互接口支持普通和高级两种形式:普通模式交互直接返回交互结果,高级模式返回完整的报文结果,包括分词结果和语义拆解内容等。
请求地址: ------------------------------------------------------------------------------------------------------------ HTTP请求方式:POST
http://robot.open.xiaoi.com/ask.do ------------------------------------------------------------------------------------------------------------
HTTP请求报文示例如下: ------------------------------------------------------------------------------------------------------------ POST/ask.do HTTP/1.1 Cache-Control:no-cache Pragma:no-cache Connection:Keep-Alive Content-Length:xxx Content-Type:application/x-www-form-urlencoded;charset=UTF-8 X-Auth:xxxxxx
question=你好&userId=aaa&platform=weixin&type=0 ------------------------------------------------------------------------------------------------------------
返回说明(正确时的XML返回结果): ------------------------------------------------------------------------------------------------------------ <?xmlversion="1.0"encoding="utf-8"?> <Response> <Type>0</Type> <Content>你好,我是机器人,很高兴认识你。</Content> <Similarity>1.0</Similarity> <Commands> <Command name="p4"> </Command> </Commands>
</Response> ------------------------------------------------------------------------------------------------------------
请求参数说明:
报文返回格式参数说明:
元素名 | | | | | | | 响应类型。此元素客户端不用解析,仅分析调试及日志等使用。 |
| Content | 回答内容。回答内容中出现的[link]标签需要客户端以参数指明的意义渲染成对应的链接形式。 | 为纯文本类型。例如:"你好,我的名字叫小i"。"查看更多内需请点击[link url="http://www.xiaoi.com"]这里[/link] | | 分词结果,不包含弱语义词。(只有机器人理解了的问题才会输出) |
| Similarity | 0到1范围相似度值。(只有机器人理解了的问题才会输出) | | | | | | 相关问题列表。第一条为与用户问题语义一致的知识点。 | |
JAVA示例说明
Bot开放平台提供JAVA接入示例供开发者参考:
------------------------------------------------------------------------------------------------------------ public staticvoidmain(String[] args) throws IOException{ StringappKey = "请填写appkey"; StringappSecret = "请填写Secret"; Stringquestion = "请填写问句"; /** * 返回类型:Constant.PRIMARY_TYPE/Constant.SENIOR_TYPE * */ Stringtype = "请填写返回类型"; /** * 平台:请见Constant类后缀为_PLATFORM的常量 * */ Stringplatform = "请填写平台"; StringuserId = "请填写userId"; // 智能问答 AskRequestaskRequest = newAskRequest(appKey, appSecret, question, type,userId, platform); AskServiceaskService = CloudServiceFactory.getInstance() .createAskService(); askService.init(null); AskResponseaskResponse = null; try { askResponse= askService.ask(askRequest); ------------------------------------------------------------------------------------------------------------
示例代码参数说明:
参数名 | | | | | | | | | | | question = “你好” SESSIOIN_OPEN为欢迎语指令 | | | | | | | | | |
其他依赖jar包及对应版本号:
|