您的位置 首页 java

java使用API在微信开发者平台接入一个机器人回复

在上两个章节,我对微信的消息收发做了一个分析,并对消息和图片做了封装,那么我们要发送消息,只有将类的属性初始化就可以了。如果对之前的文章存在疑惑或者还没有了解的,欢迎留言与翻阅。如果对我的文章感兴趣,欢迎订阅我的头条号:一点热,www.yeehot.com

有了这些基础,我们可能也会想做一个机器人接入到我们的公众号平台,为了可以让大家有一个直观的了解,我直接展示一张我已经接入机器人API的公众号平台的图片。大家也可以上去测试。

java使用API在微信开发者平台接入一个机器人回复

上一章节快速入口

java使用API在微信开发者平台接入一个机器人回复Java使用springMVC开发微信公众号自动回复图片消息

我们首先到图灵机器人的网站申请一个KEY,当然我们也可以在微信公众号直接接入机器人,不过我这里主要以自己接入web api为例子,其实可以兼容到我们后面的功能开发。

官网地址

java使用API在微信开发者平台接入一个机器人回复

这个申请的步骤我就不做介绍了,大家申请后,可以拿到KEY,然后我们可以在微信公众号,收到消息的同时,然后访问图灵的API,得到数据,再封装到我们的类,然后返回给微信服务器,这样就完成了一个自动回复的操作。

我这里还是以前几节的知识为基础,如果需要源码可以在我公众号,回复你的邮件索取吧。

我这里使用okhttp3进行post我们的json数据到图灵机器人服务器。

关于这个okhttp我在前几节有做说明的,如果不明白可以看回之前的文章,以下是通过maven来下载OKhttp的包。

<!– –>

<dependency>

<groupId>com.squareup.okhttp</groupId>

<artifactId>okhttp</artifactId>

<version>2.7.5</version>

</dependency>

<dependency>

<groupId>jdom</groupId>

<artifactId>jdom</artifactId>

<version>1.0</version>

</dependency>

接着我们继续修改上一节的controller,我们对文本信息进行检查,如果是文本内容,我们接入图灵的API。

if (messagetype.equals(“text”))

{

YhTextMessage RecivetextMessage=new YhTextMessage(postmessage);

if (RecivetextMessage.getContent().equals(“图片”)){

ImageMessage imageMessage=new ImageMessage();

imageMessage.setFromUserName(RecivetextMessage.getToUserName());

imageMessage.setCreateTime(String.valueOf(System.currentTimeMillis()));

imageMessage.setToUserName(RecivetextMessage.getFromUserName());

imageMessage.setMsgType(“image”);

// imageMessage.setMsgId(System.currentTimeMillis()+”00″);

imageMessage.setMediaId(“nEQXRooIfTR-yNXQK0mUnoyZs7gQ2_agbhY2UHr1jLATlCqLpPtVJqJWFftV8d92”);

responsemessage=imageMessage.MessageToMap();

}

else {

YhTextMessage sendMessage=new YhTextMessage();

// sendMessage.setContent(“你好,我的头条号:一点热”);

sendMessage.setContent(RecivetextMessage.getContent());//用于图灵机器人测试

sendMessage.setToUserName(RecivetextMessage.getFromUserName());

sendMessage.setMsgType(RecivetextMessage.getMsgType());

sendMessage.setFromUserName(RecivetextMessage.getToUserName());

sendMessage.setCreateTime(String.valueOf(System.currentTimeMillis()));

try {

sendMessage=UseTulingMessage(sendMessage);

} catch (JSONException e) {

e.printStackTrace();

}

responsemessage=sendMessage.MessageToMap();

}

}

然后我们写一个使用图灵信息的方法,UseTulingMessage,关于这个方法,主要是使用OKhttp进行post 我们的json数据,并且对我们返回的json数据,提取出来,转换成我们微信回复信息的内容。

public YhTextMessage UseTulingMessage( YhTextMessage yhTextMessage) throws JSONException {

OkHttpClient okHttpClient = new OkHttpClient();

JSONObject jsonObject=new JSONObject();

jsonObject.put(“key”,”你的图灵KEY”);

jsonObject.put(“info”,yhTextMessage.getContent());

jsonObject.put(“userid”,”0″);

String recontent=”查无该结果”;

RequestBody requestBody = RequestBody.create(MediaType.parse(“application/json; charset=utf-8”), jsonObject.toString());

//创建一个请求对象

Request request = new Request.Builder()

.url(“”)

.post(requestBody)

.build();

//发送请求获取响应

try {

Response response=okHttpClient.newCall(request).execute();

//判断请求是否成功

if(response.isSuccessful()){

recontent=response.body().string();

}

} catch (IOException e) {

e.printStackTrace();

}

if (recontent.contains(“code”)){

JSONObject rjsonobject=new JSONObject(recontent);

int code=rjsonobject.getInt(“code”);

if (code==100000){

recontent=rjsonobject.getString(“text”);

}

else if (code==200000)

{

recontent=rjsonobject.getString(“text”)+”当前链接:”+rjsonobject.getString(“url”);

}

else if (code==302000)

{

recontent=rjsonobject.getString(“text”)+” “;

JSONArray jsonArray=rjsonobject.getJSONArray(“list”);

for (int i=0;i<jsonArray.length();i++){

recontent+=jsonArray.getJSONObject(i).getString(“article”)+”链接为:”+jsonArray.getJSONObject(i).getString(“detailurl”);

}

}

else if (code==308000)

{

recontent=rjsonobject.getString(“text”)+” “;

JSONArray jsonArray=rjsonobject.getJSONArray(“list”);

for (int i=0;i<jsonArray.length();i++){

recontent+=jsonArray.getJSONObject(i).getString(“name”)+”链接为:”+jsonArray.getJSONObject(i).getString(“detailurl”);

}

}

}

System.out.print(recontent);

yhTextMessage.setContent(recontent);

return yhTextMessage;

}

最后,我们可以做一个本地测试,我们直接使用postman来测试

我们向我们的接口post 文本数据,文本内容为广州。

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>1348831860</CreateTime>

<MsgType><![CDATA[text]]></MsgType>

<Content><![CDATA[广州]]></Content>

<MsgId>1234567890123456</MsgId>

</xml>

最后,返回的数据,是我们的一段内容

这样说明我们已经接入了API成功。我们可以部署到服务器进行测试,测试结果就是我开始上传的微信图片,大家可以直接测试。

今天就讲到这里,我主要是介绍如何接入一个API来实现自动回复,这个对于我们以后接入其它的功能开发很有帮助,比如是周公解梦,八字等等的API,欢迎继续关注我的头条号:一点热,如果有什么问题,欢迎留言咨询,我看到之后会第一时间回复大家的。也欢迎收藏与转发,如果需要转载到其他网站,请与我联系。

文章来源:智云一二三科技

文章标题:java使用API在微信开发者平台接入一个机器人回复

文章地址:https://www.zhihuclub.com/182445.shtml

关于作者: 智云科技

热门文章

网站地图