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

来源:互联网 发布:淘宝助理5.5在哪下载 编辑:程序博客网 时间:2024/05/16 19:18

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"@Testpublic 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
原创粉丝点击