init
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package com.newyetai.sdk.workwechat.constant;
|
||||
|
||||
/**
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
public interface WorkWechatConstants {
|
||||
|
||||
String AT_ALL = "@all";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.newyetai.sdk.workwechat.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.newyetai.sdk.robot.constant.WorkWechatMsgTypeEnum;
|
||||
import com.newyetai.sdk.robot.model.IWorkWechatMsg;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 企业微信机器人消息-图文
|
||||
*
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class WwrArticleMsg extends IWorkWechatMsg implements Serializable {
|
||||
|
||||
/** **/
|
||||
private static final long serialVersionUID = -1870915544362911162L;
|
||||
|
||||
/** 标题,不超过128个字节,超过会自动截断 **/
|
||||
private String title;
|
||||
/** 描述,不超过512个字节,超过会自动截断 **/
|
||||
private String description;
|
||||
/** 点击后跳转的链接 **/
|
||||
private String url;
|
||||
/** 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图 1068*455,小图150*150 **/
|
||||
@JsonProperty("picurl")
|
||||
private String picUrl;
|
||||
|
||||
@Override
|
||||
public String getMsgType() {
|
||||
return WorkWechatMsgTypeEnum.NEWS.getType();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.newyetai.sdk.workwechat.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.newyetai.sdk.robot.constant.WorkWechatMsgTypeEnum;
|
||||
import com.newyetai.sdk.robot.model.IWorkWechatMsg;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 企业微信机器人消息-图片
|
||||
*
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class WwrImageMsg extends IWorkWechatMsg implements Serializable {
|
||||
|
||||
/** **/
|
||||
private static final long serialVersionUID = 388617076942476152L;
|
||||
|
||||
/** 图片内容的base64编码 **/
|
||||
private String base64;
|
||||
/** 图片内容(base64编码前)的md5值 **/
|
||||
private String md5;
|
||||
|
||||
|
||||
@Override
|
||||
public String getMsgType() {
|
||||
return WorkWechatMsgTypeEnum.IMAGE.getType();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.newyetai.sdk.workwechat.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.newyetai.sdk.robot.constant.WorkWechatMsgTypeEnum;
|
||||
import com.newyetai.sdk.robot.model.IWorkWechatMsg;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 企业微信机器人消息-markdown
|
||||
*
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class WwrMarkdownMsg extends IWorkWechatMsg implements Serializable {
|
||||
|
||||
/** **/
|
||||
private static final long serialVersionUID = 3127170367241501732L;
|
||||
|
||||
/** markdown内容,最长不超过4096个字节,必须是utf8编码 **/
|
||||
private String content;
|
||||
|
||||
@Override
|
||||
public String getMsgType() {
|
||||
return WorkWechatMsgTypeEnum.MARKDOWN.getType();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.newyetai.sdk.workwechat.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.newyetai.sdk.robot.constant.WorkWechatMsgTypeEnum;
|
||||
import com.newyetai.sdk.robot.model.IWorkWechatMsg;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 企业微信机器人消息-文本
|
||||
*
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class WwrTextMsg extends IWorkWechatMsg implements Serializable{
|
||||
|
||||
/** **/
|
||||
private static final long serialVersionUID = 6281117623858493719L;
|
||||
|
||||
/** 文本内容,最长不超过2048个字节,必须是utf8编码 **/
|
||||
private String content;
|
||||
|
||||
@JsonProperty("mentioned_list")
|
||||
private List<String> mentionedList;
|
||||
|
||||
@JsonProperty("mentioned_mobile_list")
|
||||
private List<String> mentionedMobileList;
|
||||
|
||||
@Override
|
||||
public String getMsgType() {
|
||||
return WorkWechatMsgTypeEnum.TEXT.getType();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.newyetai.sdk.workwechat.service;
|
||||
|
||||
import com.newyetai.sdk.robot.model.IWorkWechatMsg;
|
||||
|
||||
/**
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
public interface WorkWechatRobotService {
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
*
|
||||
* @param robotKey 机器人key
|
||||
* @param msg
|
||||
* @author sr on 2020-07-07
|
||||
*/
|
||||
void send(String robotKey, IWorkWechatMsg msg);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.newyetai.sdk.workwechat.service.impl;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.DingTalkClient;
|
||||
import com.dingtalk.api.request.OapiRobotSendRequest;
|
||||
import com.dingtalk.api.response.OapiRobotSendResponse;
|
||||
import com.newyetai.sdk.robot.model.IDingTalkMsg;
|
||||
import com.newyetai.sdk.robot.model.IMsg;
|
||||
import com.newyetai.sdk.robot.model.IWorkWechatMsg;
|
||||
import com.newyetai.sdk.robot.model.TextMsg;
|
||||
import com.newyetai.sdk.workwechat.service.WorkWechatRobotService;
|
||||
import com.newyetai.sdk.workwechat.util.WorkWechatUtils;
|
||||
import com.taobao.api.ApiException;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class WorkWechatRobotServiceImpl implements WorkWechatRobotService {
|
||||
|
||||
private static final String URL_PREFIX = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=";
|
||||
|
||||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
public void send(String robotKey, IWorkWechatMsg msg) {
|
||||
try {
|
||||
restTemplate.postForEntity(URL_PREFIX + robotKey, WorkWechatUtils.parsePostData(msg),
|
||||
Object.class);
|
||||
} catch (Exception e) {
|
||||
log.info("WorkWechatRobot send error:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void sendDingText(String robotKey, TextMsg textMsg) {
|
||||
// 76651782e4a03b420aff022e1a5e9010b3606648c40d2ab698d3d3e4ee691538
|
||||
|
||||
OapiRobotSendRequest request = new OapiRobotSendRequest();
|
||||
request.setMsgtype("text");
|
||||
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
|
||||
text.setContent("前方高能😯😯:\n从前有座山...");
|
||||
request.setText(text);
|
||||
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
||||
at.setAtMobiles(Arrays.asList("13611806907"));
|
||||
// isAtAll类型如果不为Boolean,请升级至最新SDK
|
||||
// at.setIsAtAll(true);
|
||||
request.setAt(at);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.newyetai.sdk.workwechat.util;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.newyetai.sdk.robot.constant.WorkWechatMsgTypeEnum;
|
||||
import com.newyetai.sdk.robot.model.IWorkWechatMsg;
|
||||
import com.newyetai.sdk.workwechat.model.WwrTextMsg;
|
||||
|
||||
/**
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
public class WorkWechatUtils {
|
||||
|
||||
private static final String MSG_TYPE = "msgtype";
|
||||
|
||||
/**
|
||||
* 转换消息发送对象数据
|
||||
*
|
||||
* @param msg
|
||||
* @return
|
||||
* @author sr on 2020-07-06
|
||||
*/
|
||||
public static Map<String, Object> parsePostData(IWorkWechatMsg msg) {
|
||||
Map<String, Object> data = Maps.newHashMap();
|
||||
String msgType = msg.getMsgType();
|
||||
data.put(MSG_TYPE, msgType);
|
||||
if (WorkWechatMsgTypeEnum.TEXT.getType().equals(msgType)) {
|
||||
// 文本消息截取500长度
|
||||
WwrTextMsg textMsg = (WwrTextMsg) msg;
|
||||
String context = textMsg.getContent();
|
||||
if (context.length() > 500) {
|
||||
textMsg.setContent(textMsg.getContent().substring(0, 500));
|
||||
}
|
||||
}
|
||||
data.put(msgType, msg);
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user