微信消息接收以及被动回复

微信有很多消息时间,如:文本、图片、语音、事件等消息,微信服务器将POST消息的XML数据包到开发者填写的URL上。即与你微信验证token的接口一样,不过是post请求,此处只演示消息的接收,以及文本消息的被动回复。

需要额外引用的maven依赖:

<!--xml解析-->
<dependency>
	<groupId>org.dom4j</groupId>
	<artifactId>dom4j</artifactId>
	<version>2.1.0</version>
</dependency>

定义返回消息POJO类:

public class TextMsgDTO{

    public String ToUserName;

    public String FromUserName;

    public String CreateTime;

    public String MsgType;
    
    public String Content;

    public String msgToXml(){
        XStream xstream=new XStream();
        xstream.alias("xml", this.getClass());
        return xstream.toXML(this);
    }
}

定义xml解析工具类:

public class XMLUtil {
    public static Document readXML(String str){
        Document document=null;
        try {
            document= DocumentHelper.parseText(str);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return document;
    }

    /**
     * 读取节点信息
     * @param node
     * @param name
     * @return
     */
    public static String readNode(Element node,String name){
        return node.element(name).getTextTrim();
    }
}

定义消息接收接口以及消息的处理:

@RestController
@RequestMapping("/wx")
public class WXController {
    @Autowired
    WXService wxService;

    @PostMapping("")
    public Object receiveMessage(@RequestBody String xml){
        return wxService.TXMessage(xml);
    }
public interface WXService {
    Object TXMessage(String xml);
}
@Service
public class WXServiceImpl implements WXService  {
	private Logger logger = LoggerFactory.getLogger(WXServiceImpl.class);

	/**
	 * 接收微信消息回调并返回
	 * @param xml
	 * @return
	 */
	@Override
	public Object TXMessage(String xml) {

		/**将信息转换为Document*/
		Document document = XMLUtil.readXML(xml);
		Element root = document.getRootElement();
		logger.info("receive:"+xml);
		String replyContent;

		String toUserName = XMLUtil.readNode(root, "ToUserName");
		String fromUserName = XMLUtil.readNode(root, "FromUserName");
		String msgType = XMLUtil.readNode(root, "MsgType");

		if("text".equals(msgType)){
			replyContent = XMLUtil.readNode(root, "Content");
		}else{
			replyContent = "你发送的消息类型为:"+msgType;
		}
		
		String replyMsg = packageReplyTextMsg(fromUserName,toUserName,replyContent);
		logger.info("reply:"+replyMsg);
		return replyMsg;
	}
	
	/**封装返回消息*/
	private String packageReplyTextMsg(String fromUserName, String toUserName,  String replyContent){
		TextMsgDTO textMsg = new TextMsgDTO();
		textMsg.MsgType = "text";
		textMsg.FromUserName = toUserName;
		textMsg.ToUserName = fromUserName;
		textMsg.CreateTime = String.valueOf(System.currentTimeMillis()).substring(0,10);
		//将XML消息的参数都转化内容回复给微信
		textMsg.Content = replyContent;
		
		String replyMsg = null;
		try {
			//将对象转化为XML
			replyMsg = textMsg.msgToXml();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return replyMsg;
	}
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个使用Python编写的企业微信API接收消息的示例代码: ```python import json import requests from flask import Flask, request app = Flask(__name__) @app.route('/webhook', methods=['POST']) def webhook(): data = request.get_data() # 解析接收到的消息 msg = json.loads(data) # 获取消息类型 msg_type = msg.get('MsgType') # 处理不同类型的消息 if msg_type == 'text': content = msg.get('Content') # 获取消息内容 # 处理消息内容 # ... elif msg_type == 'image': media_id = msg.get('MediaId') # 获取图片的MediaId # 处理图片消息 # ... # 其他消息类型的处理 return 'success' if __name__ == '__main__': app.run() ``` 上述代码使用了Flask框架搭建了一个用于接收企业微信消息的webhook接口。当接收到企业微信消息时,会触发`/webhook`路由的POST请求。 代码中的`webhook`函数会获取POST请求中的消息数据,并将其转换为JSON格式。然后根据消息的类型进行处理,比如如果是文本消息,可以通过`msg.get('Content')`获取消息内容进行相应处理;如果是图片消息,可以通过`msg.get('MediaId')`获取图片的MediaId。 最后,处理完消息后,返回"success"表示消息接收成功。 ### 回答2: 企业微信是一种企业级通信工具,它提供了API接口,可以通过编程语言进行消息接收和处理。以下是一个使用Python编写的企业微信API接收消息的示例代码: ```python import json import requests def receive_message(): url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/receive?key=your_webhook_key" response = requests.get(url) data = json.loads(response.text) message_type = data.get("type") if message_type == "text": message_content = data.get("text").get("content") # 对文本消息进行处理 # ... elif message_type == "image": message_url = data.get("image").get("url") # 对图片消息进行处理 # ... # 其他类型的消息同理 return "success" if __name__ == "__main__": receive_message() ``` 在上面的代码中,我们首先需要创建一个Webhook,获取到Webhook的key,并替换代码中的`your_webhook_key`。然后通过`requests`库发送GET请求,从企业微信服务器中获取到最新的消息数据。 接收消息后,我们可以通过判断消息的类型,来进行不同类型消息的处理。例如,如果消息类型是文本类型,可以通过`data.get("text").get("content")`获取到消息的文本内容,并进行相应的处理。如果消息类型是图片类型,可以通过`data.get("image").get("url")`获取到图片的URL,并处理图片。 最后,返回一个`"success"`字符串表示消息接收成功。 ### 回答3: 企业微信提供了丰富的API接口,可以使用Python编程语言来接收企业微信消息。以下是一个简单的Python代码示例: ```python import requests from flask import Flask, request app = Flask(__name__) @app.route('/wechat', methods=['POST']) def receive_message(): data = request.json msg_type = data['msg_type'] sender = data['sender'] content = data['content'] # 处理接收到的消息 # 可以根据消息类型进行不同的处理,如文本消息、图片消息、视频消息等 # 返回响应给企业微信 return 'success' if __name__ == '__main__': app.run() ``` 这段代码使用了Flask框架来构建一个简单的HTTP服务端,监听 '/wechat' 路径的POST请求。当企业微信向该路径发送消息时,代码会从请求中获取到消息内容,并进行处理。处理完毕后,返回一个成功的响应给企业微信。 你可以根据实际需要对接收到的消息进行进一步处理,如解析消息内容、调用其他API接口等。另外,根据企业微信API的文档,也可以根据需要使用其他的Python库来实现接收消息的功能。 注意:为了让以上代码正常工作,你需要安装Flask库和requests库,并将其中的一些参数(如路由、消息处理逻辑、API调用等)根据实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值