微信开发二三事:功能应用二、聊天机器人(2)

OK,上篇讲了一下图灵机器人,那个无节操的机器人,相信大家试了后也会明白我为什么这么说了的。那么今天来讲讲另一个机器人,小i机器人。

小i机器人的网址为:http://cloud.xiaoi.com/index.jsp,需要注册才能得到key,而且还需要实名认证,这样每个月才有10000次调用权限,注意,是每个月10000次,不是每天,不过对于小用户来说,每个月10000次差不多够了。

小i机器人的智能没有图灵机器人那么高,在我看来。因为它只能进行很简单的交流,通俗一点的说,就是....智力有限,但节操满满,大家试一试吧。

首先,我们需要注册登录,登录后,在左边的快速接入哪里找到API


点击去以后,我们可以看到我们的key和secret,先看签名算法,我们可以得到一段代码,如下:


然后看智能问答,得到API接口和调用实例,那么接下来,我们只需要按着步骤走就是了,完整代码如下:

public class JiQiRenTest {
	
    private final static String APP_KEY = "你的APP_KEY";
    private final static String APP_SECRET = "你的APP_SECRET"
	
	@Test
	public void createMenuTest() {
	    //定义一些字符串,用于后面拼接和传输
	    String names="api-awzoxcog";
	    String key="我爱你";
	    String realm = "xiaoi.com";
	    String method = "POST";
	    String uri = "/robot/ask.do";
	    byte[] b = new byte[20];
	    //得到随机数
	    new Random().nextBytes(b);
	    String nonce = new String(Hex.encodeHex(b));
	    //将APP_KEY和APP_SECRET进行SHA1加密,得到HA1
	    String HA1 = DigestUtils.shaHex(StringUtils.join(new String[] {
	            APP_KEY, realm, APP_SECRET }, ":"));
	    //讲method和uri进行SHA1加密,得到HA2
	    String HA2 = DigestUtils.shaHex(StringUtils.join(new String[] { method,
	            uri }, ":"));
	    //拼接HA1+随机数+HA2,得到加密签名
	    String sign = DigestUtils.shaHex(StringUtils.join(new String[] { HA1,
	            nonce, HA2 }, ":"));
	 
	    String str = null;
	 
	    HttpClient hc = new HttpClient();
	    PostMethod pm = new PostMethod("http://nlp.xiaoi.com/robot/ask.do");
	    pm.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,
	            "utf-8");
	    //按要求拼接X-Auth
	    pm.addRequestHeader("X-Auth", "app_key=\"LZFXps7GpdGg\", nonce=\""
	            + nonce + "\", signature=\"" + sign + "\"");
	    pm.setParameter("platform", "weixin");
<span style="white-space:pre">	</span>    //调用基础接口,不要问我为什么不调用高级接口
	    pm.setParameter("type", "0");
	    pm.setParameter("userId", names);
	    pm.setParameter("question", key);
	    int re_code;
	    try {
	        re_code = hc.executeMethod(pm);
	        //如果返回码==200,说明调用成功,取出结果
	        if (re_code == 200) {
	            str = pm.getResponseBodyAsString();
	        }
	    } catch (HttpException e) {
	        e.printStackTrace();
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	    System.out.println(str);
	}

}
OK,上面就是调用小I机器人的完整代码,需要注意的是加密签名的算法,和X-Auth的拼接方法,然后,就是取出内容了。

最后是我为什么说小i有点智商低,其实也不怪小i,因为我们调用的是基础接口嘛,基础的东西。那我们为什么不调用高级接口呢,其实很简单,只需要把type设置为1就行了,但我为什么不写呢,因为我没权限..............................................................

应同学要求,下次,我们将来说说如何实现微信点歌~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值