Skip to content

Commit 7c0a38e

Browse files
authored
🆕 #1668 企业微信增加外部联系人发送消息的接口
1 parent 03c143b commit 7c0a38e

File tree

5 files changed

+142
-10
lines changed

5 files changed

+142
-10
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public interface WxCpExternalContactService {
8888

8989
/**
9090
* 企业和第三方可通过此接口,获取所有离职成员的客户列表,并可进一步调用离职成员的外部联系人再分配接口将这些客户重新分配给其他企业成员。
91+
*
9192
* @param page
9293
* @param pageSize
9394
* @return
@@ -97,22 +98,24 @@ public interface WxCpExternalContactService {
9798

9899
/**
99100
* 企业可通过此接口,将已离职成员的外部联系人分配给另一个成员接替联系。
101+
*
100102
* @param externalUserid
101103
* @param handOverUserid
102104
* @param takeOverUserid
103105
* @return
104106
* @throws WxErrorException
105107
*/
106-
WxCpBaseResp transferExternalContact(String externalUserid,String handOverUserid,String takeOverUserid)throws WxErrorException;
108+
WxCpBaseResp transferExternalContact(String externalUserid, String handOverUserid, String takeOverUserid) throws WxErrorException;
107109

108-
/** <pre>
109-
* 该接口用于获取配置过客户群管理的客户群列表。
110-
* 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
111-
* 暂不支持第三方调用。
112-
* 微信文档:https://work.weixin.qq.com/api/doc/90000/90135/92119
113-
* </pre>
114-
*/
115-
WxCpUserExternalGroupChatList listGroupChat(Integer pageIndex,Integer pageSize,int status,String[] userIds,String[] partyIds) throws WxErrorException;
110+
/**
111+
* <pre>
112+
* 该接口用于获取配置过客户群管理的客户群列表。
113+
* 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
114+
* 暂不支持第三方调用。
115+
* 微信文档:https://work.weixin.qq.com/api/doc/90000/90135/92119
116+
* </pre>
117+
*/
118+
WxCpUserExternalGroupChatList listGroupChat(Integer pageIndex, Integer pageSize, int status, String[] userIds, String[] partyIds) throws WxErrorException;
116119

117120
/**
118121
* <pre>
@@ -135,6 +138,7 @@ public interface WxCpExternalContactService {
135138
* 第三方应用需拥有“企业客户”权限。
136139
* 第三方/自建应用调用时传入的userid和partyid要在应用的可见范围内;
137140
* </pre>
141+
*
138142
* @param startTime
139143
* @param endTime
140144
* @param userIds
@@ -150,6 +154,7 @@ public interface WxCpExternalContactService {
150154
* 企业需要使用“客户联系”secret或配置到“可调用应用”列表中的自建应用secret所获取的accesstoken来调用(accesstoken如何获取?)。
151155
* 暂不支持第三方调用。
152156
* </pre>
157+
*
153158
* @param startTime
154159
* @param orderBy
155160
* @param orderAsc
@@ -160,5 +165,7 @@ public interface WxCpExternalContactService {
160165
* @return
161166
* @throws WxErrorException
162167
*/
163-
WxCpUserExternalGroupChatStatistic getGroupChatStatistic(Date startTime,Integer orderBy,Integer orderAsc,Integer pageIndex,Integer pageSize, String[] userIds, String[] partyIds) throws WxErrorException;
168+
WxCpUserExternalGroupChatStatistic getGroupChatStatistic(Date startTime, Integer orderBy, Integer orderAsc, Integer pageIndex, Integer pageSize, String[] userIds, String[] partyIds) throws WxErrorException;
169+
170+
WxCpMsgTemplateAddResult addMsgTemplate(WxCpMsgTemplate wxCpMsgTemplate) throws WxErrorException;
164171
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,4 +150,11 @@ public WxCpUserExternalGroupChatStatistic getGroupChatStatistic(Date startTime,
150150
final String result = this.mainService.post(url, json.toString());
151151
return WxCpUserExternalGroupChatStatistic.fromJson(result);
152152
}
153+
154+
@Override
155+
public WxCpMsgTemplateAddResult addMsgTemplate(WxCpMsgTemplate wxCpMsgTemplate) throws WxErrorException {
156+
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(ADD_MSG_TEMPLATE);
157+
final String result = this.mainService.post(url, wxCpMsgTemplate.toJson());
158+
return WxCpMsgTemplateAddResult.fromJson(result);
159+
}
153160
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
9+
10+
import java.io.Serializable;
11+
import java.util.List;
12+
13+
/**
14+
* 企业群发消息任务
15+
* <p>
16+
* Created by songfan on 2020/7/14.
17+
*/
18+
@Data
19+
@Builder
20+
@NoArgsConstructor
21+
@AllArgsConstructor
22+
public class WxCpMsgTemplate implements Serializable {
23+
private static final long serialVersionUID = 3172331565173474358L;
24+
25+
@SerializedName("chat_type")
26+
private String chatType;
27+
28+
@SerializedName("external_userid")
29+
private List<String> externalUserid;
30+
31+
private String sender;
32+
33+
private Text text;
34+
35+
private Image image;
36+
37+
private Link link;
38+
39+
private Miniprogram miniprogram;
40+
41+
public static WxCpMsgTemplate fromJson(String json) {
42+
return WxCpGsonBuilder.create().fromJson(json, WxCpMsgTemplate.class);
43+
}
44+
45+
public String toJson() {
46+
return WxCpGsonBuilder.create().toJson(this);
47+
}
48+
49+
@Data
50+
public class Text {
51+
private String content;
52+
}
53+
54+
@Data
55+
public class Image {
56+
57+
@SerializedName("media_id")
58+
private String mediaId;
59+
60+
@SerializedName("pic_url")
61+
private String picUrl;
62+
}
63+
64+
@Data
65+
public class Link {
66+
private String title;
67+
@SerializedName("picurl")
68+
private String picUrl;
69+
private String desc;
70+
private String url;
71+
}
72+
73+
@Data
74+
public class Miniprogram {
75+
private String title;
76+
@SerializedName("pic_media_id")
77+
private String picMediaId;
78+
private String appid;
79+
private String page;
80+
}
81+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
6+
7+
import java.io.Serializable;
8+
import java.util.List;
9+
10+
/**
11+
* Created by songfan on 2020/7/14.
12+
*/
13+
@Data
14+
public class WxCpMsgTemplateAddResult implements Serializable {
15+
private static final long serialVersionUID = -5166048319463473188L;
16+
17+
@SerializedName("errcode")
18+
private Integer errCode;
19+
20+
@SerializedName("errmsg")
21+
private String errMsg;
22+
23+
@SerializedName("fail_list")
24+
private List<String> failList;
25+
26+
@SerializedName("msgid")
27+
private String msgId;
28+
29+
public static WxCpMsgTemplateAddResult fromJson(String json) {
30+
return WxCpGsonBuilder.create().fromJson(json, WxCpMsgTemplateAddResult.class);
31+
}
32+
33+
public String toJson() {
34+
return WxCpGsonBuilder.create().toJson(this);
35+
}
36+
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,6 @@ public static class ExternalContact {
126126
public static final String GROUP_CHAT_INFO = "/cgi-bin/externalcontact/groupchat/get";
127127
public static final String LIST_USER_BEHAVIOR_DATA = "/cgi-bin/externalcontact/get_user_behavior_data";
128128
public static final String LIST_GROUP_CHAT_DATA = "/cgi-bin/externalcontact/groupchat/statistic";
129+
public static final String ADD_MSG_TEMPLATE = "/cgi-bin/externalcontact/add_msg_template";
129130
}
130131
}

0 commit comments

Comments
 (0)