2021-07-01

微信公告号自动回复使用图灵机器人实现只能回复

一言堂接口调用,自动回复一句话,接上一节博客

HitokotoUtil .java:

package com.qfjy.project.weixin.api.hitokoto;
import com.qfjy.project.weixin.util.WeixinUtil;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Component;
/**
 * @Classname HitokotoUtil
 * @Author guoweixin
 * @Description TODO  一言 一句话服务  https://v1.hitokoto.cn/
 * @Date 2021/6/24 14:15
 * @Created by Administrator
 */
@Component
public class HitokotoUtil {
    private static String HITOKOTO_URL="https://v1.hitokoto.cn/";
    /**
      java jdk原生:UrlConnection
     apache:HttpClient   OKHTTP
     spring框架:RestTemplate
     */
    public String getResult(){
       JSONObject jsonObject= WeixinUtil.httpRequest(HITOKOTO_URL,"GET",null);
       String result=jsonObject.getString("hitokoto");
        return result;
    }
}

在CoreService.java中:
1.导入对象

@Autowired
	private HitokotoUtil hitokotoUtil;

2.调用对象

// 文本消息
			if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
				respContent = hitokotoUtil.getResult();
				//respContent = "您发送的是文本消息!";
			}

使用图灵机器人实现智能回复

图灵接口每天可使用100次:
InputText.java:

package com.qfjy.project.weixin.api.tuling.bean;
import lombok.Data;
@Data
public class InputText {
    /**直接输入文本*/
    private String text;
}

Perception.java:

package com.qfjy.project.weixin.api.tuling.bean;
import lombok.Data;
@Data
public class Perception {
    /**文本消息*/
    private InputText inputText;
}

TulingBean.java:

package com.qfjy.project.weixin.api.tuling.bean;
import lombok.Data;
@Data
public class TulingBean {
    /**	输入类型:0-文本(默认)、1-图片、2-音频*/
    private int reqType=0;
    /**输入信息*/
    private Perception perception;
    /**用户参数*/
    private UserInfo userInfo;
}

TulingUtil.java:

package com.qfjy.project.weixin.api.tuling;

import com.qfjy.project.weixin.api.tuling.bean.InputText;
import com.qfjy.project.weixin.api.tuling.bean.Perception;
import com.qfjy.project.weixin.api.tuling.bean.TulingBean;
import com.qfjy.project.weixin.api.tuling.bean.UserInfo;
import com.qfjy.project.weixin.util.WeixinUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Component;

@Component
public class TulingUtil {
    /**
     * 注册图灵平台 http://www.tuling123.com/
     * 并完成实名认证。申请机器人。
     *  API教程接入文档:https://www.kancloud.cn/turing/www-tuling123-com/718227
     */

    private static String TULING_URL_POST="http://openapi.tuling123.com/openapi/api/v2";

    public String getResult(String msg){
        //1对象 转 JSON
        TulingBean tulingBean=new TulingBean();
        tulingBean.setReqType(0);

        Perception perception=new Perception();
        InputText inputText=new InputText();
        inputText.setText(msg);
        perception.setInputText(inputText);
        tulingBean.setPerception(perception);

        UserInfo userInfo=new UserInfo();
        userInfo.setUserId("java2101");
        userInfo.setApiKey("5d46f432d7a744dab2d0cdb7f5e5532b");
        tulingBean.setUserInfo(userInfo);

        JSONObject json1=JSONObject.fromObject(tulingBean);

        System.out.println(json1.toString());
        //2 向服务器接口地址 发送POST请求
        JSONObject jsonObject= WeixinUtil.httpRequest(TULING_URL_POST,"POST",json1.toString());
        //3得到图灵服务器机器人返回的结果

        JSONArray  json2= (JSONArray) jsonObject.get("results");
        JSONObject json3= (JSONObject) json2.get(0);
        JSONObject json4= (JSONObject) json3.get("values");
        String result= json4.getString("text");

        return result;

    }

    public static void main(String[] args) {

     //1对象 转 JSON
        TulingBean tulingBean=new TulingBean();
        tulingBean.setReqType(0);

        Perception perception=new Perception();
        InputText inputText=new InputText();
        inputText.setText("吃饭了吗");
        perception.setInputText(inputText);
        tulingBean.setPerception(perception);
        UserInfo userInfo=new UserInfo();
        userInfo.setUserId("java2101");
        userInfo.setApiKey("acc513be8b5e4b26929247e83132f116");
        tulingBean.setUserInfo(userInfo);

        JSONObject json1=JSONObject.fromObject(tulingBean);

        System.out.println(json1.toString());
      //2 向服务器接口地址 发送POST请求
    JSONObject jsonObject= WeixinUtil.httpRequest(TULING_URL_POST,"POST",json1.toString());
    //3得到图灵服务器机器人返回的结果
       JSONArray  json2= (JSONArray) jsonObject.get("results");
       JSONObject json3= (JSONObject) json2.get(0);
       JSONObject json4= (JSONObject) json3.get("values");
       String result= json4.getString("text");
        System.out.println(result);
    }
}

在CoreService.java中:
1.导入对象

@Autowired
	private TulingUtil tuLingUtil;

2.调用对象

// 文本消息
			if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
				respContent = tuLingUtil.getResult(content);
				//respContent = hitokotoUtil.getResult();
				//respContent = "您发送的是文本消息!";
			}

下一节,使用五个图灵机器人实现循环,若第一个机器人回复次数使用完,则可以使用下一个机器人,五次机会使用完,则返回提示。

上一篇:c++ Json.hpp 应用


下一篇:Java 遍历json